系统分析:线性规划、非线性规划与排队模型 · 第 1 / 11 篇(展开目录)
从线性规划建模、单纯形法、对偶与灵敏度、运输与指派,到非线性规划、随机过程、马尔可夫链、排队模型和决策分析,每章都配手算例题和自测,最后一章用综合例题把方法串起来。
- 第1章 线性规划建模:从文字题到标准型
- 第2章 单纯形法:单纯形表、大 M 法与两阶段法
- 第3章 对偶与灵敏度分析:最终单纯形表还能回答什么
- 第4章 运输问题与指派问题:Vogel 法、位势法与匈牙利法
- 第5章 非线性规划(一):一维搜索与多元无约束优化
- 第6章 非线性规划(二):拉格朗日乘子与 KKT 条件
- 第7章 随机过程基础:几何分布、指数分布与泊松过程
- 第8章 马尔可夫链:离散时间与连续时间
- 第9章 排队模型:从 M/M/1 到 M/M/m
- 第10章 决策分析:不确定性准则、决策树与效用
- 第11章 综合例题讲解与解析
约 25 分钟 · 需要会解二元一次方程组
读完你能: 把文字题写成线性规划模型;用图解法求两变量问题的最优解;把含 约束、负右端、自由变量、下界的模型化成标准型;说出基本解、基本可行解和极点之间的关系。
1. 优化模型由哪三部分组成
优化模型把“用最好的方式完成一件事”写成数学语言。不管是排产、配料还是运输,模型都只有三类要素:
| 要素 |
含义 |
例子 |
| 决策变量 |
我们能决定的量 |
每天生产几张桌子 |
| 目标函数 |
要最大化或最小化的量 |
总利润、总成本 |
| 约束条件 |
决策必须满足的限制 |
工时、原料、需求 |
如果目标函数和所有约束都是变量的一次式,这个模型就是线性规划(Linear Programming,LP):
只要出现 、、 这样的项,模型就变成非线性规划,求解方法完全不同(见第5、6章)。
2. 建模三步
把文字题翻译成模型,按下面三步走,几乎不会漏条件:
- 找目标,定变量。 先问“要让什么最大或最小”,再问“它由哪些可以决定的量决定”——这些量就是决策变量。
- 逐条写出明示的限制。 文字里每一个“最多”“至少”“恰好”都对应一条约束。
- 补上隐含条件。 题目没明说、但物理上必然成立的条件,最常见的是非负(产量不能是负数),有时还有整数要求。
例1:家具厂排产。 工厂生产桌子和椅子,资源和利润如下:
|
桌子 |
椅子 |
每天可用 |
| 木工(小时) |
2 |
1 |
40 |
| 油漆(小时) |
1 |
2 |
50 |
| 木材(单位) |
1 |
1 |
28 |
| 单件利润(元) |
60 |
40 |
— |
第一步,目标是总利润最大。设每天生产桌子 张、椅子 把,利润为 。
第二步,每种资源都不能超用:
第三步,隐含条件 。完整模型为
例2:饲料配方(最小化)。 两种原料 P、Q 每千克的营养含量和价格如下,混合饲料至少需要蛋白质 12、脂肪 8、纤维 12 个单位:
|
P |
Q |
至少需要 |
| 蛋白质 |
3 |
1 |
12 |
| 脂肪 |
1 |
1 |
8 |
| 纤维 |
1 |
3 |
12 |
| 价格(元/千克) |
4 |
3 |
— |
设用 P 千克、Q 千克,模型为
“至少”写
,“最多”写
最大化问题常见 约束(资源有限),最小化问题常见 约束(需求必须满足)。写完后用一个明显可行的点代进去检查方向——例2中 一定满足所有营养要求,代入三条约束都应成立。
3. 图解法:最优解为什么在顶点
两个变量的问题可以画在平面上。每条约束 对应一个半平面,所有半平面的交集就是可行域。线性规划的可行域总是凸多边形(可能无界)。
目标函数 的等值线是一族平行直线。 越大,直线越往右上方平移。把等值线一直往目标改进的方向推,最后离开可行域时碰到的那个点就是最优解。由于等值线是直线、可行域是凸多边形,这个“最后接触点”一定是顶点(或者是一整条边,此时边的两个端点也都最优)。
所以两变量问题只需比较顶点。例1的可行域有5个顶点:
| 顶点 |
由哪两条线相交得到 |
利润 |
|
|
0 |
|
|
1200 |
|
|
1360 |
|
|
1240 |
|
|
1000 |
最优方案:每天生产 12 张桌子、16 把椅子,利润 1360 元。检查资源使用:木工 (用满)、木材 (用满)、油漆 (剩 6 小时)。用满的约束叫紧约束,后面讲灵敏度时,非紧约束的资源少量增加不会改善最优值;紧约束是否有价值还要看影子价格,不能只凭“用满”判断。
例2是最小化,等值线往左下方推。可行域无界,但顶点只有4个:
| 顶点 |
成本 |
|
36 |
|
26 |
|
30 |
|
48 |
最优是 P 用 2 千克、Q 用 6 千克,成本 26 元。 是 与 的交点。
求交点时先判断是哪两条线
很多错误不是算错,而是拿错了两条直线。先画草图,看清楚顶点在哪两条边上,再联立;算出来后代回所有约束检查可行性。
4. 标准型:单纯形法需要的形式
图解法只能处理两个变量。一般问题要用单纯形法(第2章),它要求模型先写成标准型:
即:所有约束都是等式、所有变量都非负,本章再把右端统一成非负。标准型不自动提供初始基本可行解;没有现成起点时,第5节用人工变量辅助寻找。转换规则如下:
| 原形式 |
处理方法 |
| 右端为负,如 |
两边乘 ,不等号反向: |
| 约束 |
加松弛变量 : |
| 约束 |
减剩余变量 : |
| 自由变量 (可正可负) |
令 , |
| 有下界 |
令 ,代回所有式子 |
| 有上界 |
当作一条普通约束 |
| 目标中的常数项 |
先拿出来,最后再加回去 |
松弛变量的含义是“没用完的资源”,剩余变量是“超出最低要求的部分”。它们在目标函数中的系数为 0,不改变原问题。
例3:完整转换一次。
第一步,处理负右端:第三条约束乘 ,得 。
第二步,处理下界和自由变量:令 (即 ),令 。代入:
- 目标:,常数 4 先拿出,求 的最小值。
- 第一条:。
- 第二条:。
- 第三条:。
- 上界:。
第三步,加松弛、减剩余:
最后求出 的最小值后,原问题的最小值是 。
5. 人工变量:给单纯形法一个起点
单纯形法要从一个基本可行解出发。对 约束,松弛变量天然就是起点:令原变量为 0,松弛变量等于右端即可。但等式约束和 约束没有这样的变量—— 约束的剩余变量系数是 ,令它等于右端会得到负值。
办法是给这些约束各加一个人工变量 :
令 ,立刻得到 ,这是新方程组的一个可行解。规则可以概括为:每条约束恰好含一个“起步变量”—— 用松弛变量, 和 用人工变量。
人工变量只是脚手架,它为正时原约束并不成立。所以必须让它们在最终解里都等于 0,做法是在目标中给它们很大的惩罚:最小化问题加 ,最大化问题加 ( 是一个足够大的正数),这就是第2章的大 M 法;另一种做法是两阶段法。
6. 基本解、基本可行解与极点
设标准型有 条等式约束、 个变量(,且系数矩阵 的秩为 )。
- 基本解: 任选 个变量令其为 0(非基变量),用剩下 个变量(基变量)解方程组;要求这 个变量对应的列线性无关。最多有 个基本解。
- 基本可行解: 所有分量都非负的基本解。
- 极点: 可行域中不在任何两点连线“内部”的点,也就是多边形的顶点。
关键结论:可行域的极点恰好就是基本可行解;如果最优解存在,一定能在某个基本可行解处取到。 所以求解线性规划,本质是在有限个基本可行解中找最好的一个。
例4:枚举全部基本解。
加松弛变量:,。,最多 个基本解:
| 基变量 |
解 |
可行? |
|
|
|
是 |
0 |
|
|
是 |
4 |
|
|
是 |
11 |
|
|
是 |
12 |
|
|
否() |
— |
|
|
否() |
— |
4 个基本可行解正好对应可行域的 4 个顶点 、、、,最优解是 ,。不可行的两个基本解是约束直线的交点,但落在可行域外面。
如果某个基本可行解中有基变量恰好等于 0,称为退化。它通常意味着有多余的约束经过同一个顶点。
枚举法在小问题上直观,但规模一大就不可行:20 个变量、10 条约束最多有 个基本解。单纯形法的作用,就是只沿着“让目标变好”的方向在顶点之间移动,不必全部枚举。
7. 三种特殊情况
| 情况 |
图解法中的样子 |
例子 |
| 无可行解 |
半平面没有公共部分 |
且 |
| 无界 |
可行域沿目标改进方向无限延伸 |
,只有 |
| 多重最优 |
目标等值线与某条边平行,整条边都最优 |
例1中若利润改为 , 与 之间整条边都得 1120 |
注意“可行域无界”不等于“问题无界”:例2的可行域无界,但最小化成本仍有最优解。
8. 小结
- 线性规划 = 线性目标 + 线性约束 + 非负变量。
- 建模三步:目标和变量 → 明示约束 → 隐含条件。
- 可行域是凸的,最优解在顶点上取得;两变量问题比较顶点即可。
- 标准型要求等式约束、非负变量、非负右端; 加松弛, 减剩余再加人工, 加人工。
- 基本可行解 = 极点;单纯形法就是在它们之间有方向地移动。
自测
1. 例1中如果木材增加到 30 单位,最优方案和利润变成多少?
紧约束变成 与 ,解得 。检查油漆:,恰好用满,可行。利润 ,比原来多 40 元——木材每增加 1 单位,利润增加 20 元,这就是木材的影子价格(第3章)。
2. 把“$\max\ z=x_1-x_2$,$x_1-2x_2\ge-4$,$x_1\le3$,$x_1\ge0$,$x_2$ 自由”写成标准型,并给出初始基本可行解。
先把负右端变正:。令 :
两条约束都是 ,不需要人工变量。初始基本可行解:,。
3. 约束 $x_1+x_2+x_3=4$、$x_1+3x_2+x_4=6$ 中,取 $x_1,x_3$ 为基变量为什么得到的不是顶点?
令 ,第二式得 ,第一式得 。它是基本解(两列线性无关),但不满足非负,所以不是基本可行解,也就不是可行域的顶点——几何上它是直线 与 的交点 ,已经超出了 。