Skip to content

改进单纯形法(Revised Simplex)

改进单纯形法亦称修正单纯形法(Revised Simplex),与「原始单纯形」在整张表上做 Gauss–Jordan 枢轴不同:不显式存储完整的修正方程组表,只保留与当前基 相关的紧缩数据(如 或对 的 LU 分解),按需算出比值检验与进基列所需的信息。大规模稀疏 LP、分支定界节点的重复求解、列生成 中的受限主问题等场景几乎都采用这一路线或其变种。

若尚未熟悉检验数与原始 / 对偶单纯形的进退基逻辑,请先阅读 单纯形法(含对偶单纯形骨架)


与原始单纯形的对比

对标准形

原始单纯形在一张「表」上同时更新右端、目标行与各约束行的系数块;基变换时每轮对工作矩阵做一次大范围填充更新。

改进单纯形每轮只保证能拿到下列量:

含义 常与对偶变量(影子价格)同一向量相差符号约定;检验数(简化费用)为

当前基变量取值 ;候选进基列 在基坐标下的表示

据此可做原始单纯形比值检验;若配合对偶可行基,也可在同一套数据上套用 单纯形法 文中对偶单纯形一节的比值 (4)。换言之,改变的主要是数据的存取与更新方式,进退基准则可与原始或对偶单纯形一致。


一轮迭代需要算什么

记当前可行基 非奇异)。

1. 解三角系统得到

(若维护 则各一次三角回代);由

2. 定价(pricing)

按某种顺序扫描非基列 ,计算 (稀疏时常只对一部分列做部分定价)。原始单纯形进基要求 (极小化);若已是对偶可行起点则可转入对偶比值步骤。

3. 生成进基方向

对选定的进基列 ,解

4. 比值检验与换基

做最小比值(或对偶情形用 ),确定出基变量;得到新基

5. 更新基阵表示

换为 ,或用 eta 矩阵、Schur 补、稀疏 LU 刷新等方式等价更新,使得下一轮仍能快速解


基逆的数值更新(概要)

Eta 因子:早期实现对每次枢轴积累初等矩阵 ,使 ;迭代多时链变长,需周期性 reinversion(重新分解当前 )。

LU 分解:对当前 做稀疏 LU(带行列置换与阈值选主元),每轮枢轴后在因子上做秩一修正或定期全量重分解;现代开源 / 商业求解器多采用此类稀疏内核。

稠密小块 很小时显式维护稠密 亦可接受。


▶ 改进单纯形法(原始单纯形准则,骨架)

1. 初始化

取得可行基 的可逆表示(如 LU),使得

2. 计算 与检验数

;对候选非基列计算 ,直至找到某个 (或用别套定价规则);若全部 ,最优,停止。

3. 进基方向与无界判定

。若 ,无界,停止。

4. 比值检验

,确定出基行与出基变量。

5. 换基与更新

更新 的 LU / eta 链;令 在新基下修正(实现细节依因子格式而定)。返回步骤 2。


复杂度与实务提示

每轮主要代价常在定价步骤(扫描多少列)与解稀疏三角系统的次数上;部分定价、Devex / steepest-edge 等可减少迭代次数但增加单次工作量。内存上通常远优于存整张 修正表。


与其它笔记的关系

用途:与 单纯形法 同一数学骨架;工程层实现几乎是「大规模 LP + MIP 线性松弛」的默认选项。

衔接:列生成主问题仅含当前列子集, 即其对偶向量,供定价子问题使用;理解本节 列生成 记号的对应很有帮助。


常见线性规划教材在「修正单纯形」「乘积形式」「稀疏 LU」等处有更细的数值讨论。

个人笔记