非线性规划中的序列二次规划-自适应步长梯度投影混合算法基础题
题目描述
考虑如下非线性规划问题:
\[\begin{aligned} \min_{x \in \mathbb{R}^n} \quad & f(x) \\ \text{s.t.} \quad & g_i(x) \le 0, \quad i=1,\dots,m \\ & h_j(x) = 0, \quad j=1,\dots,p \end{aligned} \]
其中,目标函数 \(f: \mathbb{R}^n \to \mathbb{R}\) 是连续可微的,约束函数 \(g_i, h_j\) 也是连续可微的。该算法结合了序列二次规划(SQP)框架与自适应步长梯度投影法,在每一步迭代中,先通过SQP子问题生成搜索方向,再沿该方向利用自适应步长梯度投影法确保新迭代点满足约束可行性,并提升收敛效率。要求:详细阐述该混合算法的迭代步骤、自适应步长策略的设计原理,并解释其在处理中等规模非线性约束问题时的优势。
解题过程讲解
1. 算法框架概述
该混合算法交替执行两个核心阶段:
- SQP方向生成阶段:在当前点 \(x_k\) 处构造二次规划子问题,求解得到搜索方向 \(d_k\)。
- 自适应梯度投影阶段:沿方向 \(d_k\) 进行投影梯度式移动,步长通过自适应策略调整,确保新点 \(x_{k+1}\) 在约束违反与目标下降间取得平衡。
整体流程可概括为:
- 初始化 \(x_0\),设定容忍误差 \(\epsilon > 0\),初始步长参数 \(\alpha_0 > 0\)。
- 当不满足收敛条件时循环:
a. 求解SQP子问题得方向 \(d_k\)。
b. 用自适应步长梯度投影法计算 \(x_{k+1} = \mathcal{P}_\Omega(x_k + \alpha_k d_k)\),其中 \(\mathcal{P}_\Omega\) 是到可行域 \(\Omega\) 的投影。
c. 更新自适应步长 \(\alpha_k\) 和迭代信息。
2. SQP方向生成
在点 \(x_k\) 处,利用一阶泰勒展开近似约束,用二阶信息近似目标,得到二次规划子问题:
\[\begin{aligned} \min_{d \in \mathbb{R}^n} \quad & \nabla f(x_k)^\top d + \frac{1}{2} d^\top B_k d \\ \text{s.t.} \quad & g_i(x_k) + \nabla g_i(x_k)^\top d \le 0, \quad i=1,\dots,m \\ & h_j(x_k) + \nabla h_j(x_k)^\top d = 0, \quad j=1,\dots,p \end{aligned} \]
其中 \(B_k\) 是Hessian矩阵 \(\nabla^2 L(x_k, \lambda_k, \mu_k)\) 或其拟牛顿近似(如BFGS更新),\(L\) 为拉格朗日函数。求解该QP得方向 \(d_k\) 及对应的乘子估计 \((\lambda_{k+1}, \mu_{k+1})\)。
3. 自适应步长梯度投影
得到方向 \(d_k\) 后,不直接采用 \(x_k + d_k\),而是沿 \(d_k\) 进行梯度投影迭代:
\[y^{(0)} = x_k, \quad y^{(t+1)} = \mathcal{P}_\Omega\left( y^{(t)} - \beta_t \nabla \phi(y^{(t)}) \right) \]
其中 \(\phi(y) = f(y) + \frac{\sigma}{2} \|y - (x_k + d_k)\|^2\),\(\sigma > 0\) 是罚参数。这里将 \(d_k\) 隐含在二次罚项中,使 \(y\) 趋向于 \(x_k + d_k\) 同时降低目标值。迭代至 \(t = T\)(如达到子步迭代上限)得到候选点 \(\tilde{x}_{k+1}\)。
关键在步长 \(\beta_t\) 的自适应选择:
- 初始设 \(\beta_t = \alpha_k\)(外步长参数)。
- 计算比值 \(r_t = \frac{\phi(y^{(t)}) - \phi(y^{(t+1)})}{\|y^{(t)} - y^{(t+1)}\|^2}\)。
- 若 \(r_t > \eta_1\)(如 \(\eta_1=0.2\)),则扩大步长:\(\beta_{t+1} = \min(\gamma_1 \beta_t, \beta_{\max})\);
- 若 \(r_t < \eta_2\)(如 \(\eta_2=0.05\)),则缩小步长:\(\beta_{t+1} = \max(\gamma_2 \beta_t, \beta_{\min})\);
- 否则保持 \(\beta_{t+1} = \beta_t\)。
此策略根据局部下降效果调整步长,平衡收敛速度与稳定性。
4. 外迭代更新与收敛判断
从 \(x_k\) 经投影子迭代得 \(\tilde{x}_{k+1}\) 后,计算实际下降量:
\[\Delta f_k = f(x_k) - f(\tilde{x}_{k+1}) \]
以及约束违反度:
\[v_k = \sum_i \max(g_i(\tilde{x}_{k+1}),0) + \sum_j |h_j(\tilde{x}_{k+1})| \]
若 \(\Delta f_k \ge \rho v_k\)(\(\rho>0\) 为权衡参数),则接受 \(x_{k+1} = \tilde{x}_{k+1}\),否则缩短全局步长 \(\alpha_k\) 重新进行投影子迭代。收敛条件为:\(\|d_k\| \le \epsilon\) 且 \(v_k \le \epsilon\)。
5. 算法优势
- 可行性保持:梯度投影步骤确保迭代点始终接近可行域,尤其适用于约束非线性程度较高的问题。
- 自适应步长:避免固定步长导致的振荡或慢收敛,在陡峭区域自动缩小步长,平坦区域扩大步长。
- 计算效率:SQP方向提供快速局部收敛,投影步骤仅需一阶信息,适合中等规模问题(变量数 \(n \sim 10^2 \sim 10^3\))。
- 鲁棒性:在约束雅可比矩阵不满秩或Hessian近似不精确时,投影步骤可提供恢复机制。
6. 实例演示(简要)
考虑问题:
\[\min f(x)=x_1^2 + 2x_2^2, \quad \text{s.t. } x_1 + x_2 \ge 1, \; x_1^2 + x_2^2 \le 4 \]
- 初始化 \(x_0=(2,0)\),\(B_0=I\)。
- 在 \(x_0\) 处构造QP子问题,求解得 \(d_0 \approx (-0.5, 0.2)^\top\)。
- 自适应投影:设 \(\sigma=1\),从 \(y^{(0)}=x_0\) 开始迭代。计算 \(\nabla \phi(y) = (2x_1, 4x_2) + \sigma(y - (x_0+d_0))\),投影到约束集(此处为简单凸集,投影有解析式)。经3次子迭代后得 \(\tilde{x}_1\) 满足约束。
- 接受新点,更新 \(B_k\) 和步长,重复至收敛。
该混合算法在类似问题上通常比纯SQP或纯梯度投影法更稳定,且自适应步长减少参数调优需求。