单纯形法
基本思路:
找出一个基本可行解 → 检验是否为最优解 → 更换基变量 → 迭代以上步骤
基于线性规划标准化后可以写成:(S 为松弛变量或者调整变量)
maxCX=0,s.tAX+S=B,(B⩾0)X⩾0.
- 基
基B是约束系数矩阵A的非奇异子矩阵
(即B是可逆矩阵,∣B∣=0)。
B是A中m个线性无关的列向量组成。
- 基向量
基B中的一列为一个基向量。
- 非基向量
A中除了基B之外的向量为非基向量。
- 基变量
与基向量相对应的xi。
- 非基变量
与非基变量相对应的xi。
详细步骤:
- 初始化线性规划模型;
- 找出一个基,它是单位矩阵;
- 用非基变量表示基变量,并令非基变量为 0,得出基本可行解;
- 最优性检验,将目标函数中的基变量代换为非基变量,得到的 i 个系数为检验数,
当检验数都小于等于 0 时,说明得到最优解;
- 若不是最优解,则进行基变换,将σi对应的xi的基向量入基(基变量),
对基变量xi,将aijbj比值最小的确定为出基变量;
- 再进行最优性检验,直至无最优解为止。
单纯形法的表格表示:



上面用圈圈住的的aij表示的是出基变量和入基变量的行列交叉系数。
最后一个迭代步骤的结果,得到的检验数都小于等于 0,说明到了最优的情况了。
求目标函数值最小的线性规划问题:
1. 大 M 法
我们通常将目标函数值最小的问题转换为目标函数值最大的问题来进行求解,
但转换后的约束方程组中可能找不到单位矩阵,这时候就要添加正的人工变量,拼凑
出单位矩阵,然后对于人工变量,我们要求将他们尽早出基,于是便在目标函数中,
添加一个−M系数,M为一个尽可能大的数。这样使得它们对于目标函数有尽量大的
负面影响。




2.两阶段法
第一阶段:
判断原线性规划问题是否有基本可行解:
这个步骤通过求解人工变量的相反数的最大值为目标,若该值小于 0,则说明无解,若
该值等于 0,则说明存在可行解,可以继续求解。
第二阶段:
使用上一阶段的最后一次迭代过程的可行解作为初始可行解继续迭代求解。
几种特殊情况:
1.无可行解
2.无界解
3.无穷多最优解
4.退化问题
单纯形法的灵敏度分析与对偶
单纯形表的灵敏度分析
一、目标函数中变量系数cK的灵敏度分析
- 在最终的单纯形表中,若xK是非基变量
当cK变成cK+ΔcK时,最终单纯形表中的增广矩阵不变。
因为xK是非基变量,所以,目标函数的基变量系数cB不变,
所以可知zK不变。因此变化后的检验数为σK+ΔzK=cK+ΔcK−zK。
要使最优解不变,则要σK+ΔzK≤0。所以有ΔzK≤−σK。 2. 在最终的单纯形表中,若xK是基变量
当cK变成ck+Δck时,最终单纯形表中的增广矩阵不变。
但基变量在目标函数中的系数cB变了,所以zj也变了,所以检验数也变了。
设cB′=(cB1,cB2,...,cBK+ΔcK,...,cBm),amj=(a1j,a2j,...,amj),有:
zj=cB×amjT=cB1a1j+...+cBKakj+Δckakj+...+cBmamj=zj+ΔcKakj
这样检验数就变成了σj(j=1,2,...,m)变成了σj′,有:
σj′=cj−zj′=cj−(zj+Δckakj′)=(cj−zj)−Δckakj′=σj−Δckakj′
要使最优解不变,
当j=k时,σj′≤0,也就是:
σj−Δckakj′≤0
Δc∗ka′∗kj≥σj
当ak′j>0 时,Δcj≥akj′σj,这里aij′σj≤0;
当ak′j<0 时,Δcj≤akj′σj,这里aij′σj≥0.
而当j=k 时,因为akk′=1,σk=0, 所以 Δcj=0.
综上:
max{a′∗kjσ∗j∣akj′}≤Δck≥min{akj′σj∣a′_kj}.
约束方程中常数项的灵敏度分析
约束方程中常数项的变化不会影响基变量的选择,只会影响基变量的值。
假设基变量xk的常数项bk变化了Δbk:
我们有基变量:
xB′=xB+B−1Δbk=(xB1,...,xBn)T+(Δbkb1k′,...,Δbkbmk′)T
对偶价格:
常数项增加一单位,对目标的影响程度称为对偶价格,在单纯形表中体现为zi。
影子价格:
对于剩余变量而言,常数项增加一单位,对目标有恶化作用,恶化程度称为影子价格,是对偶价格的相反数。

通过要求最优解的大于等于 0 约束得到:
max{−d′∗ikx∗Bi∣dik′<0}≤Δbk≤min{−dik′xBi∣dik′<0}.
系数矩阵 A 的灵敏度分析
-
若迭代后的系数向量为非基变量的向量:
只要 σk′=ck−zk=ck−cBB−1pk′≤0 就不会产生基变量的变化,因此只
要计算这个数值是否满足条件就好了;
-
若迭代后的系数向量为基变量的向量:
这时问题会变得很复杂,最优解的可行性和最优解都有可能遭到破坏,因此一般不去修改最终表,而
是重新计算。
增加一个约束条件的灵敏度分析
先将原最优解带入新的约束条件中,若满足,则该约束条件不起作用,最优解不变;将新约束条件添
入最终单纯形表中进一步求解。
对偶问题写法
要点:
- max -> min
- n 个变量 m 个约束 -> m 个变量 n 个约束
- 系数矩阵A→AT
- 约束条件大于变成小于
- 目标函数系数变为原问题的常数项
- 常数项变为原问题的目标函数系数项
- 原问题没有非负限制的变量,对偶问题中对应的约束条件要变成等号
- 原问题中约束条件为等号的,对偶问题对应的变量要变成无限制
对偶规划的基本性质
- 对称性
- 弱对偶性
- 最优性
- 强对偶性
- 互补松弛性