非线性规划中的松弛线性规划法基础题
字数 2978 2025-10-28 00:29:09

非线性规划中的松弛线性规划法基础题

题目描述
考虑非线性规划问题:

\[\min f(x) = (x_1 - 2)^2 + (x_2 - 1)^2 \]

满足约束:

\[g_1(x) = x_1^2 - x_2 \le 0, \quad g_2(x) = x_1 + x_2 - 2 \le 0 \]

初始可行点 \(x^{(0)} = (0, 0)\),使用松弛线性规划法(SLP)进行两次迭代,并说明其原理。


解题过程

1. 方法原理
松弛线性规划法(Sequential Linear Programming, SLP)通过线性化非线性函数,将原问题转化为一系列线性规划子问题:

  1. 在当前点 \(x^{(k)}\) 对目标函数和约束进行一阶泰勒展开;
  2. 添加移动限制(信任域)\(\|d\| \le \delta^{(k)}\),防止线性近似误差过大;
  3. 求解线性规划子问题,得到搜索方向 \(d^{(k)}\)
  4. 更新 \(x^{(k+1)} = x^{(k)} + d^{(k)}\),调整信任域半径 \(\delta^{(k)}\)

2. 第一次迭代(\(k=0\)
初始点 \(x^{(0)} = (0, 0)\),设信任域半径 \(\delta^{(0)} = 0.5\)

线性化计算

  • 目标函数梯度:\(\nabla f(x) = [2(x_1 - 2), 2(x_2 - 1)]\),在 \(x^{(0)}\) 处:

\[ \nabla f(0,0) = [-4, -2], \quad f(0,0) = 4 + 1 = 5 \]

线性化:\(f(x) \approx f(0,0) + \nabla f(0,0)^T d = 5 - 4d_1 - 2d_2\)

  • 约束 \(g_1(x) = x_1^2 - x_2\)

\[ \nabla g_1 = [2x_1, -1] \Rightarrow \nabla g_1(0,0) = [0, -1], \quad g_1(0,0) = 0 \]

线性化:\(g_1 \approx 0 + 0 \cdot d_1 - 1 \cdot d_2 = -d_2 \le 0\)

  • 约束 \(g_2(x) = x_1 + x_2 - 2\)

\[ \nabla g_2 = [1, 1], \quad g_2(0,0) = -2 \le 0 \]

线性化:\(g_2 \approx -2 + d_1 + d_2 \le 0 \Rightarrow d_1 + d_2 \le 2\)(注意原约束已满足,线性化后仍有效)。

子问题(线性规划)

\[\min_{d} -4d_1 - 2d_2 \]

满足:

\[-d_2 \le 0, \quad d_1 + d_2 \le 2, \quad \|d\|_\infty \le 0.5 \]

(使用无穷范数信任域:\(|d_1| \le 0.5, |d_2| \le 0.5\)

求解
目标函数系数全为负,需最大化 \(d_1, d_2\)。约束 \(-d_2 \le 0 \Rightarrow d_2 \ge 0\);信任域限制 \(d_1 \le 0.5, d_2 \le 0.5\)。代入 \(d_1 = 0.5, d_2 = 0.5\)

  • 检查 \(d_1 + d_2 = 1 \le 2\),满足。
    最优解 \(d^{(0)} = (0.5, 0.5)\),目标值 \(-4 \times 0.5 - 2 \times 0.5 = -3\)

更新点

\[x^{(1)} = (0, 0) + (0.5, 0.5) = (0.5, 0.5) \]

计算实际函数值:

\[f(0.5,0.5) = (0.5-2)^2 + (0.5-1)^2 = 2.25 + 0.25 = 2.5 \]

较初始值 \(f=5\) 下降,接受该点。


3. 第二次迭代(\(k=1\)
当前点 \(x^{(1)} = (0.5, 0.5)\),设 \(\delta^{(1)} = 0.5\)

线性化计算

  • \(\nabla f(0.5,0.5) = [2(0.5-2), 2(0.5-1)] = [-3, -1]\)
    \(f(0.5,0.5) = 2.5\),线性化:\(f \approx 2.5 - 3d_1 - d_2\)
  • \(g_1(0.5,0.5) = 0.25 - 0.5 = -0.25\)\(\nabla g_1 = [1, -1]\)
    线性化:\(g_1 \approx -0.25 + d_1 - d_2 \le 0 \Rightarrow d_1 - d_2 \le 0.25\)
  • \(g_2(0.5,0.5) = 0.5 + 0.5 - 2 = -1\)\(\nabla g_2 = [1, 1]\)
    线性化:\(g_2 \approx -1 + d_1 + d_2 \le 0 \Rightarrow d_1 + d_2 \le 1\)

子问题

\[\min_{d} -3d_1 - d_2 \]

满足:

\[d_1 - d_2 \le 0.25, \quad d_1 + d_2 \le 1, \quad |d_1| \le 0.5, \quad |d_2| \le 0.5 \]

求解
目标函数系数为负,需取最大 \(d_1, d_2\)。约束 \(d_1 + d_2 \le 1\) 更紧于信任域(\(d_1 + d_2 \le 1\) vs \(d_1 \le 0.5, d_2 \le 0.5\))。尝试顶点:

  • \(d_1 = 0.5, d_2 = 0.5\),则 \(d_1 + d_2 = 1\) 满足,但 \(d_1 - d_2 = 0 \le 0.25\) 成立。
    目标值 \(-3 \times 0.5 - 0.5 = -2\)
  • 验证无更优解:若 \(d_2 = 0.5\),由 \(d_1 + 0.5 \le 1 \Rightarrow d_1 \le 0.5\),已取最大值。
    最优解 \(d^{(1)} = (0.5, 0.5)\)

更新点

\[x^{(2)} = (0.5, 0.5) + (0.5, 0.5) = (1, 1) \]

计算实际函数值:

\[f(1,1) = (1-2)^2 + (1-1)^2 = 1 + 0 = 1 \]

\(f=2.5\) 下降,接受该点。


4. 结论
两次迭代后,点从 \((0,0)\)\((0.5,0.5)\) 移动到 \((1,1)\),函数值从 \(5\) 降至 \(1\)。SLP 通过线性近似和信任域控制,逐步逼近最优解(本题最优解在 \(x=(1,1)\),满足 \(g_1(1,1)=0, g_2(1,1)=0\))。

非线性规划中的松弛线性规划法基础题 题目描述 考虑非线性规划问题: \[ \min f(x) = (x_ 1 - 2)^2 + (x_ 2 - 1)^2 \] 满足约束: \[ g_ 1(x) = x_ 1^2 - x_ 2 \le 0, \quad g_ 2(x) = x_ 1 + x_ 2 - 2 \le 0 \] 初始可行点 \(x^{(0)} = (0, 0)\),使用松弛线性规划法(SLP)进行两次迭代,并说明其原理。 解题过程 1. 方法原理 松弛线性规划法(Sequential Linear Programming, SLP)通过线性化非线性函数,将原问题转化为一系列线性规划子问题: 在当前点 \(x^{(k)}\) 对目标函数和约束进行一阶泰勒展开; 添加移动限制(信任域)\(\|d\| \le \delta^{(k)}\),防止线性近似误差过大; 求解线性规划子问题,得到搜索方向 \(d^{(k)}\); 更新 \(x^{(k+1)} = x^{(k)} + d^{(k)}\),调整信任域半径 \(\delta^{(k)}\)。 2. 第一次迭代(\(k=0\)) 初始点 \(x^{(0)} = (0, 0)\),设信任域半径 \(\delta^{(0)} = 0.5\)。 线性化计算 : 目标函数梯度:\(\nabla f(x) = [ 2(x_ 1 - 2), 2(x_ 2 - 1) ]\),在 \(x^{(0)}\) 处: \[ \nabla f(0,0) = [ -4, -2 ], \quad f(0,0) = 4 + 1 = 5 \] 线性化:\(f(x) \approx f(0,0) + \nabla f(0,0)^T d = 5 - 4d_ 1 - 2d_ 2\)。 约束 \(g_ 1(x) = x_ 1^2 - x_ 2\): \[ \nabla g_ 1 = [ 2x_ 1, -1] \Rightarrow \nabla g_ 1(0,0) = [ 0, -1], \quad g_ 1(0,0) = 0 \] 线性化:\(g_ 1 \approx 0 + 0 \cdot d_ 1 - 1 \cdot d_ 2 = -d_ 2 \le 0\)。 约束 \(g_ 2(x) = x_ 1 + x_ 2 - 2\): \[ \nabla g_ 2 = [ 1, 1], \quad g_ 2(0,0) = -2 \le 0 \] 线性化:\(g_ 2 \approx -2 + d_ 1 + d_ 2 \le 0 \Rightarrow d_ 1 + d_ 2 \le 2\)(注意原约束已满足,线性化后仍有效)。 子问题(线性规划) : \[ \min_ {d} -4d_ 1 - 2d_ 2 \] 满足: \[ -d_ 2 \le 0, \quad d_ 1 + d_ 2 \le 2, \quad \|d\|_ \infty \le 0.5 \] (使用无穷范数信任域:\(|d_ 1| \le 0.5, |d_ 2| \le 0.5\)) 求解 : 目标函数系数全为负,需最大化 \(d_ 1, d_ 2\)。约束 \(-d_ 2 \le 0 \Rightarrow d_ 2 \ge 0\);信任域限制 \(d_ 1 \le 0.5, d_ 2 \le 0.5\)。代入 \(d_ 1 = 0.5, d_ 2 = 0.5\): 检查 \(d_ 1 + d_ 2 = 1 \le 2\),满足。 最优解 \(d^{(0)} = (0.5, 0.5)\),目标值 \(-4 \times 0.5 - 2 \times 0.5 = -3\)。 更新点 : \[ x^{(1)} = (0, 0) + (0.5, 0.5) = (0.5, 0.5) \] 计算实际函数值: \[ f(0.5,0.5) = (0.5-2)^2 + (0.5-1)^2 = 2.25 + 0.25 = 2.5 \] 较初始值 \(f=5\) 下降,接受该点。 3. 第二次迭代(\(k=1\)) 当前点 \(x^{(1)} = (0.5, 0.5)\),设 \(\delta^{(1)} = 0.5\)。 线性化计算 : \(\nabla f(0.5,0.5) = [ 2(0.5-2), 2(0.5-1)] = [ -3, -1 ]\), \(f(0.5,0.5) = 2.5\),线性化:\(f \approx 2.5 - 3d_ 1 - d_ 2\)。 \(g_ 1(0.5,0.5) = 0.25 - 0.5 = -0.25\),\(\nabla g_ 1 = [ 1, -1 ]\), 线性化:\(g_ 1 \approx -0.25 + d_ 1 - d_ 2 \le 0 \Rightarrow d_ 1 - d_ 2 \le 0.25\)。 \(g_ 2(0.5,0.5) = 0.5 + 0.5 - 2 = -1\),\(\nabla g_ 2 = [ 1, 1 ]\), 线性化:\(g_ 2 \approx -1 + d_ 1 + d_ 2 \le 0 \Rightarrow d_ 1 + d_ 2 \le 1\)。 子问题 : \[ \min_ {d} -3d_ 1 - d_ 2 \] 满足: \[ d_ 1 - d_ 2 \le 0.25, \quad d_ 1 + d_ 2 \le 1, \quad |d_ 1| \le 0.5, \quad |d_ 2| \le 0.5 \] 求解 : 目标函数系数为负,需取最大 \(d_ 1, d_ 2\)。约束 \(d_ 1 + d_ 2 \le 1\) 更紧于信任域(\(d_ 1 + d_ 2 \le 1\) vs \(d_ 1 \le 0.5, d_ 2 \le 0.5\))。尝试顶点: 若 \(d_ 1 = 0.5, d_ 2 = 0.5\),则 \(d_ 1 + d_ 2 = 1\) 满足,但 \(d_ 1 - d_ 2 = 0 \le 0.25\) 成立。 目标值 \(-3 \times 0.5 - 0.5 = -2\)。 验证无更优解:若 \(d_ 2 = 0.5\),由 \(d_ 1 + 0.5 \le 1 \Rightarrow d_ 1 \le 0.5\),已取最大值。 最优解 \(d^{(1)} = (0.5, 0.5)\)。 更新点 : \[ x^{(2)} = (0.5, 0.5) + (0.5, 0.5) = (1, 1) \] 计算实际函数值: \[ f(1,1) = (1-2)^2 + (1-1)^2 = 1 + 0 = 1 \] 较 \(f=2.5\) 下降,接受该点。 4. 结论 两次迭代后,点从 \((0,0)\) 经 \((0.5,0.5)\) 移动到 \((1,1)\),函数值从 \(5\) 降至 \(1\)。SLP 通过线性近似和信任域控制,逐步逼近最优解(本题最优解在 \(x=(1,1)\),满足 \(g_ 1(1,1)=0, g_ 2(1,1)=0\))。