元信息:《Numerical Optimization》(2nd ed., Springer),Jorge Nocedal & Stephen J. Wright;本笔记覆盖 PDF 第 445–651 页(原书页码约 426–634;文本章节结构与第 1 版一致,见第 17 章版本说明)。
第 15 章 约束优化算法基础(Fundamentals of Constrained Algorithms)(接上一块)
本块从 15.2 节「变量消去」中段开始。第 15 章的问题记号沿用前文:一般非线性规划 (15.1) 为 \(\min f(x)\),s.t. \(c_i(x)=0,\ i\in\mathcal E\);\(c_i(x)\ge 0,\ i\in\mathcal I\)。
15.2 变量消去(Elimination of Variables)(接上一块,PDF p.445–451)
线性约束的简单消去(Simple Elimination for Linear Constraints)
问题:
- 行满秩意味着可选出 \(m\) 个线性无关的列组成 \(m\times m\) 的基矩阵(basis matrix) \(B\);用 \(n\times n\) 置换矩阵 \(P\) 把这些列换到前 \(m\) 列:\(AP=[B\,|\,N]\) (15.5),\(N\) 为其余 \(n-m\) 列(记号与第 13 章单纯形法一致)。
- 相应划分 \(P^Tx=\begin{bmatrix}x_B\\x_N\end{bmatrix}\) (15.6),\(x_B\in\mathbb R^m\) 称为基变量(basic variables),\(x_N\) 为非基变量。
- 由 \(PP^T=I\),\(b=Ax=AP(P^Tx)=Bx_B+Nx_N\),得
\[x_B=B^{-1}b-B^{-1}Nx_N.\tag{15.7}\]
- 任取 \(x_N\),按 (15.7) 定出 \(x_B\) 即得可行点。于是 (15.4) 等价于无约束问题
\[\min_{x_N}\ h(x_N)\stackrel{\text{def}}{=} f\!\left(P\begin{bmatrix}B^{-1}b-B^{-1}Nx_N\\x_N\end{bmatrix}\right).\tag{15.8}\]称 (15.7) 为简单变量消去(simple elimination of variables)。结论:线性等式约束下的非线性优化在数学上等价于一个无约束问题。
例 15.2:
如何选基:一般用高斯消去求行阶梯形(row echelon form),取主元列作为 \(B\) 的列。理想的 \(B\) 应易于分解且条件数好;大规模稀疏情形可用兼顾稀疏性与舍入误差控制的稀疏高斯消去,代表实现是 Harwell 库的 MA48。但高斯消去并不保证选出"最好"的基。
几何解释(为简化取 \(P=I\)):任一可行点可写成
- \(Z\) 有 \(n-m\) 个线性无关列(下块是单位阵),且 \(AZ=0\),故 \(Z\) 是 \(A\) 的**零空间(null space)**的一组基;\(Y\) 与 \(Z\) 的列合起来线性无关,所以 \(Y\) 张成 \(A^T\) 值域空间的一个补(原书称 \(Y\) 为 range space of \(A^T\) 的基)。
- \(Yb\) 是 \(Ax=b\) 的一个特解(particular solution):把 \(n-m\) 个分量固定为 0,放松其余 \(m\) 个分量直到碰到约束(图 15.2,固定 \(x_2=0\) 沿 \(x_1\) 轴走到约束线),称坐标松弛步(coordinate relaxation step)。换一个基对应沿另一坐标轴的特解。
- 可行点 = 特解 + 沿约束零空间(切空间)的位移。
数值风险:简单消去便宜,但可能数值不稳定。若可行集(直线)几乎平行于 \(x_1\) 轴,沿 \(x_1\) 轴的特解会非常大,而总位移 (15.13) 通常不大,于是 \(x\) 是两个巨大向量之差,产生数值抵消(cancellation)。此时应改选沿 \(x_2\) 轴的特解(换基),但一般而言选最优基并不容易;\(B\) 病态时 \(Z\) 的计算也会有误差。解决思路:把特解取为到约束的最小范数步(minimum-norm step),这是下面一般消去策略的特例。
线性约束的一般约化策略(General Reduction Strategies)
选 \(Y\in\mathbb R^{n\times m}\)、\(Z\in\mathbb R^{n\times(n-m)}\),列合起来线性无关,把 \(Ax=b\) 的解写成
用 QR 分解构造正交基:希望 \(AY\) 条件数尽可能好(因为要分解它)。对 \(A^T\) 做带列置换的 QR 分解
可验证特解 \(Q_1R^{-T}\Pi^Tb\) 等于
取舍:正交基消去在数值稳定性上是理想的,主要代价是 QR 分解;对大规模稀疏 \(A\),稀疏 QR 比稀疏高斯消去贵得多。因此有折中方案(习题 15.6)。
不等式约束的影响(The Effect of Inequality Constraints)
存在不等式时,消去等式约束未必有利。
- 若例 15.2 再加 \(x\ge 0\),消去 \(x_3,x_6\) 后得到约束 \((x_1,x_2,x_4,x_5)\ge 0\),\(8x_1-6x_2+9x_4+4x_5\le 6\),\(\tfrac34x_1+\tfrac12x_2-\tfrac14x_4+\tfrac32x_5\le -1\):原先简单的界约束变成一般线性不等式,对许多算法而言没有好处。
- 若改加一般不等式 \(3x_1+2x_3\ge 1\),消去后变为 \(-13x_1+12x_2-18x_4-8x_5\ge -11\) (15.23),复杂度没有明显增加,此时消去值得做。
15.3 度量进展:价值函数(Measuring Progress: Merit Functions)(PDF p.451–455)
动机:若某步使目标大幅下降却离可行域更远,是否接受?约束优化中"降低目标"与"满足约束"两个目标常冲突,需要一个度量来平衡。价值函数(merit function) \(\phi\) 量化这种平衡:只有当步 \(p\) 使 \(\phi\) 充分下降时才接受。
- 无约束优化里 \(f\) 本身就是价值函数。
- 可行方法(feasible methods)(初始点及所有迭代点都满足约束)中,目标函数仍可作价值函数。例如约束全线性时,某些有效集方法(第 16、18 章)先用 phase-1 求可行初始点,之后每步保持可行。
- 允许迭代点违反约束的算法需要价值函数。
\(\ell_1\) 精确价值函数:
Fletcher 增广拉格朗日价值函数(仅等式约束):
定义 15.1(精确价值函数):若存在 \(\mu^*>0\),使对任意 \(\mu\in(0,\mu^*]\),(15.1) 的任一局部解都是 \(\phi(x;\mu)\) 的局部极小点,则称 \(\phi(x;\mu)\) 精确。(约定:通过减小 \(\mu\) 来加重对约束的惩罚。)
- \(\ell_1\) 价值函数对所有 \(\mu<\mu^*\) 精确,其中
\[\frac1{\mu^*}=\max\{|\lambda_i^*|,\ i\in\mathcal E;\ \lambda_i^*,\ i\in\mathcal I\},\]\(\lambda^*\) 为最优解处的拉格朗日乘子。即罚权 \(1/\mu\) 要大于最大乘子绝对值。许多算法含启发式规则:若判断当前 \(\mu\) 可能不满足阈值,就调整 \(\mu\)(可用当前乘子估计近似 \(\mu^*\))。精确规则见第 18 章。
- \(\phi_F\) 也精确,但阈值涉及导数界,不易写出,留到具体算法(18.5 节)讨论。
两者比较:
- \(\phi_1\):求值便宜(函数和约束值每步本来就有);缺点是可能拒绝向解推进良好的步——Maratos 效应(Maratos effect)(第 18 章),已有若干补救策略,但增加算法复杂性。
- \(\phi_F\):可微、不受 Maratos 效应影响;缺点是每个试探点求值都要解线性方程组 (15.26)。线搜索中可在算出 \(\lambda(x_k+p)\) 后用线性插值 \(\lambda(x_k)+\alpha(\lambda(x_k+p)-\lambda(x_k))\) 代替 \(\lambda(x_k+\alpha p)\)。另外 \(A\) 秩亏时 \(\lambda\) 不唯一,近秩亏时 \(\lambda\) 可能过大。
定理(精确罚函数必不可微):仅考虑等式约束,令 \(\phi(x;\mu)=f(x)+\frac1\mu h(c(x))\) (15.27),\(h:\mathbb R^m\to\mathbb R\),\(h\ge0\),\(h(0)=0\)。反证:若 \(h\) 可微,因 \(h\) 在 0 处取极小,\(\nabla h(0)=0\);在解 \(x^*\) 处 \(c(x^*)=0\),若 \(x^*\) 是 \(\phi\) 的局部极小点,则
原–对偶增广拉格朗日价值函数(多个流行 NLP 软件采用):
注记与文献:一般消去技术见 Fletcher [83];价值函数综述见 Boggs & Tolle [23];\(\ell_1\) 作为 SQP 价值函数由 Han [132] 提出;(15.25) 由 Fletcher [81] 提出;原–对偶函数 (15.28) 由 Wright [250] 和 Schittkowski [222] 提出。
第 15 章习题概括(PDF p.455–456)
- 15.1:判断三个小问题是否有解(\(\min x_1+x_2\) s.t. \(x_1^2+x_2^2=2\), \(0\le x_i\le1\);\(\min x_1+x_2\) s.t. \(x_1^2+x_2^2\le1\), \(x_1+x_2=3\)(不可行);\(\min x_1x_2\) s.t. \(x_1+x_2=2\)(无下界))。考查可行性与有界性。
- 15.2:例 15.1 中用 \(y\) 消去 \(x\),说明此时无约束极小化得到正确解(与消元方向的选择有关)。
- 15.3/15.4:证明 (15.14) 中 \(Z\) 列无关、\(Y,Z\) 合起来线性无关。
- 15.5:证明 \(Q_1R^{-T}\Pi^Tb=A^T(AA^T)^{-1}b\)。
- 15.6:折中基 \(Y=\begin{bmatrix}I\\(B^{-1}N)^T\end{bmatrix}\),\(Z=\begin{bmatrix}-B^{-1}N\\I\end{bmatrix}\):(a) 证 \(AZ=0\)、\(Y^TZ=0\);(b) 证 \(Y(AY)^{-1}=A^T(AA^T)^{-1}\),即特解是最小范数解、与基选择无关,条件数仅由 \(A\) 决定;但 \(Z\) 仍依赖 \(B\),仍需谨慎选基。
- 15.7:验证加 \(3x_1+2x_3\ge1\) 后消去得到 (15.23)。
第 15 章(本块部分)本章要点
- 线性等式约束可通过 \(x=Y(AY)^{-1}b+Zx_Z\) 化为 \(n-m\) 维无约束问题;\(Z\) 是零空间基,\(Y\) 决定特解。
- 简单消去(\(Y=[B^{-1};0]\))便宜但可能因基选择不当而数值不稳;QR 正交基最稳定,特解为最小范数解,代价是 QR 分解;有中间方案。
- 有不等式时消去可能把简单界约束变复杂,需权衡。
- 价值函数平衡目标下降与约束违反:\(\ell_1\) 精确罚函数(不可微、便宜、有 Maratos 效应,罚权需超过最大乘子)、Fletcher 增广拉格朗日(可微、精确、求值贵)、原–对偶增广拉格朗日 \(\mathcal L_A\)。
- "精确且形如 \(f+h(c)/\mu\)" 的价值函数必不可微。
与量化交易的关联
- 组合优化中的预算约束 \(\mathbf 1^Tw=1\)、行业/风格中性约束 \(B^Tw=0\) 都是线性等式约束:可用零空间法消去,把问题转成对 \(x_Z\) 的无约束(或只剩界约束的)问题;正交零空间基(QR)是数值上最稳的做法。最小范数特解 \(A^T(AA^T)^{-1}b\) 在构造满足中性约束的初始组合时常用。
- 但若同时有 \(w\ge0\) 等界约束,消去会把界约束变成一般不等式——这正是许多组合优化器不消去等式、而直接用 QP/内点法的原因。
- \(\ell_1\) 罚函数的"罚权须大于最大乘子"结论,对用罚函数处理软约束(如换手率、跟踪误差上限的软化)时如何设罚系数有直接指导意义:罚权太小,约束在最优点不会被精确满足。
推荐习题
- 15.5、15.6:理解最小范数解与零空间基的构造,组合约束处理的基础。
- 15.1:可行性/有界性判断训练。
- 15.7:体会消去对不等式结构的影响。
第 16 章 二次规划(Quadratic Programming)(PDF p.457–505)
PDF p.457 为章名页。二次规划(quadratic program, QP):目标为二次函数、约束为线性。它本身重要,也是一般约束优化方法(SQP 第 18 章、增广拉格朗日第 17 章)的子问题。一般形式:
引例:组合优化(Portfolio Optimization)(PDF p.459–460)
\(n\) 种投资收益 \(r_i\) 为随机变量(常假设正态),均值 \(\mu_i=E[r_i]\),方差 \(\sigma_i^2=E[(r_i-\mu_i)^2]\)。投资比例 \(x_i\),全额投资且禁止卖空:\(\sum_i x_i=1\),\(x\ge0\)。组合收益 \(R=\sum_i x_ir_i\) (16.2),期望 \(E[R]=x^T\mu\)。相关系数 \(\rho_{ij}=E[(r_i-\mu_i)(r_j-\mu_j)]/(\sigma_i\sigma_j)\),越接近 1 两资产越同涨同跌;反向变动则为负。组合方差
16.1 等式约束 QP(Equality-Constrained Quadratic Programs)(PDF p.460–464)
有效集方法每步都要解一个等式约束 QP,所以先研究它。设 \(m\le n\) 个约束:
一阶必要条件:存在 \(\lambda^*\) 使
引理 16.1:\(A\) 行满秩、约化 Hessian(reduced Hessian) \(Z^TGZ\) 正定,则 KKT 矩阵 \(K=\begin{bmatrix}G&A^T\\A&0\end{bmatrix}\) (16.7) 非奇异,(16.4) 有唯一解 \((x^*,\lambda^*)\)。 证明:设 \(K\begin{bmatrix}p\\v\end{bmatrix}=0\)。由 \(Ap=0\),\(0=[p;v]^TK[p;v]=p^TGp\)。\(p=Zu\),\(0=u^TZ^TGZu\Rightarrow u=0\Rightarrow p=0\);再由 \(A^Tv=0\) 与行满秩得 \(v=0\)。
例 16.1:\(\min q(x)=3x_1^2+2x_1x_2+x_1x_3+2.5x_2^2+2x_2x_3+2x_3^2-8x_1-3x_2-3x_3\),s.t. \(x_1+x_3=3\),\(x_2+x_3=0\)。即 \(G=\begin{bmatrix}6&2&1\\2&5&2\\1&2&4\end{bmatrix}\),\(d=(-8,-3,-3)^T\),\(A=\begin{bmatrix}1&0&1\\0&1&1\end{bmatrix}\),\(b=(3,0)^T\)。解 \(x^*=(2,-1,1)^T\),\(\lambda^*=(3,-2)^T\)。\(G\) 正定,零空间基 \(Z=(-1,-1,1)^T\) (16.10)。
定理 16.2:在引理 16.1 条件下,满足 (16.4) 的 \(x^*\) 是 (16.3) 的唯一全局解。 证明:任一可行 \(x\),令 \(p=x^*-x\),\(Ap=0\)。代入得 \(q(x)=\tfrac12p^TGp-p^TGx^*-d^Tp+q(x^*)\) (16.11)。由 (16.4),\(Gx^*=-d+A^T\lambda^*\),故 \(p^TGx^*=-p^Td\),于是 \(q(x)=\tfrac12p^TGp+q(x^*)=\tfrac12u^TZ^TGZu+q(x^*)\),\(p=Zu\);正定性给出 \(q(x)>q(x^*)\)(\(x\ne x^*\))。
约化 Hessian 非正定时:若 \((x^*,\lambda^*)\) 满足 KKT 且存在 \(u\) 使 \(u^TZ^TGZu\le0\),令 \(p=Zu\),则 \(x^*+\alpha p\) 可行,且
16.2 求解 KKT 系统(Solving the KKT System)(PDF p.464–470)
只要 \(m\ge1\),KKT 矩阵总是不定的。矩阵的**惯性(inertia)**指其正、负、零特征值个数的三元组。
引理 16.3:\(A\) 行满秩、\(Z^TGZ\) 正定,则 KKT 矩阵 (16.7) 有 \(n\) 个正特征值、\(m\) 个负特征值、无零特征值。(由后文定理 16.6 推出。)
直接解法(Direct Solution of the KKT System)
- KKT 矩阵不定,不能用 Cholesky;带部分主元的 LU 忽略了对称性。最有效的是对称不定分解(symmetric indefinite factorization)(第 6 章):
\[P^TKP=LBL^T,\tag{16.12}\]\(P\) 置换阵(为数值稳定、并在稀疏时保持稀疏性),\(L\) 单位下三角,\(B\) 为 \(1\times1\) 或 \(2\times2\) 块的块对角阵。成本约为稀疏高斯消去的一半。
- 求解步骤:解 \(Ly=P^T\begin{bmatrix}g\\c\end{bmatrix}\);解 \(B\hat y=y\);解 \(L^T\bar y=\hat y\);令 \(\begin{bmatrix}-p\\\lambda^*\end{bmatrix}=P\bar y\)。置换只是重排分量;\(B\hat y=y\) 只需解若干小系统,成本为 \((m+n)\) 的小倍数;与 \(L,L^T\) 的三角回代成本较大但通常远小于分解本身。
- 风险:若选置换的启发式不能很好保持稀疏性,\(L\) 会比原矩阵稠密得多(填充)。
- 迭代法:CG 在非正定系统上不稳定,不推荐;可用一般或对称不定系统的方法,如 QMR、LSQR。
值空间法(Range-Space Method)
假设 \(G\) 正定,用 \(G\) 做块消去:(16.5) 第一行左乘 \(AG^{-1}\) 再减第二行,得
零空间法(Null-Space Method)
不要求 \(G\) 非奇异,只需引理 16.1 的条件(\(A\) 行满秩、\(Z^TGZ\) 正定),但需要零空间基 \(Z\)。分解
- 代入 (16.5) 第二行(\(AZ=0\)):\((AY)p_Y=-c\) (16.17)。\(A[Y|Z]=[AY|0]\) 秩为 \(m\),故 \(AY\) 非奇异。
- 代入第一行:\(-GYp_Y-GZp_Z+A^T\lambda^*=g\),左乘 \(Z^T\):
\[(Z^TGZ)p_Z=-[Z^TGYp_Y+Z^Tg],\tag{16.18}\]用 \((n-m)\) 阶约化 Hessian 的 Cholesky 分解求解。
- 乘子:第一行左乘 \(Y^T\):\((AY)^T\lambda^*=Y^T(g+Gp)\) (16.19)。
例 16.2:沿用例 16.1,取 \(Y=\begin{bmatrix}2/3&-1/3\\-1/3&2/3\\1/3&1/3\end{bmatrix}\)(此时 \(AY=I\)),\(Z\) 同 (16.10)。从 \(x=(0,0,0)^T\) 出发:\(c=-b\),\(g=d=(-8,-3,-3)^T\),算得 \(p_Y=(3,0)^T\),\(p_Z=0\),\(p=(2,-1,1)^T\);由 (16.19) 得 \(\lambda^*=(3,-2)^T\)。
评价:零空间法在自由度 \(n-m\) 小时有效;主要缺点是需要 \(Z\),大问题中可能昂贵;\(Z\) 不唯一,选得差会使 (16.18) 病态。中小规模软件常取列正交的 \(Z\),此时 \(Z^TGZ\) 的条件数不差于 \(G\);大规模稀疏时只能用不那么可靠的 \(Z\)。 (16.18) 也可用 CG 求解:只需矩阵–向量乘,无需显式形成 \(Z^TGZ\),甚至无需显式 \(Z\),只要能算 \(Z\)、\(Z^T\) 与向量之积;缺点是无显式 \(Z\) 时无法使用修正 Cholesky 等标准预条件,有效预条件仍是研究课题。
选择经验:\(G\) 正定且 \(AG^{-1}A^T\) 便宜(\(G\) 易求逆或 \(m\ll n\))时用值空间法;否则零空间法常更好,特别是分解 \(G\) 比求 \(Z\) 与 \(Z^TGZ\) 的分解昂贵得多时。没有硬性规则,因为计算 \(Z\) 时的填充即使在同维问题间差别也很大。
基于共轭性的方法(A Method Based on Conjugacy)
适用于 \(G\) 正定,是巧用共轭性的零空间法,是高效凸 QP 方法的基础。构造非奇异 \(W\in\mathbb R^{n\times n}\):
16.3 不等式约束问题(Inequality-Constrained Problems)(PDF p.470–473)
方法概览:经典**有效集方法(active-set methods)**适用于凸与非凸问题,自 1970 年代起最常用;**梯度投影法(gradient projection)**允许有效集快速变化,最适合只有变量界约束的问题;**内点法(interior-point methods)**对大规模凸 QP 有效。QP 也可用第 17 章增广拉格朗日法或第 18 章 S\(\ell_1\)QP 精确罚方法求解。
最优性条件:拉格朗日函数
退化(Degeneracy):该术语含义多样,本质指以下之一: (a) 解处有效约束梯度 \(a_i,\ i\in\mathcal A(x^*)\) 线性相关; (b) 严格互补(定义 12.2)不成立,即某有效约束 \(\lambda_i^*=0\)(**弱有效(weakly active)**约束,定义 12.3)。 图 16.2:左图唯一有效约束处恰好也是无约束极小点,\(Gx^*+d=0\),乘子为零;右图 \(\mathbb R^2\) 中三个约束在解处同时有效,必线性相关。更隐蔽的例子:\(\min x_1^2+(x_2+1)^2\) s.t. \(x\ge0\),解 \(x^*=0\),无约束极小点不在约束上,有效约束也不多于 \(n=2\),但 \(x_1\ge0\) 的乘子为零,故退化。 危害:(1) 梯度线性相关使计算 \(Z\) 数值困难,使值空间法中 \(AG^{-1}A^T\) 奇异;(2) 弱有效约束让算法难以判断其在解处是否有效,有效集法和梯度投影法会因此"犹豫"而锯齿式(zigzag)地反复加入/移出该约束,需加保护措施。
16.4 凸 QP 的有效集方法(Active-Set Methods for Convex QP)(PDF p.474–487)
有效集方法一般是中小规模问题最有效的方法。凸情形(\(G\) 半正定)下可行域凸,局部解即全局解。称 \(\mathcal A(x^*)\) 为最优有效集;若事先知道它,只需解等式约束 QP \(\min q(x)\) s.t. \(a_i^Tx=b_i,\ i\in\mathcal A(x^*)\)。难点就是确定这个集合。 与单纯形法(第 13 章,也是有效集方法)的区别:QP 的迭代点不一定在顶点间移动,可能(包括解本身)在边界其他位置或可行域内部。有效集法分原始、对偶、原始–对偶三类;本书只讲原始方法:迭代点保持原始可行,目标单调下降。
工作集(working set) \(\mathcal W_k\):所有等式约束 + 部分(未必全部)有效不等式约束;要求其中约束梯度线性无关(即使该点全部有效约束梯度线性相关)。
子问题:令 \(p=x-x_k\),\(g_k=Gx_k+d\),\(q(x_k+p)=\tfrac12p^TGp+g_k^Tp+\text{const}\),
步长:若 \(x_k+p_k\) 可行则取全步;否则 \(x_{k+1}=x_k+\alpha_kp_k\) (16.28)。对 \(i\notin\mathcal W_k\):若 \(a_i^Tp_k\ge0\),任何 \(\alpha\ge0\) 都满足;若 \(a_i^Tp_k<0\),需 \(\alpha_k\le(b_i-a_i^Tx_k)/(a_i^Tp_k)\)。故
终止与删约束:持续加约束直到某点 \(\hat x\) 在工作集 \(\hat{\mathcal W}\) 上极小化 \(q\),即子问题解 \(p=0\)。此时
定理 16.4:设 \(\hat x\) 满足工作集 \(\hat{\mathcal W}\) 上等式子问题的一阶条件((16.30) 及 \(a_i^T\hat x=b_i\)),工作集约束梯度线性无关,存在 \(j\in\hat{\mathcal W}\) 使 \(\hat\lambda_j<0\)。删去 \(j\) 后解
实践中通常删最负乘子对应的约束:第 12 章灵敏度分析表明,删去一个约束时目标的下降率与其乘子大小成正比。
定理 16.5:若 (16.27) 的解 \(p_k\ne0\) 且满足二阶充分条件,则 \(q\) 沿 \(p_k\) 严格下降。 证明:由定理 16.2,\(p_k\) 是唯一全局解;\(p=0\) 可行,故 \(\tfrac12p_k^TGp_k+g_k^Tp_k<0\);凸性给出 \(p_k^TGp_k\ge0\),所以 \(g_k^Tp_k<0\),小 \(\alpha\) 下 \(q(x_k+\alpha p_k)<q(x_k)\)。 推论:\(G\) 正定(严格凸)时所有子问题都满足二阶充分条件,\(p_k\ne0\) 就严格下降——这是有限终止论证的关键。
算法 16.1(凸 QP 有效集方法):
计算可行初始点 x0;取 W0 为 x0 处有效约束的子集;
for k = 0,1,2,...
解 (16.27) 得 pk;
if pk = 0
由 (16.30) 计算乘子 λ̂i,令 Ŵ = Wk;
if 对所有 i ∈ Wk∩I 有 λ̂i ≥ 0:STOP,x* = xk;
else j = argmin_{j∈Wk∩I} λ̂j;x_{k+1} = xk;W_{k+1} = Wk \ {j};
else
按 (16.29) 计算 αk;x_{k+1} = xk + αk pk;
若有阻挡约束:把其中一个加入工作集得 W_{k+1};否则 W_{k+1} = Wk;
end
初始可行点:可用第 13 章 Phase I。变体:允许用户给不必可行的初值 \(\tilde x\)("不太不可行"可减少 Phase I 工作量),解可行性 LP
大 M 法(big M):省去 Phase I,引入标量人工变量 \(t\) 度量违反量:
例 16.3(图 16.3;下标为分量、上标为迭代号):
- \(x^0=(2,0)\),约束 3、5 有效,\(\mathcal W_0=\{3,5\}\)(也可取 \(\{5\}\)、\(\{3\}\) 或 \(\emptyset\),迭代路径不同)。顶点处 \(p=0\)。由 (16.30):\(\begin{bmatrix}-1\\2\end{bmatrix}\hat\lambda_3+\begin{bmatrix}0\\1\end{bmatrix}\hat\lambda_5=\begin{bmatrix}2\\-5\end{bmatrix}\),得 \((\hat\lambda_3,\hat\lambda_5)=(-2,-1)\)。删去最负的约束 3,\(\mathcal W_1=\{5\}\)。
- 迭代 1:\(p^1=(-1,0)^T\),\(\alpha_1=1\),\(x^2=(1,0)\),无阻挡,\(\mathcal W_2=\{5\}\)。
- 迭代 2:\(p^2=0\),\(\hat\lambda_5=-5\),删去,\(\mathcal W_3=\emptyset\)。
- 迭代 3:无约束解 \(p^3=(0,2.5)\),\(\alpha_3=0.6\),\(x^4=(1,1.5)\),阻挡约束 1,\(\mathcal W_4=\{1\}\)。
- 迭代 4:\(p^4=(0.4,0.2)\),步长 1,无阻挡,\(x^5=(1.4,1.7)\),\(\mathcal W_5=\{1\}\)。
- 迭代 5:\(p^5=0\),\(\hat\lambda_1=1.25\ge0\),最优 \(x^*=(1.4,1.7)\)。
补充说明:
- 不同初始工作集:\(\mathcal W_0=\{3\}\) 时 \(p^0=(0.2,0.1)\),\(x^1=(2.2,0.1)\);\(\mathcal W_0=\{5\}\) 时直接到 \((1,0)\);\(\mathcal W_0=\emptyset\) 时 \(p=(-1,2.5)\),\(\alpha=2/3\),\(x^1=(4/3,5/3)\),\(\mathcal W_1=\{1\}\),下一步即得最优。
- 即使 \(\mathcal W_0\) 等于初始有效集,之后 \(\mathcal W_k\) 与 \(\mathcal A(x_k)\) 也可能不同(多个阻挡约束只加一个)。
- 线性无关性的维持:阻挡约束的法向不可能是当前工作集法向的线性组合(习题 16.15),删约束不会引入相关性。
- 删最负乘子对约束缩放敏感(约束乘 \(\beta>0\),乘子变为 \(1/\beta\) 倍),类似单纯形法的 Dantzig 规则;更抗缩放的策略常更好,本书不展开。
- 每步至多加/删一个约束,给迭代次数一个下界:若解处有 \(m\) 个有效约束而 \(x_0\) 严格可行,至少需 \(m\) 次迭代;加了又删会更多。
有限终止(严格凸,假设 \(p_k\ne0\) 时 \(\alpha_k>0\)):
- 若 \(p_k=0\),\(x_k\) 是 \(q\) 在 \(\mathcal W_k\) 上的唯一全局极小;若非最优(有负乘子),由定理 16.4、16.5,删约束后下一方向严格下降,此后 \(q\) 始终低于 \(q(x_k)\),故永不返回 \(\mathcal W_k\)。
- 至少每 \(n\) 步出现一次 \(p_k=0\):\(p_k\ne0\) 时要么 \(\alpha_k=1\)(到达当前工作集极小,下一步 \(p=0\)),要么加一个约束;连续加 \(n\) 次后工作集含 \(n\) 个线性无关约束,只有 \(p=0\) 可行。
- 工作集数目有限,每个至多访问一次,故有限步终止。 \(\alpha_k>0\) 的假设排除了循环(cycling):\(x_k=x_{k+l}\) 且 \(\mathcal W_k=\mathcal W_{k+l}\)——删约束后立刻碰到新约束、原地不动。处理方法与 LP(第 13 章)类似;多数 QP 实现直接忽略循环。
分解更新(Updating Factorizations):工作集每步只变一个指标,KKT 矩阵至多变一行一列(\(G\) 不变),可更新而非重算分解,这对有效集法的效率至关重要。以零空间法 + QR 为例:
- 加一个约束:\(\bar A^T=[A^T,\ a]\)。利用 \(Q_1Q_1^T+Q_2Q_2^T=I\),
\[\bar A^T\begin{bmatrix}\Pi&0\\0&1\end{bmatrix}=Q\begin{bmatrix}R&Q_1^Ta\\0&Q_2^Ta\end{bmatrix}.\tag{16.38}\]取正交阵 \(\hat Q\) 使 \(\hat Q(Q_2^Ta)=(\gamma,0,\dots,0)^T\)(\(|\gamma|=\|Q_2^Ta\|\)),得 \(\bar A^T\bar\Pi=\bar Q\begin{bmatrix}\bar R\\0\end{bmatrix}\),\(\bar Q=[Q_1\ \ Q_2\hat Q^T]\),\(\bar R=\begin{bmatrix}R&Q_1^Ta\\0&\gamma\end{bmatrix}\)。新零空间基 \(\bar Z\) 取 \(Q_2\hat Q^T\) 的后 \(n-m-1\) 列。利用 \(\hat Q\) 的特殊结构(如 Householder/Givens),成本 \(O(n(n-m))\),而从头做 QR 为 \(O(n^2m)\);零空间小时尤其划算。
- 删一个约束:相当于从 \(R\) 删一列,破坏上三角(次对角线出现非零),用一串平面旋转(Givens)恢复;新零空间基形如 \(\bar Z=[Z\ \bar z]\) (16.39),即增加一列。成本视删除列位置而定,但总比重算便宜(详见 Gill 等 [105, §5])。
- 约化 Hessian:子问题中 \(c=0\),故 \(p_Y=0\),\(p_Z\) 满足 \((Z^TGZ)p_Z=-Z^Tg\) (16.40)。若已有 \(Z^TGZ=LL^T\),删约束后 \(Z\) 增一列,可用平面旋转把 \(L\) 更新为 \(\bar L\)。还可同步更新约化梯度 \(Z^Tg\)(见 16.6 节)。
16.5 不定 QP 的有效集方法(Active-Set Methods for Indefinite QP)(PDF p.487–493)
\(G\) 有负特征值时需修改搜索方向和步长。若 \(Z^TGZ\) 正定,\(p=Zp_Z\) 指向子问题极小点,逻辑不变;若 \(Z^TGZ\) 有负特征值,\(p\) 只指向鞍点,不能用。此时改求约化 Hessian 的负曲率方向(direction of negative curvature) \(s_Z\),使
惯性控制方法(inertia-controlling methods):从不让约化 Hessian 有多于一个负特征值。要求初始点 \(x_0\) 要么是顶点(约化 Hessian 为空矩阵),要么是约化 Hessian 正定的约束驻点。每步加或删一个约束:加约束时约化 Hessian 维数减小,保持正定或为空矩阵(见习题);因此不定只可能在删约束时出现,而删约束只发生在当前点是工作集上的极小点时,此时取负曲率方向作为新搜索方向。
具体算法(Fletcher [80] 的伪约束 + Gill–Murray [107] 的 \(LDL^T\) 负曲率):设 \(Z^TGZ=LDL^T\) 正定(\(D\) 对角元为正),工作集元素个数为 \(t\)。删约束后 \(Z_+=[Z\ z]\),
示例:
- \(x^1=(2,0)\),\(\mathcal W=\{1,2\}\),顶点。解 \(\begin{bmatrix}0&1\\1&2\end{bmatrix}\begin{bmatrix}\lambda_1\\\lambda_2\end{bmatrix}=\begin{bmatrix}2\\0\end{bmatrix}\) 得 \((\lambda_1,\lambda_2)=(-4,2)\),删约束 1。
- \(\mathcal W=\{2\}\),\(Z=(2,-1)^T\),\(Z^TGZ=3\)(\(L=1,D=3>0\))。子问题解 \(x^2=(-2/3,4/3)^T\),\(\lambda_2=-2/3<0\),需删约束 2。
- \(\mathcal W=\emptyset\),取 \(Z=I\),\(L=I\),\(D=G\),第二个对角元为负——不定情形。解 \(L^Ts_Z=e_2\) 得 \(s=(0,1)^T\);\(\nabla q(x^2)^Ts=(-2/3,-4/3)\cdot(0,1)<0\),为下降方向(否则取反号)。把约束 2 作为伪约束保留,\(\mathcal W=\{2\}\)。
- 沿 \(s\) 走 \(\alpha=1/3\) 碰到约束 3:\(x^3=(-2/3,5/3)\),\(\mathcal W=\{2,3\}\),顶点,\(L,D\) 为空。
- 试删伪约束:工作集 \(\{3\}\) 时 \(Z=(4,5)^T\),\(Z^TGZ=16-25=-9<0\),不能删,继续保留;但用这个假想删除求负曲率方向:\(L^Ts_Z=e_1\),\(s_Z=1\),\(s=(4,5)^T\)(下降方向)。
- 步长 \(\alpha=11/12\) 碰到约束 4:\(x^4=(3,25/4)\),\(\mathcal W=\{2,3,4\}\)。此时可删伪约束 2:工作集 \(\{3,4\}\) 的约化 Hessian 为空矩阵,\(x^4\) 是其子问题解。
- 乘子:\(\begin{bmatrix}3\\-25/4\end{bmatrix}=\begin{bmatrix}5&-1\\-4&0\end{bmatrix}\begin{bmatrix}\lambda_3\\\lambda_4\end{bmatrix}\),得 \((\lambda_3,\lambda_4)=(25/16,77/16)>0\),\(x^4\) 为局部解(实际也是全局解)。 缺点:工作集中约束更多,增加退化可能。
初始点选择:初始点须为顶点或约化 Hessian 正定的点,可能需引入在初始点有效、且与工作集其他约束线性无关的人工约束。例:\(\min -x_1x_2\) s.t. \(-1\le x_1,x_2\le1\),从 \((0,0)\) 出发无约束有效,\(\mathcal W_0=\emptyset\) 时约化 Hessian 不定;引入人工约束 \(x_1=0\)、\(x_1-x_2=0\) 即可起步。求得当前工作集极小后,选择每个人工约束法向的符号使其乘子非正,从而可删除;若有选择,优先删临时约束。
有效集方法的失败:\(G\) 不正定时惯性控制算法不保证找到局部极小。可能存在非最优点:满足一阶条件、约化 Hessian 正定,但某不等式乘子为零;此时一次删一个约束找不到改进方向,需同时删两个以上。例:\(\min -x_1x_2\) s.t. \(0\le x_1,x_2\le1\),从 \((0,0)\)、两约束都在工作集出发:该点是驻点、作为顶点是工作集上的极小,但删任一约束后约化 Hessian 奇异(为 0),找不到可行负曲率方向,算法在此终止,而它不是局部解(沿 \((1,1)\) 可下降)。这种失败不常见,舍入误差往往使算法离开这类点;已有若干降低失败概率的手段但都不能保证成功。本例中可先固定 \(x_2=0\) 把 \(x_1\) 移到 1(目标不变),再把 \(x_2\) 移到 1 得最优解。根本原因:对有效集方法而言,一阶最优并不导致二阶最优。
用 \(LBL^T\) 分解检测不定性(Detecting Indefiniteness Using the LBLᵀ Factorization)(PDF p.492–493):对称不定分解 (16.12) 也可判断约化 Hessian 是否正定,在内点法、SQP 中同样有用。记 \(\mathrm{inertia}(K)=(n_+,n_-,n_0)\)。Sylvester 惯性定律:\(C\) 非奇异则 \(\mathrm{inertia}(C^TKC)=\mathrm{inertia}(K)\)。反复应用得:
定理 16.6:\(K\) 如 (16.7),\(A\) 秩为 \(m\),则
16.6 梯度投影法(The Gradient-Projection Method)(PDF p.493–498)
经典有效集法每步只改一个指标,大规模问题可能需要很多步(如初始无有效约束、解处 200 个有效约束,至少 200 步)。梯度投影法能快速改变有效集,在约束简单(尤其只有界约束)时最高效。考虑界约束 QP:
每次迭代两阶段:
- 从当前点沿最速下降方向 \(-g\)(\(g=Gx+d\))搜索,碰到界就把方向"折弯"保持可行,沿此分段路径找 \(q\) 的第一个局部极小点,称 Cauchy 点 \(x^c\)(类比第 4 章)。工作集取 \(\mathcal W=\mathcal A(x^c)\)(在 \(x^c\) 处有效的界)。
- 在 \(x^c\) 所在的面上"探索":固定 \(x_i=x_i^c,\ i\in\mathcal A(x^c)\),求解子问题。 (本节上标表示迭代号,下标表示分量。)
Cauchy 点计算:投影算子
子空间极小化(Subspace Minimization):
算法 16.2(QP 的梯度投影法):
计算可行初始点 x0;
for k = 0,1,2,...
若 xk 满足 (16.43) 的 KKT 条件:STOP,x* = xk;
令 x = xk,求 Cauchy 点 xc;
求 (16.49) 的近似解 x+,使 q(x+) ≤ q(xc) 且可行;
x_{k+1} = x+;
end
收敛性质:若满足严格互补(解处有效界的乘子都非零),\(\mathcal A(x^c)\) 最终稳定,不会反复进出;退化时可能不稳定,有若干防止手段。 一般线性约束:原理上可用,但投影到 \(\{a_i^Tx\ge b_i\}\) 需要解凸 QP \(\min\|x-\bar x\|^2\) s.t. \(a_i^Tx\ge b_i\),成本可能接近原问题,通常不划算。
16.7 内点法(Interior-Point Methods)(PDF p.498–501)
把第 14 章 LP 的原始–对偶内点法简单推广到凸 QP;描述简单、相对易实现,对某些问题很高效。非凸推广仍在研究中,不讨论。考虑
Mehrotra 预测–校正算法也可推广,唯一例外:原始变量 \((x,y)\) 和对偶变量 \(\lambda\) 不能用不同步长(LP 中可以),因为两者通过 \(G\) 耦合,不同步长会破坏 (16.51a) 的可行性。
线性代数:主要计算量是每步解 (16.53)。消去 \(\Delta y\) 得增广系统(augmented system)
推广与对比:第 14 章所有算法都可推广。严格可行集 \(\mathcal F^o=\{(x,y,\lambda):Gx-A^T\lambda+d=0,\ Ax-y-b=0,\ (y,\lambda)>0\}\);邻域 \(\mathcal N_2(\theta)=\{\in\mathcal F^o:\|Y\Lambda e-\mu e\|\le\theta\mu\}\),\(\mathcal N_{-\infty}(\gamma)=\{\in\mathcal F^o:y_i\lambda_i\ge\gamma\mu\ \forall i\}\),\(\theta\in[0,1)\),\(\gamma\in(0,1]\);路径跟踪法要求迭代点留在其一。势函数下降法用 Tanabe–Todd–Ye 势函数 \(\Phi_\rho(y,\lambda)=\rho\log y^T\lambda-\sum_i\log y_i\lambda_i\),\(\rho>m\),迭代限制在 \(\mathcal F^o\),步由 \(r_d=r_b=0\) 的 (16.53) 得到,步长使势函数显著下降。
- 有效集法:步数多、每步便宜;内点法:步数少、每步贵。
- 有效集法实现更复杂,尤其要利用 \(G,A\) 稀疏性时,每次工作集变化后的稀疏分解更新很难高效实现;内点法每步要分解的矩阵非零结构不变(只变数值),可直接用标准稀疏分解软件。
16.8 对偶(Duality)(PDF p.501–502)
利用对偶的特殊结构有时能更高效求解。\(G\) 正定时,
注记与文献:
- \(G\) 非正定时,判断 (16.1) 的可行点是否为全局极小是 NP-hard(Murty & Kabadi [176])。
- Markowitz 1952 年提出组合优化 [157],详见其专著 [159]。
- QMR 见 Freund & Nachtigal [94];LSQR 等价于对 (16.5) 的正规方程用 CG(Paige & Saunders [188])。
- 若 \(A\) 秩亏,可删冗余约束:对 \(A^T\) 做 QR 通常(并非总能)指示秩和可删行;大规模时一般用高斯消去,但更难判断删哪些。
- 首个不定 QP 惯性控制方法:Fletcher [80];一般 QP 见 Gill 等 [110]、Gould [120]。梯度投影见 Conn–Gould–Toint [51]、Burke–Moré [32]。
- 最优控制和模型预测控制中的 QP 有带状 \(G,A\)(Wright [253]);内点法中 (16.54) 可重排为块带状结构,易于利用;有效集法几次基更新后带状与稀疏优势就丢失。凸 QP 内点法详见 Wright [255] 第 8 章。
第 16 章习题概括(PDF p.503–505)
- 16.1:解一个二维 QP 并作图(\(\max 2x_1+3x_2+4x_1^2+2x_1x_2+x_2^2\),含三条线性约束)。
- 16.2:点 \(x_0\) 到超平面 \(\{Ax=b\}\) 的最短距离:证 \(\lambda^*=(AA^T)^{-1}(b-Ax_0)\),\(x^*=x_0-A^T(AA^T)^{-1}(b-Ax_0)\)(原文符号如此,实际应为 \(x_0+A^T(AA^T)^{-1}(b-Ax_0)\)),\(A\) 为行向量时距离 \(|b-Ax_0|/\|A\|\)。
- 16.3/16.4:由定理 12.1、12.6 推出 (16.4) 及二阶充分条件。
- 16.5:\(Z^TGZ\) 有负特征值时 KKT 点只是驻点非极小。
- 16.6:构造 \(AQ=[0\ \hat U]\)(共轭法所需)。
- 16.7:(16.26) 与一般一阶条件等价。
- 16.8:例 16.3 不同初始工作集下走两步。
- 16.9、16.12:编程实现算法 16.1 并求解给定 QP(内点、顶点、边界三种初始点)。
- 16.10:等式 QP 的三种情形:\(Z^TGZ\) 正定 ⇔ 强局部极小;半正定奇异且相容 ⇒ 无穷多解;不定或不相容 ⇒ 无有限解。
- 16.11、16.13:KKT 矩阵在 \(A\ne0\) 时不定;KKT 矩阵非奇异 ⇒ \(A\) 满秩。
- 16.14:乘子大小依赖目标和约束的缩放。
- 16.15:阻挡约束梯度不是工作集梯度的线性组合,故工作集保持线性无关。
- 16.16:\(Z^TWZ\) 正定、\(\bar Z=[Z,z]\) 时 \(\bar Z^TW\bar Z\) 正定(原文如此陈述;实际上一般不成立,应理解为删去一列——即加约束——时保持正定,这正是惯性控制所需的性质)。
- 16.17:求 (16.49a,b) 的零空间基。
- 16.18:写出含等式与不等式的凸 QP 的 KKT 条件并推导类似 (16.53) 的原始–对偶步。
第 16 章本章要点
- QP:二次目标 + 线性约束;凸 QP(\(G\succeq0\))局部解即全局解,非凸 QP 判全局最优是 NP-hard。
- 等式 QP 的解由 KKT 系统给出;\(A\) 行满秩且约化 Hessian \(Z^TGZ\) 正定时 KKT 矩阵非奇异、惯性 \((n,m,0)\)、解唯一且全局最优。
- KKT 系统解法:对称不定分解 \(LBL^T\)(通用);值空间法(\(G\) 易逆或 \(m\) 小);零空间法(\(n-m\) 小,不要求 \(G\) 正定);共轭基方法;迭代法(QMR、LSQR、约化 CG)。
- 原始有效集法:工作集 + 等式子问题 + 比率检验 (16.29) 步长 + 删最负乘子;严格凸且无循环时有限终止;靠 QR/Cholesky 的增删更新维持效率;初始可行点用 Phase I 或大 M。
- 不定 QP:惯性控制(约化 Hessian 至多一个负特征值)、伪约束、\(LDL^T\) 负曲率方向;可能停在一阶驻点(需同时删两个约束)。
- 梯度投影法:Cauchy 点(沿投影梯度分段路径的第一个局部极小)+ 子空间极小化,适合界约束,有效集可一次大幅变化。
- 内点法:凸 QP 的原始–对偶路径跟踪,步数少、稀疏结构固定;原始与对偶步长须相同。
- 对偶:严格凸 QP 的对偶是 \(\lambda\ge0\) 的界约束 QP。
与量化交易的关联
- 组合优化是 QP 的标准应用:Markowitz 均值–方差 \(\max\mu^Tw-\kappa w^T\Sigma w\),s.t. \(\mathbf 1^Tw=1\)、\(w\ge0\),加上行业/风格暴露约束、个股上下限、换手约束(线性化后)都是本章的 QP。协方差矩阵半正定保证凸性;若协方差估计非正定(如成对缺失数据导致),问题会变成不定 QP,有效集法可能失败——实务中要先做协方差修正(特征值截断、收缩)。
- 求解器选择:中小规模(几百只股票、约束不多)用有效集法速度快、支持热启动(每日调仓时上一日的工作集是很好的初始猜测);全市场数千只股票加大量约束时用内点法(如 MOSEK、OSQP/ECOS 系的思路),稀疏结构固定、步数少。只有个股上下限约束时,梯度投影法很合适。
- KKT 乘子的经济含义:乘子是约束的影子价格,例如预算约束乘子是边际风险调整收益,个股上限乘子告诉你放宽该限制能带来多少目标改善——可用于约束诊断、风控限额设定。
- 因子模型结构:\(\Sigma=BFB^T+D\) 时,值空间法 / Sherman–Morrison–Woodbury 思路(\(G\) 易逆 + 低秩)可大幅加速;正规方程 \(G+A^TDA\) 的结构也可利用。
- 对偶:严格凸 QP 的对偶是非负约束的 QP,在稀疏组合、指数增强的大规模求解中,通过对偶求解有时更快。
- 退化:大量个股恰好卡在 0 下界且乘子为零(弱有效)时,有效集法会锯齿,回测中表现为调仓结果对微小数据扰动敏感——这是数值问题而非信号问题。
推荐习题
- 16.2:最小距离投影,组合约束投影的原型。
- 16.8、16.9:手算/编程有效集法,掌握工作集逻辑。
- 16.10、16.11:KKT 矩阵与约化 Hessian 的性质。
- 16.15:理解工作集线性无关性的维持。
- 16.18:写混合约束 QP 的原始–对偶内点步,组合优化求解器的核心。
第 17 章 罚函数、障碍函数与增广拉格朗日方法(Penalty, Barrier, and Augmented Lagrangian Methods)(PDF p.506–543)
版本说明:本块文本的第 17 章含"对数障碍法"一节、第 16 章无"迭代求解 KKT/投影 CG"一节,章节结构与原书第 1 版(1999)一致(第 2 版把障碍法移到第 19 章)。笔记按文本实际内容整理,编号以文本为准。
PDF p.506 为章名页。核心思路:用一系列无约束子问题代替原约束问题。三种算法:
- 二次罚函数法(quadratic penalty method):把约束违反量的平方乘系数加进目标;简单直观、常用,但有病态问题;可视为乘子法的前身。
- 增广拉格朗日法 / 乘子法(augmented Lagrangian / method of multipliers):显式引入拉格朗日乘子估计以避免二次罚函数固有的病态。
- 对数障碍法(log-barrier method):对数项阻止可行迭代点过于靠近可行域边界;也是原始及原始–对偶内点法(LP、凸 QP、半定规划)的基础。 另有 17.3 精确罚函数(单个无约束问题代替一列问题,但难以极小化)与 17.5 序列线性约束方法(大规模问题的重要实用方法)。
17.1 二次罚函数法(The Quadratic Penalty Method)(PDF p.508–516)
动机:罚函数 = 原目标 + 每个约束一项(违反时为正、否则为零),罚项乘正系数;系数越来越大,极小点越来越接近可行域。称外点罚方法(exterior penalty methods):罚函数极小点通常对原问题不可行,只在极限下趋于可行。 等式约束问题
例 17.1:\(\min x_1+x_2\) s.t. \(x_1^2+x_2^2-2=0\)(解 \((-1,-1)^T\)),
含不等式:
框架 17.1(二次罚函数):
给定 μ0 > 0,容差 τ0 > 0,起点 x0^s;
for k = 0,1,2,...
从 xk^s 出发求 Q(·;μk) 的近似极小点 xk,当 ‖∇Q(x;μk)‖ ≤ τk 时停止;
若满足最终收敛测试:STOP,返回 xk;
选新罚参数 μ_{k+1} ∈ (0, μk);选新起点 x_{k+1}^s;
end
- \(\mu_k\) 自适应:极小化代价大时温和减小(如 \(\mu_{k+1}=0.7\mu_k\)),代价小时激进(如 \(0.1\mu_k\))。收敛理论只要求 \(\tau_k\to0\)。
- 困难:\(\mu_k\) 小时 \(\nabla^2_{xx}Q\) 在极小点附近严重病态,使拟牛顿、CG 表现很差。牛顿法对 Hessian 病态不敏感,但仍有两个问题:(1) 求牛顿步的线性方程组病态(节末说明影响不那么严重且可重写);(2) 二次 Taylor 模型只在很小邻域内准确——图 17.2 中极小点附近等高线呈香蕉形而非椭圆,牛顿步可能进展缓慢,需靠选好起点部分克服。
- 总体上 17.4 节乘子法更有效,因为它避免了病态。
定理 17.1:若每个 \(x_k\) 是 \(Q(x;\mu_k)\) 的精确全局极小点且 \(\mu_k\downarrow0\),则 \(\{x_k\}\) 的每个极限点都是 (17.1) 的(全局)解。 证明:设 \(\bar x\) 为全局解。\(Q(x_k;\mu_k)\le Q(\bar x;\mu_k)\) 给出
定理 17.2:若 \(\tau_k\to0\)、\(\mu_k\downarrow0\),则对 \(\{x_k\}\) 的任一使 \(\nabla c_i(x^*)\) 线性无关的极限点 \(x^*\),\(x^*\) 是 (17.1) 的 KKT 点,且沿相应子列
Hessian 的病态结构:
17.2 对数障碍法(The Logarithmic Barrier Method)(PDF p.516–528)
障碍函数性质:对
例 17.2:\(\min x\) s.t. \(x\ge0\),\(1-x\ge0\),\(P(x;\mu)=x-\mu\log x-\mu\log(1-x)\)。图 17.3 画 \(\mu=1,0.4,0.1,0.01\):\(\mu\) 小时 \(P\) 在大部分可行集上接近 \(f\),只在窄"边界层(boundary layers)"趋于无穷;\(x(\mu)\to x^*=0\)。
\(x(\mu)\) 位于 \(\mathcal F^o\) 内,原则上可用无约束方法(需稍作修改保持迭代点在 \(\mathcal F^o\) 中),但 \(\mu\downarrow0\) 时越来越难:尺度越来越差,二次 Taylor 模型只在 \(x(\mu)\) 小邻域内有效。
例 17.3:
梯度与 Hessian:
框架 17.2(对数障碍):与框架 17.1 相同,只是把 \(Q\) 换成 \(P\)、罚参数换成障碍参数。由于病态,牛顿法几乎是唯一有效的内层求解方法;为让牛顿法几步内进入 \(P(x;\mu_k)\) 的收敛域:
- 加线搜索或信赖域全局化,保证迭代点留在 \(\mathcal F^o\) 内,并考虑对数障碍的特点(专门的线搜索)。
- 好的起点:沿以往近似极小点 \(x_{k-1},x_{k-2},\dots\) 外推;或对 \(\nabla_xP(x;\mu)=0\) 关于 \(\mu\) 全微分求中心路径切向:
\[\nabla^2_{xx}P(x;\mu)\dot x-\sum_{i\in\mathcal I}\frac1{c_i(x)}\nabla c_i(x)=0,\tag{17.29}\]在 \(x_{k-1},\mu_{k-1}\) 处求 \(\dot x\),令\[x_k^s=x_{k-1}+(\mu_k-\mu_{k-1})\dot x.\tag{17.30}\]
- 若子问题不难且有可信起点,激进地取 \(\mu_{k+1}=0.2\mu_k\) 或 \(0.1\mu_k\)。 基于该框架的软件尚未进入主流,没有公认最佳启发式。对数障碍法由 Frisch [95] 约 45 年前提出、Fiacco & McCormick [79] 30 年前系统研究,因与原始–对偶内点法(在大规模 LP、凸 QP 上表现极好)的联系而重新受到关注。
性质与收敛:记 \(\mathcal M\) 为 (17.19) 的解集,\(f^*\) 为最优值。 定理 17.3(凸规划):\(f\) 与 \(-c_i\) 均凸,\(\mathcal F^o\) 非空,\(\mu_k\downarrow0\),\(\mathcal M\) 非空有界。则 (i) 对任意 \(\mu>0\),\(P(x;\mu)\) 在 \(\mathcal F^o\) 上凸并取得极小点 \(x(\mu)\)(不必唯一),任何局部极小都是全局极小;(ii) 任一极小点序列 \(x(\mu_k)\) 有收敛子列,极限点都在 \(\mathcal M\) 中;(iii) \(f(x(\mu_k))\to f^*\),\(P(x(\mu_k);\mu_k)\to f^*\)。(证明见 M. Wright [251, Thm 5]。)反例:\(\mathcal M\) 可能为空(\(\min x\) s.t. \(-x\ge0\))或无界(\(\min x_1\) s.t. \(x_1\ge0\)),此时结论一般不成立。 一般非凸问题结论是局部的:对"良态"局部解(满足二阶充分条件、严格互补、约束规范),\(\mu\) 足够小时 \(P\) 在 \(x^*\) 附近有局部极小;但 \(\mathcal F^o\) 无界时 \(P\) 可能无下界,局部极小序列也可能收敛到非解点(习题 17.2、17.3)。
与 KKT 的关系:\(x(\mu)\) 处
定理 17.4:\(\mathcal F^o\) 非空,\(x^*\) 为局部解且 KKT 对某 \(\lambda^*\) 成立,且 LICQ、严格互补、二阶充分条件成立。则 (i) 对充分小的 \(\mu\) 存在唯一连续可微的 \(x(\mu)\)(\(x^*\) 某邻域内 \(P\) 的局部极小)且 \(x(\mu)\to x^*\);(ii) \(\lambda(\mu)\to\lambda^*\);(iii) \(\mu\) 足够小时 \(\nabla^2_{xx}P\) 正定。(Fiacco & McCormick [79, Thm 12];M. Wright [251, Thm 8]。) 轨迹 \(\mathcal C_p=\{x(\mu):\mu>0\}\) (17.37) 称**(原始)中心路径(primal central path)**。
处理等式约束:一般问题 (17.38)(含 \(\mathcal E\) 与 \(\mathcal I\))。不能把等式拆成两个不等式(那样 \(\mathcal F^o\) 为空)。办法:对等式加二次罚项(系数取 \(1/\mu\)):
与原始–对偶方法的关系:原始–对偶内点法(1984 年以来的研究热点)把乘子当作与 \(x\) 同等地位的独立变量,仍寻找满足近似条件的 \((x(\mu),\lambda(\mu))\)。对 (17.19) 加松弛 \(s\):
17.3 精确罚函数(Exact Penalty Functions)(PDF p.528–529)
二次罚和对数障碍都不是精确罚函数。精确罚函数(第 15.3 节,"价值函数"与"罚函数"在此可视为同义)在某些参数下一次极小化就得到精确解。\(\ell_1\) 精确罚:
17.4 增广拉格朗日法(Augmented Lagrangian Method)(PDF p.529–540)
乘子法与二次罚法相关,但每步在目标中显式引入乘子估计,降低子问题病态的可能;病态也比对数障碍法轻,且不要求迭代点对不等式严格可行;不引入不光滑性(不同于 \(\ell_1\) 罚);可用标准的无约束或界约束优化软件实现。高质量实现 LANCELOT 即基于此。本节乘子上标表示迭代号、下标表示分量。
动机与框架:由定理 17.2,二次罚的近似极小点满足
框架 17.3(乘子法,等式约束):
给定 μ0 > 0,τ0 > 0,起点 x0^s 和 λ^0;
for k = 0,1,2,...
从 xk^s 出发求 L_A(·, λ^k; μk) 的近似极小点 xk,当 ‖∇x L_A(x, λ^k; μk)‖ ≤ τk 时停止;
若满足最终收敛测试:STOP;
按 (17.49) 更新乘子得 λ^{k+1};
选新罚参数 μ_{k+1} ∈ (0, μk);
令 x_{k+1}^s = xk;
end
无需把 \(\mu\) 减到很小就能保证收敛,病态问题较轻,起点选择也不那么关键(直接用上一步极小点)。Bertsekas [9, p.347] 建议 \(\tau_k=\min(\epsilon_k,\gamma_k\|c(x_k)\|)\),\(\{\epsilon_k\},\{\gamma_k\}\to0\);LANCELOT 另有选择(算法 17.4)。
例 17.4:对问题 (17.3),\(\mathcal L_A(x,\lambda;\mu)=x_1+x_2-\lambda(x_1^2+x_2^2-2)+\frac1{2\mu}(x_1^2+x_2^2-2)^2\) (17.50)。\(x^*=(-1,-1)^T\),\(\lambda^*=-0.5\)。取 \(\mu_k=1\)、\(\lambda^k=-0.4\)(图 17.6):等高线间距显示条件数与 \(Q(x;1)\) 相近,但极小点 \(x_k\approx(-1.02,-1.02)\),比 \(Q(x;1)\) 的 \((-1.1,-1.1)\) 近得多。说明引入乘子项带来实质改进。
推广到不等式约束:
- 法一:引入松弛 \(c_i(x)-s_i=0\),\(s_i\ge0\) (17.51),得到等式 + 界约束问题,由 LANCELOT 显式处理界约束(见 (17.66))。
- 法二:在子问题中显式消去松弛(设 \(\mathcal E=\emptyset\))。子问题
\[\min_{x,s}\ f(x)-\sum_i\lambda_i^k(c_i(x)-s_i)+\frac1{2\mu_k}\sum_i(c_i(x)-s_i)^2\quad\text{s.t. }s_i\ge0.\tag{17.52}\]每个 \(s_i\) 只出现在两项中,且关于 \(s_i\) 是凸二次函数。偏导 \(\lambda_i^k-(c_i(x)-s_i)/\mu_k=0\) 给出无约束极小 \(s_i=c_i(x)-\mu\lambda_i^k\) (17.53);若小于 0 则取 0:\[s_i=\max(c_i(x)-\mu\lambda_i^k,0).\tag{17.54}\]代回得\[-\lambda_i^k(c_i-s_i)+\frac1{2\mu}(c_i-s_i)^2=\begin{cases}-\lambda_i^kc_i(x)+\frac1{2\mu}c_i^2(x),&c_i(x)-\mu\lambda_i^k\le0\\-\frac\mu2(\lambda_i^k)^2,&\text{otherwise.}\end{cases}\tag{17.55}\]定义\[\psi(t,\sigma;\mu)=\begin{cases}-\sigma t+\frac1{2\mu}t^2,&t-\mu\sigma\le0\\-\frac\mu2\sigma^2,&\text{otherwise},\end{cases}\tag{17.56}\]子问题变为\[\min_x\ \mathcal L_A(x,\lambda^k;\mu_k)=f(x)+\sum_{i\in\mathcal I}\psi(c_i(x),\lambda_i^k;\mu_k),\tag{17.57}\]这是增广拉格朗日对不等式的自然推广。乘子更新\[\lambda_i^{k+1}=\max(\lambda_i^k-c_i(x_k)/\mu_k,\ 0).\tag{17.58}\]推导:\(\nabla_x\mathcal L_A(x_k)=\nabla f(x_k)-\sum_{i:c_i(x)\le\mu\lambda_i^k}(\lambda_i^k-c_i(x_k)/\mu_k)\nabla c_i(x_k)\approx0\),与 KKT 条件 \(\nabla f(x^*)-\sum_{i:c_i(x^*)=0}\lambda_i^*\nabla c_i(x^*)=0\) 对比;保持乘子非负也符合 KKT (12.30d)。 光滑性:每个 \(\psi(c_i(x),\lambda_i;\mu)\) 关于 \(x\) 连续可微,但在 \(c_i(x)=\mu\lambda_i\) 处二阶导一般不连续。严格互补成立时 \(x_k\) 通常远离此区域:有效约束 \(c_i(x_k)\approx0\) 而 \(\lambda_i^k,\mu_k\) 明显大于 0;非有效约束 \(c_i(x_k)>0\) 而 \(\lambda_i^k\approx0\)。两种情况都远离 \(c_i=\mu\lambda_i\)。
增广拉格朗日的性质(仅等式约束): 定理 17.5:\(x^*\) 为 (17.1) 局部解,LICQ 成立,\(\lambda=\lambda^*\) 时二阶充分条件成立。则存在阈值 \(\bar\mu\),使对所有 \(\mu\in(0,\bar\mu]\),\(x^*\) 是 \(\mathcal L_A(x,\lambda^*;\mu)\) 的严格局部极小。 证明:验证 \(\nabla_x\mathcal L_A(x^*,\lambda^*;\mu)=0\) 且 \(\nabla^2_{xx}\mathcal L_A\) 正定 (17.59)。第一条:由 (17.47) 与 \(c(x^*)=0\),\(\nabla_x\mathcal L_A=\nabla_x\mathcal L(x^*,\lambda^*)=0\),与 \(\mu\) 无关。第二条:
定理 17.6(Bertsekas [9, Prop 4.2.3]):在定理 17.5 假设下,存在 \(\delta,\epsilon,M>0\) 使: (a) 对满足 \(\|\lambda^k-\lambda^*\|\le\delta/\mu_k\),\(\mu_k\le\bar\mu\) (17.63) 的 \(\lambda^k,\mu_k\),问题 \(\min_x\mathcal L_A(x,\lambda^k;\mu_k)\) s.t. \(\|x-x^*\|\le\epsilon\) 有唯一解 \(x_k\),且 \(\|x_k-x^*\|\le M\mu_k\|\lambda^k-\lambda^*\|\); (b) \(\|\lambda^{k+1}-\lambda^*\|\le M\mu_k\|\lambda^k-\lambda^*\|\)(\(\lambda^{k+1}\) 由 (17.49) 给出); (c) \(\nabla^2_{xx}\mathcal L_A(x_k,\lambda^k)\) 正定,\(\nabla c_i(x_k)\) 线性无关。 即乘子误差以因子 \(M\mu_k\) 线性收缩:\(\mu_k\) 不必趋零也能收敛,\(\mu_k\) 越小收敛越快。
实际实现(LANCELOT,Conn–Gould–Toint [53]):用松弛把不等式变等式,求解
算法 17.4(LANCELOT 乘子法):
选正常数 η̄, ω̄, μ̄ ≤ 1, τ < 1, γ̄ < 1, αω, βω, αη, βη, α*, β*,满足 αη < min(1,αω),βη < min(1,βω);
选 λ^0;令 μ0 = μ̄,α0 = min(μ0, γ̄),ω0 = ω̄ α0^{αω},η0 = η̄ α0^{αη};
for k = 0,1,2,...
求 (17.66) 的近似解 xk,使 ‖P_[l,u] ∇L_A(xk, λ^k; μk)‖ ≤ ωk;
if ‖c(xk)‖ ≤ ηk (* 约束违反足够小 *)
若 ‖c(xk)‖ ≤ η* 且 ‖P_[l,u]∇L_A‖ ≤ ω*:STOP;
λ^{k+1} = λ^k − c(xk)/μk; μ_{k+1} = μk; (* 更新乘子,收紧容差 *)
α_{k+1} = μ_{k+1};η_{k+1} = ηk α_{k+1}^{βη};ω_{k+1} = ωk α_{k+1}^{βω};
else (* 减小罚参数,收紧容差 *)
λ^{k+1} = λ^k; μ_{k+1} = τ μk;
α_{k+1} = μ_{k+1} γ̄;η_{k+1} = η̄ α_{k+1}^{βη};ω_{k+1} = ω̄ α_{k+1}^{βω};
end
逻辑:\(\|c(x_k)\|>\eta_k\) 时减小 \(\mu\) 以更重视降低约束违反;否则认为当前 \(\mu\) 能维持近可行,按 (17.49) 更新乘子而不减 \(\mu\)。两种情况都收紧 \(\omega_k,\eta_k\),使后续子问题求解越来越精确。
17.5 序列线性约束方法(Sequential Linearly Constrained Methods)(PDF p.540–541)
SLC(又称约化拉格朗日法,reduced Lagrangian methods):在约束线性化下极小化拉格朗日函数。与 SQP(二次近似目标 + 线性约束)不同,SLC 子问题的目标是非线性的。等式情形:
- 每步需极小化非线性子问题,需多次内迭代及函数/约束求值,但外迭代很少。
- 子问题用牛顿或拟牛顿法求解,并用第 15 章稀疏消去利用约束梯度的稀疏性。
- 不等式:引入松弛化为等式 + 界约束 \(l\le x\le u\);在满足二阶充分条件的解附近,子问题能识别最优有效集。
- 缺点:子问题需解得相当精确才能保证乘子估计质量,每次外迭代函数求值多。普遍认为 SQP 优于 SLC,但 MINOS 仍是大规模非线性规划最有效的实现之一。
注记与文献:二次罚函数由 Courant [60] 提出;Gould [118] 研究 \(Q\) 的牛顿步稳定计算(其公式右端不同但 \(p\) 相同),对数障碍系统的重写需估计有效集;Gould [119] 讨论外推起点,障碍法类似技术见 Conn–Gould–Toint [55]、Dussault [78]。障碍法历史见 Nash [178];"内点(interior-point)"一词似源于 Fiacco & McCormick [79],该书也引入了 (17.39) 和中心路径 \(\mathcal C_p\),1984 年 Karmarkar [140] 之后其重要性更加突出。线性目标重构使牛顿步最终接近 \(x(\mu_{k+1})\):Wright & Jarre [258];牛顿/障碍法收敛域与超线性收敛:S. Wright [254]。(17.28) 病态的误差分析:朴素分析认为误差大,但由于梯度和 Hessian 的特殊结构,算出的 \(p\) 在 \(\mu\) 很小前仍是好方向(M. Wright [252]、S. Wright [256])。障碍函数专用线搜索:Murray & Wright [174]、Fletcher & McCann [87]。原始–对偶法价值函数:Forsgren & Gill [91] 用 \(B(x;\mu)\);Gay–Overton–Wright [99] 加拉格朗日项;Byrd–Hribar–Nocedal [34] 用不可微 \(\ell_2\) 价值函数;凸规划可用更接近 LP 原始–对偶的算法(Ralph & Wright [211])。乘子法由 Hestenes [134] 和 Powell [195] 提出,权威著作为 Bertsekas [8];不等式推广:Rockafellar [216]、Powell [198]。SLC:Robinson [215]、Rosen & Kreuser [218];MINOS:Murtagh & Saunders [175]。
第 17 章习题概括(PDF p.542–543)
- 17.1:\(\min(0,z)^2\) 在 \(z=0\) 处二阶导不连续(故 (17.5) 不二阶连续可微)。
- 17.2:\(\min 1/(1+x^2)\) s.t. \(x\ge1\),对数障碍函数对任意 \(\mu>0\) 无下界。
- 17.3:\(\min x\) s.t. \(x^2\ge0\),\(x+1\ge0\)(解 \(x^*=-1\)),障碍函数存在收敛到 0(非解)的局部极小序列。
- 17.4:求 \(P\) 的三阶导张量,用 \(\lambda_i^*\approx\mu/c_i\) 估计最大项量级(说明二次 Taylor 模型不足)。
- 17.5:从 \(P(\cdot;\mu_k)\) 的精确极小点出发对 \(P(\cdot;\mu_{k+1})\) 做牛顿步,与 (17.29)–(17.30) 的预测步比较。
- 17.6:把 (17.41) 推广到含等式约束。
- 17.7:界约束问题 KKT ⇔ \(P_{[l,u]}\nabla\phi(x)=0\)。
- 17.8:\(\psi\) 在 \(t=\mu\sigma\) 处二阶导不连续,写出两种情形下 \(\psi(c_i(x),\lambda_i;\mu)\) 关于 \(x\) 的 Hessian。
第 17 章本章要点
- 二次罚:\(Q=f+\frac1{2\mu}\|c\|^2\),\(\mu\to0\) 收敛到 KKT 点,\(-c_i/\mu\) 估计乘子;代价是 Hessian 有 \(O(1/\mu)\) 的特征值、严重病态,可用 (17.18) 增广形式缓解。
- 对数障碍:\(P=f-\mu\sum\log c_i\),内点法;\(\mu/c_i\) 估计乘子,\(\lambda_ic_i=\mu\) 是扰动互补;中心路径;凸问题全局收敛(定理 17.3),良态局部解附近存在光滑路径(定理 17.4);同样病态,牛顿法 + 外推起点。
- 原始–对偶内点:把扰动 KKT 系统 (17.41) 当作非线性方程组,用修正牛顿法,(17.43) 统一了 LP/QP/NLP 的内点步。
- 精确罚 \(\ell_1\):一次极小化即可,但不光滑,实用中通过 S\(\ell_1\)QP 实现。
- 增广拉格朗日:\(\mathcal L_A=f-\lambda^Tc+\frac1{2\mu}\|c\|^2\),乘子更新 \(\lambda\leftarrow\lambda-c/\mu\);\(\lambda=\lambda^*\) 时 \(x^*\) 对一切小于阈值的 \(\mu\) 都是严格极小(定理 17.5),\(\mu\) 无需趋零,乘子误差以 \(M\mu\) 线性收缩(定理 17.6);不等式通过 \(\psi\) 函数或松弛 + 界约束(LANCELOT)处理。
- SLC/MINOS:线性化约束 + 非线性(增广拉格朗日)目标,外迭代少、每次贵。
与量化交易的关联
- 软约束建模:组合优化中常把跟踪误差、换手、因子暴露偏离写成罚项 \(\frac1{2\mu}\|c(w)\|^2\) 加进目标。本章说明:罚系数越大越接近硬约束,但 Hessian 越病态、求解越慢、数值越不稳;若需要精确满足,应改用增广拉格朗日(乘子更新、罚系数适中)或直接用约束求解器,而不是把罚系数调到极大。
- 增广拉格朗日 / ADMM 的基础:大规模组合优化、稀疏回归(Lasso、组 Lasso 因子选择)、带约束的风险平价常用 ADMM,其每步就是增广拉格朗日的分块极小 + 乘子更新 \(\lambda\leftarrow\lambda-c/\mu\)。理解定理 17.5–17.6 有助于选罚参数和判断收敛。
- 对数障碍:风险平价(risk parity)的标准凸化形式 \(\min\frac12w^T\Sigma w-\sum_i b_i\log w_i\) 正是对数障碍型函数,\(\mu/c_i\) 型乘子估计与"风险贡献 = \(b_i\)"条件一一对应;Kelly/对数效用 \(\max E[\log(1+r^Tw)]\) 也天然带障碍性质(保证财富为正)。
- 内点法:商业求解器(MOSEK、Gurobi barrier、IPOPT)求解大规模组合 QP/SOCP、带非线性约束(如 CVaR、二次换手成本)的问题,内核就是 (17.43) 型原始–对偶牛顿步;理解中心路径、对偶度量 \(\mu\) 有助于解读求解器日志与设置收敛容差。
- 校准与拟合:期权模型(如 SVI、局部波动率)校准中的无套利约束、参数界约束可用 LANCELOT 式"增广拉格朗日 + 界约束梯度投影"处理。
- SLC:在量化中直接用到的场景较少,主要作为理解 MINOS 等老牌 NLP 求解器的背景。
推荐习题
- 17.1、17.8:罚函数/增广拉格朗日的光滑性问题,影响二阶方法选用。
- 17.3、17.2:障碍法的失败模式(收敛到非解、无下界)。
- 17.5:理解中心路径外推与牛顿预测步。
- 17.6:写出含等式约束的原始–对偶内点系统。
- 17.7:投影梯度一阶条件,界约束优化的基础。
第 18 章 序列二次规划(Sequential Quadratic Programming)(PDF p.544–591)
PDF p.544 为章名页。SQP 通过求解二次子问题产生步,是非线性约束优化最有效的方法之一;可用于线搜索和信赖域框架,适用于小或大规模问题。与 SLC(多数约束为线性时有效)不同,SQP 在显著非线性问题上更有优势。展开分两阶段:先给出局部算法(引入步计算与 Hessian 近似),再给出能从远处起点收敛的实用线搜索与信赖域方法。
18.1 局部 SQP 方法(Local SQP Method)(PDF p.546–550)
等式约束问题
假设 18.1:(a) \(A_k\) 行满秩(LICQ,本章全程假设);(b) \(W_k\) 在约束切空间上正定:\(d^TW_kd>0\),\(\forall d\ne0,\ A_kd=0\)(在满足二阶充分条件的解附近成立)。 在此假设下牛顿迭代二次收敛,起点足够近时是求解等式约束问题的优秀算法。
SQP 框架:在 \((x_k,\lambda_k)\) 定义 QP
算法 18.1(局部 SQP):
选初始 (x0, λ0);
for k = 0,1,2,...
计算 fk, ∇fk, Wk = W(xk, λk), ck, Ak;
解 (18.8) 得 pk 与 μk;
x_{k+1} = xk + pk;λ_{k+1} = μk;
若满足收敛测试:STOP;
end
局部收敛:若解处假设 18.1 成立,\(f,c\) 二阶可微且二阶导 Lipschitz 连续,初始点足够近,则二次收敛到 \((x^*,\lambda^*)\)(见 18.10 节)。 另一种动机:(18.8a) 中线性项 \(\nabla f_k^Tp\) 可换成 \(\nabla_x\mathcal L(x_k,\lambda_k)^Tp\)(在约束 (18.8b) 下等价),此时 (18.8a) 是拉格朗日函数的二次近似——即"在线性化约束下极小化拉格朗日函数的二次近似"。
不等式约束:一般问题
定理 18.1:\(x^*\) 为 (18.11) 的解,有效约束雅可比 \(A_*\) 行满秩,\(d^TW_*d>0\)(\(\forall d\ne0,\ A_*d=0\)),严格互补成立。则 \((x_k,\lambda_k)\) 足够接近 \((x^*,\lambda^*)\) 时,子问题 (18.12) 有一个局部解,其有效集 \(\mathcal A_k\) 与 \(\mathcal A(x^*)\) 相同。 即接近解时有效集固定,子问题表现得像等式约束 QP。
IQP 与 EQP:
- IQP(不等式约束 QP):每步解完整的 (18.12),以其解的有效集作为最优有效集的猜测;实践中很成功,缺点是大问题中解一般 QP 代价高;但接近解时借助上一步信息"热启动(hot-start)"会很便宜。
- EQP(等式约束 QP):每步选一个工作集,只解形如 (18.8) 的等式子问题(工作集约束作等式、其余忽略),工作集按乘子估计规则或辅助子问题更新;子问题更便宜,软件要求低。例:16.6 节梯度投影(沿投影最速下降路径极小化模型确定工作集);序列线性规划(SLP)变体:去掉 \(p^TW_kp\) 并加信赖域 \(\|p\|\le\Delta_k\) 得 LP,以其有效集为工作集,再固定工作集、加回二次项解等式 QP 得步。
18.2 实用 SQP 方法预览(Preview of Practical SQP Methods)(PDF p.550–551)
实用 SQP 需能从远处起点、在非凸问题上收敛。类比无约束:牛顿模型 \(m_k(p)=f_k+\nabla f_k^Tp+\frac12p^T\nabla^2f_kp\) 在解附近 Hessian 正定时好用,远离解时模型可能非凸;信赖域限制步在邻域内,线搜索把 Hessian 修正为正定(或用拟牛顿 \(B_k\))保证下降。
- 线搜索 SQP:\(W_k\) 在约束切空间不正定时,用正定近似 \(B_k\) 代替,或在分解时直接修改 \(W_k\),或取某个具有凸性的增广拉格朗日 Hessian。
- 信赖域 SQP:子问题加信赖域约束,可以用不满足凸性的 \(W_k\);但信赖域可能使线性化约束不可行,需要放松约束,增加复杂性与成本。两类方法各有取舍,无明显优劣。
- 子问题求解技术对效率与稳健性影响很大(尤其大问题):线搜索可用第 16 章 QP 算法,信赖域需特殊技术。
- 价值函数选择:可用第 15 章任一价值函数,但参数可能需在某些迭代中调整以保证方向是下降方向,参数更新规则对实际表现影响很大。
18.3 步的计算(Step Computation)(PDF p.552–555)
等式约束:解 KKT 系统 (18.10)(此处 \(W_k\) 可以是精确 Hessian 或拟牛顿 \(B_k\))。
- 直接解 KKT 系统(增广系统法,augmented system approach):对称不定分解 \(LDL^T\)(\(D\) 为 \(1\times1\)/\(2\times2\) 块),稠密用 Bunch–Kaufman [30],稀疏用 Duff–Reid [75];直接得到 \(p_k\) 和 \(\lambda_{k+1}\)。也可用 QMR、LSQR 迭代,但提前终止可能得到不指向极小点的方向,终止准则和预条件仍是研究课题,实用中尚不常见。
- 对偶 / 值空间法:\(W_k\) 正定时
\[(A_kW_k^{-1}A_k^T)\lambda_{k+1}=A_kW_k^{-1}\nabla f_k-c_k,\qquad W_kp_k=-\nabla f_k+A_k^T\lambda_{k+1}.\tag{18.13}\]对显式维护 \(H_k\approx W_k^{-1}\) 的拟牛顿法特别有效。
- 零空间法(许多 SQP 的核心):\(p_k=Y_kp_Y+Z_kp_Z\),
\[(A_kY_k)p_Y=-c_k,\qquad (Z_k^TW_kZ_k)p_Z=-Z_k^TW_kY_kp_Y-Z_k^T\nabla f_k,\tag{18.14}\]QP 乘子:\((A_kY_k)^T\lambda_{k+1}=Y_k^T(\nabla f_k+W_kp_k)\) (18.15)。唯一要求:约化 Hessian \(Z_k^TW_kZ_k\) 正定。
- 变体一:去掉 (18.15) 右端的 \(W_kp_k\)(接近解时 \(p_k\to0\) 而 \(\nabla f_k\) 一般不趋零),取 \(Y_k=A_k^T\) 得最小二乘乘子(least-squares multipliers)
\[\hat\lambda_{k+1}=(A_kA_k^T)^{-1}A_k\nabla f_k,\tag{18.16}\qquad \text{即}\ \min_\lambda\|\nabla f_k-A_k^T\lambda\|_2^2.\tag{18.17}\]远离解时也有用(尽量满足一阶条件)。实践中用最新信息:算法 18.3 先求 \(p_k\),在 \(x_{k+1}\) 处计算梯度后再用 (18.16) 求 \(\lambda_{k+1}\)。概念上这把 SQP 从 \((x,\lambda)\) 迭代变成纯原始 \(x\) 迭代。
- 变体二:约化 Hessian 方法(reduced-Hessian methods)——再去掉交叉项 \(Z_k^TW_kY_kp_Y\):
\[(Z_k^TW_kZ_k)p_Z=-Z_k^T\nabla f_k.\tag{18.18}\]只需存储/近似并分解 \(Z_k^TW_kZ_k\);合理性在于法向分量 \(p_Y\) 通常比切向分量 \(p_Z\) 收敛得快。
- 变体一:去掉 (18.15) 右端的 \(W_kp_k\)(接近解时 \(p_k\to0\) 而 \(\nabla f_k\) 一般不趋零),取 \(Y_k=A_k^T\) 得最小二乘乘子(least-squares multipliers)
不等式约束:用有效集 QP(算法 16.1;\(W_k\) 非凸时用不定 QP 变体)解 (18.12)。热启动:用上一子问题的解 \(\tilde p\) 作起点(第 16 章两种 Phase I 可利用好起点);工作集初始化为上一次 SQP 迭代的最终有效集;有时(特别是只有线性约束时)可复用/更新上一步的矩阵分解。热启动对线搜索 SQP 的效率至关重要。 线性化后不可行:例 \(n=1\),约束 \(x\le1\)、\(x^2\ge0\),在 \(x_k=3\) 线性化得 \(3+p\le1\) 与 \(9+6p\ge0\),矛盾。解决:保证可行的松弛子问题。如 SNOPT [108]:若 (18.12) 不可行,改解
18.4 二次模型的 Hessian(The Hessian of the Quadratic Model)(PDF p.555–560)
取 \(W_k=\nabla^2_{xx}\mathcal L(x_k,\lambda_k)\) 带来二次收敛,远离解时也常进展迅速;但需要二阶导(可能难算),且在约束零空间上不一定正定。替代选择:
完整拟牛顿近似:对 \(\nabla^2_{xx}\mathcal L\) 维护 BFGS 近似 \(B_k\),
- 跳过更新:若不满足 \(s_k^Ty_k\ge\theta s_k^TB_ks_k\)(\(\theta\) 如 \(10^{-2}\))(18.21) 就跳过。在许多问题上表现好,但有些问题上很差甚至失败,不足以作为通用策略。
- 过程 18.2(SQP 阻尼 BFGS,damped BFGS):\(r_k=\theta_ky_k+(1-\theta_k)B_ks_k\),
\[\theta_k=\begin{cases}1,&s_k^Ty_k\ge0.2\,s_k^TB_ks_k\\\dfrac{0.8\,s_k^TB_ks_k}{s_k^TB_ks_k-s_k^Ty_k},&s_k^Ty_k<0.2\,s_k^TB_ks_k\end{cases}\tag{18.22}\]\[B_{k+1}=B_k-\frac{B_ks_ks_k^TB_k}{s_k^TB_ks_k}+\frac{r_kr_k^T}{s_k^Tr_k}.\tag{18.23}\]即用 \(r_k\) 代替 \(y_k\) 的 BFGS;\(\theta_k\ne1\) 时 \(s_k^Tr_k=0.2\,s_k^TB_ks_k>0\) (18.24),保证 \(B_{k+1}\) 正定。\(\theta_k=0\) 时 \(B_{k+1}=B_k\),\(\theta_k=1\) 为原 BFGS,中间值在两者之间插值。(Powell 的阻尼策略。)已被多个 SQP 程序采用、表现良好,但困难问题上仍可能很差,因为没有解决拉格朗日 Hessian 本身不正定的根本问题。此时 SR1 (8.24) 更合适,是信赖域 SQP 的好选择;线搜索不能接受不定近似,需修改 SR1,不太理想。
增广拉格朗日 Hessian:
约化 Hessian 近似:只近似 \((n-m)\) 维的 \(Z_k^T\nabla^2_{xx}\mathcal L Z_k\)(标准假设下在解附近正定)。约化 Hessian 拟牛顿方法:
18.5 价值函数与下降性(Merit Functions and Descent)(PDF p.560–563)
价值函数 \(\phi\) 控制步长(线搜索)或决定是否接受步及调整信赖域半径,扮演无约束中目标函数的角色。重点:不可微 \(\ell_1\) 与 Fletcher 可微精确函数(代表实用中多数价值函数)。限于等式约束。要求价值函数不妨碍"好"步。
\(\ell_1\) 价值函数:
引理 18.2:\(p_k,\lambda_{k+1}\) 由 (18.10) 生成,则
Fletcher 增广拉格朗日价值函数:
定理 18.3:\(x_k\) 非 (18.1) 驻点,\(Z_k^TW_kZ_k\) 正定,则纯 SQP 方向 (18.10) 在 \(\mu\) 按 (18.35) 取时是 \(\phi_1\) 的下降方向,在 \(\mu\) 满足 (18.39) 时是 \(\phi_F\) 的下降方向。
罚参数更新:希望 \(\{\mu_k\}\) 最终不变。取 \(\delta>0\),
18.6 线搜索 SQP 方法(A Line Search SQP Method)(PDF p.563–564)
各种线搜索 SQP 的区别在于 Hessian 近似、价值函数和步计算方式。
算法 18.3(非线性规划的 SQP 算法):
选参数 η ∈ (0, 0.5),τ ∈ (0, 1);选初始 (x0, λ0);选 n×n 对称正定初始 Hessian 近似 B0;
计算 f0, ∇f0, c0, A0;
for k = 0,1,2,...
若满足终止测试:STOP;
解 (18.12)(以 Bk 为 Hessian)得 pk;
选 μk 使 pk 是 φ 在 xk 处的下降方向;
αk = 1;
while φ(xk + αk pk; μk) > φ(xk; μk) + η αk Dφ(xk; pk)
αk ← τα αk,τα ∈ (0, τ);
x_{k+1} = xk + αk pk;
计算 f_{k+1}, ∇f_{k+1}, c_{k+1}, A_{k+1};
λ_{k+1} = [A_{k+1} A_{k+1}^T]^{-1} A_{k+1} ∇f_{k+1}; (最小二乘乘子;原文多一个负号,应为笔误)
sk = αk pk,yk = ∇x L(x_{k+1}, λ_{k+1}) − ∇x L(xk, λ_{k+1});
用拟牛顿公式更新 Bk 得 B_{k+1};
end
用精确 Hessian \(W_k\) 替换 \(B_k\) 即得二阶版本;需注意 (18.12) 约束相容。只要求 \(B_k\) 正定,可用阻尼 BFGS;价值函数未指定(\(\phi_1\) 或 \(\phi_F\))。(对含不等式的问题,乘子在实际中取 QP 子问题的乘子更自然;算法中写的最小二乘乘子适用于等式情形。)
18.7 约化 Hessian SQP 方法(Reduced-Hessian SQP Methods)(PDF p.564–569)
只近似拉格朗日约化 Hessian,在最优控制等领域非常有效。适用于二阶导难算、自由度 \(n-m\) 小的问题:维护 \((n-m)\times(n-m)\) 的 \(M_k\approx Z_k^TW_kZ_k\),满足 (18.29)。优点:\(n-m\) 小时 \(M_k\) 质量高、\(p_Z\) 计算便宜;约化 Hessian 即使离解较远也更可能正定,拟牛顿保护机制较少触发。
性质:若保留 \(p_Y\) 并用完整拟牛顿近似,\(p_Y\) 来自对 \(c(x)=0\) 的类牛顿迭代 (18.27b),通常二次收敛到零;\(p_Z\) 用拟牛顿近似,只超线性收敛。因此实践中常见
更新准则:定义沿步的"平均"拉格朗日 Hessian
过程 18.4(更新–跳过):给定正数列 \(\gamma_k\),\(\sum\gamma_k<\infty\);若 \(y_k^Ts_k>0\) 且 \(\|p_Y\|\le\gamma_k\|p_Z\|\),由 (18.30) 计算 \(s_k,y_k\) 并 BFGS 更新 \(M_k\);否则 \(M_{k+1}=M_k\)。实践中用过 \(\gamma_k=0.1k^{-1.1}\)。 Coleman–Conn 情形把 (18.43) 中 \(\tau p_k\) 换成 \(\tau p_Z\),得 \(y_k^Ts_k=p_Z^TZ_k^T\bar W_kZ_kp_Z\),在解附近保证为正;远离解时可能为负或很小,可用大致沿约束的曲线线搜索 [101] 保证其足够大(类似无约束中用线搜索保证曲率条件)。
基变换(Changes of Bases):工作集变化时约化 Hessian 维数改变——加约束时可用有效约束梯度把 \(M_k\) 投影到更小的 \(M_{k+1}\);删约束时 \(M_{k+1}\) 维数变大,新行列如何初始化不明显,需要若干迭代积累信息,若约束频繁增删则拟牛顿近似质量差(接近解时工作集稳定,问题消失)。已有若干方案但都不完全令人满意,因此下面只给等式约束算法,不等式见 [108]。即使维数不变,基变量选择不同((15.14))也会使 \(Z\) 突变;基选择不当 \(Z\) 病态会引入舍入误差。稳健实现相当复杂([108]、[86]、[146])。
算法 18.5(约化 Hessian 方法,等式约束):
选参数 η ∈ (0, 0.5),τ ∈ (0, 1);选初始 (x0, λ0);选 (n−m)×(n−m) 对称正定 M0;
计算 f0, ∇f0, c0, A0;计算张成 A0^T 值空间与 A0 零空间的 Y0, Z0;
for k = 0,1,2,...
若满足终止测试:STOP;
解 (Ak Yk) pY = −ck,Mk pZ = −Zk^T ∇fk;pk = Yk pY + Zk pZ;
选 μk 使 pk 为 φ 在 xk 的下降方向;
αk = 1;while φ(xk + αk pk; μk) > φ(xk; μk) + η αk Dφ(xk; pk):αk ← τα αk(τα ∈ (0, τ));
x_{k+1} = xk + αk pk;计算 f_{k+1}, ∇f_{k+1}, c_{k+1}, A_{k+1};计算 Y_{k+1}, Z_{k+1};
λ_{k+1} = [Y_{k+1}^T A_{k+1}^T]^{-1} Y_{k+1}^T ∇f_{k+1};(原文带负号,按 (18.15) 应无负号)
sk = αk pZ,yk = Zk^T [∇x L(x_{k+1}, λ_{k+1}) − ∇x L(xk, λ_{k+1})];
若满足更新准则:用 BFGS (8.19) 更新得 M_{k+1};否则 M_{k+1} = Mk;
end
\(M_k\) 应是约化 Hessian 的拟牛顿近似,必要时修正使其充分正定。
18.8 信赖域 SQP 方法(Trust-Region SQP Methods)(PDF p.569–576)
优点:能处理有效约束梯度线性相关的情形,能直接使用二阶导信息。部分算法较新,只对等式约束完全发展。等式情形子问题:
方法 I:平移约束(Shifting the Constraints):把 (18.45b) 换成
- 法向子问题(normal subproblem):忽略目标,求在信赖域内部能多接近满足线性化约束:
\[\min_v\ \|A_kv+c_k\|_2\quad\text{s.t. }\|v\|_2\le\zeta\Delta_k,\tag{18.47}\]\(\zeta\in(0,1)\),典型 0.8。解 \(v_k\) 称法向步(normal step)。
- 要求总步至少与法向步一样改善约束:把 \(\theta c_k\) 换成 \(-A_kv_k\):
\[\min_p\ \tfrac12p^TW_kp+\nabla f_k^Tp\quad\text{s.t. }A_kp=A_kv_k,\ \|p\|_2\le\Delta_k.\tag{18.48}\]\(p=v_k\) 满足两约束,故相容。等式约束可消去,化为第 4 章的标准信赖域子问题(见 18.9 节)。
方法 II:两个椭球约束(Two Elliptical Constraints):
方法 III:S\(\ell_1\)QP(序列 \(\ell_1\) 二次规划):前两种为等式约束设计,推广到不等式不平凡;S\(\ell_1\)QP 直接处理一般问题 (18.11)。把线性化约束以 \(\ell_1\) 罚项移入目标,只保留信赖域约束:
18.9 一个实用的信赖域 SQP 算法(A Practical Trust-Region SQP Algorithm)(PDF p.576–579)
细化方法 I。法向子问题 (18.47) 和主子问题 (18.48) 只需近似解。 法向步:用 CG(算法 4.3)或 dogleg。dogleg 不能照搬:(18.47a) 的 Hessian \(A_k^TA_k\) 奇异,"牛顿步"不唯一;取满足 \(A_kv+c_k=0\) 的最小范数解 \(p^B=-A_k^T[A_kA_k^T]^{-1}c_k\);Cauchy 点沿 \(-A_k^Tc_k\),也在 \(A_k^T\) 值空间;故 dogleg 步 \(v_k\) 在 \(A_k^T\) 值空间中(习题 18.8 证明法向问题总有此类解)。 切向步:用约化 Hessian 方法。令
价值函数:不可微 \(\ell_2\)(不平方)
算法 18.6(信赖域 SQP):
选常数 ε > 0,η, ζ, γ ∈ (0,1);选起点 x0,初始信赖域 Δ0 > 0;
for k = 0,1,2,...
计算 fk, ck, ∇fk, Ak;按 (18.16) 计算乘子估计 λ̂k;
若 ‖∇fk − Ak^T λ̂k‖∞ < ε 且 ‖ck‖∞ < ε:STOP;
解法向子问题 (18.47) 得 vk;
计算张成 Ak 零空间的 Zk;计算或更新 Wk;
解 (18.58) 得 uk;pk = vk + Zk uk;
ρk = ared / pred;
if ρk > η:x_{k+1} = xk + pk;取 Δ_{k+1} ≥ Δk;
else:x_{k+1} = xk;取 Δ_{k+1} ≤ γ‖pk‖;
end
\(\zeta\) 常取 0.8,对性能影响不大。推广到不等式:有效集式,或内点框架(用改造的算法 18.6 解障碍子问题)。零空间法的缺点是需要 \(Z_k\),但可重排 CG 绕过 \(Z\)(习题 18.10)。价值函数 (18.59) 有 Maratos 效应,应加 watchdog 或二阶校正 (18.67);若用后者,有效启发式是只在法向步明显小于切向步和信赖域半径时才校正。
18.10 收敛速度(Rate of Convergence)(PDF p.579–583)
限于等式约束的算法 18.1(精确 Hessian 与拟牛顿版本)。结果可用于有效集稳定后的不等式问题(定理 18.1),也可用于全局算法(解附近全局化策略通常不干扰局部行为,Maratos 效应除外)。
假设 18.2:(a) \(A_*\) 行满秩,\(\nabla^2_{xx}\mathcal L(x^*,\lambda^*)\) 在约束切空间上正定;(b) \(\{B_k\}\)、\(\{B_k^{-1}\}\) 有界:\(\|B_k\|\le\beta_2\),\(\|B_k^{-1}\|\le\beta_2\)。
定理 18.4:假设 18.2(a),\(f,c\) 在 \((x^*,\lambda^*)\) 邻域二阶可微且二阶导 Lipschitz 连续,则 \((x_0,\lambda_0)\) 足够近时,用精确拉格朗日 Hessian 的算法 18.1 产生的 \((x_k,\lambda_k)\) 二次收敛到 \((x^*,\lambda^*)\)。(由定理 11.2 直接得到。)
拟牛顿版本:投影矩阵
定理 18.5(Boggs–Tolle–Wang [24]):假设 18.2(a),算法 18.1 的拟牛顿迭代 \(x_k\to x^*\)。则 \(x_k\) 超线性收敛当且仅当
定理 18.6:\(W_*\)、\(B_0\) 对称正定,假设 18.2(a)(b) 成立,\(\|x_0-x^*\|\)、\(\|B_0-W_*\|\) 足够小,则用 (18.20)、(18.23)(\(r_k=y_k\))的 BFGS 迭代满足 (18.62),超线性收敛。(需要拉格朗日 Hessian 在解处正定这一强假设以保证更新良定义。)阻尼 BFGS(过程 18.2)只得到较弱结果:若收敛,则为 R-超线性(非通常的 Q-超线性)。基于增广拉格朗日 Hessian 的更新有类似结果。
约化 Hessian 方法的收敛速度:\(Z_kM_kZ_k^T\) 近似双侧投影 \(P_kW_kP_k\),不近似 \(P_kW_k\),不能期望 (18.62)。把 (18.62) 拆为
18.11 Maratos 效应(The Maratos Effect)(PDF p.583–589)
某些价值函数会拒绝向解推进良好的步,阻碍 SQP 快速收敛——由 Maratos [156] 首先观察到。
例 18.1(Powell [209]):
对策:
- 用不受 Maratos 效应影响的价值函数,如 Fletcher 增广拉格朗日 (18.36):在满足二阶充分条件的解附近,算法 18.1 的步都会被接受。
- 二阶校正:给 \(p_k\) 加一个在 \(c(x_k+p_k)\) 处计算、能充分降低约束的步 \(p_k'\)(如 S\(\ell_1\)QP 的 (18.56))。
- 非单调策略:允许价值函数在某些迭代上升,如 watchdog。
线搜索中的二阶校正(\(\ell_1\) 价值函数):
算法 18.7(带二阶校正的 SQP):
选 η ∈ (0, 0.5),0 < τ1 < τ2 < 1;选 x0, B0;
for k = 0,1,2,...
计算 fk, ∇fk, ck, Ak;若满足终止测试:STOP;
计算 SQP 步 pk;αk = 1;newpoint = false;
while not newpoint
if φ1(xk + αk pk) ≤ φ1(xk) + η αk Dφ1(xk; pk)
x_{k+1} = xk + αk pk;newpoint = true;
else if αk = 1
由 (18.67) 计算 wk;
if φ1(xk + pk + wk) ≤ φ1(xk) + η Dφ1(xk; pk)
x_{k+1} = xk + pk + wk;newpoint = true;
在 [τ1 αk, τ2 αk] 中选新 αk;
else
在 [τ1 αk, τ2 αk] 中选新 αk;
end
用拟牛顿公式更新 Bk 得 B_{k+1};
end
(罚参数在找到成功步前保持不变。)可证有限步后 \(\alpha_k=1\) 总能产生新迭代点(\(x_k+p_k\) 或 \(x_k+p_k+w_k\)),价值函数不再干扰,获得与局部算法相同的超线性收敛。\(w_k\) 也可用任何列张成 \(A_k^T\) 列空间的 \(Y_k\) 定义。实践中有效,额外约束求值的代价被稳健性和效率的提升抵消。
Watchdog(非单调)策略:偶尔接受使价值函数上升的步("松弛步 relaxed steps"),但若在 \(\hat t\) 步内未获得充分下降,则回到松弛步之前的点做正常步(线搜索强制 \(\ell_1\) 价值函数下降)。松弛步之后的那一步起到类似二阶校正的作用。下面取 \(\hat t=1\)。
算法 18.8(Watchdog):
选 η ∈ (0, 0.5);选 x0, B0;k = 0,S = {0};
repeat
计算 fk, ∇fk, ck, Ak;若满足终止测试:STOP;
计算 SQP 步 pk;x_{k+1} = xk + pk;更新 B_{k+1};
if φ1(x_{k+1}) ≤ φ1(xk) + η Dφ1(xk; pk) (充分下降,正常接受)
k = k+1;S = S ∪ {k};
else (松弛步:暂时接受)
计算 SQP 步 p_{k+1};线搜索求 α_{k+1} 使 φ1(x_{k+2}) ≤ φ1(x_{k+1}) + η α_{k+1} Dφ1(x_{k+1}; p_{k+1});
x_{k+2} = x_{k+1} + α_{k+1} p_{k+1};更新 B_{k+2};
if φ1(x_{k+1}) ≤ φ1(xk) 或 φ1(x_{k+2}) ≤ φ1(xk) + η Dφ1(xk; pk)
k = k+2;S = S ∪ {k};
else if φ1(x_{k+2}) > φ1(xk) (失败:回到 xk 做线搜索)
求 αk 使 φ1(x_{k+3}) ≤ φ1(xk) + η αk Dφ1(xk; pk);x_{k+3} = xk + αk pk;
else (再走一步)
计算 SQP 步 p_{k+2};线搜索得 x_{k+3} = x_{k+2} + α_{k+2} p_{k+2};更新 B_{k+3};
k = k+3;S = S ∪ {k};
end
拟牛顿更新总用紧邻前一步的信息。\(S\) 只用于标记获得充分下降的迭代,至少三分之一的迭代在 \(S\) 中;据此可证局部收敛、足够大的 \(k\) 时 \(\alpha_k=1\)、超线性收敛。实践中常允许上升 \(\hat t=5\) 或 10 步;对将被拒绝的迭代点不更新矩阵可能更好。实现有一定复杂度但值得,实践表现好。相对二阶校正的潜在优势:约束求值可能更少(最好情况下几乎都是完整 SQP 步、很少回退);两者相对优劣尚缺乏足够数值经验。
注记与文献:SQP 由 Wilson [245] 于 1963 年提出,1970 年代发展(Garcia-Palomares & Mangasarian [97]、Han [131,132]、Powell [202,204,205]),综述见 Boggs & Tolle [23];SLP 方法见 Fletcher & Sainz de la Maza [89];SQP 与增广拉格朗日的关系见 Tapia [234]。另一种只依赖 \(x\) 的方法:对约化 KKT 方程
第 18 章习题概括(PDF p.589–591)
- 18.1:证明定理 18.4(牛顿 SQP 二次收敛)。
- 18.2:编程实现算法 18.1,求解 \(\min e^{x_1x_2x_3x_4x_5}-\frac12(x_1^3+x_2^3+1)^2\),s.t. \(\sum x_i^2=10\),\(x_2x_3=5x_4x_5\),\(x_1^3+x_2^3=-1\);起点 \((-1.71,1.59,1.82,-0.763,-0.763)\),解 \(\approx(-1.8,1.7,1.9,-0.8,-0.8)\)。
- 18.3:证明阻尼 BFGS 满足 (18.24)。
- 18.4:(18.30a)+(18.32) 定义下解附近 \(y_k^Ts_k>0\),并说明对乘子估计需要什么假设。
- 18.5:证明 (18.38)。
- 18.6:写出约束 \(x_1^2+x_2^2=1\) 在 \((0,0)\)、\((0,1)\)、\((0.1,0.02)\)、\(-(0.1,0.02)\) 处的线性化(体会线性化退化/不相容)。
- 18.7:编程实现约化 Hessian 方法求解给定问题。
- 18.8:法向问题 (18.47) 总有位于 \(A_k^T\) 值空间的解。
- 18.9:把 (18.51) 改写成 QP。
- 18.10:用 CG 解切向问题时,\(Z_k\) 只以 \(Z_k(Z_k^TZ_k)^{-1}Z_k^Tw\) 形式出现,可改算为 \(w-A_k^T(A_kA_k^T)^{-1}A_kw\)(原文 (18.69) 写的是 \(A_k^T(A_kA_k^T)^{-1}A_kw\),即投影到值空间的部分,零空间投影为 \(w\) 减去它),也可通过解增广系统 \(\begin{bmatrix}I&A_k^T\\A_k&0\end{bmatrix}\) 实现——无需显式计算 \(Z_k\)。
第 18 章本章要点
- SQP = 对 KKT 方程的牛顿法 = 在线性化约束下极小化拉格朗日二次模型;纯牛顿 SQP 二次收敛,乘子即 QP 乘子。
- 不等式:子问题线性化全部约束(IQP),接近解时有效集稳定(定理 18.1);或 EQP(工作集 + 等式子问题,如 SLP-EQP)。
- 步计算:\(LDL^T\) 增广系统、值空间法、零空间法;最小二乘乘子;约化 Hessian 方法去掉交叉项(切向收敛使之合理)。
- Hessian:精确拉格朗日 Hessian、阻尼 BFGS(保证正定)、SR1(信赖域)、增广拉格朗日 Hessian、约化 Hessian BFGS(Coleman–Conn 曲率、更新–跳过规则)。
- 价值函数:\(\ell_1\)(罚权 \(>\|\lambda\|_\infty\) 即下降)与 Fletcher 函数(条件 (18.39));罚参数更新 (18.40)。
- 线性化不相容:SNOPT 弹性松弛 (18.19);信赖域法用约束平移(法向步 + 切向步)、双椭球约束或 S\(\ell_1\)QP。
- 收敛速度:Boggs–Tolle–Wang 条件(投影 Dennis–Moré);约化 Hessian 两步超线性,切向收敛时一步超线性;零空间基需光滑变化。
- Maratos 效应:任何 \(f+h(c)/\mu\) 型价值函数都可能拒绝二次收敛的步;对策为 Fletcher 函数、二阶校正 \(w_k=-A^T(AA^T)^{-1}c(x_k+p_k)\)、watchdog 非单调策略。
与量化交易的关联
- 非线性约束组合优化:当约束本身非线性时——风险预算(各资产风险贡献等于目标值)、波动率目标 \(\sqrt{w^T\Sigma w}=\sigma^*\)、带市场冲击的非线性交易成本、CVaR/下行风险约束——问题不再是 QP,常用 SQP 求解(如 SNOPT、
scipy.optimize.minimize(method='SLSQP'),后者就是带 BFGS 的线搜索 SQP,正对应本章算法 18.3 与阻尼 BFGS)。理解本章能解释 SLSQP 常见报错:线性化约束不相容("Inequality constraints incompatible")、Hessian 近似不正定、线搜索失败(Maratos 效应等)。 - 模型校准:Heston/SABR 等模型参数校准带非线性约束(Feller 条件 \(2\kappa\theta>\sigma^2\))时可用 SQP;精确 Hessian 往往拿不到,拟牛顿 + 阻尼更新是标准选择。
- 最优执行:Almgren–Chriss 等执行轨迹问题在加入非线性冲击或风险约束后是带结构的 NLP;本章指出最优控制类问题适合约化 Hessian SQP(自由度少)或内点法(带状结构)。
- 乘子解读:SQP 返回的 QP 乘子是约束的影子价格,可用于约束敏感性分析(例如放宽风险预算能换来多少收益)。
- 热启动:日频再平衡时,以前一日解与有效集热启动 SQP/QP 子问题,能显著提速——这正是本章强调的 hot-start。
推荐习题
- 18.2:实现局部 SQP,体会牛顿–拉格朗日迭代与二次收敛。
- 18.3:阻尼 BFGS 正定性,拟牛顿 SQP 的核心技巧。
- 18.6:线性化约束不相容的直观认识。
- 18.9:S\(\ell_1\)QP 子问题的 QP 化,理解弹性/罚方法。
- 18.10:不显式构造零空间基的投影 CG,大规模实现的关键。
- 并建议手算例 18.1,亲自验证 Maratos 效应与二阶校正。
附录 A 背景材料(Background Material)(PDF p.592–626)
PDF p.592 为附录标题页。附录汇集全书用到的分析、几何、拓扑与线性代数基础,编写教材时可作为"预备知识"章节的素材。
A.1 分析、几何与拓扑要素(Elements of Analysis, Geometry, Topology)(PDF p.593–609)
\(\mathbb R^n\) 的拓扑:
- 收敛:\(\lim x_k=x\) 指 \(\forall\epsilon>0,\ \exists K\),\(k\ge K\) 时 \(\|x_k-x\|\le\epsilon\)。例:\(x_k=(1-2^{-k},1/k^2)^T\to(1,0)^T\)。
- 聚点 / 极限点(accumulation / limit point):存在子列收敛到 \(\hat x\);等价地,\(\forall\epsilon>0\) 与任意 \(K\),存在 \(k\ge K\) 使 \(\|x_k-\hat x\|\le\epsilon\)。例 (A.1):\((1,1),(\frac12,\frac12),(1,1),(\frac14,\frac14),\dots\) 恰有两个极限点 \((0,0)\)、\((1,1)\);\(x_k=\sin k\) 以 \([-1,1]\) 中每一点为极限点。
- 实数列的 \(\liminf\)/\(\limsup\):最小/最大聚点。例 \(1,\frac12,1,\frac14,1,\frac18,\dots\):\(\liminf=0\),\(\limsup=1\)。
- 有界:\(\|x\|\le M\);开集:每点有含于集合的小球;闭集:任意序列的极限点都在集合内。例:\((0,1)\cup(2,10)\) 开,\([0,1]\cup[2,5]\) 闭,\((0,1]\) 既不开也不闭。
- 内部 \(\mathrm{int}F\)(最大开子集)与闭包 \(\mathrm{cl}F\)(最小闭超集)。例 \(F=(-1,1]\cup[2,4)\):\(\mathrm{cl}F=[-1,1]\cup[2,4]\),\(\mathrm{int}F=(-1,1)\cup(2,4)\)。
- 紧(compact):每个序列都有极限点且极限点都在集合内;\(\mathbb R^n\) 中闭且有界 ⇒ 紧。
- 邻域:含 \(x\) 的开集;开球 \(B(x,\epsilon)=\{y:\|y-x\|<\epsilon\}\)。
- 锥(cone):\(x\in F\Rightarrow\alpha x\in F,\ \forall\alpha\ge0\) (A.2)。例 \(\{x_1>0,x_2\ge0\}\)。
- 仿射包 \(\mathrm{aff}F\)(含 \(F\) 的最小仿射集)(A.3),相对内部 \(\mathrm{ri}F\)(相对于 \(\mathrm{aff}F\) 的内部):\(x\in\mathrm{ri}F\) 若 \(\exists\epsilon\),\((x+\epsilon B)\cap\mathrm{aff}F\subset F\)。例:冰淇淋锥 (A.26) 的 \(\mathrm{aff}=\mathbb R^3\),\(\mathrm{ri}=\{x_3>2\sqrt{x_1^2+x_2^2}\}\);两点集 \(\{(1,0,0),(0,2,0)\}\) 的仿射包为 \(\{(x_1,x_2,0)\}\),相对内部为空;\(\{x_1,x_2\in[0,1],x_3=0\}\) 的相对内部为 \(\{x_1,x_2\in(0,1),x_3=0\}\)。
连续与极限:\(\lim_{x\to x_0}f(x)=f_0\) 的 \(\epsilon\)–\(\delta\) 定义 (A.4);\(x_0\in D\) 且 \(f_0=f(x_0)\) 时连续。例 (A.5):\(f(x)=-x\)(\(x\in[-1,1]\),\(x\ne0\)),其余 \(x\in[-10,10]\) 取 5:在 0 处极限为 0 但 \(f(0)=5\),不连续;在 \(\pm1\) 处极限不存在。单侧极限 (A.6)(A.7):\(\lim_{x\downarrow1}f=5\),\(\lim_{x\uparrow1}f=-1\)(原文写 1,应为 \(-1\))。Lipschitz 连续:\(\|f(x_1)-f(x_0)\|\le M\|x_1-x_0\|\) (A.8);局部 Lipschitz:在某邻域内成立。
导数:一元导数 (A.9)、二阶导 (A.10)、链式法则 (A.11);梯度 (A.12);Hessian(二阶连续可微时对称);多元链式法则 \(\nabla_tf(x(t))=\sum_i\frac{\partial f}{\partial x_i}\nabla x_i(t)\) (A.13)。 方向导数:\(D(f(x);p)=\lim_{\epsilon\to0}\frac{f(x+\epsilon p)-f(x)}\epsilon=\nabla f(x)^Tp\) (A.14),用 \(\phi(\alpha)=f(x+\alpha p)\) 与链式法则证明 (A.15–A.16)。不可微函数也可有方向导数,如
中值定理:一元 \(\phi(\alpha_1)=\phi(\alpha_0)+\phi'(\xi)(\alpha_1-\alpha_0)\) (A.17);多元 \(f(x+p)=f(x)+\nabla f(x+\alpha p)^Tp\),\(\alpha\in(0,1)\) (A.18)。例 A.2:\(f=x_1^3+3x_1x_2^2\),\(x=0\),\(p=(1,2)\),\(f(x+p)=13\),\(\nabla f(x+\alpha p)^Tp=39\alpha^2\),取 \(\alpha=1/\sqrt{13}\) 成立。二阶形式 \(f(x+p)=f(x)+\nabla f(x)^Tp+\frac12p^T\nabla^2f(x+\alpha p)p\) (A.19)(Taylor 定理的一种形式)。
隐函数定理(定理 A.1,参照 Lang [147]):\(h:\mathbb R^n\times\mathbb R^m\to\mathbb R^n\),(i) \(h(z^*,0)=0\);(ii) 在 \((z^*,0)\) 邻域 Lipschitz 连续可微;(iii) \(\nabla_zh(z^*,0)\) 非奇异。则 \(h(z(t),t)=0\) 隐式定义的 \(z(t)\) 在原点附近良定义且 Lipschitz 连续。常用于参数化线性系统 \(M(t)z=g(t)\)(\(M(0)\) 非奇异):\(z(t)=M(t)^{-1}g(t)\) 在 0 附近 Lipschitz 连续。
可行集的几何:可行集 \(\Omega=\{x:c_i(x)=0,\ i\in\mathcal E;\ c_i(x)\ge0,\ i\in\mathcal I\}\) (A.20)。纯几何视角 \(\min f\) s.t. \(x\in\Omega\) (A.21)(\(\Omega\) 闭)可避免冗余、线性相关、不光滑约束带来的理论麻烦和尺度问题,但多数理论、算法、软件假设代数描述;几何工具在最优控制等中有成功应用(Clarke [42]、Dunn [77])。
- 定义 A.1(切向量,Clarke [42, Thm 2.4.5]):\(w\) 是 \(\Omega\) 在 \(x\) 处的切向量,若对所有 \(x_i\to x\)(\(x_i\in\Omega\))和所有 \(t_i\downarrow0\),存在 \(w_i\to w\) 使 \(x_i+t_iw_i\in\Omega\)。切锥 \(T_\Omega(x)\):全体切向量;法锥 \(N_\Omega(x)=\{v:v^Tw\le0,\ \forall w\in T_\Omega(x)\}\) (A.22)。零向量属于两者;书中证明了 \(T\) 确实是锥(令 \(\bar t_i=t_i/\alpha\))。
- 例 1:单个等式 \(\Omega=\{h(x)=0\}\) (A.23),\(\nabla h(x)\ne0\):由 Taylor 展开 \(w^T\nabla h(x)=0\),反向由隐函数定理,故 \(T=\mathrm{Null}(\nabla h(x)^T)\) (A.24),\(N=\mathrm{Range}(\nabla h(x))\) (A.25)。
- 例 2:\(\Omega=\{x_1\ge x_2^2,\ x_2\ge x_1^2\}\)(图 A.1),原点处 \(T=\{w\ge0\}\),\(N=\{v\le0\}\);验证 \((0,1)\) 为切向量:取 \(x_i=(1/i^2,1/i)\),\(t_i=1/i\),\(w_i=(\frac1{3i},1)\)。
- 例 3:冰淇淋锥 \(\Omega=\{x_3\ge2\sqrt{x_1^2+x_2^2}\}\) (A.26)(图 A.2),原点处 \(T=\Omega\),\(N=\{v_3\le-\frac12\sqrt{v_1^2+v_2^2}\}\);用 Cauchy–Schwarz 型不等式验证 \(v^Tw\le0\)。
- 例 4:\(\Omega=\{x_2\ge0,\ x_2\le x_1^3\}\) (A.27)(图 A.3),原点处 \(T=\{(w_1,0):w_1\ge0\}\) (A.28),\(N=\{v:v_1\le0\}\) (A.29);\(\mathrm{ri}\,\Omega=\{x_2>0,x_2<x_1^3\}\),\(\mathrm{ri}\,T=\{(w_1,0):w_1>0\}\),\(\mathrm{ri}\,N=\{v_1<0\}\)。(这是一个 LICQ 不成立、切锥与线性化锥不同的典型例子。)
阶记号(Order Notation):对非负序列,\(\eta_k=O(\nu_k)\):\(|\eta_k|\le C|\nu_k|\)(\(k\) 充分大);\(\eta_k=o(\nu_k)\):\(\eta_k/\nu_k\to0\);\(\eta_k=\Theta(\nu_k)\):\(C_0|\nu_k|\le|\eta_k|\le C_1|\nu_k|\)(等价于互为 \(O\))。函数版本 \(\eta(\nu)=O(\nu)\)、\(o(\nu)\) (A.30)(\(\nu\to0\) 或 \(\infty\) 由上下文定);\(O(1)\) 表有界,\(o(1)\) 表趋零;向量/矩阵用范数。
标量方程求根:牛顿 \(p_k=-F(x_k)/F'(x_k)\),\(x_{k+1}=x_k+p_k\) (A.31)(切线与 \(x\) 轴交点,图 A.4);割线法(Broyden 方法的 \(n=1\) 特例,割线方程完全确定 \(B_k\)):
A.2 线性代数要素(Elements of Linear Algebra)(PDF p.609–626)
向量与矩阵:对称 \(A=A^T\);正定:\(\exists\alpha>0\),\(x^TAx\ge\alpha\|x\|^2\) (A.33);半正定:\(\alpha=0\)。
范数:\(\|x\|_1=\sum|x_i|\),\(\|x\|_2=(x^Tx)^{1/2}\),\(\|x\|_\infty=\max|x_i|\) (A.34);等价性 \(\|x\|_\infty\le\|x\|_2\le\sqrt n\|x\|_\infty\),\(\|x\|_\infty\le\|x\|_1\le n\|x\|_\infty\) (A.35)。范数公理:三角不等式、正定性、齐次性 (A.36)。Euclid 范数的 Cauchy–Schwarz 不等式(原书称 Hölder)\(|x^Tz|\le\|x\|\|z\|\) (A.37),证明:\(\|\alpha x+z\|^2\ge0\) 对 \(\alpha\) 的二次式判别式非正。 诱导矩阵范数 \(\|A\|=\sup\|Ax\|/\|x\|\) (A.38):\(\|A\|_1=\max_j\sum_i|A_{ij}|\)(列和),\(\|A\|_2=\lambda_1(A^TA)^{1/2}\),\(\|A\|_\infty=\max_i\sum_j|A_{ij}|\)(行和)(A.39);Frobenius 范数 \(\|A\|_F=(\sum a_{ij}^2)^{1/2}\) (A.40)(不与任何向量范数相容);\(\|AB\|\le\|A\|\|B\|\) (A.41)。条件数 \(\kappa(A)=\|A\|\|A^{-1}\|\) (A.42)。函数空间范数:\(\|\int_a^bF(t)dt\|\le\int_a^b\|F(t)\|dt\)(牛顿法分析中用)。
子空间:对线性组合封闭。\(\{w:a_i^Tw=0\}\) (A.43) 是子空间,\(\{w:a_i^Tw\ge0\}\) (A.44) 一般不是(例 \(a_1=(1,0)\))。线性无关、张成集、基、维数 \(\dim(S)\)。零空间 \(\mathrm{Null}(A)\)、值空间 \(\mathrm{Range}(A)\);线性代数基本定理 \(\mathrm{Null}(A)\oplus\mathrm{Range}(A^T)=\mathbb R^n\)。
特征值与 SVD:\(Aq=\lambda q\);无零特征值 ⇔ 非奇异;对称矩阵特征值为实数,对称正定则全为正。奇异值分解 \(A=USV^T\) (A.45),\(U,V\) 正交,\(S\) 对角 \(\sigma_1\ge\dots\ge\sigma_{\min(m,n)}\ge0\)。对称矩阵谱分解 \(A=\sum\lambda_iq_iq_i^T=Q\Lambda Q^T\) (A.46);对称正定时谱分解与 SVD 一致,\(\|A\|_2=\sigma_1\) = 最大特征值,\(\|A^{-1}\|_2=1/\sigma_n\),且 \(\sigma_n\|x\|^2\le x^TAx\le\sigma_1\|x\|^2\)。正交矩阵 \(\|Qx\|=\|x\|\),奇异值全为 1。
行列式与迹:\(\mathrm{trace}(A)=\sum A_{ii}=\sum\lambda_i\) (A.47–A.48);\(\det A=\prod\lambda_i\) (A.49);\(\det A=0\) ⇔ 奇异,\(\det AB=\det A\det B\),\(\det A^{-1}=1/\det A\),正交阵 \(\det Q=\pm1\)(用于第 6、8 章分析)。
矩阵分解:
- 置换矩阵:交换单位阵相应行(例:\(5\times5\) 交换第 1、4 行)。
- LU:\(PA=LU\) (A.50);解 \(Ax=b\):\(\tilde b=Pb\),前代 \(Lz=\tilde b\),回代 \(Ux=z\)。稠密时约 \(2n^3/3\) flops(LAPACK [4])。 算法 A.1(带行部分主元的高斯消去):对 \(i=1..n\):在第 \(i\) 列 \(i..n\) 行中找绝对值最大元 \(A_{ji}\);若为 0 则奇异;必要时交换 \(A\)、\(L\) 的第 \(i,j\) 行;\(L_{ii}=1\),\(L_{ki}=A_{ki}/A_{ii}\),\(A_{kl}\leftarrow A_{kl}-L_{ki}A_{il}\);最后 \(U\) 取 \(A\) 的上三角。列主元不增加实际稳定性,但稀疏时可保持因子稀疏。非方阵:\(m>n\) 得 \(L\in\mathbb R^{m\times n}\);\(m<n\) 时对 \(A^T\) 分解 \(PA^T=\begin{bmatrix}L_1\\L_2\end{bmatrix}U\) (A.51),若 \(A\) 行满秩则零空间由 \(M=P^T\begin{bmatrix}L_1^{-T}L_2^T\\-I\end{bmatrix}U^{-T}\) 的列张成 (A.52)。
- Cholesky:对称正定 \(A=LL^T\) (A.53),约 \(n^3/3\) flops,对角为正时唯一。算法 A.2:对 \(i\):\(L_{ii}=\sqrt{A_{ii}}\);\(L_{ji}=A_{ji}/L_{ii}\);\(A_{jk}\leftarrow A_{jk}-L_{ji}L_{ki}\)。只用下三角;无需换行即稳定;对称置换 \(P^TAP=LL^T\) 可改善稀疏性。
- QR:\(AP=QR\) (A.54),\(P\) 列置换,\(Q\) 正交(原文误写为 "\(A\) is \(m\times m\) orthogonal"),\(R\) 上三角。方阵解方程:\(\tilde b=Q^Tb\),回代 \(Rz=\tilde b\),\(x=Pz\)(原文写 \(P^Tz\),按 \(AP=QR\) 应为 \(Pz\))。稠密成本约 \(4m^2n/3\),方阵时约为 LU 的两倍;无论如何选置换,稀疏情形 \(Q,R\) 一般稠密。用 Householder 变换或 Givens 旋转实现(Golub & Van Loan [115, Ch.5])。\(m<n\) 时对 \(A^T\) 做 QR:\(A^TP=[Q_1\ Q_2]R\),\(Q_2\) 的列张成 \(A\) 的零空间,正交规范,优于 (A.52),但可能更贵(尤其稀疏)。\(A\) 列满秩时 \(P^TA^TAP=R^TR\),即 \(R^T\) 是 \(P^TA^TAP\) 的 Cholesky 因子,规定对角为正时 \(R\)、\(Q\) 唯一。\(\|A\|_2=\|R\|_2\),方阵时 \(\|A^{-1}\|=\|R^{-1}\|\),故可用三角阵 \(R\) 估计 \(A\) 的条件数(Golub & Van Loan [115, pp.128–130])。
Sherman–Morrison–Woodbury 公式:秩一更新 \(\bar A=A+ab^T\),
特征值交错定理(定理 A.2,Golub & Van Loan [115, Thm 8.1.8]):\(A\) 对称,特征值 \(\lambda_1\ge\dots\ge\lambda_n\),\(\|z\|=1\),\(A+\alpha zz^T\) 的特征值 \(\xi_1\ge\dots\ge\xi_n\)。\(\alpha>0\) 时 \(\xi_1\ge\lambda_1\ge\xi_2\ge\lambda_2\ge\dots\ge\xi_n\ge\lambda_n\);\(\alpha<0\) 时 \(\lambda_1\ge\xi_1\ge\lambda_2\ge\dots\ge\lambda_n\ge\xi_n\);两种情况都有 \(\sum_i(\xi_i-\lambda_i)=\alpha\) (A.57)。即秩一修正后特征值与原特征值交错,总调整量等于 \(\alpha\)(\(=\pm\|\alpha zz^T\|_2\))。
误差分析与浮点运算:绝对误差 \(\|x-\tilde x\|\),相对误差 \(\|x-\tilde x\|/\|x\|\)(小时分母可换成 \(\|\tilde x\|\))。双精度 64 位,尾数 \(.d_1d_2\dots d_t\),值 \(\sum_{i=1}^td_i2^{-i}\times2^e\);单位舍入(unit roundoff) \(u=2^{-t}\),双精度约 \(10^{-15}\)(实际约 \(1.1\times10^{-16}\))。\(\mathrm{fl}(x)=x(1+\epsilon)\),\(|\epsilon|\le u\) (A.58);\(|\mathrm{fl}(x*y)-x*y|\le u|x*y|\) (A.59)。抵消(cancellation):两个相近的大数相减,结果误差上界 \(u(|x|+|y|+|x-y|)\),相对误差约 \(2u|x|/|x-y|\),可能很大;若两数各有 \(k\) 位精度、前 \(\bar k\) 位相同,差只剩约 \(k-\bar k\) 位有效数字——应尽量避免相近数相减(参见 15.2 节简单消去的数值抵消)。参考 Golub & Van Loan [115, §2.4]、Higham [136]。
条件与稳定性:**条件(conditioning)**是问题本身的性质:数据小扰动是否导致解大变化。例:\(\begin{bmatrix}1&2\\1&1\end{bmatrix}x=\begin{bmatrix}3\\2\end{bmatrix}\),解 \((1,1)\),右端第一元改为 3.00001 解变为 \((0.99999,1.00001)\),良态;\(\begin{bmatrix}1.00001&1\\1&1\end{bmatrix}x=\begin{bmatrix}2.00001\\2\end{bmatrix}\),解 \((1,1)\),右端改为 2 后解变为 \((0,2)\),病态。线性系统扰动界
参考文献(References)(PDF p.627–639)
共 259 条,按作者字母排序([1] Ahuja–Magnanti–Orlin《Network Flows》到 [259] Zhu–Byrd–Lu–Nocedal《L-BFGS-B》)。本块各章引用的关键文献包括:Bertsekas [8]《Constrained Optimization and Lagrange Multiplier Methods》、[9]《Nonlinear Programming》;Boggs & Tolle [23](SQP 综述,Acta Numerica 1996);Boggs–Tolle–Wang [24](拟牛顿约束优化局部收敛);Byrd–Hribar–Nocedal [34](大规模内点算法);Chamberlain 等 [40](watchdog 技术);Fiacco & McCormick [79](SUMT,障碍法经典);Fletcher [83]《Practical Methods of Optimization》;Freund & Nachtigal [94](QMR);Gill–Murray–Saunders 等 [108](SNOPT)、[111](NPSOL)、[112](约束非线性规划综述);Golub & Van Loan [115]《Matrix Computations》;Higham [136]《Accuracy and Stability of Numerical Algorithms》;Markowitz [157]《Portfolio Selection》(J. Finance 1952)、[159] 专著;Murtagh & Saunders [175](MINOS);Murty & Kabadi [176](非凸 QP 的 NP-hard 性);Paige & Saunders [188](LSQR);Powell 系列 [195]–[209];Conn–Gould–Toint [53](LANCELOT);M. Wright [250]–[252]、S. Wright [253]–[256](内点法、模型预测控制)。另有自动微分(Bischof、Griewank 等)、最小二乘(Björck、Lawson–Hanson)、随机规划(Birge–Louveaux、Kall–Wallace)、LP 复杂性(Khachiyan、Karmarkar、Nesterov–Nemirovskii)等前面各章引用的文献。
索引(Index)(PDF p.640–651)
按字母排序的全书主题索引(原书页码 619–634 左右),从 "Accumulation point"、"Active set"、"Affine scaling" 到 "Watchdog technique"、"Weakly active"、"Wolfe conditions"(含强 Wolfe 条件、尺度不变性)、"Zoutendijk condition"。条目覆盖无约束优化(线搜索、信赖域子问题的精确/近似解、hard case、Steihaug 方法、二维子空间极小化、拟牛顿/有限内存方法)、约束优化(二阶条件、势函数下降算法、预测步、QP 内点法等)以及数值线性代数概念(unit roundoff 等)。编写教材时可用于术语对照,无需单独成章。
本块总体说明
- 覆盖 PDF p.445–651:第 15 章后半(15.2 变量消去中段起、15.3 价值函数、习题)、第 16 章二次规划全章、第 17 章罚函数/障碍/增广拉格朗日全章、第 18 章 SQP 全章、附录 A、参考文献、索引。
- 文本为 PDF 自动抽取,矩阵与公式大量错位,笔记中的公式均按上下文还原;原文中发现的若干笔误(符号、下标、"linearly dependent/independent" 等)已在相应位置注明。
- 章节结构与第 1 版一致(第 17 章含对数障碍法与 SLC 方法;第 18 章含约化 Hessian SQP、Maratos 效应、watchdog),与 Springer 第 2 版编号存在差异,编写者引用时请以内容为准。