自适应信赖域-序列线性规划混合算法进阶题
题目描述:
考虑一个带非线性等式和不等式约束的优化问题:
\[\begin{aligned} \min_{x \in \mathbb{R}^n} \quad & f(x) \\ \text{s.t.} \quad & c_i(x) = 0, \quad i \in \mathcal{E}, \\ & c_i(x) \geq 0, \quad i \in \mathcal{I}, \end{aligned} \]
其中 \(f: \mathbb{R}^n \to \mathbb{R}\) 和 \(c_i: \mathbb{R}^n \to \mathbb{R}\) 均为二阶连续可微函数,但非凸。目标函数和约束可能高度非线性,且可行域可能非凸。要求设计一种混合算法,将自适应信赖域(Adaptive Trust Region)与序列线性规划(Sequential Linear Programming, SLP)结合,在每一步迭代中动态调整信赖域半径,并利用线性化模型求解子问题,确保算法在非凸环境下能稳定收敛到局部最优解。
解题过程循序渐进讲解:
1. 算法框架概述
本混合算法的核心思想是:在每一步迭代点 \(x_k\),构造目标函数和约束的线性近似模型,并在一个自适应调整的信赖域内求解该线性规划子问题,得到试探步 \(p_k\)。通过比较实际下降量与预测下降量,决定是否接受该步长,并更新信赖域半径。整个过程通过序列线性逼近和信赖域控制,保证全局收敛性。
2. 线性化模型构建
在当前迭代点 \(x_k\),对 \(f(x)\) 和 \(c_i(x)\) 做一阶泰勒展开:
\[\begin{aligned} \tilde{f}_k(p) &= f(x_k) + \nabla f(x_k)^\top p, \\ \tilde{c}_{i,k}(p) &= c_i(x_k) + \nabla c_i(x_k)^\top p, \quad i \in \mathcal{E} \cup \mathcal{I}, \end{aligned} \]
其中 \(p = x - x_k\) 为试探步。于是,在信赖域 \(\|p\| \leq \Delta_k\) 内得到线性规划子问题:
\[\begin{aligned} \min_{p \in \mathbb{R}^n} \quad & \tilde{f}_k(p) \\ \text{s.t.} \quad & \tilde{c}_{i,k}(p) = 0, \quad i \in \mathcal{E}, \\ & \tilde{c}_{i,k}(p) \geq 0, \quad i \in \mathcal{I}, \\ & \|p\| \leq \Delta_k, \end{aligned} \]
这里 \(\Delta_k > 0\) 是当前信赖域半径,范数通常取 \(\ell_2\) 或 \(\ell_\infty\)。
3. 自适应信赖域机制
信赖域半径 \(\Delta_k\) 根据每步的近似精度动态调整。定义实际下降量:
\[\text{ared}_k = f(x_k) - f(x_k + p_k), \]
和预测下降量:
\[\text{pred}_k = \tilde{f}_k(0) - \tilde{f}_k(p_k) = -\nabla f(x_k)^\top p_k. \]
计算比值:
\[\rho_k = \frac{\text{ared}_k}{\text{pred}_k}. \]
根据 \(\rho_k\) 更新信赖域半径:
- 若 \(\rho_k < \eta_1\)(例如 \(\eta_1 = 0.1\)),说明线性模型拟合差,拒绝步长 \(p_k\),缩小信赖域:\(\Delta_{k+1} = \gamma_1 \Delta_k\)(例如 \(\gamma_1 = 0.5\))。
- 若 \(\rho_k \geq \eta_1\),接受步长 \(x_{k+1} = x_k + p_k\),并调整半径:
- 若 \(\rho_k < \eta_2\)(例如 \(\eta_2 = 0.75\)),保持半径:\(\Delta_{k+1} = \Delta_k\)。
- 若 \(\rho_k \geq \eta_2\),说明模型拟合好,扩大半径:\(\Delta_{k+1} = \gamma_2 \Delta_k\)(例如 \(\gamma_2 = 2\))。
4. 子问题求解与可行性处理
线性规划子问题可能因线性化导致不可行。此时引入松弛变量或采用恢复步骤,例如求解可行性松弛问题:
\[\min_{p, s} \; \|s\| \quad \text{s.t.} \quad \tilde{c}_{i,k}(p) = s_i, \; i \in \mathcal{E}, \quad \tilde{c}_{i,k}(p) \geq -s_i, \; i \in \mathcal{I}, \; \|p\| \leq \Delta_k, \]
以得到可行方向。另一种方式是暂时忽略约束,求解无约束线性化问题,再通过投影恢复可行性。
5. 收敛性条件
算法在以下条件之一满足时停止:
- 试探步范数 \(\|p_k\|\) 小于容差 \(\epsilon\)。
- 最优性条件误差小于容差:例如,当前点的KKT残差(包括梯度条件、互补松弛条件)足够小。
- 达到最大迭代次数。
6. 算法步骤总结
- 初始化:给定初始点 \(x_0\),初始信赖域半径 \(\Delta_0 > 0\),参数 \(0 < \eta_1 < \eta_2 < 1\),\(0 < \gamma_1 < 1 < \gamma_2\),容差 \(\epsilon > 0\),设 \(k = 0\)。
- 计算当前梯度 \(\nabla f(x_k)\) 和约束函数值、梯度。
- 求解线性规划子问题,得到试探步 \(p_k\)。
- 计算比值 \(\rho_k = \frac{f(x_k) - f(x_k + p_k)}{-\nabla f(x_k)^\top p_k}\)。
- 根据 \(\rho_k\) 按前述规则更新信赖域半径,并决定是否接受步长:若 \(\rho_k \geq \eta_1\),则 \(x_{k+1} = x_k + p_k\);否则 \(x_{k+1} = x_k\)。
- 检查收敛条件,若满足则停止;否则令 \(k = k+1\),返回步骤2。
7. 算法特点
- 适应性:信赖域半径根据模型拟合度自动调整,避免无效迭代。
- 全局收敛:在适当条件下(如函数有下界、梯度 Lipschitz 连续),算法可收敛到稳定点。
- 适用性:适用于中等规模的非凸问题,但线性化可能导致收敛速度较慢(线性收敛)。
- 扩展:可结合二阶信息(如拟牛顿更新)加速,或引入滤子(filter)处理约束冲突。
通过以上步骤,该混合算法在非凸环境下平衡了探索(信赖域扩大)与开发(信赖域缩小),逐步逼近局部最优解。