系统分析:线性规划、非线性规划与排队模型 · 第 5 / 11 篇(展开目录)
从线性规划建模、单纯形法、对偶与灵敏度、运输与指派,到非线性规划、随机过程、马尔可夫链、排队模型和决策分析,每章都配手算例题和自测,最后一章用综合例题把方法串起来。
- 第1章 线性规划建模:从文字题到标准型
- 第2章 单纯形法:单纯形表、大 M 法与两阶段法
- 第3章 对偶与灵敏度分析:最终单纯形表还能回答什么
- 第4章 运输问题与指派问题:Vogel 法、位势法与匈牙利法
- 第5章 非线性规划(一):一维搜索与多元无约束优化
- 第6章 非线性规划(二):拉格朗日乘子与 KKT 条件
- 第7章 随机过程基础:几何分布、指数分布与泊松过程
- 第8章 马尔可夫链:离散时间与连续时间
- 第9章 排队模型:从 M/M/1 到 M/M/m
- 第10章 决策分析:不确定性准则、决策树与效用
- 第11章 综合例题讲解与解析
约 30 分钟 · 需要会求偏导数和 2×2、3×3 行列式
读完你能: 把定价、设计类问题写成非线性规划;说清单峰性与区间消去规则;手算 Fibonacci 搜索、黄金分割搜索和一维牛顿法;求梯度和 Hessian 矩阵,用顺序主子式判断正定、负定、不定,并据此分类驻点;写出多元牛顿迭代并判断它会不会走错方向。
贯穿例子: (),最小点 ,。三种一维方法都用它,方便比较。
1. 什么是非线性规划
线性规划的目标和约束都是一次式。只要有一处不是,就是非线性规划(NLP):
最大化问题求 ,最后把最优值乘 。没有约束的叫无约束问题。
例1:定价。 单位成本 10 元,售价为 时需求 。利润 最大的售价是多少?这是一元无约束问题:令导数 ,得 ,最大利润 元。
例2:容器设计。 有盖的圆柱形罐至少装 20 m³,侧面和顶的材料 50 元/m²,底更厚,200 元/m²;为防止头重脚轻,高度不超过直径的 2 倍。设直径 、高 :
非线性规划的难点在于:可行域不一定是多边形,最优解可以在可行域内部,也可以在边界的任意位置;而且可能有多个局部最优,只有一个是全局最优。没有通用算法能解所有非线性规划,本章和下一章介绍几类最重要的情形。
2. 局部最优、单峰性与区间消去
在 有局部极小:存在 附近的一个小区间,区间内 。若对定义域内所有 都成立,则是全局极小。
直接搜索法只用函数值,不用导数。前提是在初始区间 上 单峰:区间内只有一个局部极值点。在区间内取两点 ,对单峰函数求极小:
| 比较结果 |
结论 |
|
极小点不在 ,保留 |
|
极小点不在 ,保留 |
|
两端都可去掉,保留 |
求极大时把比较方向反过来。区间消去法的区别只在于“试点放在哪里”:放得好,每次只需算一个新函数值,旧的试点可以继续用。
3. 黄金分割搜索
把两个试点放在距两端各 处( 为当前区间长度)。消去一段后,留下的那个旧试点恰好又位于新区间的黄金分割位置,所以每轮只需新算一个点:新点放在距最新端点 处。,每轮区间缩为原来的 0.618 倍。
例3: 在 上求 的极小,精度 。
初始 ,试点 与 :,去掉 。
| 轮 |
新区间 |
长度 |
新试点 |
(新试点) |
比较后去掉 |
| 1 |
|
3.090 |
|
12.092 |
,去掉 |
| 2 |
|
1.910 |
|
12.242 |
,去掉 |
| 3 |
|
1.180 |
|
12.554 |
,去掉 |
| 4 |
|
0.729 |
|
12.000 |
区间已短于 |
区间长度降到 0.729 < 1,停止。区间内最好的点 ,,与真解 吻合。
4. Fibonacci 搜索
Fibonacci 数 ,:1, 1, 2, 3, 5, 8, 13, 21, 34, …
- 取满足 的最小 ,令 。
- 前两个试点放在距两端各 处。
- 每轮消去一段后,新试点放在距最新端点 处,。
- 结束时区间内最好的点与区间中任一点的距离不超过 。
例4: 同一函数,,。,需要 ,取 ,,。
前两点距两端 :()与 ()。左边小,保留 。
|
|
新试点 |
|
保留区间 |
| 4 |
|
|
12.068 |
→ |
| 3 |
|
|
12.174 |
→ |
| 2 |
|
|
12.747 |
→ |
取 ,。它与最终区间两端的距离都不超过 。
两种方法怎么选
Fibonacci 搜索在给定计算次数下区间缩得最多,但必须事先确定 ;黄金分割每轮固定缩 0.618 倍,次数不限,更省事。两者的比例在 很大时趋于相同——相邻 Fibonacci 数之比的极限就是 0.618。
5. 一维牛顿法
如果能求导,就可以利用导数信息加速。把 在 处线性化:,令其为 0:
当 或 时停止。
例5: ,,,,。
|
|
|
|
| 0 |
1 |
1.411765 |
0.411765 |
| 1 |
1.411765 |
1.800935 |
0.389170 |
| 2 |
1.800935 |
1.978950 |
0.178016 |
| 3 |
1.978950 |
1.999777 |
0.020827 |
| 4 |
1.999777 |
2.000000 |
0.000223 |
| 5 |
2.000000 |
2.000000 |
< |
第一步:,,。越接近解收敛越快(误差大致按平方缩小)。
牛顿法找的是 的点,它不区分极小和极大。在极小点附近且 时,适当初值通常能快速收敛;但初值选得不好,仍可能越界或发散,不能只靠出发点处的正曲率保证收敛。
6. 梯度、Hessian 与正定性
元函数的梯度和 Hessian 矩阵:
正定性的顺序主子式判别法。 对称矩阵 的顺序主子式 ,,…,:
| 结论 |
条件 |
| 正定 |
|
| 负定 |
符号交替: |
| 半正定 |
所有主子式 (严格判断要看全部主子式,不只是顺序主子式) |
| 不定 |
既不半正定也不半负定,例如 (2×2 时一定不定) |
例6:
三个都为正, 正定。
7. 驻点的分类
梯度为零的点叫驻点。在驻点 处:
- 正定 → 严格局部极小;
- 负定 → 严格局部极大;
- 不定 → 鞍点,既不是极小也不是极大;
- 半定 → 本判别法无法确定,需要进一步分析。
例7: 。
- :,,正定,局部极小,。
- :,,不定,鞍点。
这个函数没有全局极小: 时 。“局部极小”不保证是全局最优,这正是非线性规划和线性规划的根本区别之一。
例8: 二次函数 。它的 Hessian 就是例6的常数矩阵 (处处正定),所以唯一的驻点就是全局极小。解 :
得 。
Hessian 处处正定 = 凸函数
如果定义域是凸集,且函数在其上二阶可微、Hessian 处处半正定,函数就是凸函数,任何局部极小都是全局极小。第6章的 KKT 充分条件就建立在这个性质上。
8. 多元牛顿法
一维牛顿法推广到多元:
当 时停止。对正定二次函数,牛顿法一步就到达极小点(因为二阶泰勒展开就是函数本身)。
例9: ,,真极小点 ,。
|
|
|
|
|
| 0 |
|
52 |
|
|
| 1 |
|
3.16 |
|
|
| 2 |
|
0.62 |
|
|
| 3 |
|
0.12 |
|
|
第一步:,,,于是 。
从第一步起每个点都满足 ,之后 每步缩为原来的 。四次函数不是二次的,所以要迭代多次;而且越接近解 Hessian 越接近奇异,收敛变慢。
牛顿法可能走向极大点
牛顿法只是在找 的点。如果当前 Hessian 不正定(求极小时),迭代方向就可能是“上坡”,最后收敛到极大点或鞍点。求极大值时道理相同:需要 Hessian 在附近负定。迭代后发现目标没有朝希望的方向改进,就应该换一个初值。
9. 小结
- NLP:目标或约束有非线性项;最大化转为最小化 ;局部最优不一定全局最优。
- 区间消去:单峰前提下比较两个试点,去掉较差一侧之外的那段。
- 黄金分割:试点在 处,每轮新算一个点;Fibonacci:,试点在 处。
- 一维牛顿:;多元牛顿:。
- 驻点分类:Hessian 正定 → 极小,负定 → 极大,不定 → 鞍点;用顺序主子式判断。
自测
1. 判断 $f=2x_1x_2-x_1^2-x_2^2$ 和 $g=x_1^2+4x_1x_2+x_2^2$ 的 Hessian 是正定、负定还是不定。
:,,是半负定(),所以 是凹函数,但不是严格凹。
:,不定,原点是鞍点。
2. 用一维牛顿法从 $x_0=4$ 出发求 $f(x)=x^2+16/x$ 的极小,写出第一步。
,,。之后继续迭代会收敛到 2。初值离解远时第一步可能“冲过头”(从 4 跳到 1.2,越过了 2),本例继续迭代会收敛;一般问题中即使出发点曲率为正,也应检查后续迭代是否越界,并配合步长控制。
3. 两家工厂合谋:总产量 $x=x_1+x_2$,售价 $200-x$,成本分别为 $x_1$ 和 $0.5x_2^2$。总利润最大时各生产多少?
。
,,解得 ,。Hessian :,,负定,是极大点。