非线性规划中的内点反射梯度-投影梯度混合算法基础题
题目描述
考虑以下带不等式约束的非线性规划问题:
\[\begin{aligned} \min_{x \in \mathbb{R}^n} \quad & f(x) \\ \text{s.t.} \quad & g_i(x) \le 0, \quad i = 1, 2, \dots, m \end{aligned} \]
其中,\(f: \mathbb{R}^n \to \mathbb{R}\) 是连续可微的目标函数,\(g_i: \mathbb{R}^n \to \mathbb{R}\) 是连续可微的约束函数。假设可行域 \(\mathcal{X} = \{ x \mid g_i(x) \le 0, i=1,\dots,m \}\) 非空,且为闭集,目标函数 \(f\) 在可行域内下方有界。
任务:设计一个结合“内点反射梯度法”和“投影梯度法”思想的混合算法,用于求解此类问题。算法需保证迭代点始终位于可行域内部,并利用梯度投影步骤处理靠近边界时的可行性。给出算法的详细迭代格式、关键参数更新规则,并分析其基本收敛性质。
解题过程
步骤1:算法思想与动机
- 内点法思想:通过构建障碍函数,将约束问题转化为一系列无约束子问题,使得迭代点始终严格满足约束(即保持在可行域内部)。
- 梯度投影法思想:当迭代点靠近边界时,通过投影到可行集上,保证严格可行性,并利用梯度信息进行下降。
- 混合动机:单纯内点法在靠近边界时步长会急剧缩小,效率降低;单纯投影梯度法需在每一步都做投影,可能计算量大。混合算法旨在初始阶段使用内点法快速趋近最优解附近,在靠近边界时切换为投影梯度步骤,以平衡效率与可行性。
步骤2:障碍函数与子问题构造
引入对数障碍函数,将原问题转化为如下障碍问题(其中 \(\mu > 0\) 是障碍参数):
\[\min_{x} \quad B(x; \mu) = f(x) - \mu \sum_{i=1}^m \ln(-g_i(x)) \]
- 对数项要求 \(g_i(x) < 0\)(严格可行点)。
- 当 \(\mu \to 0\) 时,障碍问题的解趋近于原问题的最优解。
子问题:对固定的 \(\mu\),求解无约束问题 \(\min_x B(x; \mu)\)。
步骤3:内点反射梯度步骤
- 梯度计算:在当前迭代点 \(x^k\)(严格可行,即 \(g_i(x^k) < 0\)),计算障碍函数梯度:
\[\nabla B(x^k; \mu) = \nabla f(x^k) + \mu \sum_{i=1}^m \frac{-\nabla g_i(x^k)}{g_i(x^k)} \]
- 反射操作:为防止步长过大导致越界,在梯度方向 \(d_{\text{int}}^k = -\nabla B(x^k; \mu)\) 上,先计算试探点 \(\tilde{x}^{k+1} = x^k + \alpha^k d_{\text{int}}^k\),其中 \(\alpha^k > 0\) 为步长。
- 如果 \(\tilde{x}^{k+1}\) 严格可行(即 \(g_i(\tilde{x}^{k+1}) < 0\)),则接受 \(x^{k+1} = \tilde{x}^{k+1}\)。
- 如果 \(\tilde{x}^{k+1}\) 违反某个约束(即 \(g_i(\tilde{x}^{k+1}) \ge 0\)),则进行“反射”:沿梯度方向回退,并沿边界切线方向调整,具体为计算边界处的投影梯度方向(见下一步的投影梯度步骤),切换为投影步骤。
步骤4:投影梯度步骤
当当前点靠近边界(例如,存在某个 \(g_i(x^k) \ge -\epsilon\),\(\epsilon > 0\) 为小阈值)或反射后仍不严格可行时,执行投影梯度步。
- 积极集识别:确定当前积极约束集合 \(\mathcal{A}(x^k) = \{ i \mid g_i(x^k) \ge -\epsilon \}\)。
- 投影梯度方向计算:
- 令 \(N\) 为积极约束梯度矩阵,其列为 \(\{ \nabla g_i(x^k) \}_{i \in \mathcal{A}}\)。
- 计算投影算子 \(P = I - N (N^\top N)^{\dagger} N^\top\)(若 \(N\) 列满秩;否则用广义逆)。
- 投影梯度方向为 \(d_{\text{proj}}^k = -P \, \nabla f(x^k)\)。
- 更新:\(x^{k+1} = x^k + \beta^k d_{\text{proj}}^k\),其中 \(\beta^k\) 为步长,需保证新点可行(可通过回溯线搜索满足 \(g_i(x^{k+1}) \le 0\))。
步骤5:混合算法迭代框架
给定初始严格可行点 \(x^0\),初始障碍参数 \(\mu_0 > 0\),衰减因子 \(\tau \in (0,1)\),边界阈值 \(\epsilon > 0\),步长参数 \(\alpha_{\text{max}}, \beta_{\text{max}}\)。
对 \(k = 0, 1, 2, \dots\) 执行:
- 如果 \(\min_i (-g_i(x^k)) > \epsilon\) 且 \(\mu_k > \mu_{\min}\):
- 执行内点反射梯度步(步骤3)。
- 如果反射后严格可行,更新 \(x^{k+1}\) 并进入下一步;否则转到第2步。
- 否则(靠近边界或内点步失败):
- 执行投影梯度步(步骤4)。
- 更新障碍参数:\(\mu_{k+1} = \tau \mu_k\)(每若干步或当障碍函数值下降充分时)。
- 检查终止条件:如 \(\| \nabla_x B(x^{k+1}; \mu_{k+1}) \| \le \delta\) 且 \(\mu_{k+1} \approx 0\),或迭代次数达上限。
步骤6:关键参数与收敛性
- 步长选择:采用Armijo线搜索保证下降,例如在内点步中要求 \(B(x^k + \alpha d_{\text{int}}^k; \mu) \le B(x^k; \mu) + c \alpha \nabla B^\top d_{\text{int}}^k\),\(c \in (0,1)\)。
- 收敛性:在目标和约束函数光滑、MFCQ(约束规格)成立的条件下,混合算法产生的序列至少有一个聚点是原问题的KKT点。内点步保证在内部区域的收敛速度,投影步保证边界附近的可行性,整体具有全局收敛性。
小结
本算法将内点法的“内部路径跟踪”与投影梯度法的“边界处理”结合,在保持严格可行性的同时,改善了纯内点法边界附近效率低的问题。通过反射机制自适应切换,适用于中等规模、约束为光滑不等式的问题。实际实现时需注意积极集识别、投影算子的稳定计算以及步长的自适应调整。