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)

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com