一、非线性规划

1.1 非线性规划的定义

非线性规划(Nonlinear Programming,NLP) 是一种数学规划方法,用于解决含有非线性目标函数和/或非线性约束条件的优化问题。它是线性规划的一种扩展形式,更加广泛适用于复杂实际问题。

非线性规划的目标是最小化(或最大化)一个非线性目标函数,同时满足一组非线性约束条件。这些非线性函数可以是任意形式的,例如多项式、指数函数、对数函数等。非线性规划的决策变量可以是连续的或离散的,具体取决于问题的性质。

与线性规划相比,非线性规划更具挑战性,因为非线性函数的存在使得问题的求解变得更加困难。非线性优化问题往往没有显式解,需要使用迭代算法逐步优化。常用的求解方法包括牛顿法、梯度下降法、拟牛顿法、遗传算法等。

1.2 非线性规划的数学模型

min ⁡ f ( x ) \min f\left( \boldsymbol{x} \right) minf(x)
s . t . { A ⋅ x ⩽ b A e q ⋅ x = b e q c ( x ) ⩽ 0 c e q ( x ) = 0 l b ⩽ x ⩽ u b s.t.\left\{ \begin{array}{c} \boldsymbol{A}\cdot \boldsymbol{x}\leqslant \boldsymbol{b}\\ Aeq\cdot \boldsymbol{x}=beq\\ c\left( \boldsymbol{x} \right) \leqslant 0\\ ceq\left( \boldsymbol{x} \right) =0\\ lb\leqslant \boldsymbol{x}\leqslant ub\\ \end{array} \right. s.t. AxbAeqx=beqc(x)0ceq(x)=0lbxub
式中: f ( x ) f\left( \boldsymbol{x} \right) f(x)为标量函数; A \boldsymbol{A} A, b \boldsymbol{b} b,Aeq,beq,lb,ub为相应维数的矩阵和向量; c ( x ) c\left( \boldsymbol{x} \right) c(x), c e q ( x ) ceq(x) ceq(x)为非线性向量函数。

1.3 非线性规划的matlab求解

MATLAB中求解非线性规划的命令是

[x,fval]=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)

其中, x 0 x0 x0 x \boldsymbol{x} x的初始值; n o n l c o n nonlcon nonlcon是定义的非线性向量函数; c ( x ) c\left( \boldsymbol{x} \right) c(x), c e q ( x ) ceq(x) ceq(x);options是定义的优化参数。

二、案例分析

求下列非线性规划:
min ⁡ f ( x ) = x 1 2 + x 2 2 + x 3 2 + 8 \min f\left( x \right) =x_{1}^{2}+x_{2}^{2}+x_{3}^{2}+8 minf(x)=x12+x22+x32+8
s . t . { x 1 2 − x 2 + x 3 2 ⩾ 0 x 1 + x 2 2 + x 3 3 ⩽ 20 − x 1 − x 2 2 = − 2 x 2 + 2 x 3 2 = 3 x 1 , x 2 , x 3 ⩾ 0 s.t.\left\{ \begin{array}{c} x_{1}^{2}-x_2+x_{3}^{2}\geqslant 0\\ x_1+x_{2}^{2}+x_{3}^{3}\leqslant 20\\ -x_1-x_{2}^{2}=-2\\ x_2+2x_{3}^{2}=3\\ x_1,x_2,x_3\geqslant 0\\ \end{array} \right. s.t. x12x2+x320x1+x22+x3320x1x22=2x2+2x32=3x1,x2,x30
MATLAB代码:
非线性目标函数:

function f=fun1(x)
    f=sum(x.^2)+8;
end

非线性约束条件:

function [g,h]=fun2(x)
    g=[-x(1)^2+x(2)-x(3)^2
        x(1)+x(2)^2+x(3)^3-20];
    h=[-x(1)-x(2)^2+2
        x(2)+2*x(3)^2-3];
end

主程序代码:

[x,y]=fmincon('fun1',rand(3,1),[],[],[],[],zeros(3,1),[],'fun2')

求解结果:

优化模型:MATLAB非线性规划-LMLPHP

12-26 08:00