请教高手解决一个 Matlab 非线性规划问题

各位大侠,我matlab一点不懂,帮我编程一下哈,最好是可以直接复制进软件直接运行的,谢谢了!!w51,w52,w53,w54是四个权重,四个权重和为1运行得好可以提高分... 各位大侠,我matlab一点不懂,帮我编程一下哈,最好是可以直接复制进软件直接运行的,谢谢了!! w51,w52,w53,w54是四个权重,四个权重和为1运行得好 可以提高分数噢

按照教程编了这个程序,但是不行,大神帮我看一下,这个程序哪出了问题。解总是X0。。。
展开
 我来答
tianxiawulang
2014-01-04 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2653万
展开全部
目前注意到以下几个问题:
1、非线性约束的ceq不对;
2、目标函数不对,fmincon用于最小化目标函数;
3、变量上下界不应对x(5)约束;
4、主函数能用中文命名吗?我很怀疑。

其实你应该直接把代码贴出来,这样的图片还需要重新输入,很别扭。
我编了程序,但代码放在办公室了,改时间给你。
更多追问追答
追问
大神 能否给我一下您的QQ。。。。便于直接沟通呢~~~~
追答

抱歉,我不挂QQ。

其实也没什么需要直接诶沟通的,我把代码发上来,你试试看,有问题可再追问。

 

参考代码(保存到一个文件运行即可):

function zd_max
objfun = @(x) -x(5);
x0 = [0.25 0.25 0.25 0.25 -10];
Ae = [ones(1,4) 0];
be = 1;
lb = [zeros(4,1); -inf];
ub = [ones(4,1); inf];
fmincon(objfun, x0, [], [], Ae, be, lb, ub, @ncon)
function [c, ceq] = ncon(x)
c = [ ...
    x(5)*x(2) - x(1) + 2*x(2);
    x(5)*x(2) + x(1) - 4*x(2);
    x(5)*x(3) - x(1) + 2*x(3);
    x(5)*x(3) + x(1) - 4*x(3);
    x(5)*x(4) - x(1) + 4*x(4);
    x(5)*x(4) + x(1) - 6*x(4);
    x(5)*x(3) - x(2) + 2*x(3);
    x(5)*x(3) + x(2) - 4*x(3);
    x(5)*x(4) - x(2) + 2*x(4);
    x(5)*x(4) + x(2) - 4*x(4);
    ];
ceq = [];

 

求得结果

w51 - w54:

0.5191    0.2595    0.1298    0.0916

lambda = 0

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

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式