内点法 (Interior-Point Methods) —— 通俗易懂详解
目录
引言
在现代优化理论中,内点法 (Interior-Point Method) 已成为求解各种类型凸优化问题(尤其是线性规划 (LP)、二次规划 (QP) 和更一般的凸规划)的重要工具。与早期广为人知的单纯形法 (Simplex Method) 相比,内点法在理论复杂度和实践性能上均有非常强力的表现,常用于大规模优化场景。
传统上,解决线性规划有两大方法:
- 单纯形法:以顶点为迭代轨迹,在可行域的边界移动。
- 内点法:始终保持迭代点在可行域“内部”并沿着某条“中心路径”迭代。
我们接下来将围绕内点法展开介绍,力求用通俗语言配合一些数学公式,让你对它的原理与实现有一个清晰的认识。
为什么要用内点法?
- 多用途:它不只适用于线性规划,还可用于二次规划、半定规划、一般凸规划等广泛应用。
- 理论复杂度好:对于 LP 问题,内点法的多项式复杂度可保证在大规模问题中依然能够较快地找到可行解。
- 数值稳定性高:相比单纯形法,内点法通常对噪声或病态问题表现更稳定。
形象理解:和“单纯形法”要走在“外部”边界(顶点)不同,内点法更像是在可行域内“走捷径”。一旦找到一条通往最优解的“中心路径”,就能够快速逼近最优点。
内点法的基本思路
内点法核心思想:在可行域内部引入一个“障碍函数” (Barrier Function),使得迭代点永远不会触碰到可行域的边界(即约束的边界)。借助这层障碍,一方面可避免可行域外的点,另一方面在逼近最优时,这个障碍函数也逐渐“减弱”其效力,最终能在可行域内部快速收敛到最优解。
障碍函数 (Barrier Function)
常见的障碍函数:对数障碍函数 (Log Barrier)
Φ ( x ) = − ∑ i log ( − h i ( x ) ) , \Phi(x) = -\sum_i \log(-h_i(x)), Φ(x)=−i∑log(−hi(x)),
其中 h i ( x ) ≤ 0 h_i(x) \le 0 hi(x)≤0 是约束中的不等式形式。例如,在标准 LP 问题里,若我们有 x ≥ 0 x \ge 0 x≥0,则令 h i ( x ) = − x i h_i(x) = -x_i hi(x)=−xi,因为 x i ≥ 0 x_i \ge 0 xi≥0 等价于 − x i ≤ 0 -x_i \le 0 −xi≤0。
- 若 x i x_i xi 靠近 0,就会使 − log ( x i ) -\log(x_i) −log(xi) 项无限逼近正无穷,逼着解不能“碰到” 0。
- 如果 x i x_i xi 保持远离 0,则 − log ( x i ) -\log(x_i) −log(xi) 值不会太大,相当于“障碍”较弱。
中心路径 (Central Path)
在内点法中,我们往往将原始的目标函数 f ( x ) f(x) f(x) 加上一个“加权”后的障碍函数。例如,考虑标准形式的线性规划问题:
min c T x subject to A x = b , x ≥ 0. \begin{aligned} \min \quad & c^T x \\ \text{subject to} \quad & Ax = b, \\ & x \ge 0. \end{aligned} minsubject to