系统分析:线性规划、非线性规划与排队模型 · 第 1 / 11 篇(展开目录)

从线性规划建模、单纯形法、对偶与灵敏度、运输与指派,到非线性规划、随机过程、马尔可夫链、排队模型和决策分析,每章都配手算例题和自测,最后一章用综合例题把方法串起来。

  1. 第1章 线性规划建模:从文字题到标准型
  2. 第2章 单纯形法:单纯形表、大 M 法与两阶段法
  3. 第3章 对偶与灵敏度分析:最终单纯形表还能回答什么
  4. 第4章 运输问题与指派问题:Vogel 法、位势法与匈牙利法
  5. 第5章 非线性规划(一):一维搜索与多元无约束优化
  6. 第6章 非线性规划(二):拉格朗日乘子与 KKT 条件
  7. 第7章 随机过程基础:几何分布、指数分布与泊松过程
  8. 第8章 马尔可夫链:离散时间与连续时间
  9. 第9章 排队模型:从 M/M/1 到 M/M/m
  10. 第10章 决策分析:不确定性准则、决策树与效用
  11. 第11章 综合例题讲解与解析

约 25 分钟 · 需要会解二元一次方程组

读完你能: 把文字题写成线性规划模型;用图解法求两变量问题的最优解;把含 ≥\ge 约束、负右端、自由变量、下界的模型化成标准型;说出基本解、基本可行解和极点之间的关系。

1. 优化模型由哪三部分组成

优化模型把“用最好的方式完成一件事”写成数学语言。不管是排产、配料还是运输,模型都只有三类要素:

要素 含义 例子
决策变量 我们能决定的量 每天生产几张桌子
目标函数 要最大化或最小化的量 总利润、总成本
约束条件 决策必须满足的限制 工时、原料、需求

如果目标函数和所有约束都是变量的一次式,这个模型就是线性规划(Linear Programming,LP):

max⁡(或min⁡) z=c1x1+c2x2+⋯+cnxn\max(\text{或}\min)\ z=c_1x_1+c_2x_2+\cdots+c_nx_n s.t.ai1x1+ai2x2+⋯+ainxn {≤,=,≥} bi,xj≥0.\text{s.t.}\quad a_{i1}x_1+a_{i2}x_2+\cdots+a_{in}x_n\ \{\le,=,\ge\}\ b_i,\qquad x_j\ge0 .

只要出现 x12x_1^2、x1x2x_1x_2、x1\sqrt{x_1} 这样的项,模型就变成非线性规划,求解方法完全不同(见第5、6章)。

2. 建模三步

把文字题翻译成模型,按下面三步走,几乎不会漏条件:

  1. 找目标,定变量。 先问“要让什么最大或最小”,再问“它由哪些可以决定的量决定”——这些量就是决策变量。
  2. 逐条写出明示的限制。 文字里每一个“最多”“至少”“恰好”都对应一条约束。
  3. 补上隐含条件。 题目没明说、但物理上必然成立的条件,最常见的是非负(产量不能是负数),有时还有整数要求。

例1:家具厂排产。 工厂生产桌子和椅子,资源和利润如下:

桌子 椅子 每天可用
木工(小时) 2 1 40
油漆(小时) 1 2 50
木材(单位) 1 1 28
单件利润(元) 60 40 —

第一步,目标是总利润最大。设每天生产桌子 xx 张、椅子 yy 把,利润为 z=60x+40yz=60x+40y。

第二步,每种资源都不能超用:

2x+y≤40,x+2y≤50,x+y≤28.2x+y\le40,\qquad x+2y\le50,\qquad x+y\le28 .

第三步,隐含条件 x≥0, y≥0x\ge0,\ y\ge0。完整模型为

max⁡ z=60x+40ys.t. 2x+y≤40x+2y≤50x+y≤28x,y≥0.\begin{aligned} \max\ & z=60x+40y\\ \text{s.t.}\ & 2x+y\le40\\ & x+2y\le50\\ & x+y\le28\\ & x,y\ge0 . \end{aligned}

例2:饲料配方(最小化)。 两种原料 P、Q 每千克的营养含量和价格如下,混合饲料至少需要蛋白质 12、脂肪 8、纤维 12 个单位:

P Q 至少需要
蛋白质 3 1 12
脂肪 1 1 8
纤维 1 3 12
价格(元/千克) 4 3 —

设用 P xx 千克、Q yy 千克,模型为

min⁡ z=4x+3y,3x+y≥12,x+y≥8,x+3y≥12,x,y≥0.\min\ z=4x+3y,\qquad 3x+y\ge12,\quad x+y\ge8,\quad x+3y\ge12,\quad x,y\ge0 .

“至少”写

≥\ge,“最多”写 ≤\le 最大化问题常见 ≤\le 约束(资源有限),最小化问题常见 ≥\ge 约束(需求必须满足)。写完后用一个明显可行的点代进去检查方向——例2中 x=y=10x=y=10 一定满足所有营养要求,代入三条约束都应成立。

3. 图解法:最优解为什么在顶点

两个变量的问题可以画在平面上。每条约束 a1x+a2y≤ba_1x+a_2y\le b 对应一个半平面,所有半平面的交集就是可行域。线性规划的可行域总是凸多边形(可能无界)。

目标函数 z=60x+40yz=60x+40y 的等值线是一族平行直线。zz 越大,直线越往右上方平移。把等值线一直往目标改进的方向推,最后离开可行域时碰到的那个点就是最优解。由于等值线是直线、可行域是凸多边形,这个“最后接触点”一定是顶点(或者是一整条边,此时边的两个端点也都最优)。

所以两变量问题只需比较顶点。例1的可行域有5个顶点:

顶点 由哪两条线相交得到 利润 60x+40y60x+40y
(0,0)(0,0) x=0, y=0x=0,\ y=0 0
(20,0)(20,0) 2x+y=40, y=02x+y=40,\ y=0 1200
(12,16)(12,16) 2x+y=40, x+y=282x+y=40,\ x+y=28 1360
(6,22)(6,22) x+2y=50, x+y=28x+2y=50,\ x+y=28 1240
(0,25)(0,25) x+2y=50, x=0x+2y=50,\ x=0 1000

最优方案:每天生产 12 张桌子、16 把椅子,利润 1360 元。检查资源使用:木工 2⋅12+16=402\cdot12+16=40(用满)、木材 12+16=2812+16=28(用满)、油漆 12+32=44<5012+32=44<50(剩 6 小时)。用满的约束叫紧约束,后面讲灵敏度时,非紧约束的资源少量增加不会改善最优值;紧约束是否有价值还要看影子价格,不能只凭“用满”判断。

例2是最小化,等值线往左下方推。可行域无界,但顶点只有4个:

顶点 成本 4x+3y4x+3y
(0,12)(0,12) 36
(2,6)(2,6) 26
(6,2)(6,2) 30
(12,0)(12,0) 48

最优是 P 用 2 千克、Q 用 6 千克,成本 26 元。(2,6)(2,6) 是 3x+y=123x+y=12 与 x+y=8x+y=8 的交点。

求交点时先判断是哪两条线

很多错误不是算错,而是拿错了两条直线。先画草图,看清楚顶点在哪两条边上,再联立;算出来后代回所有约束检查可行性。

4. 标准型:单纯形法需要的形式

图解法只能处理两个变量。一般问题要用单纯形法(第2章),它要求模型先写成标准型:

optimize z=CTX,AX=B,X≥0,B≥0,\text{optimize}\ z=C^{T}X,\qquad AX=B,\qquad X\ge0,\qquad B\ge0 ,

即:所有约束都是等式、所有变量都非负,本章再把右端统一成非负。标准型不自动提供初始基本可行解;没有现成起点时,第5节用人工变量辅助寻找。转换规则如下:

原形式 处理方法
右端为负,如 3x1−4x2≤−63x_1-4x_2\le-6 两边乘 −1-1,不等号反向:−3x1+4x2≥6-3x_1+4x_2\ge6
≤\le 约束 加松弛变量 s≥0s\ge0:⋯+s=b\cdots+s=b
≥\ge 约束 减剩余变量 e≥0e\ge0:⋯−e=b\cdots-e=b
自由变量 xx(可正可负) 令 x=x′−x′′x=x'-x'',x′,x′′≥0x',x''\ge0
有下界 x≥lx\ge l 令 x′=x−l≥0x'=x-l\ge0,代回所有式子
有上界 x≤ux\le u 当作一条普通约束 x≤ux\le u
目标中的常数项 先拿出来,最后再加回去

松弛变量的含义是“没用完的资源”,剩余变量是“超出最低要求的部分”。它们在目标函数中的系数为 0,不改变原问题。

例3:完整转换一次。

min⁡ z=4x1−2x2+3x3s.t. x1+2x2−x3=62x1−x2+x3≤8−x1−3x2+2x3≤−3x1≥1,0≤x2≤5,x3 自由\begin{aligned} \min\ & z=4x_1-2x_2+3x_3\\ \text{s.t.}\ & x_1+2x_2-x_3=6\\ & 2x_1-x_2+x_3\le8\\ & -x_1-3x_2+2x_3\le-3\\ & x_1\ge1,\quad 0\le x_2\le5,\quad x_3\ \text{自由} \end{aligned}

第一步,处理负右端:第三条约束乘 −1-1,得 x1+3x2−2x3≥3x_1+3x_2-2x_3\ge3。

第二步,处理下界和自由变量:令 x1′=x1−1≥0x_1'=x_1-1\ge0(即 x1=x1′+1x_1=x_1'+1),令 x3=x3′−x3′′x_3=x_3'-x_3''。代入:

  • 目标:z=4(x1′+1)−2x2+3x3′−3x3′′=4x1′−2x2+3x3′−3x3′′+4z=4(x_1'+1)-2x_2+3x_3'-3x_3''=4x_1'-2x_2+3x_3'-3x_3''+4,常数 4 先拿出,求 z′=z−4z'=z-4 的最小值。
  • 第一条:x1′+1+2x2−x3′+x3′′=6⇒x1′+2x2−x3′+x3′′=5x_1'+1+2x_2-x_3'+x_3''=6\Rightarrow x_1'+2x_2-x_3'+x_3''=5。
  • 第二条:2x1′+2−x2+x3′−x3′′≤8⇒2x1′−x2+x3′−x3′′≤62x_1'+2-x_2+x_3'-x_3''\le8\Rightarrow 2x_1'-x_2+x_3'-x_3''\le6。
  • 第三条:x1′+1+3x2−2x3′+2x3′′≥3⇒x1′+3x2−2x3′+2x3′′≥2x_1'+1+3x_2-2x_3'+2x_3''\ge3\Rightarrow x_1'+3x_2-2x_3'+2x_3''\ge2。
  • 上界:x2≤5x_2\le5。

第三步,加松弛、减剩余:

min⁡ z′=4x1′−2x2+3x3′−3x3′′s.t. x1′+2x2−x3′+x3′′=52x1′−x2+x3′−x3′′+s1=6x1′+3x2−2x3′+2x3′′−e1=2x2+s2=5所有变量≥0.\begin{aligned} \min\ & z'=4x_1'-2x_2+3x_3'-3x_3''\\ \text{s.t.}\ & x_1'+2x_2-x_3'+x_3''=5\\ & 2x_1'-x_2+x_3'-x_3''+s_1=6\\ & x_1'+3x_2-2x_3'+2x_3''-e_1=2\\ & x_2+s_2=5\\ & \text{所有变量}\ge0 . \end{aligned}

最后求出 z′z' 的最小值后,原问题的最小值是 z=z′+4z=z'+4。

5. 人工变量:给单纯形法一个起点

单纯形法要从一个基本可行解出发。对 ≤\le 约束,松弛变量天然就是起点:令原变量为 0,松弛变量等于右端即可。但等式约束和 ≥\ge 约束没有这样的变量——≥\ge 约束的剩余变量系数是 −1-1,令它等于右端会得到负值。

办法是给这些约束各加一个人工变量 a≥0a\ge0:

x1+2x2≤3 → x1+2x2+s1=3x_1+2x_2\le3\ \to\ x_1+2x_2+s_1=3 4x1+5x2≥6 → 4x1+5x2−e1+a1=64x_1+5x_2\ge6\ \to\ 4x_1+5x_2-e_1+a_1=6 7x1+8x2=15 → 7x1+8x2+a2=157x_1+8x_2=15\ \to\ 7x_1+8x_2+a_2=15

令 x1=x2=e1=0x_1=x_2=e_1=0,立刻得到 s1=3, a1=6, a2=15s_1=3,\ a_1=6,\ a_2=15,这是新方程组的一个可行解。规则可以概括为:每条约束恰好含一个“起步变量”——≤\le 用松弛变量,≥\ge 和 == 用人工变量。

人工变量只是脚手架,它为正时原约束并不成立。所以必须让它们在最终解里都等于 0,做法是在目标中给它们很大的惩罚:最小化问题加 +Ma+Ma,最大化问题加 −Ma-Ma(MM 是一个足够大的正数),这就是第2章的大 M 法;另一种做法是两阶段法。

6. 基本解、基本可行解与极点

设标准型有 mm 条等式约束、nn 个变量(n≥mn\ge m,且系数矩阵 AA 的秩为 mm)。

  • 基本解: 任选 n−mn-m 个变量令其为 0(非基变量),用剩下 mm 个变量(基变量)解方程组;要求这 mm 个变量对应的列线性无关。最多有 (nm)\binom{n}{m} 个基本解。
  • 基本可行解: 所有分量都非负的基本解。
  • 极点: 可行域中不在任何两点连线“内部”的点,也就是多边形的顶点。

关键结论:可行域的极点恰好就是基本可行解;如果最优解存在,一定能在某个基本可行解处取到。 所以求解线性规划,本质是在有限个基本可行解中找最好的一个。

例4:枚举全部基本解。

max⁡ z=3x1+2x2,x1+x2≤4,x1+3x2≤6,x1,x2≥0.\max\ z=3x_1+2x_2,\qquad x_1+x_2\le4,\qquad x_1+3x_2\le6,\qquad x_1,x_2\ge0 .

加松弛变量:x1+x2+x3=4x_1+x_2+x_3=4,x1+3x2+x4=6x_1+3x_2+x_4=6。n=4, m=2n=4,\ m=2,最多 (42)=6\binom42=6 个基本解:

基变量 解 (x1,x2,x3,x4)(x_1,x_2,x_3,x_4) 可行? zz
x3,x4x_3,x_4 (0,0,4,6)(0,0,4,6) 是 0
x2,x3x_2,x_3 (0,2,2,0)(0,2,2,0) 是 4
x1,x2x_1,x_2 (3,1,0,0)(3,1,0,0) 是 11
x1,x4x_1,x_4 (4,0,0,2)(4,0,0,2) 是 12
x1,x3x_1,x_3 (6,0,−2,0)(6,0,-2,0) 否(x3<0x_3<0) —
x2,x4x_2,x_4 (0,4,0,−6)(0,4,0,-6) 否(x4<0x_4<0) —

4 个基本可行解正好对应可行域的 4 个顶点 (0,0)(0,0)、(0,2)(0,2)、(3,1)(3,1)、(4,0)(4,0),最优解是 x1=4, x2=0x_1=4,\ x_2=0,z=12z=12。不可行的两个基本解是约束直线的交点,但落在可行域外面。

如果某个基本可行解中有基变量恰好等于 0,称为退化。它通常意味着有多余的约束经过同一个顶点。

枚举法在小问题上直观,但规模一大就不可行:20 个变量、10 条约束最多有 (2010)=184756\binom{20}{10}=184756 个基本解。单纯形法的作用,就是只沿着“让目标变好”的方向在顶点之间移动,不必全部枚举。

7. 三种特殊情况

情况 图解法中的样子 例子
无可行解 半平面没有公共部分 x+y≤2x+y\le2 且 x+y≥5x+y\ge5
无界 可行域沿目标改进方向无限延伸 max⁡ x+y\max\ x+y,只有 x−y≤1x-y\le1
多重最优 目标等值线与某条边平行,整条边都最优 例1中若利润改为 40x+40y40x+40y,(12,16)(12,16) 与 (6,22)(6,22) 之间整条边都得 1120

注意“可行域无界”不等于“问题无界”:例2的可行域无界,但最小化成本仍有最优解。

8. 小结

  • 线性规划 = 线性目标 + 线性约束 + 非负变量。
  • 建模三步:目标和变量 → 明示约束 → 隐含条件。
  • 可行域是凸的,最优解在顶点上取得;两变量问题比较顶点即可。
  • 标准型要求等式约束、非负变量、非负右端;≤\le 加松弛,≥\ge 减剩余再加人工,== 加人工。
  • 基本可行解 = 极点;单纯形法就是在它们之间有方向地移动。

自测

1. 例1中如果木材增加到 30 单位,最优方案和利润变成多少?

紧约束变成 2x+y=402x+y=40 与 x+y=30x+y=30,解得 x=10, y=20x=10,\ y=20。检查油漆:10+40=50≤5010+40=50\le50,恰好用满,可行。利润 600+800=1400600+800=1400,比原来多 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$ 自由”写成标准型,并给出初始基本可行解。

先把负右端变正:−x1+2x2≤4-x_1+2x_2\le4。令 x2=x2′−x2′′x_2=x_2'-x_2'':

max⁡ z=x1−x2′+x2′′,−x1+2x2′−2x2′′+s1=4,x1+s2=3,所有变量≥0.\max\ z=x_1-x_2'+x_2'',\quad -x_1+2x_2'-2x_2''+s_1=4,\quad x_1+s_2=3,\quad \text{所有变量}\ge0 .

两条约束都是 ≤\le,不需要人工变量。初始基本可行解:x1=x2′=x2′′=0x_1=x_2'=x_2''=0,s1=4, s2=3s_1=4,\ s_2=3。

3. 约束 $x_1+x_2+x_3=4$、$x_1+3x_2+x_4=6$ 中,取 $x_1,x_3$ 为基变量为什么得到的不是顶点?

令 x2=x4=0x_2=x_4=0,第二式得 x1=6x_1=6,第一式得 x3=4−6=−2<0x_3=4-6=-2<0。它是基本解(两列线性无关),但不满足非负,所以不是基本可行解,也就不是可行域的顶点——几何上它是直线 x1+3x2=6x_1+3x_2=6 与 x2=0x_2=0 的交点 (6,0)(6,0),已经超出了 x1+x2≤4x_1+x_2\le4。