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 的边界条件,在 fmincon函数输入参数中加上 Ib 和 ub 参数即可。 【程序清单】 %编写目标函数: 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]; %设置下界 Ib=[0,0]; %无上界 ub=[]; %采用标准算法 options=optimset('largescale','off'); % 这 是 对 寻 优 函 数 搜 索 方 式 的 设 定 ,LargeScale 指大规模搜索,off 表示在规模搜索模式关闭。 [x,fval]=fmincon('objfun',x0,[],[],[],[],Ib,ub,'confun',options) 【输出结果】 x = 0 1.5000 fval = 8.5000 >> [c,ceq]=confun(x) c = -0.0000 -10.0000 ceq = 0 1.5000 3 、利用梯度求解约束优化问题 【例 3 】已知 f(x) = ex1 ∗ (4x12 + 2x22 + 4x1x2 + 2x2 + 1) ,且满足非线性约束:{x1x2 − x1 − x2 ≤ −1.5x1x2 ≥ −10 ,求minxf(x) 。 【分析】一...