![]() |
[求助]请教Matlab优化问题,恳请各位大侠援助(在线急等)
我用Matlab优化工具箱中的fminunc函数来求解一个无约束的二元函数的极小值,运行后发现算出的结果就是我所给的初值,多次修改初值发现结果始终就是初值。就是说Matlab就没进行优化,程序代码如下,恳请各位高手给予指点,万分感谢!(Matlab版本7.1)
目标函数: function y=chexiaolirun_objfun(x) y=( 10+(-150+ 7*(x(1)^ 1.5)*(x(2)^ 1.2)* 50))/( 56/(x(1)*x(2))+ 7*(x(1)^ 1.5)*(x(2)^ 1.2)* 2+ 2)+ 0.05/(-x(1)+ 1.88)+ 0.05/(x(1)- 263)+ 0.05/(-x(2)+ .08)+ 0.05/(x(2)- 1.59); 主函数: x0=[ 237, 1.272]; options=optimset('largescale','off'); [x,fval,exitflag,output]=fminunc('chexiaolirun_objfun',x0,options) 运行结果: Line search cannot find an acceptable point along the current search direction. x = 237.0000 1.2720 fval = 24.7958 exitflag = -2 output = iterations: 1 funcCount: 198 stepsize: [] firstorderopt: 0.4565 algorithm: 'medium-scale: Quasi-Newton line search' message: [1x80 char] |
各位高手给点意见啊,谢谢了
|
你的数学表达式是什么? 我看下 !我把你写的整理出来,发现是个很复杂的函数,担心你的数学表达式写成matlab的时候可能弄错了:redface:
|
2 个附件
表达式是没有问题的,我已经核对过恩多次了!
原来的模型如下,就是求函数取极小值时的x1、x2值 |
看到式子,才明白,原来你的函数命令调错了!你调的那个命令是求解无约束非线性规划问题的。
而你的式子 是 有约束非线性规划问题。 我写了个程序,你看下! 主程序: xmin=[7 0.05]; xmax=[65 1.59]; x0=[237,1.272] [x,fval,flag,c]=fmincon(@fun3,x0,[],[],[],[],xmin,xmax) 副程序: function y=fun3(x) y=16915/(x(1)*x(2))+59*x(1)^0.2*x(2)^1.2+100; [COLOR="Red"][SIZE="4"]结果是:[/SIZE][/COLOR] x = 65.0000 1.2364 ;fmin = 485.8729 我用其他软件也计算了,结果是一样的:smile: |
所有时间均为北京时间。现在的时间是 11:13。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.