系统分析:线性规划、非线性规划与排队模型 · 第 3 / 11 篇(展开目录)
从线性规划建模、单纯形法、对偶与灵敏度、运输与指派,到非线性规划、随机过程、马尔可夫链、排队模型和决策分析,每章都配手算例题和自测,最后一章用综合例题把方法串起来。
- 第1章 线性规划建模:从文字题到标准型
- 第2章 单纯形法:单纯形表、大 M 法与两阶段法
- 第3章 对偶与灵敏度分析:最终单纯形表还能回答什么
- 第4章 运输问题与指派问题:Vogel 法、位势法与匈牙利法
- 第5章 非线性规划(一):一维搜索与多元无约束优化
- 第6章 非线性规划(二):拉格朗日乘子与 KKT 条件
- 第7章 随机过程基础:几何分布、指数分布与泊松过程
- 第8章 马尔可夫链:离散时间与连续时间
- 第9章 排队模型:从 M/M/1 到 M/M/m
- 第10章 决策分析:不确定性准则、决策树与效用
- 第11章 综合例题讲解与解析
约 30 分钟 · 需要第2章的单纯形表
读完你能: 写出任意线性规划的对偶;从最终单纯形表读出对偶解(影子价格);用互补松弛检验最优性;计算右端 、目标系数 的允许变化范围;判断改动某个非基变量的整列后原解是否仍最优。
主线例子:
,约束 ,,,。
1. 先把主线例子解出来
加松弛变量 ,按第2章(化为最小化 )迭代两次得到最终表:
| 基 |
|
|
|
|
|
|
右端 |
|
1 |
2 |
0 |
2 |
0 |
−1 |
2 |
|
0 |
−5 |
0 |
−2 |
1 |
0 |
1 |
|
0 |
−1 |
1 |
−3 |
0 |
2 |
1 |
| 检验行 |
0 |
3 |
0 |
1 |
0 |
1 |
13 |
最优解 ,。第一、三种资源用满(),第二种剩 1 个单位()。
这张表里藏着两样东西,本章反复使用:
- 矩阵:最终表中松弛变量 那三列,
它记录了单纯形法做过的全部行变换:最终表的任何一列都等于 乘以初始表的对应列,最终右端 。
- :检验行中松弛变量那三格,。它等于 ,其中 是当前基变量 的目标系数。 就是下面要讲的对偶解。
2. 写出对偶
每个线性规划都有一个“影子问题”——对偶。对称形式下:
| 原问题 |
对偶问题 |
|
|
|
|
|
|
反过来, 的对偶是 。对偶的对偶就是原问题。
记忆方法是“转置三件套”:
- 原问题的每条约束对应一个对偶变量 ;原问题的每个变量对应一条对偶约束。
- 目标系数和右端互换:原目标系数 变成对偶约束右端,原右端 变成对偶目标系数。
- 系数矩阵转置:原约束的行变成对偶约束的列。
主线例子的对偶:
非对称形式(约束方向不统一、有等式或自由变量)按下表处理,以原问题是最大化为例:
| 原问题(max) |
对偶(min) |
| 第 条约束是 |
|
| 第 条约束是 |
|
| 第 条约束是 |
自由 |
|
第 条对偶约束是 |
| 自由 |
第 条对偶约束是 |
不想记表就先统一形式
最大化问题先把所有约束都化成 ( 两边乘 ,等式拆成一对 与 ),最小化问题都化成 ,再套对称形式。结果和查表一致。
3. 对偶定理与影子价格
弱对偶: 对任意原问题可行解 和对偶可行解 ,有 (原问题是最大化时)。也就是说,对偶的任何可行目标值都是原问题最优值的上界。
对偶定理: 如果原问题或对偶之一有最优解,另一个也有,并且两个最优值相等。
主线例子中, 代入对偶约束:,,,可行;目标 ,正好等于原问题最优值 13。
从哪张表读对偶解? 本章采用最大化目标、约束加松弛变量、检验行为 的约定,因此松弛变量列中的检验数就是对偶最优解。若是最小化目标、减去剩余变量或把约束乘过 ,必须按列的符号还原,不能一律原样抄数。反过来解对偶时,也可通过检验数与松弛/剩余列的对应关系恢复原问题的解。这在原问题有很多 约束时很有用——直接解它要引入大量人工变量,解它的对偶却往往只需要松弛变量。
影子价格的含义: 表示第 种资源再多 1 单位,最优值增加多少(在最优基不变的范围内)。主线例子里:
- :资源 1 多 1 单位,利润多 1;
- :资源 2 本来就没用完,多给也没用;
- :资源 3 多 1 单位,利润多 1。
所以如果要花钱买资源,单价低于影子价格才划算。
4. 互补松弛
设 、 分别是原问题和对偶的可行解。它们同时最优,当且仅当:
其中 是原问题第 条约束的松弛, 是对偶第 条约束的剩余。意思是:一边有“余量”,另一边对应的量就必须为 0。
主线例子中:
| 配对 |
原问题一侧 |
对偶一侧 |
乘积 |
| 资源 1 |
|
|
0 |
| 资源 2 |
|
|
0 |
| 资源 3 |
|
|
0 |
| 产品 1 |
|
|
0 |
| 产品 2 |
|
|
0 |
| 产品 3 |
|
|
0 |
也有含义:按影子价格计算,生产一件产品 2 要“占用”价值 7 的资源,却只卖 4,所以不生产它。这个 3 正是最终表中 的检验数。
互补松弛的常见用法
已知原问题最优解时,用互补松弛反求对偶解: 的变量对应的对偶约束必须取等号, 的约束对应的 。剩下的方程联立就能解出 。
5. 灵敏度分析的总思路
问题参数小改一点,最优解还成立吗?不需要重解。如果单纯形法对新数据做同样的行变换,最终表会变成:
|
|
松弛列 |
右端 |
|
|
|
|
| 检验行 |
|
|
|
其中 、 是原变量(不含松弛)的系数。只改右端或非基列、非基目标系数时,基矩阵及其目标系数不变, 和 可以沿用;若改了基变量的目标系数,要重算 ;若改了基列,还要重算基逆矩阵 。下面先讨论可直接沿用它们的情况,检查两件事:
- 可行性: 右端 是否仍然全部 ;
- 最优性: 检验行是否仍然全部 。
都满足,原来的基仍然最优;不满足,就从修订后的表继续单纯形法。
6. 右端 变化
设 ,即 。新右端为 , 就是 的第二列。检验行不受影响,只需检查可行性。
例1:资源 1 的允许范围。 第一列为 :
所以 时最优基不变。在此范围内最优值为 。
例2:资源 2 最多能削减多少? 第二列为 ,新右端 ,只要求 ,即 。资源 2 最多削减 1 单位(从 11 降到 10)而当前解仍可行——正好等于它的剩余量 。这类问题的本质就是:非紧约束最多能削减到刚好用满为止。
例3:资源 3。 第三列 ,新右端 ,得 ,即 。
7. 非基变量的系数变化
是非基变量(取值 0),改动它的系数不影响可行性,只可能影响最优性——看它的检验数 是否仍 。
例4: 的范围。 ,检验数 ,所以 时当前解仍最优。原来 ,还差 3——正是最终表中 的检验数。产品 2 的单价涨过 7,才值得生产。
例5:整列一起变。 若产品 2 改进工艺,系数列从 变为 ,同时售价变为 6:
检验数变负,当前解不再最优。修订表中 列为 ,从这里让 进基继续迭代即可(新最优值为 15)。
用对偶的语言说:一个基可行解最优,当且仅当对应的对偶解可行。 改动非基变量 只改变第二条对偶约束,用 代进去检查是否仍成立即可,和上面的计算完全一样。
8. 基变量的目标系数变化
是基变量。 时, 变了,整个检验行都会变。最快的算法是:检验行加上 乘以 所在行(只对非基列有意义)。
行为 ,非基变量是 :
取交集 ,即 时当前解仍最优,最优值为 ()。
为什么是“加上一行”
修订后的检验行在 列会出现 ,不再是单位列的形式。把 行乘 加到检验行上,就把这个 消回 0——这和第2章主元消元是同一个动作。基变量的检验数始终为 0,所以只检查非基列。
如果基变量的系数列也一起变了,修订表中它所在的列不再是单位列,要先用行变换把它恢复成单位列,再检查可行性和最优性;不满足时继续单纯形法。
9. 小结
- 对偶:约束 ↔ 变量,目标系数 ↔ 右端,矩阵转置;max 的 对应 min 的 。
- 原、对偶的最优值相等;对偶解可从松弛/剩余列的检验数恢复,但要核对目标与列的符号约定,含义是影子价格。
- 互补松弛:有余量的一方,对应的另一方为 0。
- 修订最终表:右端变成 ,检验行变成 。
- 右端变化只看可行性,非基系数变化只看最优性,基变量系数变化要先恢复单位列再看两者。
自测
1. 写出 $\min\ z=3x_1+2x_2$,$x_1+x_2\ge4$,$x_1-x_2=1$,$x_1\ge0,\ x_2$ 自由 的对偶。
原问题是最小化,第一条 对应 ,第二条等式对应 自由; 对应 约束, 自由对应等式约束:
2. 主线例子中,资源 1 的单价是 0.8 元/单位,最多值得买多少?买完利润变成多少?
影子价格 ,值得买。最优基不变的上限是 ,即最多买 单位,毛利增加 ,扣掉成本 ,净增 。超过 后最优基改变,影子价格变为 0( 时最优值固定在 ),再买就亏了。
3. 用互补松弛验证 $X=(2,0,1)$ 和 $W=(1,0,1)$ 同时最优,不用单纯形表。
两者都可行(第3节已验证)。、 要求对偶第一、三条约束取等号:、,成立。 要求 ,成立。 要求原约束一、三取等号:、,成立。所有乘积为 0,两者同时最优。