关于matlab中fmincon求极值的错误(急求,跪谢!!!)
目标函数functionfval=objfun(x)globallamb0;globalB;globalR;globalr;globalphi;lamb=lamb0*r/...
目标函数
function fval=objfun(x)
global lamb0;
global B;
global R;
global r;
global phi;
lamb=lamb0*r/R;
phi=atan((1-x(1))/((1+x(2))*lamb));
f=-B*(R-r)/(2*r*sin(phi));
F=2*acos(exp(-f))/pi;
fval=8*x(2)*(1-x(1))*F*lamb^3/lamb0^2
约束条件
function [c,ceq]=confun(x)
global lamb0;
global B;
global R;
global r;
global phi;
lamb=lamb0*r/R;
phi=atan((1-x(1))/((1+x(2))*lamb);
f=-B*(R-r)/(2*r*sin(phi));
F=2*acos(exp(-f))/pi;
ceq=x(1)*(1-x(1)*F)-x(2)*(1+x(2))*lamb^2;
c=[];
主程序
clear;
global r;
global R;
global phi;
global lamb;
lamb0=6;B=3;
D=65;
R=D/2;
r=2;
x0=[0;0];
A=[];b=[];
Aeq=[];beq=[];
lb=[0 0];
ub=[inf inf];?
[x,fval]=fmincon('objfun',x0,A,b,Aeq,beq,lb,ub,'confun'); 展开
function fval=objfun(x)
global lamb0;
global B;
global R;
global r;
global phi;
lamb=lamb0*r/R;
phi=atan((1-x(1))/((1+x(2))*lamb));
f=-B*(R-r)/(2*r*sin(phi));
F=2*acos(exp(-f))/pi;
fval=8*x(2)*(1-x(1))*F*lamb^3/lamb0^2
约束条件
function [c,ceq]=confun(x)
global lamb0;
global B;
global R;
global r;
global phi;
lamb=lamb0*r/R;
phi=atan((1-x(1))/((1+x(2))*lamb);
f=-B*(R-r)/(2*r*sin(phi));
F=2*acos(exp(-f))/pi;
ceq=x(1)*(1-x(1)*F)-x(2)*(1+x(2))*lamb^2;
c=[];
主程序
clear;
global r;
global R;
global phi;
global lamb;
lamb0=6;B=3;
D=65;
R=D/2;
r=2;
x0=[0;0];
A=[];b=[];
Aeq=[];beq=[];
lb=[0 0];
ub=[inf inf];?
[x,fval]=fmincon('objfun',x0,A,b,Aeq,beq,lb,ub,'confun'); 展开
展开全部
正好我前两天也在研究这个函数,你把你运行的报错信息能贴出来吗?
根据我的经验,一般如果格式没有出现问题,那么就是约束的问题,我的程序就检查了好几次,有一次甚至提示引用函数fmincon出错,其实是约束的问题。
在你的约束条件里面,你看看ceq=那儿有没有问题~
约束那儿要弄清楚你的模型中哪些是非线性约束,哪些是线性约束,是等式还是非等式哈,这个很重要。
正好我这里有个之前参考的ppt你也学习学习,也可以直接在matlab的command window 窗口输入doc fmincon,会出现函数fmincon的用法介绍。
更多追问追答
追问
麻烦你加下我QQ,跪谢!903591141
追答
我给你发邮件吧~
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询