第一部分:惩罚函数法的基础理论
1. 基本思想与问题设定
考虑约束优化问题:
最小化f(x)受限于gi(x)≤0,i=1,…,mhj(x)=0,j=1,…,l\begin{array}{ll} \text{最小化} & f(\mathbf{x}) \\ \text{受限于} & g_i(\mathbf{x}) \le 0, \quad i=1, \dots, m \\ & h_j(\mathbf{x}) = 0, \quad j=1, \dots, l \end{array}最小化受限于f(x)gi(x)≤0,i=1,…,mhj(x)=0,j=1,…,l
惩罚函数法的思路是:构造一个惩罚函数 P(x)P(\mathbf{x})P(x),当 x\mathbf{x}x 违反约束时,P(x)P(\mathbf{x})P(x) 的值会急剧增大。然后,将惩罚项加入到目标函数 f(x)f(\mathbf{x})f(x) 中,形成一个新的、无约束的惩罚目标函数 Fk(x)F_k(\mathbf{x})Fk(x):
Fk(x)=f(x)+ckP(x)F_k(\mathbf{x}) = f(\mathbf{x}) + c_k P(\mathbf{x})Fk(x)=f(x)+ckP(x)
其中:
- ck>0c_k > 0ck>0 是惩罚因子(Penalty Parameter),它控制了对违反约束的惩罚力度。
- P(x)P(\mathbf{x})P(x) 是惩罚项,具有以下性质:
- 在可行域内,P(x)=0P(\mathbf{x}) = 0P(x)=0。
- 在可行域外,P(x)>0P(\mathbf{x}) > 0P(x)>0。
2. 惩罚项的具体形式
常用的惩罚项是外部惩罚函数 (Exterior Penalty Function),它只在可行域外产生惩罚:
P(x)=∑i=1mmax(0,gi(x))p+∑j=1l∣hj(x)∣qP(\mathbf{x}) = \sum_{i=1}^m \max(0, g_i(\mathbf{x}))^p + \sum_{j=1}^l |h_j(\mathbf{x})|^qP(x)=i=1∑mmax(0,gi(x))p+j=1∑l∣hj(x)∣q
其中 ppp 和 qqq 通常取 1 或 2。
A. 抛物线惩罚项 (Quadratic Penalty, p=q=2p=q=2p=q=2)
这是最常用、理论最成熟的形式,因为它保持了可微性:
P(x)=∑i=1m[max(0,gi(x))]2+∑j=1l[hj(x)]2P(\mathbf{x}) = \sum_{i=1}^m [\max(0, g_i(\mathbf{x}))]^2 + \sum_{j=1}^l [h_j(\mathbf{x})]^2P(x)=i=1∑m[max(0,gi(x))]2+j=1∑l[hj(x)]2
对应的惩罚目标函数为:
Fk(x)=f(x)+ck(∑i=1m[max(0,gi(x))]2+∑j=1l[hj(x)]2)F_k(\mathbf{x}) = f(\mathbf{x}) + c_k \left( \sum_{i=1}^m [\max(0, g_i(\mathbf{x}))]^2 + \sum_{j=1}^l [h_j(\mathbf{x})]^2 \right)Fk(x)=f(x)+ck(i=1∑m[max(0,gi(x))]2+j=1∑l[hj(x)]2)
3. 求解过程(序列无约束最小化)
惩罚函数法是一个序列无约束最小化技术 (SUMT - Sequential Unconstrained Minimization Technique):
- 选择一个初始惩罚因子 c1>0c_1 > 0c1>0 和初始点 x0\mathbf{x}^0x0。
- 迭代过程 (k=1,2,…k=1, 2, \dotsk=1,2,…):
a. 求解无约束问题:
xk=argminxFk(x)\mathbf{x}^k = \arg \min_{\mathbf{x}} F_k(\mathbf{x})xk=argxminFk(x)
b. 检查收敛准则。如果满足(例如,xk\mathbf{x}^kxk 足够接近 xk−1\mathbf{x}^{k-1}xk−1 且约束违反程度足够小),则停止。
c. 更新惩罚因子: 增大 ckc_kck,通常采用 ck+1=βckc_{k+1} = \beta c_kck+1=βck,其中 β>1\beta > 1β>1 (例如 β=10\beta=10β=10)。
4. 核心理论:收敛性
定理(收敛性)
假设 f(x),gi(x),hj(x)f(\mathbf{x}), g_i(\mathbf{x}), h_j(\mathbf{x})f(x),gi(x),hj(x) 都是连续函数,{xk}\{\mathbf{x}^k\}{xk} 是通过序列最小化 Fk(x)F_k(\mathbf{x})Fk(x) 得到的序列。如果 ck→∞c_k \to \inftyck→∞ 当 k→∞k \to \inftyk→∞ 时,那么序列 {xk}\{\mathbf{x}^k\}{xk} 的任何聚点 x∗\mathbf{x}^*x∗ 都是原始约束优化问题的一个局部最优解。
关键洞察:
为了确保 x∗\mathbf{x}^*x∗ 是一个可行解,惩罚项 ckP(x)c_k P(\mathbf{x})ckP(x) 必须在 k→∞k \to \inftyk→∞ 时惩罚任何微小的约束违反。因此,惩罚因子 ckc_kck 必须趋向于无穷大。
第二部分:高级理论与挑战
1. 梯度与拉格朗日乘数的估计
当采用二次惩罚项且 ckc_kck 很大时,无约束问题 minFk(x)\min F_k(\mathbf{x})minFk(x) 的最优性条件是 ∇Fk(xk)=0\nabla F_k(\mathbf{x}^k) = \mathbf{0}∇Fk(xk)=0:
∇f(xk)+ck(∑i=1m2max(0,gi(xk))∇gi(xk)+∑j=1l2hj(xk)∇hj(xk))=0\nabla f(\mathbf{x}^k) + c_k \left( \sum_{i=1}^m 2 \max(0, g_i(\mathbf{x}^k)) \nabla g_i(\mathbf{x}^k) + \sum_{j=1}^l 2 h_j(\mathbf{x}^k) \nabla h_j(\mathbf{x}^k) \right) = \mathbf{0}∇f(xk)+ck(i=1∑m2max(0,gi(xk))∇gi(xk)+j=1∑l2hj(xk)∇hj(xk))=0
将此与 KKT 驻点条件 ∇f(x∗)+∑i=1mλi∗∇gi(x∗)+∑j=1lμj∗∇hj(x∗)=0\nabla f(\mathbf{x}^*) + \sum_{i=1}^m \lambda_i^* \nabla g_i(\mathbf{x}^*) + \sum_{j=1}^l \mu_j^* \nabla h_j(\mathbf{x}^*) = \mathbf{0}∇f(x∗)+∑i=1mλi∗∇gi(x∗)+∑j=1lμj∗∇hj(x∗)=0 进行对比,我们发现可以估计拉格朗日乘数:
-
不等式约束乘数 λi∗\lambda_i^*λi∗ 的估计:
λik≈2ckmax(0,gi(xk))\lambda_i^k \approx 2 c_k \max(0, g_i(\mathbf{x}^k))λik≈2ckmax(0,gi(xk))
这与 KKT 互补松弛性一致:如果 gi(xk)g_i(\mathbf{x}^k)gi(xk) 接近 0,则 λik\lambda_i^kλik 接近 0;如果 gi(xk)>0g_i(\mathbf{x}^k) > 0gi(xk)>0 (违反约束),则 λik>0\lambda_i^k > 0λik>0。 -
等式约束乘数 μj∗\mu_j^*μj∗ 的估计:
μjk≈2ckhj(xk)\mu_j^k \approx 2 c_k h_j(\mathbf{x}^k)μjk≈2ckhj(xk)
2. 经典惩罚函数的局限性(病态性)
当 ck→∞c_k \to \inftyck→∞ 时,虽然保证了收敛,但会导致严重的数值问题(病态性):
- Hessian 矩阵的条件数爆炸: Fk(x)F_k(\mathbf{x})Fk(x) 的 Hessian 矩阵 ∇2Fk(x)\nabla^2 F_k(\mathbf{x})∇2Fk(x) 的条件数随着 ckc_kck 的增大而增大,且趋向于无穷大。
- 搜索困难: 这使得无约束最小化问题 minFk(x)\min F_k(\mathbf{x})minFk(x) 变得病态 (Ill-conditioned)。传统的优化算法(如牛顿法、拟牛顿法)难以准确找到 xk\mathbf{x}^kxk,搜索步长会变得极小,收敛速度极慢。
- 解的敏感性: xk\mathbf{x}^kxk 对输入数据的微小扰动变得极其敏感。
第三部分:精确惩罚函数(Exact Penalty Functions)
为了克服序列惩罚函数法的病态性,引入了精确惩罚函数的概念。
1. 目标
精确惩罚函数 F(x,c)F(\mathbf{x}, c)F(x,c) 旨在:
- 仅用单个有限的惩罚因子 ccc。
- 使无约束问题 minF(x,c)\min F(\mathbf{x}, c)minF(x,c) 的解 x∗\mathbf{x}^*x∗ 精确地等于原始约束问题的解。
2. L1L_1L1 精确惩罚函数(Exact L1L_1L1 Penalty Function)
最常用的精确惩罚函数是基于 L1L_1L1 范数的:
Fc(x)=f(x)+c(∑i=1mmax(0,gi(x))+∑j=1l∣hj(x)∣)F_c(\mathbf{x}) = f(\mathbf{x}) + c \left( \sum_{i=1}^m \max(0, g_i(\mathbf{x})) + \sum_{j=1}^l |h_j(\mathbf{x})| \right)Fc(x)=f(x)+c(i=1∑mmax(0,gi(x))+j=1∑l∣hj(x)∣)
其中 ccc 是一个有限的、足够大的惩罚因子。
定理(L1L_1L1 精确性)
如果 x∗\mathbf{x}^*x∗ 是原始问题的一个局部最优解,并且满足LICQ(线性独立约束规范),那么存在一个临界值 c0>0c_0 > 0c0>0,对于所有 c>c0c > c_0c>c0,x∗\mathbf{x}^*x∗ 也是无约束问题 minFc(x)\min F_c(\mathbf{x})minFc(x) 的一个局部最优解。
如何确定 c0c_0c0?
理论上,临界惩罚因子 c0c_0c0 必须大于所有激活约束的拉格朗日乘数的绝对值。即:
c0≥max{maxi(λi∗),maxj(∣μj∗∣)}c_0 \ge \max \left\{ \max_i (\lambda_i^*), \max_j (|\mu_j^*|) \right\}c0≥max{imax(λi∗),jmax(∣μj∗∣)}
3. L1L_1L1 精确惩罚函数的挑战(不可微性)
尽管 L1L_1L1 惩罚函数解决了病态性,但它引入了新的问题:
- 不可微性: Fc(x)F_c(\mathbf{x})Fc(x) 在约束边界上不可微,因为 max(0,gi(x))\max(0, g_i(\mathbf{x}))max(0,gi(x)) 和 ∣hj(x)∣|h_j(\mathbf{x})|∣hj(x)∣ 在 gi(x)=0g_i(\mathbf{x})=0gi(x)=0 或 hj(x)=0h_j(\mathbf{x})=0hj(x)=0 处不光滑。
由于不可微性,我们不能直接使用标准的基于梯度的优化算法(如牛顿法、共轭梯度法)。这导致了非光滑优化(Nonsmooth Optimization, NSO)的研究,通常需要使用如次梯度法 (Subgradient Method) 或束方法 (Bundle Method) 来求解 minFc(x)\min F_c(\mathbf{x})minFc(x)。
第四部分:增广拉格朗日法 (Augmented Lagrangian Method, ALM)
增广拉格朗日法(或乘子法, Method of Multipliers)是解决惩罚函数病态性的最成功的混合方法,它结合了拉格朗日对偶和惩罚函数的优点。
1. 增广拉格朗日函数
对于等式约束 hj(x)=0h_j(\mathbf{x})=0hj(x)=0,增广拉格朗日函数 Lc(x,μ)\mathcal{L}_c(\mathbf{x}, \mathbf{\mu})Lc(x,μ) 定义为:
Lc(x,μ)=f(x)+∑j=1lμjhj(x)+c∑j=1l[hj(x)]2\mathcal{L}_c(\mathbf{x}, \mathbf{\mu}) = f(\mathbf{x}) + \sum_{j=1}^l \mu_j h_j(\mathbf{x}) + c \sum_{j=1}^l [h_j(\mathbf{x})]^2Lc(x,μ)=f(x)+j=1∑lμjhj(x)+cj=1∑l[hj(x)]2
核心思想:
- 前半部分 f(x)+∑μjhj(x)f(\mathbf{x}) + \sum \mu_j h_j(\mathbf{x})f(x)+∑μjhj(x) 是标准的拉格朗日函数。
- 后半部分 c∑[hj(x)]2c \sum [h_j(\mathbf{x})]^2c∑[hj(x)]2 是一个二次惩罚项。
2. 求解过程(双重序列)
ALM 是一个双重序列方法,它同时更新 x\mathbf{x}x 和乘数 μ\mathbf{\mu}μ:
- 内层循环 (Outer Loop) - 迭代 kkk:
a. 最小化: 在固定的 μk\mathbf{\mu}^kμk 和 ccc 下,求解无约束问题:
xk+1=argminxLc(x,μk)\mathbf{x}^{k+1} = \arg \min_{\mathbf{x}} \mathcal{L}_c(\mathbf{x}, \mathbf{\mu}^k)xk+1=argxminLc(x,μk)
b. 更新乘子 (Multiplier Update): 利用梯度信息更新拉格朗日乘数(类似 ∇Fk=0\nabla F_k=0∇Fk=0 的估计):
μjk+1=μjk+2chj(xk+1)\mu_j^{k+1} = \mu_j^k + 2 c h_j(\mathbf{x}^{k+1})μjk+1=μjk+2chj(xk+1)
3. ALM 的优势
- 无需 c→∞c \to \inftyc→∞: ALM 可以使用一个固定的、有限的惩罚因子 ccc 来保证收敛。
- 避免病态性: 由于 ccc 不需要趋于无穷大,Lc\mathcal{L}_cLc 的 Hessian 矩阵不会变得严重病态,从而提高了数值稳定性。
- 收敛更快: 乘子 μ\mathbf{\mu}μ 的显式更新加速了收敛。
增广拉格朗日法是目前解决中大规模光滑约束优化问题最强大、最成熟的方法之一,也是许多现代求解器(如 LANCELOT、LOQO 的前身)的基础。
1604

被折叠的 条评论
为什么被折叠?



