这篇不是把整门课再抄一遍,而是把考场上真正需要调动的知识压成一条主线:先判断问题结构,再写条件或选算法,最后检查条件是否真的成立。遇到不会的题,也尽量靠这条主线拿到过程分。
一张路线图
| 题型 | 第一反应 | 核心工具 |
|---|
| 线性规划计算 | 化标准形、找初始基 | 单纯形表、比值检验 |
| LP 对偶与灵敏度 | 统一原问题方向 | 弱/强对偶、互补松弛、B−1 |
| 凸性证明 | 先判定义域和可行域 | 凸组合、Hessian、上图集 |
| 无约束极值 | 先解一阶条件,再看二阶 | 梯度、Hessian |
| 约束极值 | 写成统一不等式方向 | 可行方向、Fritz John、KKT |
| Lagrange 对偶 | 先写 L,再对 x 取下确界 | 对偶函数、弱/强对偶 |
| 迭代算法 | 明确方向和步长各怎么来 | 下降方向、一维搜索、停止准则 |
| 证明收敛 | 找下降性、紧性和闭映射 | 极限点、Zangwill 框架 |
线性规划:单纯形法必须会写的骨架
把问题化为
mincTx,Ax=b,x≥0.
选基矩阵 B 后,基本解与目标函数写成
xB=B−1b−B−1NxN,
z=cBTB−1b+(cNT−cBTB−1N)xN.
本课程的最小化表常用检验数
σj=zj−cj=cBTB−1Aj−cj.
当前基最优的判据是所有非基变量满足 σj≤0。若某个 σj>0,让它进基;再用正主元列做最小比值检验,决定谁出基。
考场固定步骤:
- 统一约束为等式并保证右端非负。
- 找单位阵基;找不到就用大 M 法或两阶段法。
- 写清进基变量、比值和出基变量。
- 做行变换,直到满足最优性条件。
- 从基变量列读解,同时写目标值。
三个异常必须能辨认:主元列没有正元素表示无界;比值检验出现并列可能退化;人工变量最终仍为正表示原问题不可行。
LP 对偶与互补松弛
最容易记的一组是
mins.t.cTxAx≥b, x≥0⟺maxs.t.bTyATy≤c, y≥0.
其他方向不要死背,先把约束乘 −1 化到这组形式。弱对偶给出
bTy≤cTx,
强对偶说明双方存在有限最优解时最优值相等。互补松弛是算题最快的工具:
yi(Ax−b)i=0,xj(c−ATy)j=0.
一句话理解:一边的变量为正,另一边对应的松弛就必须为零。
灵敏度分析只围绕两件事:
B−1b≥0(原可行),cBTB−1A−cT≤0(对偶可行).
改 b 先看第一式;改 c 先看第二式。原可行破坏而对偶可行时用对偶单纯形;反过来用原始单纯形。
凸性:定义、判据和结论不要混
集合 C 凸,指任意 x,y∈C 和 θ∈[0,1] 都有
θx+(1−θ)y∈C.
函数 f 在凸集上凸,指
f(θx+(1−θ)y)≤θf(x)+(1−θ)f(y).
二阶可微时,∇2f(x)⪰0 可判凸,∇2f(x)≻0 可判严格凸。注意:严格凸保证最优解至多一个;凸函数的一阶驻点是全局最优点;但“唯一最优点”不能反推严格凸。
凸规划中,只要约束资格成立,KKT 条件通常既必要又充分;一般非凸问题里,KKT 只是一阶必要条件,不能直接宣布全局最优。
无约束最优性条件
若 x∗ 是可微函数的内点局部极小点,则
∇f(x∗)=0.
在驻点处:
- ∇2f(x∗)≻0:严格局部极小;
- ∇2f(x∗)≺0:严格局部极大;
- Hessian 不定:鞍点;
- 半正定:二阶条件不给结论,要回到定义或看更高阶项。
方向 d 是下降方向的局部判据为
∇f(x)Td<0.
欧氏范数下的最速下降方向是 −∇f(x)。
约束最优性条件:统一符号后再写 KKT
采用本课程常见形式
minf(x),gi(x)≥0,hj(x)=0.
Lagrange 函数取
L(x,μ,λ)=f(x)−i∑μigi(x)+j∑λjhj(x),μi≥0.
KKT 四件套:
⎩⎨⎧∇xL(x∗,μ∗,λ∗)=0,gi(x∗)≥0, hj(x∗)=0,μi∗≥0,μi∗gi(x∗)=0.
答题时先列活动约束,再求乘子,最后逐项检查乘子符号与互补条件。约束资格不明时,先写 Fritz John:目标函数前还有乘子 μ0≥0,且全部乘子不能同时为零;只有能证明 μ0>0 时才能归一化成 KKT。
Lagrange 对偶
对原问题先写
q(μ,λ)=x∈DinfL(x,μ,λ),
再写对偶问题
μ≥0,λmaxq(μ,λ).
q 永远是凹函数,即使原问题不凸。对任何原可行点和对偶可行乘子,都有 q≤f;所以对偶给原最小化问题提供下界。凸问题满足 Slater 条件时通常强对偶成立。
一维搜索和主要无约束算法
统一迭代式:
x(k+1)=x(k)+αkd(k).
精确一维搜索首先解的是
αk∈argα∈Ikminϕ(α),ϕ(α)=f(x(k)+αd(k)),
其中 Ik 是允许的步长区间。只有当最小值由有限的区间内点 αk 取得,且 ϕ 在该点可微时,才可用必要条件
ϕ′(αk)=0.
若最优步长落在区间端点、目标沿方向无下界,或有限极小解不存在,都不能直接套导数等于零。在上述内点可微条件下,才有重要正交关系
∇f(x(k+1))Td(k)=0.
| 方法 | 方向 | 关键提醒 |
|---|
| 最速下降 | dk=−gk | 稳但在狭长谷地中锯齿 |
| Newton | dk=−Hk−1gk | Hk≻0 才保证下降 |
| 共轭梯度 | dk+1=−gk+1+βkdk | 正定二次型至多 n 步精确终止 |
| DFP | 用割线条件更新 Hk≈∇2f−1 | 要检查 skTyk>0 |
| Powell | 只用函数值并更新方向组 | 适合无导数问题 |
DFP 逆 Hessian 更新公式:
Hk+1=Hk+skTykskskT−ykTHkykHkykykTHk,
其中 sk=xk+1−xk,yk=gk+1−gk。
可行方向法
线性约束 Ax≥b,Ex=e 下,设当前活动不等式矩阵为 AI。可行方向满足
AId≥0,Ed=0,
下降还要求 ∇f(x)Td<0。Zoutendijk 法把“寻找一个尽量好的可行下降方向”写成线性规划,若最优下降量为零,则到达一阶驻点。
等式约束 Ax=b 可消去基变量:
xB=B−1b−B−1NxN.
既约梯度为
rN=∇Nf−(B−1N)T∇Bf.
取 dN=−rN,再令 dB=−B−1NdN,就自动满足 Ad=0;若 rN=0,还有 ∇fTd=−∥rN∥2<0。
最后十分钟检查清单
- 目标是 min 还是 max?不等号方向统一了吗?
- 单纯形表的检验数约定是哪一种?全文保持一致了吗?
- 候选解真的可行吗?活动约束找全了吗?
- KKT 乘子符号与 Lagrange 函数符号匹配吗?
- 二阶条件是充分、必要,还是无法判断?
- Newton 方向真的是下降方向吗?精确一维搜索是否存在有限最小值?
- 最终答案有没有写变量顺序、目标值和参数范围端点?
这门课最常见的丢分不是不会算,而是套对了公式却漏了前提。每写一个结论,都顺手问一句“它为什么在这道题里能用”,答案会稳很多。