关于matlab多元非线性优化问题,大神来帮帮忙啊 老是不能运行啊

A=[1 0 -15 0;0 1 0 -70];
b=[0;0];
vlb=[800;800;30;30];
x0=[0;0;0;0];
[x,fval,exitflag,output,lambda,grad,hession]=fmincon('funn',x0,A,b,[],[],vlb,'nonlin')

function y=funn(x)
y=x(1)*x(2)+x(3)*x(4)

function y=nonlin(x)提交问题
y=-0.01*x(2)*x(4)=-220
y=-x(2)*(x(1)*x(3)+x(2)*x(4)/6+(1+(20-2*x(1)*x(3))/(20+x(2)*x(4))))=-90000

老是没法运行啊 求大神帮帮忙啊

错误很多:

 

1、按照函数fmincon的参数顺序,在非线性约束之前,还应该有变量上限,即

[x,fval,exitflag,output,lambda,grad,hession]=fmincon('funn',x0,A,b,[],[],vlb,[],'nonlin')

2、非线性等式约束只需要写成方程左侧就可以了:

y=-0.01*x(2)*x(4)+220
y=-x(2)*(x(1)*x(3)+x(2)*x(4)/6+(1+(20-2*x(1)*x(3))/(20+x(2)*x(4))))+90000

你原来的写法有两个等号,语法上就是错误的。

 

3、非线性约束函数的格式要求必须返回两个参数,即不等式和等式,如果没有不等式约束,可返回空:

function [c,y]=nonlin(x)
c = [];
y=-0.01*x(2)*x(4)+220
y=-x(2)*(x(1)*x(3)+x(2)*x(4)/6+(1+(20-2*x(1)*x(3))/(20+x(2)*x(4))))+90000

追问

http://zhidao.baidu.com/question/367495842611309044.html 这是我修改好地址,您帮我看看吧
非线性约束条件那换成不等式了

追答

那个问题我可以看看。
不过,如果这个问题的回答对你有帮助,希望能采纳。

温馨提示:答案为网友推荐,仅供参考