非线性规划——非线性规划的标准型(一)
非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。20世纪50年代初,库恩(H.W.Kuhn) 和塔克 (A.W.Tucker) 提出了非线性规划的基本定理,为非线性规划奠定了理论基础。20世纪80年代以来,随着计算机技术的快速发展,非线性规划方法取得了长足进步,在信赖域法、稀疏拟牛顿法、并行计算、内点法和有限存储法等领域取得了丰硕的成果。非线性规划在工业工程、交通运输、经济管理和军事等方面有广泛的应用。
一、非线性规划实例
[资源配置问题]一容器由圆锥面和圆柱面围成。表面积为\(S\),圆锥部分高为\(h\),\(h\)和圆柱部分高\(x_2\)之比为\(a\),\(x_1\)为圆柱底圆半径,求\(x_1\)和\(x_2\),使容积最大。
[生产管理问题] 某电视机制造厂生产二款电视机A和B。已知电视机A每月最大的销售量为500台,电视机B每月的最大销售量为400台。工厂采用随销售量增加而递减销售价格的定价方式对电视机进行定价,那么单台电视机的利润是随着销售量的增加而递减。
分别以\(X_A\)和\(X_B\)表示电视机A和B的月销售量,那么电视机A的销售收入可以表示为:
它说明第一部A型电视机的利润为300元,最后一部(第500) 型电视机的利润为150元。电视机B的销售收入可以表示为:
电视机的生产受到下下述条件限制:
装配工时限制:每月最多可供使用的工时是1200小时,而装配一台电视机A 需要2工时,装配一台电视机B需要1工时。
机器加工能力限制:每日最多可供使用的机时是1350小时,加工一台电视机A需要1机时,加工一台电视机B需要3机时。
那么,如何决定每种电视机的月产量,使月销售收入最大。
如果我们以二款电视机的月销售收入之和作为目标函数,则电视机生产管理的最优化问题被表示为:
[投资组合管理] 设\(x_i\),\(i=1,2,...,n\)为持有第\(i\)种证券品种的比例,满足\(\sum_{i=1}^{n}x_i=1\),\(r_i\)为第\(i\)种证券品种的收益率,\(\rho\) 为投资组合的收益率,\(Q\)为证券品种的方差-协方差矩阵等于:
数学规划模型为:
二、非线性规划的标准型
从上面实例归结出非线性规划的标准型:
其中 \(X=(x_{1},x_{2},...,x_{n})^{T}\in E^{n}\),表示\(X\)是\(n\)维欧氏空间\(E^{n}\) 中的向量或点,\(f, g_{i}, h_{j}\)是定义在 \(E^{n}\)上的实值函数,简记为
!!!注意:这里模型不等式约束是小于等于,与清华运筹学标准型相差一个符号,这是为了和软件处理相匹配。
非线性规划与线性规划有本质的区别:
模型函数成分不同:线性规划主要是由确定的等式构成方程组,去求解目标函数的极值问题,全是线性成分(一次式);而非线性规划构成的方程组并不是等式,而是不等式,通过不等式的约束条件,去求解目标函数的极值(有非线性成分,例如平方)。
最优解范围不同:如果最优解存在,线性规划只能存在可行域的边界上找到(一般还是在顶点处),而非线性规划的最优解可能存在于可行域的任意一点达到。
非线性规划模型的可行域可以表示为:
[极值点] 设 \(x^* \in X, X \subseteq R^n, f: R^n \rightarrow R\)
(1) 如果 \(x^* \in X\), 并且存在 \(x^*\) 的邻域 \(N\left(x^*\right)=\left\{x \in R^n:\left\|x-x^*\right\| \leq \delta, \delta \geq 0\right\}\) 使得:
则 \(x^*\) 是非线性规划的局部最优解或局部极小点, 称 \(f\left(x^*\right)\) 是非线性规划的局部最优值或局部极小值。
(2) 如果 \(x^* \in X\), 并且存在 \(x^*\) 的邻域 \(N\left(x^*\right)=\left\{x \in R^n:\left\|x-x^*\right\| \leq \delta, \delta \geq 0\right\}\) 使得:
则 \(x^*\) 是非线性规划的严格局部最优解或严格局部极小点, 称 \(f\left(x^*\right)\) 是非线性规划的严格局部最优值或严格局部极小值。
例1 考虑下述带等式约束的非线性规划问题。非线性规划的可行域\(X\)是连接点\((2,0)\)和点\((0,2)\)直线上的所有点,目标函数与可行域的交点为\(x^*=(1,1)\),它是非线性规划的全局最优解,全局最优值为\(f(x^*)=1\)。
非线性规划模型 | 图形 |
---|---|
例2 考虑下述带等式约束的非线性规划问题。其可行域\(X\)是以原点为中心,半径等于\(\sqrt(2)\)的圆周长上的所有点,可行域的最小相交点为\((-1,-1)\) ,它是非线性规划的全局最优解,全局最优值为\(f(x^*)=-2\) 。
非线性规划模型 | 图形 |
---|---|
例3 某公司有6个建筑工地要开工,每个工地的位置(用平面坐标系\(a,b\)表示,距离单位:km)及水泥日用量\(d(单位:t)\)由下表给出。目前有两个临时料场位于\(A(5,1),B(2,7)\),日储量各有\(20t\)。假设从料场到工地之间均有直线道路相连,(1)试制定每天的供应计划,即从A,B两料场分别向各工地运送多少吨水泥,使总的吨千米数最小;(2)为进一步减少吨千米数,打算舍弃这两个临时料场,改建两个新的,日储量各为\(20t\)。问应建在何处,节省的吨千米数为多大?
1 | 2 | 3 | 4 | 5 | 6 | |
---|---|---|---|---|---|---|
\(a\) | 1.25 | 8.75 | 0.5 | 5.75 | 3 | 7.25 |
\(b\) | 1.25 | 0.75 | 4.75 | 5 | 6.5 | 7.75 |
\(d/t\) | 3 | 5 | 4 | 7 | 6 | 11 |
建立数学模型:
第一步,设定建立数学模型所需用到的符号,并分析确定出决策变量:
(1)设工地的位置为$ (a_{i},b_{i}) $,水泥日用量为 \(d\_{i} ,i=1,2,...,6\); 料场位置为 \((x_{j},y_{j})\) ,日储量为 \(e_{j} ,j=1,2\); 从料场\(j\)向工地\(i\)的运送量为\(X_{ij}\)
(2)使用临时料场时$x_{j},y_{j}(j=1,2) $是确定的常量,所以决策变量只有 \(X_{ij}\) 。而不使用临时料场时 \(x_{j},y_{j}(j=1,2)\) 不确定,所以决策变量有 \(x_{j},y_{j},X_{ij}\) 。
第二步,确定约束条件:
料场水泥运输总量不超过其日储量: $$\sum_{i=1}^{6}{X_{ij}}\leq e_{j},j=1,2 $$
两个料场向某工地运输量之和等于该工地水泥日用用量$$\sum_{j=1}^{2}{X_{ij}}=d_{i},i=1,2,...,6 $$
第三步,确定目标函数:
求吨千米数,即运送量乘以运送距离的集合:
综上可得,题目的规划模型为:
第一小问(1)由于只有一个决策变量,且目标函数和约束条件都可以线性表示,所以求解第一小问就是求解线性规划模型。利用相关软件计算可得最优值为 136.2275,最优解由下表给出,所以由临时料场A,B向6个工地运料方案为:
1 | 2 | 3 | 4 | 5 | 6 | |
---|---|---|---|---|---|---|
A | 3 | 5 | 0 | 7 | 0 | 1 |
B | 0 | 0 | 4 | 0 | 6 | 10 |
第二小问(2)的目标函数是非线性的,且是非线性多变量函数,所以求解第二小问才是求解非线性规划模型。利用相关软件计算可得最优值为90.4920,新建料场坐标为A(5.7297,4.9757)、B(7.2500,7.7500),运料方案为:
1 | 2 | 3 | 4 | 5 | 6 | |
---|---|---|---|---|---|---|
A | 2.9410 | 4.8405 | 3.8779 | 6.9431 | 1.3033 | 0.0221 |
B | 0.0590 | 0.1595 | 0.1221 | 0.0569 | 4.6967 | 10.9779 |
三、非线性模型细分与准备知识
3.1 模型进阶分类
为便于分析和研究,非线性规划模型常常按约束条件可分为以下三类:
无约束
解法一般就这几种方法:(1)梯度法,(2)牛顿法(3)拟牛顿法。
只有等式约束
解法一般有消元法,拉格朗日乘子法,罚函数法。
有不等式约束
求解思路通常由繁化简,将不等式约束化为等式约束,将约束问题化为无约束问题,将非线性问题化为线性问题。最经典的理论就是Kuhn-Tucker提出的,即kt条件,它说极值点一定满足这样条件,我们遇到的问题一般为凸函数问题,于是kt条件就变为了充要条件,我们找到满足kt条件的点就找到了目标点。
3.2 准备知识
[多元函数泰勒展开式] 若\(u=f(x)\) 在点\({x_0} \in S \subseteq {R^n},f(x)\)在点\(x_0\)处的某个邻域具有二阶连续偏导数,令\(0 \le \theta \le 1\) ,则有
\(\begin{array}{l} f({x_0} + \Delta x) = f({x_0}) + \nabla f{({x_0})^T}\Delta x + \frac{1}{2}\Delta {x^T}{\nabla ^2}f({x_0} + \theta \Delta x)\Delta x\\ \quad \quad \;\; = f({x_0}) + \nabla f{({x_0})^T}\Delta x + o(\left\| {\Delta x} \right\|)\\ \quad \quad \;\; = f({x_0}) + \nabla f{({x_0})^T}\Delta x + \frac{1}{2}\Delta {x^T}{\nabla ^2}f({x_0})\Delta x + o({\left\| {\Delta x} \right\|^2}) \end{array}\)
[梯度] 函数\(f(x):{R^n} \to R\),如果\(f(x)\)是连续函数,且存在一阶偏导数,则称向量
为\(f(x)\)在点\(x\)处的一阶偏导数或梯度。
[方向导数] 考虑函数\(Z = f({x_1},{x_2})\),及方向\(\vec{I}=\cos \phi \vec{i}+\sin \phi \vec{j}\),则
[海塞矩阵] 函数\(f(x):{R^n} \to R\),如果\(f(x)\)存在二阶偏导数,则称矩阵
为\(f(x)\)在点\(x\)处的二阶偏导数矩阵,通常称其为海塞(\(Hessian\) )矩阵。