MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   MATLAB论坛 (https://www.labfans.com/bbs/forumdisplay.php?f=6)
-   -   [求助]请教Matlab优化问题,恳请各位大侠援助(在线急等) (https://www.labfans.com/bbs/showthread.php?t=3316)

dbdubing 2008-05-28 18:14

[求助]请教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]

dbdubing 2008-05-28 20:46

各位高手给点意见啊,谢谢了

fanxing39 2008-05-29 01:34

你的数学表达式是什么? 我看下 !我把你写的整理出来,发现是个很复杂的函数,担心你的数学表达式写成matlab的时候可能弄错了:redface:

dbdubing 2008-05-29 22:57

2 个附件
表达式是没有问题的,我已经核对过恩多次了!


原来的模型如下,就是求函数取极小值时的x1、x2值

fanxing39 2008-05-30 20:32

看到式子,才明白,原来你的函数命令调错了!你调的那个命令是求解无约束非线性规划问题的。
而你的式子 是 有约束非线性规划问题。 我写了个程序,你看下!

主程序:
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.