登录论坛

查看完整版本 : [MATLAB工具箱] fmincon函数的用法


zjm0184119
2009-04-27, 22:17
大家好,请教大家一个问题,我在用fmincon函数进行优化,但我的约束条件是非线性的,那我应该怎么写程序啊?
附件是具体的题目,希望大家给些指点。
告诉我方法或类似的例子都行
谢谢各位了

524xu
2009-04-28, 10:59
定义非线性约束函数 function [c,ceq]=confun(x)
c=[c1(x)-26800;c2(x)-0.3;c3(x)-60];
ceq=[];
此函数保存在confun.m文件中

最后在主程序中调用confun(x)
[x,fval]=fmincon('objfun',x0,[],[],[],[],[],[],'confun',options);
objfun为目标函数,x0为给定的初始值

zjm0184119
2009-04-28, 13:09
真是太感谢了!我用这个方法调试出了结果,但是得出的结果与初始值特别相关,初始值一变,结果变化特别大,能告诉我初始值应该怎么定吗,我好像还不是特别了解初始值的意思

524xu
2009-04-28, 14:54
初始值的取法我也没解决好,不同的取值可能得到一个局部最优解而不是全局最优解,一般尽量取在最优解附近,要不就多试几次

zjm0184119
2009-04-28, 17:42
对啊,我刚开始取得时候结果只是和初值特别接近,到后来有时结果都和初值一样了,哎。。。。头疼。。。