非线性规划中的罚函数法基础题
题目描述:
考虑一个简单的非线性约束优化问题:
最小化目标函数 \( f(x)1. 问题建模
目标:最小化 \(f(x) = (x_1 - 2)^2 + (x_2 - 1)^2\)
约束条件:
- 等式约束 \(h(x) = x_1 + x_2 - 2 = 0\)
- 不等式约束 \(g(x) = x_1^2 - x_2 \leq 0\)
该问题需同时满足等式和不等式约束。罚函数法的核心思想是将约束违反程度转化为惩罚项,添加到目标函数中,从而将原问题转化为一系列无约束优化问题。
- 罚函数构造
定义罚函数为:
\[ P(x, \mu) = f(x) + \mu \left[ h(x)^2 + \left( \max(0, g(x)) \right)^2 \right] \]
其中:
- \(\mu\) 是惩罚因子(\(\mu > 0\)),且会逐渐增大;
- \(h(x)^2\) 惩罚等式约束的违反;
- \(\left( \max(0, g(x)) \right)^2\) 惩罚不等式约束的违反(仅当 \(g(x) > 0\) 时触发)。
例如,若 \(x = (0, 0)\):
\(h(x) = -2\),违反等式约束;
\(g(x) = 0\),满足不等式约束;
惩罚项为 \((-2)^2 + (\max(0, 0))^2 = 4\)。
-
求解过程(以 \(\mu = 1, 10, 100\) 为例)
-
当 \(\mu = 1\):
罚函数为 \(P(x, 1) = (x_1 - 2)^2 + (x_2 - 1)^2 + 1 \cdot \left[ (x_1 + x_2 - 2)^2 + (\max(0, x_1^2 - x_2))^2 \right]\)。
忽略不等式约束惩罚(因初始点常满足约束),通过梯度下降或解析法求最小值点。
近似解: \(x^{(1)} \approx (1.2, 0.8)\),此时约束仍有轻微违反。 -
当 \(\mu = 10\):
惩罚项权重增加,解更贴近约束:
\(P(x, 10) = f(x) + 10 \cdot \left[ (x_1 + x_2 - 2)^2 + (\max(0, x_1^2 - x_2))^2 \right]\)。
数值求解得 \(x^{(2)} \approx (1.05, 0.95)\),约束违反减小。 -
当 \(\mu = 100\):
进一步逼近似可行解:
\(x^{(3)} \approx (1.005, 0.995)\),基本满足 \(x_1 + x_2 \approx 2\) 且 \(x_1^2 - x_2 \approx 0\)。
-
-
收敛分析
当 \(\mu \to \infty\),罚函数的最优解收敛至原问题的最优解 \(x^* = (1, 1)\),此时:- \(f(x^*) = (1-2)^2 + (1-1)^2 = 1\);
- 所有约束严格满足。
实际应用中,\(\mu\) 需逐步增大以避免数值困难。
关键点总结:
罚函数法通过将约束转化为惩罚项,逐步强化惩罚力度,迫使解趋近可行域。优点是概念简单,适用于复杂约束;缺点是 \(\mu\) 过大时函数性态变差,需谨慎选择递增策略。