mobile wallpaper 1
2470 字
6 分钟
第 2 章 线性规划与单纯形法
2026-06-29

线性规划的数学模型及标准型#

1. 数学模型的一般结构#

线性规划(Linear Programming,简称 LP)解决的是在有限资源限制下,如何实现特定目标最大化或最小化的问题。其数学模型由三要素组成:

  • 决策变量(x1,x2,…,xnx_1, x_2, \dots, x_n)
  • 目标函数:要求实现最大化(max⁡z\max z)或最小化(min⁡z\min z)
  • 约束条件:由一组线性等式或不等式构成,且决策变量通常满足非负约束(xj≥0x_j \ge 0)

2. 线性规划的标准型#

线性规划问题的数学标准型定义如下: max⁡z=∑j=1ncjxj\max z = \sum_{j=1}^n c_j x_j s.t. {∑j=1naijxj=bi,i=1,2,…,mxj≥0,j=1,2,…,n\text{s.t. } \begin{cases} \sum_{j=1}^n a_{ij} x_j = b_i, & i = 1, 2, \dots, m \\ x_j \ge 0, & j = 1, 2, \dots, n \end{cases} 其中右端项常数必须满足非负性,即 bi≥0b_i \ge 0 (i=1,…,mi = 1, \dots, m)。

3. 非标准型向标准型的转化方法#

实际建模得到的线性规划问题往往不是标准型,需按以下规则进行转化:

  1. 目标函数极小化:若原要求为 min⁡z=CX\min z = CX,则令 z′=−zz' = -z,转化为求 max⁡z′=−CX\max z' = -CX。
  2. 约束条件为不等式:
    • 对于“≤\le”型不等式 ∑aijxj≤bi\sum a_{ij} x_j \le b_i,可在等式左端加入一个非负松弛变量(Slack Variable) xs≥0x_{s} \ge 0,化为等式。
    • 对于“≥\ge”型不等式 ∑aijxj≥bi\sum a_{ij} x_j \ge b_i,可在等式左端减去一个非负剩余变量(Surplus Variable) xe≥0x_{e} \ge 0,化为等式。
  3. 变量无约束(取值无限制):若某变量 xkx_k 取值无约束,可引入两个非负变量 xk′,xk′′≥0x_k', x_k'' \ge 0,令 xk=xk′−xk′′x_k = x_k' - x_k'' 替换原变量。
  4. 右端常数项为负:若某约束条件右端常数 bi<0b_i < 0,必须在不等式或等式两端同乘以 −1-1,使右端项常数变为非负。

线性规划的图解法与几何性质#

1. 图解法(Graphical Method)#

仅适用于含有两个决策变量的线性规划问题。

  • 步骤:
    1. 建立直角坐标系,将各约束条件不等式画为边界直线,并根据不等号方向确定半平面。
    2. 求出所有半平面的交集,确定可行域(Feasible Region)。
    3. 绘制目标函数等值线 c1x1+c2x2=zc_1 x_1 + c_2 x_2 = z。
    4. 将目标函数等值线沿其梯度方向(即利润增加方向)平移,寻找与可行域边界最后的交点,该点即为最优解对应的顶点。

2. 几何与代数性质#

  • 凸集(Convex Set):若集合 KK 中任意两点连线上的所有点都在 KK 内,则称 KK 为凸集。
  • 顶点(Extreme Point):凸集中不能表示为该集合内其他两点严格凸组合的点。
  • 核心定理:
    1. 线性规划问题的可行域(若存在)是一个凸集(通常为凸多面体)。
    2. 线性规划问题的基可行解对应于可行域的顶点。
    3. 若可行域有界且存在最优解,目标函数的最优值一定可以在可行域的某个顶点上达到。

单纯形法求解原理(代数与矩阵表示)#

单纯形法(Simplex Method)的核心思想是在可行域的顶点之间进行有方向的迭代搜寻,使得每一步迭代后的目标函数值均有所改进(或保持不变),直到找到最优顶点。

1. 代数迭代核心步骤#

  1. 确定初始基可行解:选择 mm 个线性独立的列向量作为基,令其余 n−mn-m 个非基变量为零,解出 mm 个基变量。通常选择松弛变量对应的单位矩阵作为初始基。
  2. 用非基变量表示基变量和目标函数:通过高斯行初等变换消元,将基变量 XBX_B 和目标函数 zz 表达为非基变量 XNX_N 的线性函数。
  3. 最优性检验(检验数计算): 目标函数中非基变量 xjx_j 的系数即为检验数 σj\sigma_j:
    • 对于极大化问题:若所有非基变量的检验数 σj≤0\sigma_j \le 0,则当前基可行解已是最优解。
    • 若存在某个非基变量的检验数 σk>0\sigma_k > 0,说明将该变量换入基变量可增加目标函数值。
  4. 基变换:
    • 确定换入变量(Entering Variable):通常选择正检验数最大者对应的非基变量 xkx_k 换入基。
    • 确定换出变量(Leaving Variable):利用比值判别规则(θ\theta 规则)防止变量出现负值: θ=min⁡i{biaik′ | aik′>0}\theta = \min_{i} \left\{ \frac{b_i}{a'_{ik}} \ \middle|\ a'_{ik} > 0 \right\} 比值最小的行对应的基变量换出。
  5. 旋转运算(Pivot):以主元(主行与主列交点系数 alk′a'_{lk})进行初等行变换,完成基变量的替换,并转入下一步迭代。

2. 矩阵表示法#

将约束矩阵分块为基矩阵 BB 和非基矩阵 NN: A=[B,N],X=[XB,XN]TA = [B, N], \quad X = [X_B, X_N]^T 约束方程 AX=b  ⟹  BXB+NXN=bAX=b \implies B X_B + N X_N = b。左乘 B−1B^{-1} 得到: XB=B−1b−B−1NXNX_B = B^{-1}b - B^{-1}N X_N 代入目标函数 z=CBXB+CNXNz = C_B X_B + C_N X_N 得到: z=CBB−1b+(CN−CBB−1N)XNz = C_B B^{-1}b + (C_N - C_B B^{-1}N)X_N 定义非基变量的检验数向量为: σN=CN−CBB−1N\sigma_N = C_N - C_B B^{-1}N 当 σN≤0\sigma_N \le 0 时,令 XN=0X_N=0,得到最优解 XB∗=B−1bX_B^* = B^{-1}b,最优值 z∗=CBB−1bz^* = C_B B^{-1}b。


人工变量法(大 M 法与两阶段法)#

当约束条件包含“≥\ge”不等式或等式约束时,系数矩阵中往往不包含现成的单位矩阵作为初始可行基。此时需要引入非负的虚拟变量——人工变量(Artificial Variable)来构造人工单位基。为了强迫人工变量在迭代过程中退为零,可采用以下两种求解策略:

1. 大 M 法(Big-M Method)#

  • 核心思想:在原目标函数中,对每个引入的人工变量 xax_a 施加一个极大的惩罚系数(极大化问题中系数取 −M-M,极小化问题中系数取 +M+M,其中 MM 是一个任意大的正数)。
  • 求解流程:构建好标准型及目标函数后,直接填入单纯形表进行普通单纯形迭代。在计算检验数时,把 MM 当作符号常数参与计算。

2. 两阶段法(Two-Phase Method)#

大 MM 法在计算机中因数值精度问题(大 MM 与普通系数相加减易产生舍入误差)较难精确实现,故通常采用两阶段法:

  • 第一阶段:不考虑原目标函数,构造一个仅以最小化人工变量之和为目标的新问题: min⁡w=∑ixa,i\min w = \sum_{i} x_{a,i} 在约束中加入人工变量,使其具有单位可行基,并用单纯形法求解。
    • 若最终表的最优值 w∗>0w^* > 0,说明原问题无可行解,计算终止。
    • 若最优值 w∗=0w^* = 0(且人工变量均出基),说明原问题存在基可行解,进入第二阶段。
  • 第二阶段:从第一阶段的最终单纯形表中剔除人工变量所在的各列,将目标函数行的系数替换回原问题的目标函数系数,重新计算当前基的检验数,作为第二阶段的初始表继续单纯形迭代,直至找到原问题的最优解。

单纯形法中解的类型判别#

单纯形表在最终迭代状态下,可以通过检验数 σj\sigma_j 和约束系数特征来判别原问题解的类型(以极大化 max⁡\max 问题为例):

  1. 唯一最优解:满足所有非基变量的检验数 σj<0\sigma_j < 0 (在非退化前提下,即基变量值均严格大于 0)。
  2. 无穷多最优解:所有非基变量检验数 σj≤0\sigma_j \le 0,但存在至少一个非基变量 xkx_k 的检验数 σk=0\sigma_k = 0。这表明将 xkx_k 换入基后目标函数值不发生变化,从而可得到另一个不同的顶点最优解。这两个顶点之间的任何线性凸组合也都是最优解。
  3. 无界解:若在迭代中发现某非基变量的检验数 σk>0\sigma_k > 0,但该变量对应约束矩阵中的列向量系数均非正(即对于一切 ii,有 aik′≤0a'_{ik} \le 0)。此时无法通过 θ\theta 规则确定换出变量,说明可行域沿该非基变量方向可无限延伸,目标函数可无限增大。
  4. 无可行解:在迭代结束(所有检验数已满足最优判别)时,基变量中仍含有不为零的人工变量;或者在两阶段法第一阶段结束时,辅助目标的最优值 w∗>0w^* > 0。
  5. 退化解与循环: 在按照 θ\theta 规则确定换出变量时,若出现两个或多个最小比值相等的情况,则下一次迭代中会有一个或多个基变量取值为 0,这被称为退化。退化可能导致单纯形法在相同的几个顶点基之间无限循环(Cycling),从而永远无法达到最优。
    • 勃兰特规则(Bland’s Rule):为了彻底消除循环,可引入如下规则:
      1. 每次选择检验数 σj>0\sigma_j > 0 中下标最小的变量 xkx_k 作为换入变量。
      2. 当出现多个相同的最小比值 θ\theta 时,选择其中下标最小的基变量作为换出变量。

复习思考题#

  1. 简述松弛变量、剩余变量和人工变量的物理意义与数学作用,并说明它们在单纯形法寻基过程中的区别。
  2. 为什么两阶段法第一阶段的辅助目标函数必须设为最小化人工变量之和(即 min⁡w=∑xa,i\min w = \sum x_{a,i})? 若第一阶段求解完毕后,发现最优值 w∗>0w^* > 0,这在几何上意味着什么?
  3. 什么是单纯形法中的“循环”现象? 勃兰特规则(Bland’s Rule)是如何利用下标规则来彻底避免循环并保证算法收敛性的?
分享

如果这篇文章对你有帮助,欢迎分享给更多人!

第 2 章 线性规划与单纯形法
https://blog.sopak.space/posts/study/economics-management/mo/4/
作者
Xxxhite
发布于
2026-06-29
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录