非线性规划中的序列二次规划-乘子法-积极集-过滤器-信赖域混合算法基础题
字数 2111 2025-11-06 12:40:15
非线性规划中的序列二次规划-乘子法-积极集-过滤器-信赖域混合算法基础题
题目描述
考虑非线性规划问题:
最小化 \(f(x) = (x_1 - 2)^2 + (x_2 - 1)^2\)
约束条件:
\(g_1(x) = x_1^2 - x_2 \leq 0\)
\(g_2(x) = x_1 + x_2 - 2 \leq 0\)
初始点 \(x^{(0)} = (0, 0)\),要求使用序列二次规划(SQP)框架,结合乘子法处理约束、积极集识别有效约束、过滤器确保收敛性、信赖域控制步长,逐步求解该问题。
解题过程
-
算法框架概述
- 混合算法核心:在SQP迭代中,每步构建二次规划(QP)子问题,用乘子法增强拉格朗日函数,积极集识别活动约束,过滤器判断是否接受新迭代点,信赖域限制步长范围。
- 优势:乘子法改善约束处理,积极集降低计算量,过滤器避免罚参数调整,信赖域增强稳定性。
-
初始化参数
- 设当前点 \(x^{(0)} = (0, 0)\),乘子估计 \(\lambda^{(0)} = (0, 0)\),信赖域半径 \(\Delta_0 = 0.5\),过滤器为空集,容忍误差 \(\epsilon = 10^{-6}\)。
- 计算初始目标值 \(f(x^{(0)}) = 4\),约束违反度 \(\theta^{(0)} = \max(0, g_1(x^{(0)}), g_2(x^{(0)})) = 0\)(因 \(g_1(0,0)=0, g_2(0,0)=-2\),违反度为0)。
-
构建QP子问题
- 拉格朗日函数:\(L(x, \lambda) = f(x) + \lambda_1 g_1(x) + \lambda_2 g_2(x)\)。
- 在当前点 \(x^{(k)}\),QP子问题为:
最小化 \(\nabla f(x^{(k)})^T d + \frac{1}{2} d^T B_k d\)
约束:\(\nabla g_i(x^{(k)})^T d + g_i(x^{(k)}) \leq 0 \quad (i=1,2)\),
其中 \(d = x - x^{(k)}\),\(B_k\) 为拉格朗日函数Hessian近似(初始用单位矩阵)。 - 第0次迭代:
\(\nabla f(0,0) = (-4, -2)\),\(\nabla g_1(0,0) = (0, -1)\),\(\nabla g_2(0,0) = (1, 1)\),
QP问题:最小化 \(-4d_1 - 2d_2 + \frac{1}{2} d^T I d\),约束 \(-d_2 \leq 0\)(因 \(g_1=0\)),\(d_1 + d_2 - 2 \leq 0\)(因 \(g_2=-2\))。
-
求解QP子问题(结合积极集与乘子法)
- 识别积极约束:在 \(x^{(0)}\),\(g_1\) 为等式约束(边界活动),\(g_2\) 为非活动约束。
- 求解简化QP:仅保留活动约束 \(-d_2 \leq 0\),得解 \(d^{(0)} = (4, 0)\)(无约束最小化二次函数结果)。
- 乘子更新:解QP得乘子估计 \(\lambda^{(1)}\),用于下一步Hessian修正。
-
过滤器与信赖域判断
- 候选点 \(x_c = x^{(0)} + d^{(0)} = (4, 0)\),计算 \(f(x_c) = 4\),\(\theta(x_c) = \max(0, g_1(4,0)=16, g_2(4,0)=2) = 16\)。
- 过滤器规则:若 \((f(x_c), \theta(x_c))\) 不被过滤集中点支配(即非劣解),则接受;否则缩小信赖域。
- 此处 \(\theta\) 增大,需检查:若 \(f\) 或 \(\theta\) 下降足够,可接受。这里违反度大增,触发信赖域调整。
- 缩小 \(\Delta_0\) 至 0.2,重新求解QP(限制 \(\|d\| \leq 0.2\)),得新步长 \(d^{(0)} = (0.2, 0)\),候选点 \(x_c = (0.2, 0)\)。
-
迭代收敛
- 重复步骤3-5,更新 \(x^{(k)}\)、乘子、过滤器集和信赖域半径。
- 终止条件:步长 \(\|d^{(k)}\| < \epsilon\) 且约束违反度 \(\theta < \epsilon\)。
- 最终逼近解 \(x^* \approx (1, 1)\),对应 \(f^* = 1\),约束满足( \(g_1(1,1)=0, g_2(1,1)=0\))。
关键点
- 乘子法改善QP子问题的约束逼近精度。
- 积极集减少有效约束数,提升计算效率。
- 过滤器避免传统罚函数的参数敏感问题。
- 信赖域确保迭代稳定性,尤其在非凸区域。