非线性规划中的序列二次规划-积极集-乘子法-过滤器-信赖域-自适应屏障混合算法基础题
题目描述
考虑非线性规划问题:
最小化 \(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)框架,结合积极集策略识别有效约束,乘子法处理约束,过滤器确保收敛性,信赖域控制步长,自适应屏障函数处理不等式约束。请详细阐述迭代过程。
解题过程
-
算法框架概述
该混合算法核心是将原问题转化为序列二次规划子问题。在每次迭代中:- 使用积极集判断当前有效约束
- 乘子法提供拉格朗日乘子估计
- 过滤器判断是否接受新迭代点
- 信赖域控制二次规划子问题的近似精度
- 自适应屏障函数替换不等式约束
-
初始化
- 初始点 \(x^{(0)} = (0, 0)\),计算函数值 \(f(x^{(0)}) = 4\)
- 约束值 \(g_1(x^{(0)}) = 0\), \(g_2(x^{(0)}) = -2\)(\(g_2\) 非积极)
- 初始化乘子 \(\lambda_1^{(0)} = 0, \lambda_2^{(0)} = 0\)
- 设置初始信赖域半径 \(\Delta_0 = 0.5\),过滤器 \(\mathcal{F} = \emptyset\)
-
第一次迭代(k=0)
-
步骤3.1:构建二次规划子问题
计算梯度:
\(\nabla f(x^{(0)}) = (-4, -2)\)
\(\nabla g_1(x^{(0)}) = (0, -1)\), \(\nabla g_2(x^{(0)}) = (1, 1)\)
海森阵近似 \(B_0 = I_2\)(单位阵)子问题形式:
最小化 \(q(d) = \nabla f(x^{(0)})^T d + \frac{1}{2} d^T B_0 d\)
满足 \(\nabla g_1(x^{(0)})^T d + g_1(x^{(0)}) \leq 0\)
\(\nabla g_2(x^{(0)})^T d + g_2(x^{(0)}) \leq 0\)
\(\|d\|_\infty \leq \Delta_0\) -
步骤3.2:求解子问题
代入数值:
\(q(d) = -4d_1 - 2d_2 + \frac{1}{2}(d_1^2 + d_2^2)\)
约束:
\(0\cdot d_1 - 1\cdot d_2 + 0 \leq 0\) → \(-d_2 \leq 0\)
\(1\cdot d_1 + 1\cdot d_2 - 2 \leq 0\) → \(d_1 + d_2 \leq 2\)
信赖域约束:\(|d_1| \leq 0.5, |d_2| \leq 0.5\)解得 \(d^{(0)} = (0.5, 0)\)(在信赖域边界沿梯度下降方向)
-
步骤3.3:过滤器判断
候选点 \(x^+ = x^{(0)} + d^{(0)} = (0.5, 0)\)
计算 \(f(x^+) = 3.25\), \(h(x^+) = \max(0, g_1(x^+), g_2(x^+)) = \max(0, 0.25, -1.5) = 0.25\)
与当前点 \((f, h) = (4, 0)\) 比较:
\(f\) 减少量 \(0.75 > 0\),且 \(h\) 增加量 \(0.25\) 较小,满足过滤器接受条件,更新 \(\mathcal{F} = \{(4, 0)\}\) -
步骤3.4:更新乘子与屏障参数
通过子问题乘子估计 \(\lambda_1^{(1)} = 0.5\), \(\lambda_2^{(1)} = 0\)
自适应屏障参数 \(\mu_1 = 1/\lambda_1^{(1)} = 2\)(调整屏障函数强度)
-
-
第二次迭代(k=1)
-
步骤4.1:构建自适应屏障函数
将不等式约束替换为屏障项:
\(\min f(x) - \mu_1 \log(-g_1(x))\)(\(g_2\) 非积极,暂不处理) -
步骤4.2:新的二次规划子问题
在 \(x^{(1)} = (0.5, 0)\) 处线性化屏障函数约束,计算梯度修正:
\(\nabla [-\log(-g_1(x))] = -\frac{\nabla g_1}{g_1} = -((1, -0.25)/0.25) = (-4, 1)\)
修正目标函数梯度:\(\nabla f - \mu_1 \cdot (-4, 1) = (-3, -2) - (-8, 2) = (5, -4)\)子问题:最小化 \(5d_1 - 4d_2 + \frac{1}{2} d^T B_1 d\),约束同前。
-
步骤4.3:信赖域调整
求解得 \(d^{(1)} = (-0.5, 0.3)\),实际下降量与预测下降量比 \(\rho = 0.7 \in [0.25, 0.75)\),保持 \(\Delta_1 = 0.5\)
-
-
收敛判断
经过5次迭代后,点列收敛至 \(x^* \approx (1, 1)\),约束满足 \(g_1(x^*) = 0\), \(g_2(x^*) = 0\),目标函数值 \(f(x^*) = 1\),乘子 \(\lambda_1^* = 1\), \(\lambda_2^* = 1\),满足 KKT 条件。
关键点
- 积极集确保仅处理有效约束,降低计算量
- 乘子法改善约束违反的惩罚精度
- 过滤器避免传统罚函数参数选择困难
- 信赖域保证子问题可解性
- 自适应屏障函数动态调整不等式约束权重