MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   MATLAB论坛 (https://www.labfans.com/bbs/forumdisplay.php?f=6)
-   -   [MATLAB基础] 请教fmincon应用问题 (https://www.labfans.com/bbs/showthread.php?t=7691)

china_ie 2009-04-14 19:54

请教fmincon应用问题
 
1 个附件
目标函数myfun

function f=myfun(x)
f=0.00004717/(x(1)*x(2)+x(1)*x(3)+x(3))+0.059825+0.00595/(x(1)*x(5)+x(1)*2*sqrt(x(4)^2+(x(2)/2-x(5)/2)^2));

mycon1函数

function [c,ceq] = mycon1(x)
c(1) = -x(2)+ x(5);
ceq(1) = x(1)*x(2)+x(1)*x(3)+x(3)-0.006;


主程序代码

lbM=[10 5e-5 5e-6 5e-5 0];
ubM=[300 1e-3 1e-3 1e-3 1e-3];
options = optimset('GradConstr', 'on');
x0=[10 5e-4 8e-4 5e-4 5e-4];
%x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
[x,fval] = fmincon('myfun2',x0,[],[],[],[],lbM,ubM,mycon1,options);

运行后出现如下问题:
??? Input argument "x" is undefined.

Error in ==> mycon1 at 2
c(1) = -x(2)+ x(5);

请教高手帮忙解决。

chaoren 2009-04-14 20:40

回复: 请教fmincon应用问题
 
你把fmincon的那一句改成
y=fmincon(@myfun,x0,[],[],[],[],lbM,ubM,mycon1,options);
试一下

china_ie 2009-04-15 08:50

回复: 请教fmincon应用问题
 
出现的错误还是一样的。

524xu 2009-04-15 10:08

回复: 请教fmincon应用问题
 
把options = optimset('GradConstr', 'on');
改为options = optimset('largescale', 'off');%采用标准算法
以及[x,fval] = fmincon('myfun2',x0,[],[],[],[],lbM,ubM,mycon1,options)改为
[x,fval] = fmincon('myfun',x0,[],[],[],[],lbM,ubM,'mycon1',options);
就可以运行了,我是在书上看的

fengd 2010-08-20 16:15

回复: 请教fmincon应用问题
 
你把fmincon的那一句改成
y=fmincon(@myfun,x0,[],[],[],[],lbM,ubM,@mycon1);
试一下


所有时间均为北京时间。现在的时间是 13:23

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.