首先需要明确,优化问题一般都要求可行域为闭集,也就是说,不等式约束一般包括等号(“<”应为“<=”),否则,很可能无解。
参考代码:
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,问题是无解的。
来自:求助得到的回答