Simplex Method
What have we learned so far?
LP的标准形式(原始问题)
- 如果它的可行域
非空,那么它至少有一个vertex(extreme point)。——from Resolution Theorem - 如果
非空且目标值 不是无界的,那么最优值在 的(至少)一个顶点(极值点)处取到。——from Fundamental Theorem - 可行域
只有有限个顶点(极值点)。—— - Vertices可以用代数的方法来生成,和bfs的一样。
Implications
- 当
很小时,可以枚举出所有的bfs's(vertices)来找到最优的那个作为最优解。——Enumerate Method - 当
变大时,我们需要一个更系统的、有效的方法来做这个工作。——Simplex Method
3.1 Simplex Method
Convinced by Prof. George B. Dantzig in 1947.
3.1.1 Basic ideas
Phase 1:
- Step 1 (Starting)
找到一个初始的extreme point (ep) 或声明 是空的。
Phase 2:
- Step 2 (Checking optimality)
如果当前ep是最优的,STOP! - Step 3 (Pivoting)
Move to a better ep.
Return to Step 2.
从Step 3回到Step 2的过程称为一次iteration。
如果我们不重复同一个ep,那么算法将总是在有限次迭代后终止。—— a finite algorithm
如何有效地生成更好的极值点?—— basic feasible solutions
What else have we learned?
- 可行域
中一点 为极值点,当且仅当 是关于某个基 的一个basic feasible solution。 - 最多存在
个基本可行解。当 ,那么一个bfs可以通过 并且令 以解出 。
Challenge:
当我们从一个bfs移动到另一个时,我们真的移动了吗?
如果没有的话,我们可能陷入循环了!
3.1.2 Nondegeneracy
例
Observations:
- 如果一个ep是由正好有
个正的basic variables和 个为零的non-basic variables组成的,那么两者之间应该是一一对应的。——a nondegenerate bfs - 只有当basic variables中至少有一个为零时,这个ep才可能与不止一个bfs对应。——a degenerate bfs
Terminology: 如果所有的bfs都是非退化的,那么LP nondegenerate。
Property 1: 如果一个bfs
Why?
fundamental matrix中包含了linear programming的所有信息。
Property 2: 如果一个bfs
因为除了
Property 3: 对于一个退化的有
3.2 Simplex Method under Nondegeneracy
Basic idea: 利用a simple pivoting scheme从一个bfs(ep)移动到另一个bfs(ep)。
- 只考虑neighboring bfs(ep),而非同时考虑所有bfs(ep)。
Definition: 如果两个bfs有
Observations:
- 在非退化的情况下,每个基本可行解(极值点)都有
个adjacent neighbors。 - 对于一个bfs,所有的相邻bfs都可以通过将一个非基本变量从零增加到正的并且将一个基本变量从正的减小为零来到达。——Pivoting
3.2.1 Pivoting
一个nonbasic变量进入basis(从0到positive),同时一个basic变量离开basis(从positive到0)。
Who and where are my neighbours?
当前的ep沿着
Where are these edge directions?
3.2.2 Edge direction
Conjecture:
例
在
所以
General case: 对于
(1)非基变量,均为0,除了
(2)基变量,由于
问: edge direction
—Yes,当问题是非退化的时候,每个edge direction都是一个可行的方向。
证:(1)由
(2)对于非退化的情况,
—No,当问题是退化的时候,不一定每个edge direction都是一个可行的方向。
3.2.3 Reduced cost
问:如果当前bfs不是最优的,那么哪个相邻的bfs是更好的呢?也就是说,要往哪个edge direction移动呢?或者说,哪个非基变量是一个好的转入候选呢?
Observations:
如果
Definition:
Theorem: 如果
Observations:
- 对于一个基本变量
, 。 - 任意满足
的 将被用于单纯形法。减小最多的方向为 ,但对于单纯形法而言,贪心策略是无效的,因为无法预知再下一步会减小多少。
3.2.4 Optimality check by reduced cost
问:如果对于任意的n.b.v.
Theorem: 给定一个基为
证:思路为证明
问:该定理反过来还成立吗?i.e. "如果一个bfs
答:仅在非退化的情况下成立。因为在退化的情况下,在向其它方向移动的时候,可能会移动到可行域外面。
最优解的唯一性
corollary 1: 如果对于所有的n.b.v.
corollary 2: 如果
3.2.5 Step length
已知顶点
已知
Case 1:如果
Theorem: 对于某个n.b.v.
Case 2:
Note 1:
Note 2:
Note 3:在非退化的情况下,对于b.v.
对于退化的bfs,有可能
Theorem:
注意,当bfs
3.2.6 Summary
单纯形法的关键步骤:
- Step 1 找到一个与
对应的bfs 。 - Step 2 检查n.b.v.的
如果 ,那么当前的bfs是最优的;
否则,选择一个 ,进行下一步。 - Step 3 如果
,那么LP是unbounded;
否则,找到 ,那么 是一个新的bfs,更新 和 ,返回Step 2。
Theorem: 在非退化假设下,单纯形法在有限次数的迭代后终止,得到无界最小值或给定LP的最优解。
问:如何获得一个初始的基础可行解呢?
系统方法:1. 两阶段法(一阶段问题) 2.大M法
3.2 Two-Phase Method
- Step 1 令右侧向量非负:
- Step 2 在一阶段问题的基础上增加
个人工变量
一阶段问题的特殊性:
1.
2. PhⅠ的下界为0
3. 当且仅当
4. 在非退化的情况下,如果
Degenerate case :
5. 如果一个最优bfs的基中至少有一个人工变量
(1)如果对于一个n.b.v.
(2)如果
找到一个起始的基本可行解与找到一个给定基本可行解的最优解一样困难。
两阶段法的第一阶段是通过单纯形法解决构造的PhⅠ问题,由此得到原始LP的一个bfs,所以两个阶段的工作是一样的。
3.3 Big-M Method
给每个人工变量加一个很大的惩罚系数
大M问题的特殊性:
1.
2.
3. 假设
(i)
(ii)
4. 如果对于所有的
问:M应该取多大才够大呢?
对于大M法而言,只有无穷大的M才能保证有效地解决所有问题。所以商业LP求解器更喜欢使用两阶段方法。
Supplement:Prevent Cycling
当LP是退化的时,对于某些基变量
Key idea:保证某个量严格单调
- Brand's rule:按顺序踢出和进入
- Lexicographic rule (1955)
其实可以不用考虑退化的情况,因为在数值的世界里,线性规划的函数都是连续的,只有将某一条约束稍微移动一个很小的值,便可以得到和原来退化的顶点非常接近的新的非退化的顶点。