“单纯形法已经求出 LP 最优基,但某个应当取整数的基本变量却是分数。能否只看这一行,就自动构造一条保留全部整数解、却切掉当前基点的不等式?”
形式陈述
考虑标准形线性规划
给定基可行解,一次原始单纯形迭代按以下规则进行。
- 解
,为每个非基列 计算约化成本 。若全都非负,当前解最优,因为这时 是与它目标值相同的对偶可行解,弱对偶即给出最优性证书。 - 选一个
的变量入基,解 。把 从零增至 时,基变量变为 ,目标改变 。 - 若没有
,则任意 都保持可行,而目标不断下降,故问题无界。否则取 ,让达到最小值的基变量离基,再重复。
比值检验限制的是非负性:哪个基变量先降到零,就不能再继续沿此方向走。出现并列或零步长时,需要确定的枢轴规则;Bland 规则选择所有负约化成本的非基变量中原始编号最小者入基;在最小比值并列的候选中,选择原始变量编号最小的基变量离基。离基比较的是变量编号,而不是它在当前基矩阵中的行号;这套规则在精确算术下防止循环。
带上下界的变量
对
约化成本仍为
直觉
对上述非负标准形,可行域非空且最优值有限时,存在最优基可行解,因此单纯形法不扫描整个连续区域,而是在可行多面体的顶点(基可行解)之间沿边选择改进方向:每次选择能改善目标的入基变量,并用比值检验确定哪个基变量先降到零。这种边界行走有完整的几何依据;实践中它常很快,但存在精心构造的指数长枢轴路径。
例子与边界
两次枢轴到达最优点
求最大化
先增加
为什么可以停止?用非基变量
初始化、退化与数值边界
加入松弛变量只有在所得右端项非负等条件成立时,才能直接得到可行初始基。否则可用两阶段法:第一阶段引入人工变量并最小化它们的总和;若最优值仍大于零,原问题不可行。不可行与沿可行方向无界是两种不同结论。
若某个基变量已经为零,比值检验可能给出零步长。此时换基却未移动几何顶点,目标也不改进;不防循环的规则可能反复访问旧基。一般多面体也不一定有顶点,例如整条直线,故“有限最优必在顶点取得”必须放在具有顶点的适当形式中使用。
浮点实现需分别设置可行性、约化成本与比值检验容差,并对量级悬殊的变量或约束作缩放。修正单纯形反复求解以
推论与应用
线性规划给出多面体与目标,基给出顶点代数表示。最优终止时,最终基不仅给出原始变量,还通过对偶乘子和约化成本暴露约束的影子价格;在基保持最优且可行的范围内,还能读取目标系数或右端项变化的灵敏度区间。越出这些范围就可能换基,不能继续用同一局部价格作全局预测。单纯形法也适合暖启动,但经典枢轴规则没有多项式最坏步数保证;对偶单纯形、修正单纯形和内点法是不同求解器,不能把经验速度写成复杂度定理。
网络单纯形法利用流网络基的生成树结构专门求最小费用流,枢轴和可行性维护不同于通用稠密表。LP 松弛与舍入则先用 LP 值作上下界,再把分数解转成离散解并分析 integrality gap;它可以调用任意 LP 求解器,近似比不是单纯形沿边移动自动提供的。
参考资料
-
Carl W. Lee, Linear Programming Notes, University of Kentucky, 2003,§11.8:带上下界的非基状态、改进方向与比值检验。
-
Dimitris Bertsimas, Simplex Method I, MIT 15.093J, Lecture 3, 2009,约化成本、基方向、比值检验与无界判据。
-
Bernhard Korte and Jens Vygen, Combinatorial Optimization, 6th ed., Springer, 2018,Chs. 4–11。
-
Michel X. Goemans, Linear Programming Notes, MIT 18.310,§2.4.2、Theorem 2.2:Bland 最小变量编号规则与有限终止证明。