返回学习路线
约束数值优化:同一问题的六条求解路线
任务与验收目标
一个二维设计变量 希望靠近目标 ,但总资源最多为二,两个变量都不能为负:
请分别执行活跃集、二次罚、精确 ℓ1 罚、增广乘子、对数障碍和原始—对偶内点路线。所有方法都对照同一个最优点、同一组约束符号,并说明自己的有限轮输出有什么证书。最后,把线性资源边界替换成圆约束,检验一次 SQP;再用一个非凸四次目标检查信赖域的拒绝规则及截断 CG 的边界。
完成任务的标准是:能列出真正求解的子问题,复算每个候选与参数,分别核验原始可行性、驻点、乘子符号和互补量。目标值较小却不可行的点不算成功;内层方程解得很准也不能替代原问题证书。
先建立所有路线共用的最优答案
取
松弛为 ,故可行; 且 。同时
驻点成立,严格凸性使它成为唯一全局解。还可以完全展开:对任意可行 ,
这个恒等式是无需任何求解器的独立证书。它也说明答案在斜边内部,枚举三个顶点不能解决这项二次规划。
路线一:活跃集在可行域里找正确的面
沿活跃集法公理库二次规划的活跃集法Active-set quadratic programming · Working-set method从可行点出发,在工作约束确定的面内求二次下降方向,再用阻挡步长和乘子符号增删约束。,从 和工作集 开始。工作方向由 决定。
| 当前点 |
工作集 |
方向或乘子 |
本轮动作 |
|
|
|
删除约束一 |
|
|
|
比值一,到 并加入约束三 |
|
|
|
删除约束二 |
|
|
|
完整步到 |
|
|
|
KKT 终止 |
移动时目标依次是 ,始终原始可行。两次删除只改变工作假设,不改变点的位置。最终乘子非负才允许终止,不能在第一个零方向就退出。
路线二:二次罚从不可行侧逼近
对全部三条约束加入正部平方罚:
候选将落在 区域,所以只需考虑最后一项。令 ,驻点给出 ,于是
解出的点确实满足假设的三个符号,所以也是整个严格凸罚目标的唯一最小点。罚乘子估计为 ,原驻点残差精确为零;原始违约却为 。局部 Hessian 特征值是一与 。
|
|
最大违约 |
Hessian 条件数 |
|
|
|
|
|
|
|
|
|
|
|
|
这里 。目标比最优值还低并不矛盾,因为点在可行域之外。二次罚公理库二次罚函数法与病态性Quadratic penalty method将等式违背的平方加入目标,通过增大罚参数逼近可行解,并量化有限罚参数的偏差与内层 Hessian 的病态性。的验收要看违约与驻点两项,不能按原目标大小排出“比最优还好”的结果。
路线三:有限 ℓ1 罚率就得到原解
令
最优乘子的最大分量是 。由精确罚定理公理库精确 ℓ1 罚函数Exact l1 penalty以约束违背的绝对值和正部构造有限参数即可精确的罚函数,并说明乘子阈值、非光滑最优性与局部全局边界。,任取 ,例如一,罚目标的唯一最小点就是 。
也能直接核验尖角。 的前两条约束严格松弛,罚次梯度为零;第三条在零处允许取 、。选 ,恰好抵消 ,故零在罚目标次微分中。严格凸性保证唯一性。
作为边界对照,取 ,不可行区域的唯一驻点是 ,违约为 ,仍未恢复原解。有限精确罚率不意味着粗糙的内层近似也会恰好可行;它描述的是精确最小点。
路线四:乘子保存历史,罚率保持一
不等式可写成 。对这些等式使用增广乘子法公理库增广 Lagrange 乘子法Augmented Lagrangian method · Method of multipliers联合最小化增广目标后累加约束违背,借对偶近端机制在固定罚参数下改善可行性,并分别检查内层与外层误差。,再把 精确消去,就得到不等式增广函数
以及投影乘子更新 。消元来自在 上最小化一个关于 的平方;因此不等式乘子自然保持非负。
取 。本例每个联合最小点都满足 ,前两条罚项与乘子为零。只需保存第三个乘子 :
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
内层 Hessian 始终具有特征值一和三。与路线二相比,减少违约靠的是乘子变化,计算矩阵的曲率比没有不断上升。有限轮点仍不可行,虽然每轮新乘子下的驻点残差已为零。
路线五:障碍点始终留在三角形内部
取
给每个 用阻尼 Newton 求中心点,初值 ,先保三项松弛严格正,再作 Armijo 回溯。若 ,梯度和 Hessian 分别为
逆与幂在这里逐分量计算。脚本从原式组装它们,独立于下一节的原始—对偶求解。
|
中心点 |
原目标 |
精确中心的间隙 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
定义 ,在中心点就有 。本 QP 的对偶函数可直接配方求出:
于是 。表中的浮点中心另行检查驻点残差,最大约 ,并重算真实目标差,不能只把理论 填入验收栏。中心路径公理库对数障碍函数与中心路径Logarithmic barrier · Central path在严格可行域中加入对数障碍,构造扰动互补条件,并由中心点的对偶证书得到可计算的目标误差界。给的是原始上界与对偶下界,它和不可行罚点拥有不同的证书。
路线六:原始—对偶内点直接同时修正三组条件
本节仍解同一个 QP,采用 、。从
出发,已经满足 与 ,且松弛和乘子均严格正。间隙为三,平均互补量 。
令 ,每轮解
其中 。第一轮得到
乘子第一项最先触零,边界比值为 。取边界比值的 ,即 ,新点为
原始等式与驻点仍精确成立,所有需要保正的分量均正。实际间隙不是预设的 ,而是
脚本继续使用同一中心化与保正规则,并在必要时回溯到实际间隙满足 。本例得到:
| 轮数 |
|
原始目标 |
对偶下界 |
实际间隙 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
每一轮都重算两组等式残差、正性和 ,故最后一行确实认证原目标误差小于 。这与不可行初值的 LP 算例公理库原始—对偶内点法Primal-dual interior-point method · Primal-dual path following对原始可行性、对偶可行性与扰动互补条件联合取 Newton 步,以保正步长推进,并区分互补量与真正的可行对偶间隙。不同:若原始或驻点等式不满足,互补量就不能直接代替上下界之差。
曲线约束加试:SQP 的线性化误差
改求 ,约束 。在 ,Lagrangian Hessian 为 ,QP 给出
由单位圆的展开,。完整步虽然使 降到 ,在 下却从 升到 。半步给出 ,真实违约为 ,,通过系数 的 Armijo 条件。
验收时应同时写出“QP 线性化误差为零”和“真实约束误差为 ”。前者不能覆盖后者。SQP公理库序列二次规划Sequential quadratic programming · SQP将非线性约束线性化,以 Lagrangian 的曲率构造局部 QP,并通过乘子更新和罚函数验收控制真实约束误差。下一轮重新线性化,正是为了继续处理这份曲率造成的偏离。
非凸加试:信赖域与截断 CG 各自负责什么
取 ,在零点使用模型 。半径二时最优候选 的预测下降是十,真实下降却为负六,因此拒绝并缩半径;半径一时 的预测下降三、实际下降二,故比值为 ,可以接受。外层公理库信赖域法的接受与半径更新Trust-region method用实际下降与预测下降的比值接受或拒绝模型步,并调整信赖半径,使局部二次模型服务于真实目标下降。检验的是真实函数,不是模型自己是否解得漂亮。
对内层不定模型 ,完整子问题公理库信赖域二次子问题Trust-region subproblem在有限半径内最小化可能不定的二次模型,以半正定移位和互补关系认证全局解,并处理奇异的困难情形。的解为 ,模型值 。零启动截断 CG公理库Steihaug 截断共轭梯度Steihaug–Toint truncated CG · Truncated conjugate gradient trust-region method只用对称矩阵的向量积沿 CG 路径降低二次模型,并在负曲率、信赖边界或小模型残差处给出不同退出状态。只探索第二坐标轴,返回 、值 。它有 Cauchy 下降,却没有发现未被梯度激发的负曲率方向。
因此三份结论要各自验收:内层是否达到所需下降,外层是否真的降低目标,最终是否达到要求的一阶或二阶条件。一个局部数值方法返回的驻点,不能靠“全局化”三个字变成非凸全局最优解。
复现与逐项验收
下载 Python 核验脚本,需要 Python 3 与 NumPy。运行后生成逐项结果 JSON;查看本次核验结果。脚本既执行活跃集和内点迭代,也独立核对闭式罚解、乘子递推、SQP 有理数和信赖域证书。
- 活跃集:五次状态检查后到达 ,全过程可行,终止乘子非负
- 二次罚:有限参数有残差 ,同时报告条件数
- 精确罚:给出乘子阈值、尖角次梯度和低于阈值的不可行对照
- 增广乘子:固定罚率一,残差按 减少,明确有限轮仍有违约
- 障碍:所有松弛正,中心残差小,使用实际对偶值复核
- 原始—对偶:三组条件分别检查,最后实际间隙小于
- SQP 与信赖域:验收基于真实函数与真实约束,区分模型解、允许步及最终证书
进一步阅读