非线性规划中的连续线性规划法进阶题
题目描述
考虑非线性规划问题:
最小化 \(f(x) = (x_1 - 2)^2 + (x_2 - 1)^2\)
约束条件:
\(g_1(x) = x_1^2 - x_2 \leq 0\)
\(g_2(x) = x_1 + x_2 - 2 \leq 0\)
其中 \(x = (x_1, x_2) \in \mathbb{R}^2\)。要求使用连续线性规划法(Sequential Linear Programming, SLP)求解该问题,初始点选为 \(x^{(0)} = (0, 0)\),信赖域半径初始值 \(\Delta_0 = 0.5\),并详细分析迭代过程。
解题过程
连续线性规划法通过逐次线性化非线性函数,将原问题转化为一系列线性规划子问题。以下是具体步骤:
-
线性化当前点
在迭代点 \(x^{(k)}\) 处,对目标函数和约束进行一阶泰勒展开:- 线性化目标: \(f(x) \approx f(x^{(k)}) + \nabla f(x^{(k)})^T (x - x^{(k)})\)
- 线性化约束: \(g_j(x) \approx g_j(x^{(k)}) + \nabla g_j(x^{(k)})^T (x - x^{(k)}) \leq 0 \quad (j=1,2)\)
其中梯度计算为:
\(\nabla f(x) = [2(x_1 - 2), 2(x_2 - 1)]^T\),
\(\nabla g_1(x) = [2x_1, -1]^T\),
\(\nabla g_2(x) = [1, 1]^T\)。
-
构建线性规划子问题
引入移动限制 \(|x_i - x_i^{(k)}| \leq \Delta_k\) 防止线性近似失效,子问题形式为:
\[ \begin{aligned} \min_{d} \quad & \nabla f(x^{(k)})^T d \\ \text{s.t.} \quad & g_j(x^{(k)}) + \nabla g_j(x^{(k)})^T d \leq 0, \quad j=1,2 \\ & |d_i| \leq \Delta_k, \quad i=1,2 \end{aligned} \]
其中 \(d = x - x^{(k)}\) 为搜索方向。
- 迭代步骤
- 初始点 \(x^{(0)} = (0, 0)\),\(\Delta_0 = 0.5\):
计算梯度:
\(\nabla f(0,0) = (-4, -2)\),
\(g_1(0,0) = 0\),\(\nabla g_1(0,0) = (0, -1)\),
\(g_2(0,0) = -2\),\(\nabla g_2(0,0) = (1, 1)\)。
子问题为:
- 初始点 \(x^{(0)} = (0, 0)\),\(\Delta_0 = 0.5\):
\[ \begin{aligned} \min_{d} \quad & -4d_1 - 2d_2 \\ \text{s.t.} \quad & 0 + 0 \cdot d_1 - 1 \cdot d_2 \leq 0 \implies -d_2 \leq 0 \\ & -2 + d_1 + d_2 \leq 0 \implies d_1 + d_2 \leq 2 \\ & |d_1| \leq 0.5, \quad |d_2| \leq 0.5 \end{aligned} \]
约束简化后,子问题是线性规划。最优解在顶点处:
由于目标函数系数全负,需最大化 $ d_1, d_2 $,但约束 $ d_2 \geq 0 $ 且移动限制要求 $ d_2 \leq 0.5 $。
分析约束:
- $ d_1 + d_2 \leq 2 $ 在移动限制下自动满足(因 $ d_1, d_2 \leq 0.5 $)。
因此最优解为 $ d_1 = 0.5, d_2 = 0.5 $,对应 $ x^{(1)} = (0.5, 0.5) $。
- 更新与收敛检查
计算实际改进比:
\(\rho = \frac{f(x^{(k)}) - f(x^{(k)} + d)}{-\nabla f(x^{(k)})^T d}\)
若 \(\rho\) 接近1,接受解并扩大信赖域;若 \(\rho\) 小,缩小信赖域。
本例中,\(f(0,0) = 4 + 1 = 5\),\(f(0.5,0.5) = (0.5-2)^2 + (0.5-1)^2 = 2.25 + 0.25 = 2.5\),
预测改进: \(-\nabla f(0,0)^T d = -(-4 \cdot 0.5 -2 \cdot 0.5) = 3\),
实际改进: \(5 - 2.5 = 2.5\),
改进比 \(\rho = 2.5 / 3 \approx 0.83\)(大于阈值0.75),接受解,并扩大信赖域至 \(\Delta_1 = 1.0\)。
- 后续迭代
重复线性化和求解子问题,直到满足收敛条件(如梯度足够小或约束违反度低)。
最终逼近最优解 \(x^* \approx (1, 1)\)(满足 \(g_1(1,1)=0\), \(g_2(1,1)=0\),且 \(f(x^*) = 2\))。
关键点总结
- SLP依赖线性近似,需信赖域控制步长以保证逼近质量。
- 每次迭代求解线性规划,效率高但可能收敛慢(尤其非凸问题)。
- 改进比 \(\rho\) 动态调整信赖域,平衡收敛速度与稳定性。