1 、非线性不等式约束 【例 1 】已知 f(x) = ex1 ∗ (4x12 + 2x22 + 4x1x2 + 2x2 + 1) ,且满足非线性约束: {x1x2 − x1 − x2 ≤ −1
5x1x2 ≥ −10,求minxf(x)
【分析】fmincon 函数要求的约束一般为 c(x) ≤ 0
故对约束条件要变形
【程序清单】 %编写目标函数: function y=objfun(x) y=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1); %编写返回约束值得函数: function[c,ceq]=confun(x) %非线性不等式约束 c=[1
5+x(1)*x(2)-x(1)-x(2); -x(1)*x(2)-10]; %线性等式约束 ceq=[]; x0=[-1,1]; %采用标准算法 options=optimset('largescale','off'); % 这 是 对 寻 优 函 数 搜 索 方 式 的 设 定 ,LargeScale 指大规模搜索,off 表示在规模搜索模式关闭
[x,fval]=fmincon('objfun',x0,[],[],[],[],[],[],'confun',options) 【输出结果】 x = -9
5474 1
0474 fval = 0
0236 2 、边界约束问题 【例 2 】已知 f(x) = ex1 ∗ (4x12 + 2x22 + 4x1x2 + 2x2 + 1) ,求minxf(x)
且满足非线性约束:{x1x2 − x1 − x2 ≤ −1
5x1x2 ≥ −10 边界约束:{x1 ≥ 0x2 ≥ 0 【分析】此类问题在非线性约束的基础上增加了变量 x 的边界条