L2 Penalty Method
问题形式
-
等式约束
- 原问题: \(min_{x}f(x) \), \(s.t. c_{i}(x)=0,i\in \varepsilon \)
- 罚函数形式: \(P_{E}(x,\sigma)=f(x)+\frac{1}{2}\sigma\sum_{i\in \varepsilon}c_{i}^{2}(x) \)
- 上面使用的是二阶罚函数法,求解精度取决于 \(\sigma \)的大小,但无法求得精确解
-
不等式约束
- 原问题: \(min_{x}f(x) \), \(s.t.c_{i}(x)\leq 0,i\in I \)
- 罚函数形式: \(P_{I}(x,\sigma)=f(x)+\frac{1}{2}\sigma\sum_{i\in I}max\left[c_{i}(x),0\right]^{2} \)
- 上面使用的也是二阶罚函数法,但罚函数的二阶导不连续,无法求得精确解
迭代过程
- 直接法
- 直接取一个很大的 \(\sigma \),优化一次得到最优解
- sequential方法
- 取 \(\sigma=1 \),优化得到最优解 \(x^{1} \)
- 取 \(\sigma=10 \),以 \(x^{1} \)为初值,优化得到最优解 \(x^{2} \)
- 重复该过程,直到 \(\sigma \)足够大
- 具体用哪种方法取决于对耗时和精度的要求
使用场景
- 约束最好具有具体的物理意义,因为该方法是得不到精确解的,且最终解实际上会一定程度上违反约束
- 对精度要求不是很高,在 \(10^{-3} \)量级左右
L1 Penalty Method
问题形式
- 原问题: \(min_{x}f(x) \), \(s.t.c_{i}(x)=0,i\in\varepsilon \), \(c_{j}(x)\leq 0,j\in I \)
- 罚函数形式: \(P(x,\sigma)=f(x)+\sigma\sum_{i\in \varepsilon}\left|c_{i(x)}\right|+\sigma\sum_{j\in I}max\left[c_{j}(x),0\right] \)
- 上面使用的是一阶罚函数法,罚函数的一阶导不连续,当 \(\sigma \)充分大时(不用像L2方法一样取那么大),可以得到精确解
- 虽然可以得到精确解,但由于其non smooth的性质,lbfgs在求解该类型问题时收敛速度是不能保证的