zjjjunshao
2010-02-06, 15:06
我的程序如下:
目标函数
function y=VolFun(x);
y=pi*(10*x(1)+12*x(2)+40)*(x(3)+x(4)+x(5))^2;
非线性约束
function [c,ceq]=cnfun(x);
A=sqrt((x(1)+x(2))^2+(x(2)+5)^2);
B=x(2)+x(4)+x(5);
C=x(3)+x(4);
D=sqrt(A^2+A*x(1)+x(3)^2);
E=C+5;
F=0.5*(A^2+E^2)/(A*E);
G=sqrt(1-F^2);
ceq=[x(1)*x(3)+x(1)*x(4)+5*x(1)-x(1)*D-5*A];
c(1)=855*(127080*(x(1)+x(2)*F)/(x(1)^2*x(2)^2*E*A*G));
c(2)=x(4)+5-A;
c(3)=3812.2-1.6*x(3)^3+112960/x(3)+(4*x(3)^2*x(1)^2+18*x(1)^4-17*x(4)*x(1)^3)/x(3);
c(4)=1906.09-1.6*B^3+1.6*C^4/B-0.125*x(2)-5*x(2)*B^2+0.125*x(2)*C/B+5*x(2)*B*C+5*x(2)*C^3/B+5*x(2)*C^2];
其它参数
x0=[10;10;10;10;10];
A=[1,0,0,-1,0;0,1,0,-1,0;1,0,-1,0,0;2,0,-1.73,0,0];
b=[0;5;-18;0];
lb=[0;0;0;0;0];
ub=[60;60;400;100;1000];
[x,fval,exitflag,output]=fmincon(@VolFun,x0,A,b,[],[],lb,ub,@cnfun)
运行程序就出错:“Too many output arguments ”.。请各位帮帮忙,看看哪里错了。小弟不胜感激!
目标函数
function y=VolFun(x);
y=pi*(10*x(1)+12*x(2)+40)*(x(3)+x(4)+x(5))^2;
非线性约束
function [c,ceq]=cnfun(x);
A=sqrt((x(1)+x(2))^2+(x(2)+5)^2);
B=x(2)+x(4)+x(5);
C=x(3)+x(4);
D=sqrt(A^2+A*x(1)+x(3)^2);
E=C+5;
F=0.5*(A^2+E^2)/(A*E);
G=sqrt(1-F^2);
ceq=[x(1)*x(3)+x(1)*x(4)+5*x(1)-x(1)*D-5*A];
c(1)=855*(127080*(x(1)+x(2)*F)/(x(1)^2*x(2)^2*E*A*G));
c(2)=x(4)+5-A;
c(3)=3812.2-1.6*x(3)^3+112960/x(3)+(4*x(3)^2*x(1)^2+18*x(1)^4-17*x(4)*x(1)^3)/x(3);
c(4)=1906.09-1.6*B^3+1.6*C^4/B-0.125*x(2)-5*x(2)*B^2+0.125*x(2)*C/B+5*x(2)*B*C+5*x(2)*C^3/B+5*x(2)*C^2];
其它参数
x0=[10;10;10;10;10];
A=[1,0,0,-1,0;0,1,0,-1,0;1,0,-1,0,0;2,0,-1.73,0,0];
b=[0;5;-18;0];
lb=[0;0;0;0;0];
ub=[60;60;400;100;1000];
[x,fval,exitflag,output]=fmincon(@VolFun,x0,A,b,[],[],lb,ub,@cnfun)
运行程序就出错:“Too many output arguments ”.。请各位帮帮忙,看看哪里错了。小弟不胜感激!