ARTICLE

罚函数法

罚函数法 (Penalty Function Method) 罚函数法 (Penalty Function Method) 是 最优化理论 中处理约束优化问题的经典数值方法。其核心思想是将一个有约束的最优化问题转化为一系列无约束优化问题(或单个无约束优化问题),通过在目标函数中引入一个惩罚项来"惩罚"对约束条件的违反,从而使得无约束优化问题的最优解逐渐逼近原

浏览 8 更新 2026-01-16

罚函数法 (Penalty Function Method)

罚函数法 (Penalty Function Method) 是 最优化理论 中处理约束优化问题的经典数值方法。其核心思想是将一个有约束的最优化问题转化为一系列无约束优化问题(或单个无约束优化问题),通过在目标函数中引入一个惩罚项来"惩罚"对约束条件的违反,从而使得无约束优化问题的最优解逐渐逼近原约束问题的最优解。罚函数法由 Courant 于 1943 年首次提出,后经 Fiacco 与 McCormick 在 1960 年代系统发展,成为非线性规划领域的基石方法之一,并在 机器学习、工程设计和经济学等领域有广泛应用。

基本思想

考虑一般的约束优化问题:

minxRnf(x)s.t.gi(x)0,i=1,2,,m,hj(x)=0,j=1,2,,p.\begin{aligned} \min_{x \in \mathbb{R}^n} \quad & f(x) \\ \text{s.t.} \quad & g_i(x) \leq 0, \quad i = 1, 2, \dots, m, \\ & h_j(x) = 0, \quad j = 1, 2, \dots, p. \end{aligned}

罚函数法的基本策略是构造一个增广目标函数:

P(x;μ)=f(x)+μψ(x),P(x; \mu) = f(x) + \mu \cdot \psi(x),

其中 ψ(x)0\psi(x) \geq 0 是惩罚项,当 xx 满足所有约束时取值为零,否则取正值以度量约束违反的程度;参数 μ>0\mu > 0 称为罚因子 (Penalty Parameter),控制惩罚强度。当 μ\mu \to \infty 时,任何对约束的微小违反都将被施加极大的惩罚,迫使无约束极小点趋近于原问题的可行域,最终收敛到原约束问题的最优解。

外点罚函数法 (Exterior Penalty Method)

外点罚函数法允许迭代点穿越可行域边界,从可行域外部逐步逼近最优解。其惩罚项通常采用二次形式:

ψ(x)=i=1m[max{0,gi(x)}]2+j=1p[hj(x)]2.\psi(x) = \sum_{i=1}^{m} \bigl[\max\{0, g_i(x)\}\bigr]^2 + \sum_{j=1}^{p} \bigl[h_j(x)\bigr]^2.

gi(x)0g_i(x) \leq 0(不等式约束满足)时,第一项为零;一旦违反,则施加与违反程度平方成正比的惩罚。对于等式约束 hj(x)=0h_j(x) = 0,任何偏离零值的量均被二次惩罚。

算法流程如下:选择一个初始罚因子 μ1>0\mu_1 > 0,求解无约束问题 minP(x;μ1)\min P(x; \mu_1)x(1)x^{(1)};然后增大罚因子 μk+1=ρμk\mu_{k+1} = \rho \mu_kρ>1\rho > 1,通常取 ρ=10\rho = 10),以 x(k)x^{(k)} 为初始点求解下一轮。随着 μk\mu_k \to \infty,序列 {x(k)}\{x^{(k)}\} 收敛于原约束问题的最优解 xx^*

外点法的优势在于实现简单,对初始点无可行性要求。但其缺点也较为明显:当 μ\mu 极大时,罚函数的海森矩阵 (Hessian) 会变得病态 (Ill-Conditioned),导致无约束子问题的求解变得数值困难;此外,近似最优解通常位于可行域之外,仅在极限意义下才满足约束。

内点罚函数法 (Interior Penalty / Barrier Method)

内点罚函数法,又称 障碍函数法 (Barrier Method),要求迭代点始终严格位于可行域内部,通过在边界上设置一道"屏障"来阻止迭代点越出可行域。与 内点法 (Interior-Point Method) 的现代版本不同,经典的障碍函数法主要用于不等式约束问题。

常用的障碍项有 对数障碍函数 (Logarithmic Barrier):

B(x;μ)=f(x)μi=1mln(gi(x)),B(x; \mu) = f(x) - \mu \sum_{i=1}^{m} \ln\bigl(-g_i(x)\bigr),

倒数障碍函数 (Inverse Barrier):

B(x;μ)=f(x)+μi=1m1gi(x).B(x; \mu) = f(x) + \mu \sum_{i=1}^{m} \frac{1}{-g_i(x)}.

xx 从可行域内部趋近边界(即 gi(x)0g_i(x) \to 0^{-})时,障碍项趋于 ++\infty,自动阻止迭代点穿越边界。算法与外点法对称:从一个严格可行内点出发,取较大的初始 μ1\mu_1 求解 minB(x;μ1)\min B(x; \mu_1),然后逐步减小 μk+1=μk/ρ\mu_{k+1} = \mu_k / \rho(障碍因子趋于零),使障碍效应渐弱,极小点逐步逼近边界上的真实最优解。

内点法的优点在于生成的迭代序列始终可行(如果初始点可行),这在某些工程应用中至关重要。然而,它要求事先找到一个严格可行的初始点,且不能直接处理等式约束——等式约束的可行域内部为空集,无法定义障碍。

精确罚函数法 (Exact Penalty Method)

前述外点法和内点法均为 序列罚函数法,需要罚因子趋于无穷大(或障碍因子趋于零)才能得到精确解,这在数值上造成病态。精确罚函数法 则试图构造一个罚函数,使得存在有限的罚因子 μ\mu^*,当 μμ\mu \geq \mu^* 时,无约束罚问题的极小点恰好等于原约束问题的最优解,无需取极限。

最常用的精确罚函数是 1\ell_1 精确罚函数

P1(x;μ)=f(x)+μ(i=1mmax{0,gi(x)}+j=1phj(x)).P_1(x; \mu) = f(x) + \mu \left( \sum_{i=1}^{m} \max\{0, g_i(x)\} + \sum_{j=1}^{p} |h_j(x)| \right).

与二次惩罚不同,1\ell_1 惩罚在约束违反处不可微,但这恰恰赋予了它"精确性"——在适当的约束规范(如 MFCQ)下,只要 μ\mu 大于最优 Lagrange 乘子向量的无穷范数,原问题的最优解就是 P1P_1 的局部极小点。这使得单次无约束优化即可解决问题,无需序列迭代。不过,不可微性也意味着需要非光滑优化算法(如次梯度法或 bundle 方法)来求解。

与 Lagrange 乘子法的联系

罚函数法与 Lagrange 乘子法KKT 条件 有深刻的理论联系。事实上,当 μk\mu_k \to \infty 时,罚函数的最优性条件趋于原问题的 KKT 条件,而惩罚项系数 μkψ(x(k))/gi\mu_k \cdot \partial \psi(x^{(k)}) / \partial g_i 恰好逼近最优 Lagrange 乘子 λi\lambda_i^*。这一观察启发了一种改进——增广 Lagrange 函数法 (Augmented Lagrangian Method, 又称 乘子法):在罚函数框架中显式引入 Lagrange 乘子估计,既避免了经典罚函数法的病态问题,又保持了精确罚函数的理论优势。增广 Lagrange 法是大规模约束优化(如 交替方向乘子法 ADMM 的理论基础)的核心工具。

应用与评价

罚函数法在经济学中有直接的应用场景。在 计量经济学 的约束估计中,当待估参数需满足正则性或不等式限制时,罚函数法可将约束估计转化为无约束优化加以求解。在 机制设计委托代理理论 中,激励相容约束和参与约束的处理常借助罚函数技术转化为易于分析的无约束形式。在 机器学习 中,正则化 (Regularization)——如 Lasso 回归中的 1\ell_1 惩罚和 Ridge 回归中的 2\ell_2 惩罚——本质上就是罚函数思想的直接体现:在损失函数上叠加参数范数的惩罚项以约束模型复杂度。

罚函数法的主要优势在于概念直观、实施简便,仅需无约束优化求解器即可处理复杂的约束问题。其局限在于序列方法存在病态风险,且收敛速度一般仅为一阶。在现代优化实践中,罚函数法已逐渐被 内点法(基于扰动 KKT 条件的现代版本)和 序列二次规划 (SQP) 等更高效的方法所补充或取代。然而,作为约束优化的入门思想和教学工具,罚函数法仍然具有不可替代的地位——它清晰展示了"将困难问题转化为简单问题序列"这一解决复杂优化问题的根本范式,为理解更高级的数值优化方法奠定了概念基础。