增广拉格朗日法
增广拉格朗日法是一种求解约束优化问题的数值算法,它通过结合拉格朗日乘子法和罚函数法的思想,有效处理等式和不等式约束。下面逐步展开讲解:
1. 问题背景与基本形式
考虑约束优化问题:
\[\min_{x} f(x) \quad \text{s.t.} \quad h_i(x) = 0 \ (i=1,\dots,m), \quad g_j(x) \leq 0 \ (j=1,\dots,p), \]
其中 \(f(x)\) 是目标函数,\(h_i(x)\) 和 \(g_j(x)\) 分别为等式和不等式约束。直接求解此类问题可能因约束的复杂性而困难。
2. 拉格朗日函数与罚函数的局限性
- 拉格朗日函数:
\[ L(x, \lambda, \mu) = f(x) + \sum_{i=1}^m \lambda_i h_i(x) + \sum_{j=1}^p \mu_j g_j(x), \]
其中 \(\lambda_i, \mu_j \geq 0\) 为拉格朗日乘子。但若约束不满足,拉格朗日法可能无法保证收敛。
- 罚函数法:
例如,对等式约束添加二次罚项 \(\frac{\rho}{2} \sum_i h_i(x)^2\),但需罚参数 \(\rho \to \infty\) 才能精确满足约束,可能导致数值不稳定。
3. 增广拉格朗日函数的构造
增广拉格朗日法结合两者优点,对等式约束问题(先简化说明)定义:
\[\mathcal{L}_A(x, \lambda; \rho) = f(x) + \sum_{i=1}^m \lambda_i h_i(x) + \frac{\rho}{2} \sum_{i=1}^m h_i(x)^2, \]
其中 \(\rho > 0\) 为罚参数,\(\lambda_i\) 为乘子。关键改进在于:
- 乘子更新:通过迭代更新 \(\lambda\) 逐步逼近约束满足,无需 \(\rho \to \infty\)。
- 数值稳定性:较小的 \(\rho\) 即可保证收敛,避免罚函数法的病态问题。
4. 算法步骤(以等式约束为例)
- 初始化:选择初始乘子 \(\lambda^0\)、罚参数 \(\rho_0 > 0\)、更新系数 \(\beta > 1\)。
- 迭代直至收敛(第 \(k\) 步):
- 求解无约束子问题:
\[ x^{k} = \arg\min_x \mathcal{L}_A(x, \lambda^{k}; \rho_k). \]
- 更新乘子:
\[ \lambda_i^{k+1} = \lambda_i^{k} + \rho_k h_i(x^{k}) \quad (i=1,\dots,m). \]
- 更新罚参数:若约束违反程度未下降,令 \(\rho_{k+1} = \beta \rho_k\)。
5. 处理不等式约束
将不等式约束 \(g_j(x) \leq 0\) 转化为等式约束:
引入松弛变量 \(s_j \geq 0\),令 \(g_j(x) + s_j = 0\),并将 \(s_j\) 纳入优化变量。或直接使用以下增广拉格朗日函数:
\[\mathcal{L}_A(x, \mu; \rho) = f(x) + \frac{\rho}{2} \sum_{j=1}^p \left[\max\left(0, \mu_j/\rho + g_j(x)\right)\right]^2 - \frac{\|\mu\|^2}{2\rho}, \]
其中乘子 \(\mu_j \geq 0\) 的更新规则为 \(\mu_j^{k+1} = \max(0, \mu_j^k + \rho_k g_j(x^k))\)。
6. 收敛性与优势
- 收敛条件:在适当条件下(如目标函数与约束光滑、满足约束规范),算法能收敛到局部最优解。
- 优势:
- 比纯罚函数法更快的收敛速度。
- 对初始罚参数 \(\rho\) 的敏感性较低。
- 广泛用于大规模问题(如结合梯度法或牛顿法求解子问题)。
7. 应用场景
增广拉格朗日法适用于:
- 工程设计中的约束优化(如结构力学)。
- 图像处理中的约束重构问题。
- 经济学中的均衡模型求解。
通过以上步骤,增广拉格朗日法在保证约束满足的同时,平衡了计算效率与稳定性。