matlab二次规划问题

现在有一个例子程序,

,这个例子是连个参数的很简单,但是另一个问题,

这个里面有7个参数,具体应该怎么做,麻烦给出matlab源代码,多谢,请尽量使用quadprog函数,另外这题的最终答案是:X∗ = {3.5 0.7 17.0 7.3 7.3 3.35 5.29}T, f ∗ = 2985.22,麻烦各位大神思考下,我先给100奖赏,满意答案续加100,多谢、。
给出满意答案的,我送10个企鹅币,求大神帮帮忙。

这个优化目标不是二次型、约束也不是线性约束,无法用quadprog求解,可以考虑用fmincon来解。


新建个mycon.m文件,里面的内容是:

function [c, ceq] = mycon(x)
U = [3.6 0.8 28 8.3 8.3 3.9 5.5]';
L = [2.6 0.7 17 7.3 7.3 2.9 5.0]';
% 25个不等式约束
c = [27 - x(1)*x(2)^2*x(3);
    397.5 - x(1)*x(2)^2*x(3)^2;
    1.93*x(4)^3 - x(2)*x(3)*x(6)^4;
    1.93*x(5)^3 - x(2)*x(3)*x(7)^4;
    sqrt((745*x(4)/x(2)/x(3))^2 + 16.9e6) - 110*x(6)^3;
    sqrt((745*x(5)/x(2)/x(3))^2 + 157.5e6) - 85*x(7)^3;
    x(2)*x(3) - 40;
    x(1) - 12*x(2);
    5*x(2) - x(1);
    x - U;
    L - x;
    1.5*x(6)+1.9 - x(4);
    1.1*x(7)+1.9 - x(5)];
% 等式约束
ceq = [];
end

调用的程序是:

%% 最优化目标函数f
f = @(x)0.7854*x(1)*x(2)^2*(3.3333*x(3)^2+14.9334*x(3)-43.0934)-1.508*x(1)*(x(6)^2+x(7)^2) + 7.477*(x(6)^3+x(7)^3)+0.7854*(x(4)*x(6)^2+x(5)*x(7)^2);

x = fmincon(f, ones(7,1), [],[],[],[],[],[], @mycon, optimset('Display', 'off'))

f(x)

解出来的值与你的最终答案基本一样,除了x(5)=7.7以外。

你所贴的最终答案是错的,如果x(5) = 7.3,那么g25约束无法满足。

追问

大神,请把你的扣扣号给我,我给你冲扣币,多谢你,另外程序还有一点点小问题,请大神帮忙看一下,另备注一下,请大神放心留扣扣,等问题解决后,我会删除次问题,多谢。

追答

程序里有个@mycon我打错成@ff。Q币我也不用,回答能被采纳就够了。

Q: eight five two six one zero one eight three

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-02-02

约束条件非线性,quadprog做不了吧

 

这些啥意思? g8(x) ----- : g9(x)