自适应信赖域序列二次规划(Adaptive Trust Region SQP)算法进阶题
题目描述:
我们考虑一个带不等式约束的非线性规划问题:
最小化 \(f(x)\),其中 \(x \in \mathbb{R}^n\)
满足约束 \(c_i(x) \leq 0, \quad i = 1, \dots, m\)。
其中,目标函数 \(f: \mathbb{R}^n \to \mathbb{R}\) 和约束函数 \(c_i: \mathbb{R}^n \to \mathbb{R}\) 都是二次连续可微的。
要求使用“自适应信赖域序列二次规划(Adaptive Trust Region SQP)”算法求解该问题,并详细解释其原理、迭代步骤、自适应信赖域半径更新策略,以及如何处理约束违反度与最优性下降之间的平衡。
解题过程循序渐进讲解:
-
算法核心思想
SQP(序列二次规划)将原问题在每次迭代点 \(x_k\) 处,通过一阶泰勒展开近似为二次规划子问题,通过求解子问题得到搜索方向 \(d_k\)。信赖域方法则通过限制步长 \(d_k\) 的范数不超过半径 \(\Delta_k\),确保近似模型在局部足够精确。自适应信赖域的关键是根据子问题模型与实际函数变化的匹配程度,动态调整 \(\Delta_k\),提高收敛效率和鲁棒性。 -
构造二次规划子问题
在第 \(k\) 次迭代,给定当前点 \(x_k\)、拉格朗日函数梯度估计和约束的线性近似,子问题为:
最小化 \(\nabla f(x_k)^T d + \frac{1}{2} d^T B_k d\)
满足 \(c_i(x_k) + \nabla c_i(x_k)^T d \leq 0, \quad i=1,\dots,m\)
且 \(\|d\|_\infty \leq \Delta_k\)。
其中 \(B_k\) 是拉格朗日函数 \(L(x, \lambda) = f(x) + \sum \lambda_i c_i(x)\) 的Hessian近似(通常用拟牛顿法更新,如BFGS),\(\Delta_k > 0\) 是当前信赖域半径。 -
自适应信赖域半径更新策略
定义实际下降量 \(\text{Ared}_k = f(x_k) - f(x_k + d_k)\) 和预测下降量 \(\text{Pred}_k = -\left( \nabla f(x_k)^T d_k + \frac{1}{2} d_k^T B_k d_k \right)\)。
计算比值 \(r_k = \frac{\text{Ared}_k}{\text{Pred}_k}\)。
自适应更新规则如下:- 若 \(r_k < 0.1\),说明模型与实际匹配差,拒绝步长,缩小信赖域: \(\Delta_{k+1} = 0.5 \Delta_k\)。
- 若 \(0.1 \leq r_k < 0.75\),接受步长但保持半径: \(\Delta_{k+1} = \Delta_k\)。
- 若 \(r_k \geq 0.75\),模型匹配好,可扩大搜索范围: \(\Delta_{k+1} = \min(2\Delta_k, \Delta_{\max})\),其中 \(\Delta_{\max}\) 是预设最大半径。
该策略通过 \(r_k\) 动态调整半径,平衡全局探索与局部精度。
-
处理约束违反度与最优性下降的平衡
定义约束违反度度量 \(\theta(x) = \sum_{i=1}^m \max(c_i(x), 0)\),即违反约束的正部分和。
在子问题中,通过线性化约束确保可行性,但实际迭代可能仍有违反。因此,在评估实际下降时,使用复合函数 \(\Phi(x) = f(x) + \mu \theta(x)\),其中 \(\mu > 0\) 是惩罚参数。实际下降量改为 \(\text{Ared}_k = \Phi(x_k) - \Phi(x_k + d_k)\),预测下降量也相应调整为包含约束违反的线性近似。这迫使算法在减少目标函数和满足约束间取得平衡。 -
迭代步骤总结
a. 初始化:选择初始点 \(x_0\),初始半径 \(\Delta_0 > 0\),初始矩阵 \(B_0 = I\),惩罚参数 \(\mu_0 > 0\),容差 \(\epsilon > 0\)。
b. 对于 \(k = 0, 1, 2, \dots\):- 计算梯度 \(\nabla f(x_k)\)、约束值 \(c_i(x_k)\) 和约束梯度 \(\nabla c_i(x_k)\)。
- 求解上述信赖域约束下的二次规划子问题,得方向 \(d_k\) 和乘子估计 \(\lambda_k\)。
- 计算实际下降与预测下降比值 \(r_k\),按前述策略更新 \(\Delta_{k+1}\)。
- 如果 \(r_k \geq 0.1\),接受步长: \(x_{k+1} = x_k + d_k\); 否则 \(x_{k+1} = x_k\)。
- 用BFGS公式更新 \(B_{k+1}\),基于拉格朗日函数梯度变化。
- 如果约束违反度 \(\theta(x_{k+1})\) 较大,适当增加 \(\mu\)。
- 检查终止条件:例如 \(\|d_k\| < \epsilon\) 且 \(\theta(x_{k+1}) < \epsilon\),则停止。
c. 输出 \(x_{k+1}\) 为近似最优解。
-
算法优势与注意事项
自适应信赖域SQP能处理非凸问题,且通过半径自适应避免线性搜索,在约束优化中稳定性好。需注意子问题的可行性(可能需引入松弛变量),以及 \(B_k\) 的正定性维护(可修正为凸近似)。实践中,初始 \(\Delta_0\) 和 \(\mu\) 的选择影响收敛速度。