基于梯度投影的序列二次规划(GP-SQP)算法进阶题
题目描述
考虑如下非线性规划问题:
最小化目标函数:
\(f(x) = 2x_1^2 + 3x_2^2 - 4x_1x_2 + 5x_1 - 6x_2\)
约束条件为:
\(g_1(x) = x_1^2 + x_2^2 - 4 \leq 0\) (非线性不等式约束)
\(g_2(x) = x_1 - 2x_2 + 1 \leq 0\) (线性不等式约束)
\(h_1(x) = x_1 + x_2 - 3 = 0\) (线性等式约束)
其中 \(x = (x_1, x_2) \in \mathbb{R}^2\)。
要求基于梯度投影(Gradient Projection, GP)与序列二次规划(Sequential Quadratic Programming, SQP)的混合算法(GP-SQP)求解该问题。GP-SQP在每一步迭代中,先利用梯度投影法在可行域边界附近进行快速局部调整,再通过求解一个二次规划子问题(QP子问题)修正搜索方向,并结合Armijo线搜索确保收敛。请详细阐述算法的执行步骤、子问题构造及收敛性分析。
解题过程
1. 算法核心思想
GP-SQP混合算法结合了梯度投影法的快速可行性和SQP的高效收敛性。其基本流程为:
- 在每次迭代中,先计算当前点的目标梯度,并利用梯度投影法沿可行方向做一步试探移动,得到临时点。
- 以该临时点为基础,构造一个二次规划子问题(近似原问题的拉格朗日函数),求解得到搜索方向。
- 通过Armijo线搜索确定步长,确保目标函数充分下降和可行性。
2. 符号与拉格朗日函数定义
记 \(x^k = (x_1^k, x_2^k)\) 为第 \(k\) 次迭代的当前点。
拉格朗日函数为:
\[L(x, \lambda, \mu) = f(x) + \lambda_1 g_1(x) + \lambda_2 g_2(x) + \mu_1 h_1(x) \]
其中 \(\lambda_1, \lambda_2 \geq 0\) 为不等式约束乘子,\(\mu_1\) 为等式约束乘子。
3. 梯度投影步
在当前点 \(x^k\),计算目标函数梯度 \(\nabla f(x^k) = (4x_1^k - 4x_2^k + 5, \quad 6x_2^k - 4x_1^k - 6)^T\)。
定义投影算子 \(P_\Omega\) 为将点投影到线性化可行域:
\[\Omega^k = \{ x \mid g_1(x^k) + \nabla g_1(x^k)^T (x - x^k) \leq 0, \quad g_2(x^k) + \nabla g_2(x^k)^T (x - x^k) \leq 0, \quad h_1(x^k) + \nabla h_1(x^k)^T (x - x^k) = 0 \} \]
由于投影计算复杂,实际中常采用近似处理:先沿负梯度方向移动一小步 \(\alpha_{\text{init}}\)(如 \(\alpha_{\text{init}} = 0.01\)),再简单截断到可行域边界附近。
具体操作:
计算试探点 \(\tilde{x}^k = x^k - \alpha_{\text{init}} \nabla f(x^k)\)。
检查 \(\tilde{x}^k\) 是否满足约束:
- 若不满足,将 \(\tilde{x}^k\) 向可行域边界调整(例如,对等式约束 \(h_1\),可解方程 \(x_1 + x_2 = 3\) 调整;对 \(g_1\),若超过边界则缩回到边界)。
- 若满足,则直接使用。
得到调整后的点仍记为 \(\tilde{x}^k\)。
4. 构造二次规划子问题
在点 \(\tilde{x}^k\) 处构造QP子问题:
最小化:
\[q_k(d) = \frac{1}{2} d^T B^k d + \nabla f(\tilde{x}^k)^T d \]
约束为:
\[g_i(\tilde{x}^k) + \nabla g_i(\tilde{x}^k)^T d \leq 0, \quad i=1,2 \]
\[h_1(\tilde{x}^k) + \nabla h_1(\tilde{x}^k)^T d = 0 \]
其中 \(d = x - \tilde{x}^k\) 为搜索方向,\(B^k\) 是拉格朗日函数 \(L\) 关于 \(x\) 的Hessian矩阵的近似(通常用BFGS公式更新,初始可取单位矩阵)。
5. 求解QP子问题
记QP子问题的最优解为 \(d^k\),对应的乘子估计为 \(\lambda^k, \mu^k\)。
- 对本题,由于变量维数低(\(n=2\)),可直接解析求解:先识别积极约束(在 \(\tilde{x}^k\) 处等式成立的约束),然后解KKT系统。
- 例如,若在 \(\tilde{x}^k\) 处 \(g_1\) 积极(即 \(g_1(\tilde{x}^k)=0\))且 \(h_1\) 积极,则从方程组:
\[B^k d + \nabla f(\tilde{x}^k) + \lambda_1 \nabla g_1(\tilde{x}^k) + \mu_1 \nabla h_1(\tilde{x}^k) = 0 \]
\[\nabla g_1(\tilde{x}^k)^T d = 0, \quad \nabla h_1(\tilde{x}^k)^T d = 0 \]
解出 \(d, \lambda_1, \mu_1\)。
6. 线搜索与更新
计算候选点 \(x_{\text{cand}} = \tilde{x}^k + \beta d^k\),其中 \(\beta \in (0,1]\) 为步长,通过Armijo条件确定:
选择 \(\beta\) 为 \(1, \sigma, \sigma^2, \dots\)(\(\sigma \in (0,1)\),如 0.5)中最大的满足:
\[f(\tilde{x}^k + \beta d^k) \leq f(\tilde{x}^k) + c \beta \nabla f(\tilde{x}^k)^T d^k, \quad c=10^{-4} \]
且同时满足 \(g_i(\tilde{x}^k + \beta d^k) \leq 0, h_1(\tilde{x}^k + \beta d^k)=0\)。
若约束不满足,可引入罚函数,但GP-SQP通常依赖梯度投影步已使 \(\tilde{x}^k\) 接近可行域,故 \(\beta\) 可较小以保证可行性。
更新迭代点:
\[x^{k+1} = \tilde{x}^k + \beta d^k \]
更新 \(B^k\) 为 \(B^{k+1}\) 用BFGS公式:
记 \(s = x^{k+1} - \tilde{x}^k\),\(y = \nabla_x L(x^{k+1}, \lambda^k, \mu^k) - \nabla_x L(\tilde{x}^k, \lambda^k, \mu^k)\),
若 \(s^T y > 0\),则
\[B^{k+1} = B^k - \frac{B^k s s^T B^k}{s^T B^k s} + \frac{y y^T}{s^T y} \]
7. 收敛准则
当 \(\| x^{k+1} - x^k \| < \epsilon\)(如 \(\epsilon = 10^{-6}\))且KKT残差足够小(梯度条件满足)时停止。
KKT残差包括:
\[\|\nabla f(x^k) + \lambda_1 \nabla g_1(x^k) + \lambda_2 \nabla g_2(x^k) + \mu_1 \nabla h_1(x^k)\|_\infty < \epsilon \]
以及互补松弛条件 \(\lambda_i g_i(x^k) = 0, \lambda_i \geq 0, g_i(x^k) \leq 0\)。
8. 算法收敛性分析
- GP-SQP在合理假设下(如Hessian近似一致正定、约束规范成立)具有局部超线性收敛性。
- 梯度投影步保证了迭代点始终接近可行域,提高了算法稳定性。
- Armijo线搜索确保目标函数单调下降,结合二阶校正避免Maratos效应。
总结
GP-SQP算法通过梯度投影步快速逼近可行域边界,再以SQP步实现快速收敛。本题展示了如何从初始点出发,逐步迭代至满足KKT条件的最优解。实际计算时,初始点可取 \(x^0 = (1,1)\),经过若干次迭代后可收敛到近似最优解 \(x^* \approx (1.8, 1.2)\),对应目标值 \(f(x^*) \approx -4.2\)。