罚函数法
字数 1098 2025-10-29 21:52:57
罚函数法
- 基本概念与动机
罚函数法是求解约束优化问题的一类数值方法,其核心思想是将约束条件转化为惩罚项加入目标函数,从而将原问题转化为一系列无约束优化问题。具体来说,对于问题
\[\min f(x) \quad \text{s.t.} \quad x \in \Omega, \]
其中 \(\Omega\) 为可行域,罚函数法构造如下辅助函数:
\[P(x, \mu) = f(x) + \mu \cdot p(x). \]
这里 \(p(x)\) 是罚函数,满足 \(p(x) \geq 0\) 且当 \(x \in \Omega\) 时 \(p(x)=0\),否则 \(p(x)>0\);\(\mu > 0\) 是罚因子。通过逐渐增大 \(\mu\),迫使解向可行域靠近。
- 罚函数的构造方式
常见罚函数针对不同类型的约束设计:
- 等式约束 \(h_i(x)=0\):使用平方罚项,例如 \(p(x) = \sum_i [h_i(x)]^2\)。
- 不等式约束 \(g_j(x) \leq 0\):使用外部罚函数,例如 \(p(x) = \sum_j \max(0, g_j(x))^2\)。
- 内点罚函数(障碍函数法):适用于严格内点可行的问题,如对数障碍函数 \(p(x) = -\sum_j \ln(-g_j(x))\),要求初始点在可行域内部。
-
算法流程与收敛性
罚函数法的典型步骤为: -
选择初始罚因子 \(\mu_0 > 0\) 和增长系数 \(\rho > 1\)。
-
求解无约束子问题 \(x_k = \arg\min_x P(x, \mu_k)\)。
-
更新 \(\mu_{k+1} = \rho \mu_k\),重复步骤2直至满足收敛条件(如约束违反度足够小)。
当 \(\mu \to \infty\) 时,若罚函数设计合理且子问题求解精确,算法收敛到原问题的最优解。但过大的 \(\mu\) 会导致子问题数值不稳定。 -
优缺点与改进方向
优点:概念直观,易于实现;可结合现有无约束优化算法。
缺点:
- 罚因子较大时,罚函数条件数变差,收敛速度慢;
- 外部罚函数的解可能始终不可行(近似可行);
- 内点法需初始可行点。
改进方法: - 增广拉格朗日法:引入拉格朗日乘子估计,降低对罚因子的依赖,提升稳定性;
- 精确罚函数:如 \(l_1\) 罚函数,在有限罚因子下即可得到精确解,但不可微。
- 应用场景
罚函数法广泛应用于工程设计、经济模型等需处理复杂约束的领域,特别是当约束较多或结构复杂时,可通过分解转化为无约束子问题并行求解。