【管理运筹学】第 4 章——线性规划问题的灵敏度分析

文章详细探讨了线性规划中目标函数系数、右端资源列向量和约束系数的灵敏度分析,包括它们如何影响最优解和目标函数值,以及如何在参数变化时不重新求解。通过最优单纯形表特征和对非基变量、基变量的区分,解释了参数变化条件下的解决方案策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

之前的线性规划问题中,目标函数系数 c j c_j cj ,右端资源列向量 b b b 和约束条件系数 a i j a_{ij} aij 都是固定的常数。但实际上由于市场的变化或者工艺条件的改善以及时间的推移,这些参数是会发生变化的,因此就会有如下问题产生:

  1. 这三个参数如果变化了,会不会对原来的最优目标函数造成影响?
  2. 这三个参数在什么范围内变动时,原有的线性规划模型依然适用?
  3. 这三个参数变化时,目标函数值会如何变化?该怎么更方便地求解?

以上就是 灵敏度分析(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} B1 。因此,我们做了那么多次迭代,其实就相当于将增广矩阵左乘上一个 B − 1 B^{-1} B1

初始的基变量为松弛变量对应的矩阵 N = E N=E N=E ,因此初始基变量在最优单纯形表中对应的系数矩阵即为 B − 1 N = B − 1 E = B − 1 B^{-1}N=B^{-1}E=B^{-1} B1N=B1E=B1 。右端资源向量 b b b ,最终变为 B − 1 b B^{-1}b B1b 。下表给出了达到最优单纯形表时各个参数的特征。
在这里插入图片描述

有了这些特征后,我们可以清晰知道某个参数变化会带来哪些影响。如当右端资源向量 b b b 变化时,只会影响最终基变量的取值 B − 1 b B^{-1}b B1b

二、目标函数系数 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+ΔcjcBB1cj0 ,于是有: Δ 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/arjarj>0)Δcrmin(σj/arjarj<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 B1b 肯定会发生变化,因此我们要保证的是依然满足非负要求。有: 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/airair>0)Δbrmin(bi/airair<0)式中, a i r ‾ \overline{a_{ir}} air B − 1 B^{-1} B1 中的第 i i i 行,第 r r r 个元素。

b r b_r br 在上述范围内变动时,基变量和原来一样,但取值发生了变化,新基变量取值为 B − 1 ( b r + Δ b r ) . B^{-1}(b_r+ \Delta b_r). B1(br+Δbr). 若变动超过了上述范围,不满足非负约束,需采用对偶单纯形法继续迭代求解。

这是只能求出单个 b b b 的变动范围,若变动了多个,一般直接求新解 B − 1 b ′ B^{-1}b' B1b 即可。

四、约束系数 a i j a_{ij} aij 的灵敏度分析

约束系数 a i j a_{ij} aij 的变化不仅可能会影响检验数,还可能会改变 B − 1 B^{-1} B1

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} B1 发生变化,假设变为 B ‾ − 1 \overline{B}^{-1} B1 ,最终基变量取值 B − 1 b B^{-1}b B1b 则变为 B ‾ − 1 b \overline{B}^{-1}b B1b ,所有非基变量检验数 C N − C B B − 1 N C_N-C_BB^{-1}N CNCBB1N 变为 C N − C B B ‾ − 1 N C_N-C_B\overline{B}^{-1}N CNCBB1N。用此时会产生下面四种情况:

  1. 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 B1b0,CNCBB1N0 ,即此时既满足非负要求,又满足最优检验,已达到最优解。
  2. B ‾ − 1 b ≥ 0 \overline{B}^{-1}b \geq0 B1b0 C N − C B B ‾ − 1 N C_N-C_B\overline{B}^{-1}N CNCBB1N 存在正数,即此时虽然满足非负要求,但还有非基变量检验数大于 0 ,用单纯形法继续迭代求解。
  3. B ‾ − 1 b \overline{B}^{-1}b B1b 存在负数,而 C N − C B B ‾ − 1 N ≤ 0 C_N-C_B\overline{B}^{-1}N \leq0 CNCBB1N0 ,即此时最优检验满足了,但非负性不满足,因此利用对偶单纯形法继续迭代求解。
  4. B ‾ − 1 b \overline{B}^{-1}b B1b 存在负数,且 C N − C B B ‾ − 1 N C_N-C_B\overline{B}^{-1}N CNCBB1N 存在正数,即此时最优性检验和非负性要求均为达到。故需引进人工变量,用人工变量法或者从头算起。

五、增加决策变量和约束条件的影响分析

此部分内容,西南交大是放在前面,而北交大都放在一起了。我认为这也算是灵敏度分析,而且放在一起更好对比联想。

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=B1×IB
因为 I B I_B IB 为单位矩阵,所以有 B − 1 = I B ∗ B^{-1} =I^*_B B1=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=B1×Pn+1=IB×Pn+1
第二步:把列向量 P n + 1 ∗ P_{n+1}^* Pn+1补加到最优单纯形法表的最右列,继续利用单纯形法求解即可。

5.2 增加新约束条件

单纯形法的求解过程,就是对它的初始单纯形表做行运算,最终变换到最优单纯形表。

加了一个约束条件方程,还是可以按照原来那样变换,增加的约束条件方程可以一直不变,行运算不针对新加的那一行就是了。因此我们可以不用从头求解,将新增加的约束方程化为等式后,直接补加到原模型的最优单纯形表中,继续用对偶单纯形法求解即可。

求解的主要步骤如下:

  1. 检验原来的最优解是否满足新增加的约束方程,如果满足,则原来的最优解就是新的最优解。不满足则进行下一步。
  2. 将新增加的约束条件方程加上松弛变量或剩余变量,将其化为等式,补加到原模型的最优单纯形法表中。
  3. 令原来的基变量和新增加的松弛或剩余变量作为新的基变量。利用对偶单纯形法继续求解。

六、例题讲解

在这里插入图片描述

第 (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} B1 中的第 2 列各元素。

a 21 a_{21} a21 的灵敏度分析如下:

在这里插入图片描述

第 (2) 问

第 (2) 问则比较常规,利用第 (1) 问得出的结论判断是否超出。没有超出,则再判断新解是否符合要求。

在这里插入图片描述

第 (3) 问

计算新产品的最优单纯形表中的检验数,若大于 0 ,则表明可将新产品作为基变量换入,得到更优解。之后继续利用单纯形法迭代求解即可。

在这里插入图片描述

总结

关于灵敏度问题,如果能掌握参数变化带来影响的原因,其实还是比较好理解的。因此在一开始学习单纯形法时,就尽量去看懂关于矩阵形式表达的证明。或者看个大概,等后面接触到对偶问题以及灵敏度分析时,能联想到前面的内容,就应该没啥大问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Douglassssssss

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值