matlab二次规划问题
发布网友
发布时间:2022-04-25 01:27
我来回答
共2个回答
热心网友
时间:2023-08-26 19:37
这个优化目标不是二次型、约束也不是线性约束,无法用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
热心网友
时间:2023-08-26 19:38
约束条件非线性,quadprog做不了吧
这些啥意思? g8(x) ----- : g9(x)