求助一个用Matlab求解非线性规划的问题,不胜感激!

求助一个用Matlab求解非线性规划的问题,不胜感激!首先,建立M文件fun.m,定义目标函数functionf=fun(x);f=(3.4854*x(1)+6.2879... 求助一个用Matlab求解非线性规划的问题,不胜感激!

首先,建立M文件fun.m,定义目标函数
function f=fun(x);
f=(3.4854*x(1)+6.2879*x(3)+5.6932*x(4))/(3.4854*x(1)-4.952*x(2)+6.2879*x(3)+5.6932*x(4)-2.4846*x(5));
第二,建立M文件mycon.m,定义约束条件
function[g]=mycon(x)
g=x(1)+x(2)+x(3)+x(4)+x(5);
然后,建立主程序main.m
x0=[1;0;0;0;0];
A=[];b=[];
Aeq=[1 1 1 1 1];beq=[1];
VLB=[0 0 0 0 0];
VUB=[1 1 1 1 1];
[x,fval]=fmincon('fun',x0,A,b,Aeq,beq,VLB,VUB,'mycon')

请高手看一下这个程序哪里错了,程序出现好多错误,提示信息如下:
Error using mycon
Too many output arguments.

Error in fmincon (line 681)
[ctmp,ceqtmp] = feval(confcn{3},X,varargin{:});

Error in Untitled11 (line 6)
[x,fval]=fmincon('fun',x0,A,b,Aeq,beq,VLB,VUB,'mycon')

Caused by:
Failure in initial user-supplied nonlinear constraint function evaluation. FMINCON cannot
continue.
展开
 我来答
信科滨
2012-10-07 · TA获得超过217个赞
知道小有建树答主
回答量:195
采纳率:0%
帮助的人:217万
展开全部
1. 把[x,fval]=fmincon('fun',x0,A,b,Aeq,beq,VLB,VUB,'mycon')
改为
[x,fval]=fmincon('fun',x0,A,b,Aeq,beq,VLB,VUB)

我不是太清楚你为什么要加mycon没用吧。
2. 目标函数加负号(因为fmincon是求最小值)
function f=fun(x)
f=-(3.4854*x(1)+6.2879*x(3)+5.6932*x(4))/(3.4854*x(1)-4.952*x(2)+6.2879*x(3)+5.6932*x(4)-2.4846*x(5));

3. 命令行
x0=[1;0;0;0;0];
A=[];b=[];
Aeq=[1 1 1 1 1];beq=[1];
VLB=[0 0 0 0 0];
VUB=[1 1 1 1 1];
[x,fval]=fmincon('fun',x0,A,b,Aeq,beq,VLB,VUB);
xmin=x
fmin=-fval
追问
感谢你的回答,请问初始值的设置有什么要注意的吗?设置不同的初始值结果完全不一样,若把x0设为[0.2,0.2,0.2,0.2,0.2]得到的结果完全不一样哦。
追答
1. 因为你这是非线性规划问题,一般是求不出最优解的(很困难),可能会得到一个极值点。跟你的初值有关系,你可以试着多取几个初值然后选出最好的一个。

2. 你可以试试用lagrange乘数法来求解。

3. 我觉得你的目标函数最大有问题,因为我可以取一些值使得分母为0,那么目标值就为无穷大。是不是应该试试求最小值呢?是的话,你把目标函数修改下
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式