请大神帮我解决一个MATLAB非线性优化问题,万分感谢

如题所述

首先需要明确,优化问题一般都要求可行域为闭集,也就是说,不等式约束一般包括等号(“<”应为“<=”),否则,很可能无解。

 

参考代码:

function zd684249545205932052
% x(1)-x(4)分别表示a~d
f=@(x)-(x(1)*x(2)^3-(x(1)-x(4))*(x(2)-2*x(3))^3)/(6*x(2));
x0 = [1.5 1.5 0.5 1];
lb = zeros(1,4);
ub = [3 3 3 3];
[x,fval,exitflag] = fmincon(f,x0,[],[],[],[],lb,ub,@ncon)
function [c,ce]=ncon(x)
c = [ ...
    x(3)-x(2)/2;
    x(4)-x(1);
    x(1)*x(2)-2*(x(1)-x(4))*(x(2)-2*x(3))-6;
    ];
ce = [];

求解结果:

x =
    3.0000    3.0000    1.2500         0

fval =
   -4.4792

其中目标函数求解时取了负号,实际最大值为4.4792。这里需要注意,如果要求d>0,问题是无解的。

来自:求助得到的回答
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-06-15
建立目标函数M文件及非线性约束文件,用fminunc函数求最小值,加负号就是最大值