matlab求解非线性规划时结果不符合约束

functionf=fop(x)f=-((300+0.5*x(1))*250+x(2)*50*(x(2)+100)/200+(x(2)^2-10000)+x(2)*300... function f=fop(x)
f=-((300+0.5*x(1))*250+x(2)*50*(x(2)+100)/200+(x(2)^2-10000)+x(2)*300*(100-x(2))/200-50/200*(10000-x(2)^2)-(x(2)+300+0.5*x(1))*(40+31)-400*x(1)^2+45*(4-0.02*(x(2)+300+0.5*x(1))*(1-x(1))));

function [g,ceq]=mycon(x)
g=[(x(2)+300+0.5*x(1))*(1-x(1))-200];
ceq=[];

x0=[0.2;20];
A=[ ];b=[ ];
Aeq=[ ];beq=[ ];
vlb=[];vub=[ ];
[x,fval,exitflag,output]=fmincon('fop',x0,A,b,Aeq,beq,vlb,vub,'mycon')

新人不太懂,想加一个约束0<x(1)<1怎么加
展开
 我来答
我行我素850915
推荐于2017-08-10 · TA获得超过8241个赞
知道大有可为答主
回答量:5788
采纳率:77%
帮助的人:1772万
展开全部
这个约束相当于边界约束,可这样:
vlb=[0 ;-inf];vub=[ 1;+inf];

其余不变。
更多追问追答
追问
加了这个约束之后,得出的结果明显不在约束里,请问这是什么情况呀?结果是这样的:
x = -4778255077358.92
-4.14949039841113e+025
追答

我的运行结果:

是符合要求的。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式