作业帮 > 综合 > 作业

matlab fmincon函数用法

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/05 21:58:43
matlab fmincon函数用法
高手帮我看下这段有什么问题,为什么运行不出来
目标函数和非线性约束不能放在一个M文件里面么?
function f = myfun(x)
f = 0.192457*1e-4*(x(2)+2)*x(1)^2*x(3);
function [c,ceq] = mycon(x)
c(1)=350-163*x^(-2.86)*x(3)^0.86;
c(2)=10-0.4*0.01^x(1)^(-4)*x(2)*x(3)^3;
c(3)=(x(2)+1.5)*x(1)+0.44*0.01*x(1)^(-4)*x(2)*x(3)^3-3.7*x(3);
c(4)=375-356000*x(1)^(-4)*x(2)*x(3)^3;
c(5)=4-x(3)/x(1);
A=[-1 0 0;1 0 0;0 -1 0;0 1 0;0 0 -1; 0 0 1];
b=[-1;4;-4.5;50;-10;30];
x0= [2.0;5.0;25.0];
lb=zeros(3,1);
[x,fval,exitflag,output,lambda]=fmincon(@total1,x0,A,b,[],[],lb,[],@total1)
你的代码中调用fmincon函数中@total1不应该是@myfun目标函数吗,后面的那个@total1应该是@mycon为非线性约束
function f = myfun(x)
f = 0.192457*1e-4*(x(2)+2)*x(1)^2*x(3);
function [c,ceq] = mycon(x)
c(1)=350-163*x^(-2.86)*x(3)^0.86;
c(2)=10-0.4*0.01^x(1)^(-4)*x(2)*x(3)^3;
c(3)=(x(2)+1.5)*x(1)+0.44*0.01*x(1)^(-4)*x(2)*x(3)^3-3.7*x(3);
c(4)=375-356000*x(1)^(-4)*x(2)*x(3)^3;
c(5)=4-x(3)/x(1);
A=[-1 0 0;1 0 0;0 -1 0;0 1 0;0 0 -1; 0 0 1];
b=[-1;4;-4.5;50;-10;30];
x0= [2.0;5.0;25.0];
lb=zeros(3,1);
[x,fval,exitflag,output,lambda]=fmincon(@myfun,x0,A,b,[],[],lb,[],@mycon)
这样才对!