最优化:单纯形法(一)

如何解线性规划方程(Linear Program, LP)在最优化中是一个大问题。本文介绍了解线性规划问题,求解最优解(Optimal Solution)的方法。
介绍单纯形法(the Simplex Algorithm)之前,需要先简单介绍一下基(basis)和标准形(Canonical Form)。

Basis

对于一组矩阵 A A A的列索引所组成的向量 B B B,我们规定 B B B,当且仅当:

  1. A B A_B AB是方阵
  2. A B A_B AB非奇异
    这里, A B A_B AB是矩阵 A A A B B B挑选出来的列向量所组成的矩阵。

Canonical Form

对于一个LP,有:
min ⁡ c T x + d s.t.  A x = b x ≥ 0 \min {c^T x+d} \\ \text{s.t. } Ax=b \\ x\geq0 mincTx+ds.t. Ax=bx0
假定 A A A的基是 B B B,如果说这个LP是Canonical form,当:

  1. A B = I A_B=I AB=I
  2. c j = 0 ( for all  j ∈ B ) c_j=0 (\text{for all }j\in B) cj=0(for all jB)

可以看出,同一个LP,可以是基 B 1 B_1 B1的标准型,也可以是基 B 2 B_2 B2的标准型。因此,在提到标准型的概念,是需要和基挂上钩的。

转化为标准型

我们假定某一个LP,为 P P P P P P的定义如下:
min ⁡ c T x + d s.t.  A x = b x ≥ 0 \min {c^T x+d} \\ \text{s.t. } Ax=b \\ x\geq0 mincTx+ds.t. Ax=bx0
而转化后的标准型,记为 P ’ P’ P P ’ P’ P定义如下:
nax ⁡ [ c ⊤ − y ⊤ A ] ⏟ c ˉ x + y ⊤ b \operatorname{nax} \underbrace{\left[c^{\top}-y^{\top} A\right]}_{\bar{c}} x+y^{\top} b naxcˉ [cyA]x+yb

s.t. { A B − 1 A ⏟ A ′ x = A B − 1 b x ≥ 0 \text{s.t.}\{ \begin{array}{l} \underbrace{A_{B}^{-1} A}_{A^{\prime}} x=A_{B}^{-1} b \\ x \geq 0 \end{array} s.t.{A AB1Ax=AB1bx0

其中, y = A B − T c B y=A_B^{-T}c_B y=ABTcB。此时, P ′ P' P是一个依赖于基 B B B的标准型,符合Canonical Form的定义。

单纯型法概述

单纯型法旨在找到任意的一个LP的最优解。其流程如下所示:
单纯型法的流程
需要注意的是,这个迭代是不一定收敛的。因此,有学者提出了一个Bland’s Rule,根据这个规则,它保证这个算法是一定会终止的。
Bland‘s Rule
在流程中,我们可以看到,我们需要输入一个可行解(或者是一个可行基)。如果手上没有可行基或者可行解,自然也就不能让算法Run起来。
因此,我们需要一个普适的算法,使得这个算法成立。

The 2-Phase Method

二段法正是针对解LP问题的一个普适算法。这个算法流程如下所示:

The 2-Phase Method
Phase 1 中,先找到一个可行解;或者判断不存在有可行解。而在Phase 2 中,正式利用上述的单纯形法,接出一个最优解;或者判断LP是unbounded的。

具体的单纯形法的求解过程,见最优化:单纯形法(二)

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值