文章目录
前言
之前的线性规划问题中,目标函数系数 c j c_j cj ,右端资源列向量 b b b 和约束条件系数 a i j a_{ij} aij 都是固定的常数。但实际上由于市场的变化或者工艺条件的改善以及时间的推移,这些参数是会发生变化的,因此就会有如下问题产生:
- 这三个参数如果变化了,会不会对原来的最优目标函数造成影响?
- 这三个参数在什么范围内变动时,原有的线性规划模型依然适用?
- 这三个参数变化时,目标函数值会如何变化?该怎么更方便地求解?
以上就是 灵敏度分析(sensitivity analysis) 所要解决的问题。当原有的线性规划模型求出最优解后,对于某一个参数变化,如何不重新求解,就可以分析出最优解以及最优目标值的变化。本文只研究单个参数变化的情况。
一、最优单纯形表参数特征
为讨论某个参数的变化对最优解的构成以及最优值的影响,我们首先应了解,当单纯形法迭代到最优单纯形表时,各个参数的特征。
以线性规划问题的标准型为讨论对象:
一般我们会添加松弛变量形成等式,所以初始单纯形表中的系数矩阵
A
A
A 可以分为
(
B
,
N
)
(B,N)
(B,N) ,其中
B
B
B 为基变量对应的系数矩阵,
N
N
N 为非基变量对应的系数矩阵。同理,变量可分为基变量
X
B
X_B
XB ,非基变量
X
N
X_N
XN 。基变量对应的目标函数系数为
C
B
C_B
CB ,非基变量对应的目标函数系数为
C
N
C_N
CN 。
单纯形法本质上是在对增广矩阵进行多次初等行变换,使得最后满足可行和最优性检验,且基变量对应的系数矩阵为单位阵 E E E 。根据线性代数的知识,我们知道,原来基变量对应的系数矩阵为 B B B ,想要最后成为一个单位阵,只需左乘上 B − 1 B^{-1} B−1 。因此,我们做了那么多次迭代,其实就相当于将增广矩阵左乘上一个 B − 1 B^{-1} B−1 。
初始的基变量为松弛变量对应的矩阵
N
=
E
N=E
N=E ,因此初始基变量在最优单纯形表中对应的系数矩阵即为
B
−
1
N
=
B
−
1
E
=
B
−
1
B^{-1}N=B^{-1}E=B^{-1}
B−1N=B−1E=B−1 。右端资源向量
b
b
b ,最终变为
B
−
1
b
B^{-1}b
B−1b 。下表给出了达到最优单纯形表时各个参数的特征。
有了这些特征后,我们可以清晰知道某个参数变化会带来哪些影响。如当右端资源向量 b b b 变化时,只会影响最终基变量的取值 B − 1 b B^{-1}b B−1b 。
二、目标函数系数 c j c_j cj 的灵敏度分析
通过分析第一节给出的最优单纯性表各个参数的特征,可知,目标函数系数 c j c_j cj 的变化需要分情况讨论。因此 c j c_j cj 为 C B C_B CB 和 C N C_N CN 时,变化带来的影响不一。
2.1 c j c_j cj 对应的变量 x j x_j xj 为非基变量时
此时 c j c_j cj 的改变,只会影响对应决策变量 x j x_j xj (非基)的检验数。为保证基变量不变,该非基变量检验数需保持非正,即变化后的 σ j ′ = c j + Δ c j − c B B − 1 c j ≤ 0 \sigma_j'= c_j+ \Delta c_j -c_BB^{-1}c_j \leq0 σj′=cj+Δcj−cBB−1cj≤0 ,于是有: Δ c j ≤ − σ j . \Delta c_j \leq -\sigma_j. Δcj≤−σj. 当 c j c_j cj 的变化值满足上述条件时,原来的线性规划模型最优解不变。若 c j c_j cj 变动超过了上述范围,利用单纯形法继续求解。
2.2 c j c_j cj 对应的变量 x j x_j xj 为基变量时
此时 c j c_j cj 进入 C B C_B CB ,会影响所有决策变量的检验数,因此要保证所有非基变量检验数为非正。有: m a x ( σ j / a r j ‾ ∣ a r j ‾ > 0 ) ≤ Δ c r ≤ m i n ( σ j / a r j ‾ ∣ a r j ‾ < 0 ) max(\sigma_j / \overline{a_{rj}} | \overline{a_{rj}}>0) \leq \Delta c_r \leq min(\sigma_j / \overline{a_{rj}} | \overline{a_{rj}}<0) max(σj/arj∣arj>0)≤Δcr≤min(σj/arj∣arj<0) 式中, a r j ‾ \overline{a_{rj}} arj 为 c r c_r cr 对应的基变量在最优单纯形表中的第 r r r 行,第 j j j 个元素。
觉得抽象的话没关系,后面会举一个题目为例,到时候就能明白了
三、右端资源列向量 b b b 的灵敏度分析
右端资源列向量发生的变化的话,最优解中的基变量取值 B − 1 b B^{-1}b B−1b 肯定会发生变化,因此我们要保证的是依然满足非负要求。有: m a x ( − b i ‾ / a i r ‾ ∣ a i r ‾ > 0 ) ≤ Δ b r ≤ m i n ( − b i ‾ / a i r ‾ ∣ a i r ‾ < 0 ) max(-\overline{b_i} / \overline{a_{ir}} | \overline{a_{ir}} > 0) \leq \Delta b_r \leq min(-\overline{b_i} / \overline{a_{ir}} | \overline{a_{ir}}<0) max(−bi/air∣air>0)≤Δbr≤min(−bi/air∣air<0)式中, a i r ‾ \overline{a_{ir}} air 为 B − 1 B^{-1} B−1 中的第 i i i 行,第 r r r 个元素。
当 b r b_r br 在上述范围内变动时,基变量和原来一样,但取值发生了变化,新基变量取值为 B − 1 ( b r + Δ b r ) . B^{-1}(b_r+ \Delta b_r). B−1(br+Δbr). 若变动超过了上述范围,不满足非负约束,需采用对偶单纯形法继续迭代求解。
这是只能求出单个 b b b 的变动范围,若变动了多个,一般直接求新解 B − 1 b ′ B^{-1}b' B−1b′ 即可。
四、约束系数 a i j a_{ij} aij 的灵敏度分析
约束系数 a i j a_{ij} aij 的变化不仅可能会影响检验数,还可能会改变 B − 1 B^{-1} B−1 。
4.1 约束系数 a i j a_{ij} aij 对应 x j x_j xj 为非基变量
此时只会改变该非基变量的检验数,保证其非正的情况下,用待定系数法进行变动范围的求解。
4.2 约束系数 a i j a_{ij} aij 对应 x j x_j xj 为基变量
此时 B − 1 B^{-1} B−1 发生变化,假设变为 B ‾ − 1 \overline{B}^{-1} B−1 ,最终基变量取值 B − 1 b B^{-1}b B−1b 则变为 B ‾ − 1 b \overline{B}^{-1}b B−1b ,所有非基变量检验数 C N − C B B − 1 N C_N-C_BB^{-1}N CN−CBB−1N 变为 C N − C B B ‾ − 1 N C_N-C_B\overline{B}^{-1}N CN−CBB−1N。用此时会产生下面四种情况:
- B ‾ − 1 b ≥ 0 , C N − C B B ‾ − 1 N ≤ 0 \overline{B}^{-1}b \geq0 ,C_N-C_B\overline{B}^{-1}N \leq0 B−1b≥0,CN−CBB−1N≤0 ,即此时既满足非负要求,又满足最优检验,已达到最优解。
- B ‾ − 1 b ≥ 0 \overline{B}^{-1}b \geq0 B−1b≥0 但 C N − C B B ‾ − 1 N C_N-C_B\overline{B}^{-1}N CN−CBB−1N 存在正数,即此时虽然满足非负要求,但还有非基变量检验数大于 0 ,用单纯形法继续迭代求解。
- B ‾ − 1 b \overline{B}^{-1}b B−1b 存在负数,而 C N − C B B ‾ − 1 N ≤ 0 C_N-C_B\overline{B}^{-1}N \leq0 CN−CBB−1N≤0 ,即此时最优检验满足了,但非负性不满足,因此利用对偶单纯形法继续迭代求解。
- B ‾ − 1 b \overline{B}^{-1}b B−1b 存在负数,且 C N − C B B ‾ − 1 N C_N-C_B\overline{B}^{-1}N CN−CBB−1N 存在正数,即此时最优性检验和非负性要求均为达到。故需引进人工变量,用人工变量法或者从头算起。
五、增加决策变量和约束条件的影响分析
此部分内容,西南交大是放在前面,而北交大都放在一起了。我认为这也算是灵敏度分析,而且放在一起更好对比联想。
5.1 增加新决策变量
在建立实际问题的数学模型时,可能漏掉了一些内容,或者只考虑了主要内容而忽略了次要内容。这一节解决的问题就是如果新增加了决策变量,如何不重新计算,利用原本的一些结果进行迭代求解。主要步骤如下:
第一步:用
I
B
I_B
IB 表示初始单纯形表中初始基变量所对应的单位矩阵,再用
I
B
∗
I_B^*
IB∗ 表示初始基变量在最优单纯形法表中所对应的矩阵。可知
I
B
∗
=
B
−
1
×
I
B
I_B^* =B^{-1} \times I_B
IB∗=B−1×IB
因为
I
B
I_B
IB 为单位矩阵,所以有
B
−
1
=
I
B
∗
B^{-1} =I^*_B
B−1=IB∗ 。用
x
n
+
1
x_{n+1}
xn+1 表示新增加的决策变量,那么它在初始单纯形法表中对应的列向量是已知的,用
P
n
+
1
P_{n+1}
Pn+1 表示;再用
P
n
+
1
∗
P^*_{n+1}
Pn+1∗ 表示新增加的决策变量在最优单纯形法表中对应的矩阵,则有:
P
n
+
1
∗
=
B
−
1
×
P
n
+
1
=
I
B
∗
×
P
n
+
1
P^*_{n+1} =B^{-1} \times P_{n+1}=I_B^* \times P_{n+1}
Pn+1∗=B−1×Pn+1=IB∗×Pn+1
第二步:把列向量
P
n
+
1
∗
P_{n+1}^*
Pn+1∗补加到最优单纯形法表的最右列,继续利用单纯形法求解即可。
5.2 增加新约束条件
单纯形法的求解过程,就是对它的初始单纯形表做行运算,最终变换到最优单纯形表。
加了一个约束条件方程,还是可以按照原来那样变换,增加的约束条件方程可以一直不变,行运算不针对新加的那一行就是了。因此我们可以不用从头求解,将新增加的约束方程化为等式后,直接补加到原模型的最优单纯形表中,继续用对偶单纯形法求解即可。
求解的主要步骤如下:
- 检验原来的最优解是否满足新增加的约束方程,如果满足,则原来的最优解就是新的最优解。不满足则进行下一步。
- 将新增加的约束条件方程加上松弛变量或剩余变量,将其化为等式,补加到原模型的最优单纯形法表中。
- 令原来的基变量和新增加的松弛或剩余变量作为新的基变量。利用对偶单纯形法继续求解。
六、例题讲解
第 (1) 问
对于第 (1) 问,就是利用前述结论,得到每个参数的变动范围。
c 4 c_4 c4 的灵敏度分析如下:
其中的 a 4 j a_{4j} a4j 指的是最优单纯形表中 x 4 x_4 x4 所在那一行的元素 。
b 2 b_2 b2 的分析如下:
其中的 a i 2 a_{i2} ai2 是指 B − 1 B^{-1} B−1 中的第 2 列各元素。
对 a 21 a_{21} a21 的灵敏度分析如下:
第 (2) 问
第 (2) 问则比较常规,利用第 (1) 问得出的结论判断是否超出。没有超出,则再判断新解是否符合要求。
第 (3) 问
计算新产品的最优单纯形表中的检验数,若大于 0 ,则表明可将新产品作为基变量换入,得到更优解。之后继续利用单纯形法迭代求解即可。
总结
关于灵敏度问题,如果能掌握参数变化带来影响的原因,其实还是比较好理解的。因此在一开始学习单纯形法时,就尽量去看懂关于矩阵形式表达的证明。或者看个大概,等后面接触到对偶问题以及灵敏度分析时,能联想到前面的内容,就应该没啥大问题。