一、题目
二、题目分析
(1)(2)(3)(4)为非线性规划问题
(5)为常规的线性规划问题
matlab代码实现:
clc
clear all
fun=@(x)sum(x.^2)+8; %目标函数 非线性
[x,f_min]=fmincon(fun,[0,0,0],[],[],[],[],zeros(3,1),[],@nonlcon)
% 非线性约束条件
function [c,ceq]=nonlcon(x)%nonlcon是用M函数定义的非线性函数c(x),ceq(x)
c=[-x(1)^2+x(2)-x(3)^2
x(1)+x(2)^2+x(3)^3-20]; %非线性不等式约束
ceq=[-x(1)-x(2)^2+2
x(2)+2*x(3)^2-3*x(1)]; %非线性等式约束
end
输出结果:
x =
0.7472 1.1193 0.7490
f_min =
10.3722
四、题目二
求目标函数
fun = (x)100*(x(2)-x(1)^2)^2+(1-x(1))^2
在圆内的最小点
代码实现:
fun=@(x)100*(x(2)-x(1).^2).^2+(1-x(1)).^2; %目标函数 非线性
[x,y_min]=fmincon(fun,[1/4,1/4],[],[],[],[],[0,0.2],[0.5,0.8],@nonlcon)
% 非线性约束条件
function [c,ceq]=nonlcon(x)
c=[sum((x-1/3).^2)-1/9]; %非线性不等式约束
ceq=[]; %非线性等式约束,为空
end
输出结果:
x =
0.5000 0.2500
y_min =
0.2500