非线性规划中的序列仿射内点法进阶题
我将为你详细讲解序列仿射内点法(Sequential Affine Scaling Interior Point Method)的进阶题目,包括问题描述、算法思想、详细步骤和一个数值例子。
题目描述
考虑以下非线性规划问题:
\[\begin{aligned} \min_{x \in \mathbb{R}^n} \quad & f(x) \\ \text{s.t.} \quad & Ax = b, \\ & x \geq 0, \end{aligned} \]
其中 \(f: \mathbb{R}^n \to \mathbb{R}\) 是一个连续可微且非线性的目标函数,\(A \in \mathbb{R}^{m \times n}\)(\(m < n\)),\(b \in \mathbb{R}^m\),且 \(x \geq 0\) 表示分量非负约束。我们假设问题至少存在一个严格内点可行解(即满足 \(Ax = b\) 且 \(x > 0\))。
进阶要求:在基本仿射尺度内点法(适用于线性目标)的基础上,扩展至非线性目标 \(f(x)\),并设计一种序列化的方法,其中每一步求解一个线性化子问题,并控制步长以保证收敛性和可行性。
解题过程
1. 算法背景与核心思想
基本仿射尺度内点法最初是为线性规划设计的,其核心是通过仿射尺度变换将当前点映射到“球”中心,然后沿目标函数梯度在零空间投影的方向移动,并保持迭代点严格可行(内点)。对于非线性目标,直接应用会因目标曲率而失效。因此,我们采用序列化策略:在当前迭代点 \(x^k\) 处,将非线性目标 \(f(x)\) 线性化为:
\[f(x) \approx f(x^k) + \nabla f(x^k)^\top (x - x^k). \]
然后,在 \(x^k\) 附近构建一个线性规划子问题,并用仿射尺度内点法求解该子问题,得到搜索方向。之后,通过线搜索确定步长,确保新迭代点严格可行且目标值下降。整个过程重复直至收敛。
2. 算法详细步骤
步骤 0: 初始化
- 选择初始严格内点 \(x^0 > 0\) 满足 \(Ax^0 = b\)。若难以直接找到,可使用两阶段法或引入人工变量。
- 设定参数:容忍度 \(\epsilon > 0\),步长衰减因子 \(\beta \in (0,1)\)(通常 \(\beta = 0.5\)),中心参数 \(\sigma \in (0,1)\)(控制接近中心的程度,通常 \(\sigma = 0.1\) 到 \(0.5\)),迭代计数器 \(k = 0\)。
步骤 1: 构造线性化子问题
在当前点 \(x^k\),计算梯度 \(g^k = \nabla f(x^k)\)。构建线性规划子问题:
\[\begin{aligned} \min_{d \in \mathbb{R}^n} \quad & (g^k)^\top d \\ \text{s.t.} \quad & A d = 0, \\ & -x^k \leq d \leq M, \end{aligned} \]
其中 \(M\) 是一个大的正数(如 \(10^6\))以防止方向过大,但通常我们更常见的形式是限制 \(d\) 在仿射尺度变换后的球内。更标准的仿射尺度法将变量变换为 \(y = (X^k)^{-1} x\),其中 \(X^k = \text{diag}(x^k)\)。在变换空间中,子问题为:
\[\begin{aligned} \min_{\bar{d} \in \mathbb{R}^n} \quad & (X^k g^k)^\top \bar{d} \\ \text{s.t.} \quad & A X^k \bar{d} = 0, \\ & \| \bar{d} \| \leq \Delta^k, \end{aligned} \]
其中 \(\Delta^k > 0\) 是信赖域半径,控制步长大小。但为简化,许多实现中直接取 \(\Delta^k = 1\) 并结合缩放。
步骤 2: 求解子问题得搜索方向
子问题是一个带球约束的线性规划,其解析解可通过投影得到。具体推导:
- 令 \(\tilde{A} = A X^k\),\(\tilde{g} = X^k g^k\)。
- 我们需要在 \(\tilde{A} \bar{d} = 0\) 且 \(\| \bar{d} \| \leq \Delta^k\) 下最小化 \(\tilde{g}^\top \bar{d}\)。若不考虑球约束,最优方向是负梯度在 \(\tilde{A}\) 零空间的投影:
\[\bar{d}_{\text{cauchy}} = -P \tilde{g}, \quad \text{其中 } P = I - \tilde{A}^\top (\tilde{A} \tilde{A}^\top)^{-1} \tilde{A}. \]
- 考虑球约束,取:
\[\bar{d}^k = -\min\left(1, \frac{\Delta^k}{\| \bar{d}_{\text{cauchy}} \|} \right) P \tilde{g}. \]
- 变换回原空间得到搜索方向 \(d^k = X^k \bar{d}^k\)。
步骤 3: 计算步长并进行迭代
为保证严格内点性(\(x > 0\)),需计算最大允许步长:
\[\alpha_{\max} = \min\left\{ 1, \min_{i: d_i^k < 0} \left( -\frac{x_i^k}{d_i^k} \right) \right\}. \]
然后,通过线搜索(如Armijo条件)确定步长 \(\alpha^k \in (0, \alpha_{\max}]\):
\[f(x^k + \alpha^k d^k) \leq f(x^k) + \eta \alpha^k (g^k)^\top d^k, \]
其中 \(\eta \in (0,1)\)(如 0.0001)。通常先尝试 \(\alpha = \min(\alpha_{\max}, 1)\),若不满足则乘以 \(\beta\) 衰减直至满足。
更新迭代点:\(x^{k+1} = x^k + \alpha^k d^k\)。
步骤 4: 检查收敛条件
若满足以下任一条,则停止并输出 \(x^{k+1}\) 作为近似解:
- 相对梯度投影足够小:\(\| d^k \| \leq \epsilon (1 + \| x^{k+1} \|)\)。
- 相对目标变化足够小:\(|f(x^{k+1}) - f(x^k)| \leq \epsilon (1 + |f(x^k)|)\)。
- 达到最大迭代次数。
否则,令 \(k = k+1\),返回步骤1。
3. 示例演示
考虑简单问题:
\[\begin{aligned} \min_{x_1, x_2} \quad & f(x) = (x_1 - 2)^2 + (x_2 - 1)^2 \\ \text{s.t.} \quad & x_1 + x_2 = 2, \\ & x_1, x_2 \geq 0. \end{aligned} \]
该问题最优解在 \(x^* = (1.5, 0.5)^\top\),目标值 \(f^* = 0.5\)。我们应用上述算法。
- 初始化: 取初始点 \(x^0 = (1, 1)^\top\)(严格内点),\(\epsilon = 10^{-4}\),\(\beta = 0.5\),\(\sigma = 0.2\)。
- 迭代 1:
- 梯度 \(g^0 = (2(1-2), 2(1-1))^\top = (-2, 0)^\top\)。
- 构造 \(X^0 = \text{diag}(1,1)\),\(\tilde{A} = A = [1, 1]\),\(\tilde{g} = (-2, 0)^\top\)。
- 投影矩阵 \(P = I - A^\top (AA^\top)^{-1} A = \begin{pmatrix} 0.5 & -0.5 \\ -0.5 & 0.5 \end{pmatrix}\)。
- 计算 \(\bar{d}_{\text{cauchy}} = -P \tilde{g} = (1, -1)^\top\),取 \(\Delta^0 = 1\),则 \(\bar{d}^0 = -\frac{1}{\sqrt{2}} (1, -1)^\top \approx (-0.707, 0.707)^\top\)。
- 原空间方向 \(d^0 = X^0 \bar{d}^0 = (-0.707, 0.707)^\top\)。
- 最大步长:由于 \(d_1^0 < 0\),\(\alpha_{\max} = \min(1, -\frac{1}{-0.707}) = 1\)。
- 尝试 \(\alpha = 1\):新点 \(x^1 = (0.293, 1.707)^\top\),目标值 \(f(x^1) \approx 3.12\),而 \(f(x^0) = 2\),不满足下降条件(需 \(\eta\) 很小)。通过回溯,取 \(\alpha = 0.5\) 满足 Armijo 条件。
- 更新:\(x^1 = (0.646, 1.354)^\top\)。
- 继续迭代,点列将趋近最优解。通常10-20次迭代可达到高精度。
4. 关键要点与讨论
- 序列化本质:每一步求解一个线性化子问题,类似序列线性规划(SLP),但利用了仿射尺度内点法高效处理边界。
- 全局收敛:在适当条件下(如 \(f\) 连续可微且下有界,子问题解存在),算法可收敛到稳定点(KKT点)。
- 扩展:可结合信赖域自适应调整 \(\Delta^k\),或引入障碍函数处理不等式,形成原始对偶内点法。
- 优缺点:优点包括保持内点可行性、适合大规模问题;缺点是需要严格初始内点、对非线性强曲率可能慢。
这个进阶题目展示了如何将经典内点法推广到非线性目标,是处理带线性等式和非负约束的非线性规划的实用方法。