线性规划核心知识点

一、线性规划的标准型:统一求解的"通用格式"

1. 标准型的4个核心特征

线性规划的标准型是求解所有线性规划问题的基础,必须满足以下条件:

  • 目标函数 :默认求极小值(若原问题是求极大值,可转化为 min (-f));
  • 约束条件:全部为等式约束(不含不等式);
  • 右端常数 :约束等式右端的 b_i ≥ 0(若 b_i < 0,等式两端乘 -1 调整);
  • 变量约束 :所有决策变量 x_j ≥ 0(无取值无限制的变量)。

标准型数学表达式 (矩阵形式):
min⁡f=cTxs.t.Ax=bx≥0 \min \quad f = \boldsymbol{c}^T \boldsymbol{x} \\ \text{s.t.} \quad \boldsymbol{A}\boldsymbol{x} = \boldsymbol{b} \\ \quad \boldsymbol{x} \geq 0 minf=cTxs.t.Ax=bx≥0

其中:

  • c\boldsymbol{c}c 是目标函数系数向量(nnn 维);
  • A\boldsymbol{A}A 是约束系数矩阵(m×nm \times nm×n 阶,m<nm < nm<n,秩为 mmm);
  • b\boldsymbol{b}b 是约束右端常数向量(mmm 维,bi≥0b_i ≥ 0bi≥0);
  • x\boldsymbol{x}x 是决策变量向量(nnn 维,xj≥0x_j ≥ 0xj≥0)。

2. 一般形式转化为标准型的5种场景

实际问题的约束可能是不等式、变量无约束等,需按以下规则转化为标准型:

原约束/目标函数类型 转化方法
目标函数求极大值(max⁡f\max fmaxf) 转化为 min⁡(−f)\min (-f)min(−f)(目标函数系数全部取反)
约束为"≤"(如 ∑aijxj≤bi\sum a_{ij}x_j ≤ b_i∑aijxj≤bi) 松弛变量 xn+i≥0x_{n+i} ≥ 0xn+i≥0,变为 ∑aijxj+xn+i=bi\sum a_{ij}x_j + x_{n+i} = b_i∑aijxj+xn+i=bi
约束为"≥"(如 ∑aijxj≥bi\sum a_{ij}x_j ≥ b_i∑aijxj≥bi) 剩余变量 xn+i≥0x_{n+i} ≥ 0xn+i≥0,变为 ∑aijxj−xn+i=bi\sum a_{ij}x_j - x_{n+i} = b_i∑aijxj−xn+i=bi
约束右端 bi<0b_i < 0bi<0 等式两端乘 −1-1−1,同时调整约束符号(如"≤"变"≥")
变量 xjx_jxj 无取值限制 令 xj=xj′−xj′′x_j = x_j' - x_j''xj=xj′−xj′′(xj′≥0,xj′′≥0x_j' ≥ 0, x_j'' ≥ 0xj′≥0,xj′′≥0),代入目标函数和约束
变量 xj≤0x_j ≤ 0xj≤0 令 xj=−xj′x_j = -x_j'xj=−xj′(xj′≥0x_j' ≥ 0xj′≥0),替换原变量

示例 :将 max⁡f=3x1+x2−2x3\max f = 3x_1 + x_2 - 2x_3maxf=3x1+x2−2x3(约束含 ≤、≥、等式,x2x_2x2 无约束,x3≤0x_3 ≤ 0x3≤0)转化为标准型:

  1. 目标函数:min⁡f′=−3x1−x2′+x2′′+2x3′\min f' = -3x_1 - x_2' + x_2'' + 2x_3'minf′=−3x1−x2′+x2′′+2x3′(x2=x2′−x2′′x_2 = x_2' - x_2''x2=x2′−x2′′,x3=−x3′x_3 = -x_3'x3=−x3′);
  2. 约束转化:
    • 2x1+3(x2′−x2′′)+4x3′+x4=122x_1 + 3(x_2' - x_2'') + 4x_3' + x_4 = 122x1+3(x2′−x2′′)+4x3′+x4=12(原 ≤ 加松弛变量 x4x_4x4);
    • 4x1+(x2′−x2′′)−2x3′−x5=84x_1 + (x_2' - x_2'') - 2x_3' - x_5 = 84x1+(x2′−x2′′)−2x3′−x5=8(原 ≥ 减剩余变量 x5x_5x5);
    • 3x1−(x2′−x2′′)−3x3′=63x_1 - (x_2' - x_2'') - 3x_3' = 63x1−(x2′−x2′′)−3x3′=6(原等式不变);
  3. 变量约束:x1,x2′,x2′′,x3′,x4,x5≥0x_1, x_2', x_2'', x_3', x_4, x_5 ≥ 0x1,x2′,x2′′,x3′,x4,x5≥0。

二、线性规划的解:从可行解到最优解

1. 核心概念辨析

概念 定义与特点
可行解 满足所有约束条件(Ax=b\boldsymbol{A}\boldsymbol{x} = \boldsymbol{b}Ax=b 且 x≥0\boldsymbol{x} ≥ 0x≥0)的 x\boldsymbol{x}x
可行域 所有可行解构成的集合(凸集,即任意两点连线仍在集合内)
基本解 从 A\boldsymbol{A}A 中选 mmm 个线性无关列构成基 B\boldsymbol{B}B,令非基变量为0,求解 BxB=b\boldsymbol{B}\boldsymbol{x}_B = \boldsymbol{b}BxB=b 得到的解(非基变量全为0,基变量可能为负)
基本可行解 满足 x≥0\boldsymbol{x} ≥ 0x≥0 的基本解(对应可行域的顶点 ,有限个,不超过 (nm)\binom{n}{m}(mn) 个)
退化基本可行解 基本可行解中存在至少一个基变量为0(多个基本解可能对应同一个顶点)
最优解 使目标函数达到最小值的可行解(若存在,必为某个基本可行解)

2. 解的4个核心性质(考试重点)

  1. 可行域是凸集:若存在可行解,可行域必为凸集(有限个闭半空间的交集);
  2. 基本可行解 ↔ 可行域顶点 :可行解是基本可行解,当且仅当其正分量对应的 A\boldsymbol{A}A 的列向量线性无关,且对应可行域的顶点;
  3. 最优解存在则在顶点:若线性规划有最优解,必存在一个基本可行解是最优解(无需遍历所有可行解,只需验证顶点);
  4. 基本可行解有限 :基本可行解个数不超过 (nm)\binom{n}{m}(mn),保证单纯形法可在有限步内收敛。

三、单纯形法:求解线性规划的"通用算法"

单纯形法的核心思路是:从可行域的一个顶点(基本可行解)出发,迭代到相邻顶点,直到找到最优解,全程通过"单纯形表"完成计算。

1. 单纯形法的6个核心步骤

步骤1:构造初始单纯形表
  • 前提:标准型中需存在单位矩阵作为初始基(若没有,需用人工变量法构造,见第四部分);

  • 表格结构 (以 mmm 个基变量、nnn 个变量为例):

    列名 含义
    基(基变量) 当前基变量(初始为松弛变量/人工变量)
    CBC_BCB 基变量在目标函数中的系数
    bbb 基变量的取值(xB=B−1b\boldsymbol{x}_B = \boldsymbol{B}^{-1}\boldsymbol{b}xB=B−1b)
    变量列(x1,...,xnx_1,...,x_nx1,...,xn) 基变量列构成单位矩阵,非基变量列为 B−1Aj\boldsymbol{B}^{-1}\boldsymbol{A}_jB−1Aj
    θ\thetaθ 确定出基变量的最小比值(θi=biaik\theta_i = \frac{b_i}{a_{ik}}θi=aikbi,aik>0a_{ik} > 0aik>0)
    检验数 σj\sigma_jσj 判断是否最优(σj=cj−CBB−1Aj\sigma_j = c_j - \boldsymbol{C}_B\boldsymbol{B}^{-1}\boldsymbol{A}_jσj=cj−CBB−1Aj)
步骤2:最优性检验
  • 判断标准 :若所有非基变量的检验数 σj≤0\sigma_j ≤ 0σj≤0,当前基本可行解是最优解,停止迭代;
  • 特殊情况 :若存在 σj=0\sigma_j = 0σj=0 的非基变量,且能找到 θ>0\theta > 0θ>0,则有无穷多最优解。
步骤3:确定进基变量(换入变量)
  • 规则 :选择检验数最大的非基变量(σk=max⁡{σj∣σj>0}\sigma_k = \max\{\sigma_j \mid \sigma_j > 0\}σk=max{σj∣σj>0}),对应列为"主列";
  • 意义:该变量进基能使目标函数下降最快(极小化问题)。
步骤4:判断无界解
  • 规则 :若进基变量对应的主列中所有元素 aik≤0a_{ik} ≤ 0aik≤0,则目标函数可无限下降,存在无界解,停止迭代。
步骤5:确定出基变量(换出变量)
  • 规则 :计算主列中 aik>0a_{ik} > 0aik>0 对应的 θi=biaik\theta_i = \frac{b_i}{a_{ik}}θi=aikbi,选择最小 θ\thetaθ 对应的基变量为出基变量,对应行为"主行";
  • 主元素 :主行与主列的交点元素 alka_{lk}alk(后续需通过行变换将其变为1,主列其他元素变为0)。
步骤6:迭代更新单纯形表(高斯消元)
  • 行变换规则
    1. 主行:bl′=blalkb'l = \frac{b_l}{a{lk}}bl′=alkbl,alj′=aljalka'{lj} = \frac{a{lj}}{a_{lk}}alj′=alkalj(主元素变为1);
    2. 其他行:bi′=bi−aik⋅bl′b'i = b_i - a{ik} \cdot b'lbi′=bi−aik⋅bl′,aij′=aij−aik⋅alj′a'{ij} = a_{ij} - a_{ik} \cdot a'_{lj}aij′=aij−aik⋅alj′(主列其他元素变为0);
  • 更新后:进基变量替换出基变量,返回步骤2重新检验。

2. 示例:用单纯形法求解

问题 :min⁡f=−3x1−5x2\min f = -3x_1 -5x_2minf=−3x1−5x2,约束 x1≤4x_1 ≤4x1≤4,2x2≤122x_2 ≤122x2≤12,3x1+2x2≤183x_1+2x_2 ≤183x1+2x2≤18,x1,x2≥0x_1,x_2 ≥0x1,x2≥0
步骤

  1. 转化为标准型:加松弛变量 x3,x4,x5x_3,x_4,x_5x3,x4,x5,目标函数 min⁡f=−3x1−5x2+0x3+0x4+0x5\min f = -3x_1 -5x_2 +0x_3 +0x_4 +0x_5minf=−3x1−5x2+0x3+0x4+0x5,约束:
    x1+x3=4, 2x2+x4=12, 3x1+2x2+x5=18, x1,...,x5≥0x_1 +x_3=4,\ 2x_2 +x_4=12,\ 3x_1+2x_2 +x_5=18,\ x_1,...,x_5 ≥0x1+x3=4, 2x2+x4=12, 3x1+2x2+x5=18, x1,...,x5≥0
  2. 初始基为 x3,x4,x5x_3,x_4,x_5x3,x4,x5(单位矩阵),构造初始单纯形表;
  3. 迭代过程:
    • 第1次迭代:σ1=3\sigma_1=3σ1=3,σ2=5\sigma_2=5σ2=5(σ2\sigma_2σ2 最大,x2x_2x2 进基),θmin⁡=6\theta_{\min}=6θmin=6(x4x_4x4 出基),主元素为2;
    • 第2次迭代:更新表后,σ1=−1\sigma_1=-1σ1=−1,σ3=0\sigma_3=0σ3=0,σ4=2.5\sigma_4=2.5σ4=2.5,σ5=0\sigma_5=0σ5=0(σ1\sigma_1σ1 最大,x1x_1x1 进基),θmin⁡=2\theta_{\min}=2θmin=2(x5x_5x5 出基);
    • 第3次迭代:所有 σj≤0\sigma_j ≤0σj≤0,最优解 x1=2,x2=6x_1=2,x_2=6x1=2,x2=6,f=−36f=-36f=−36。

四、人工变量法:处理无初始基的情况

当标准型中无单位矩阵(如约束含"≥"或等式),需添加人工变量构造初始基,常用两种方法:

1. 大M法:用"无穷大"惩罚人工变量

核心逻辑
  • 人工变量 :在无单位矩阵的约束中加人工变量 xn+i≥0x_{n+i} ≥0xn+i≥0(如 ∑aijxj−xn+i+xn+m+i=bi\sum a_{ij}x_j -x_{n+i} +x_{n+m+i}=b_i∑aijxj−xn+i+xn+m+i=bi);
  • 目标函数处理 :极小化问题中,人工变量系数设为 MMM(无穷大正数)------ 若人工变量未出基(取值非0),目标函数会远大于0,说明无可行解;
  • 迭代步骤 :按单纯形法正常迭代,若最终基变量含人工变量且 fff 含 MMM,则原问题无可行解。
示例

问题 :min⁡f=3x1−x3\min f=3x_1 -x_3minf=3x1−x3,约束 x1+x2+x3≤4x_1+x_2+x_3 ≤4x1+x2+x3≤4,−2x1+x2−x3≥1-2x_1+x_2 -x_3 ≥1−2x1+x2−x3≥1,3x2+x3=93x_2+x_3=93x2+x3=9
处理

  • 加松弛变量 x4x_4x4、剩余变量 x5x_5x5、人工变量 x6,x7x_6,x_7x6,x7;
  • 目标函数:min⁡f=3x1+0x2−x3+0x4+0x5+Mx6+Mx7\min f=3x_1 +0x_2 -x_3 +0x_4 +0x_5 +Mx_6 +Mx_7minf=3x1+0x2−x3+0x4+0x5+Mx6+Mx7;
  • 迭代后若 x6,x7x_6,x_7x6,x7 出基(取值0),则有可行解;若仍在基中,无可行解。

2. 两阶段法:分阶段消除人工变量

核心逻辑
  • 第一阶段 :构造辅助问题,目标函数 min⁡w=∑\min w = \summinw=∑ 人工变量,约束为原标准型(含人工变量);
    • 若辅助问题最优解 w=0w=0w=0:人工变量全为0,得到原问题的初始基本可行解,进入第二阶段;
    • 若 w>0w>0w>0:原问题无可行解,停止。
  • 第二阶段:删除辅助问题的目标函数和人工变量列,用原问题目标函数,以第一阶段的最终基为初始基,按单纯形法迭代。
优势

避免大M法中"无穷大"在计算机计算中的精度误差,更适合编程实现。

五、退化与修正单纯形法

1. 退化现象:基变量为0的问题

定义

基本可行解中存在基变量为0(如多个约束交于同一点,导致 θ\thetaθ 有多个最小值),可能引发循环迭代(多次迭代后回到原基本可行解,无法收敛)。

解决方法:摄动法
  • 核心思想 :对约束右端 b\boldsymbol{b}b 加微小扰动 b(ε)=b+ε+ε2+...+εm\boldsymbol{b}(\varepsilon) = \boldsymbol{b} + \varepsilon + \varepsilon^2 + ... + \varepsilon^mb(ε)=b+ε+ε2+...+εm(ε\varepsilonε 充分小),使所有基变量非0,避免退化;
  • 计算技巧 :无需实际代入 ε\varepsilonε,只需按"多项式字典序"比较 θ\thetaθ(先比常数项,再比 ε\varepsilonε 系数,以此类推),确定唯一出基变量。

2. 修正单纯形法:优化计算效率

核心改进

普通单纯形法迭代时会重复计算非基变量列,修正法仅需维护基的逆矩阵 B−1\boldsymbol{B}^{-1}B−1,减少计算量和内存占用。

计算步骤
  1. 初始基 :设初始基为单位矩阵(B−1=I\boldsymbol{B}^{-1} = \boldsymbol{I}B−1=I),计算 xB=b\boldsymbol{x}_B = \boldsymbol{b}xB=b,CB\boldsymbol{C}_BCB;
  2. 检验数计算 :σj=cj−CBB−1Aj\sigma_j = c_j - \boldsymbol{C}_B\boldsymbol{B}^{-1}\boldsymbol{A}_jσj=cj−CBB−1Aj,判断是否最优;
  3. 进基变量 :选 σk=max⁡{σj>0}\sigma_k = \max\{\sigma_j >0\}σk=max{σj>0},计算 yk=B−1Ak\boldsymbol{y}_k = \boldsymbol{B}^{-1}\boldsymbol{A}_kyk=B−1Ak;
  4. 出基变量 :计算 θmin⁡=min⁡{xBiyki∣yki>0}\theta_{\min} = \min\{\frac{x_{Bi}}{y_{ki}} \mid y_{ki} >0\}θmin=min{ykixBi∣yki>0},确定出基变量对应行 rrr;
  5. 更新 B−1\boldsymbol{B}^{-1}B−1 :构造初等矩阵 E\boldsymbol{E}E(仅第 rrr 行不同),B新−1=EB−1\boldsymbol{B}^{-1}_{\text{新}} = \boldsymbol{E}\boldsymbol{B}^{-1}B新−1=EB−1;
  6. 迭代:重复步骤2-5,直到最优。
优势

适合变量和约束较多的问题,是工业级求解器的核心算法之一。

相关推荐
运维@小兵4 小时前
使用Spring-ai实现同步响应和流式响应
java·人工智能·spring-ai·ai流式响应
科学最TOP5 小时前
IJCAI25|如何平衡文本与时序信息的融合适配?
人工智能·深度学习·神经网络·机器学习·时间序列
maycho1235 小时前
探索锂电池主动均衡仿真:从开关电容到多种电路的奇妙之旅
人工智能
余俊晖5 小时前
多模态文档智能解析模型进展-英伟达NVIDIA-Nemotron-Parse-v1.1
人工智能·ocr·多模态
南太湖小蚂蚁5 小时前
通过TRAE和LLM实现电影数据查询和分析
人工智能
双翌视觉5 小时前
机器视觉赋能平板电脑OCA真空全贴合,精度、效率与智能化的三重飞跃
人工智能·机器学习·电脑
CareyWYR5 小时前
AI 把技术门槛踩碎,我们拿什么作为护城河?
人工智能
mgsky15 小时前
【插件推荐】Chrome类浏览器AI分组插件
人工智能·chrome
九河云5 小时前
跨境电商数字化转型:海外仓库存 AI 预警与多平台订单一体化管理实践
大数据·人工智能·数字化转型