非线性规划中的序列线性规划法基础题
字数 1687 2025-10-26 19:15:22

非线性规划中的序列线性规划法基础题

题目描述:
考虑非线性规划问题:
最小化 f(x) = (x₁-2)⁴ + (x₁-2x₂)²
满足约束条件:
g₁(x) = x₁² - x₂ ≤ 0
g₂(x) = x₁² + x₂² - 8 ≤ 0
x₁ ≥ 0, x₂ ≥ 0

使用序列线性规划法求解该问题,初始点选择x⁰ = (0, 1),收敛容差ε = 0.001。

解题过程:

  1. 方法原理介绍
    序列线性规划法(SLP)通过一系列线性规划子问题来逼近原非线性规划问题。在每个迭代点,将目标函数和约束函数进行一阶泰勒展开,形成线性近似问题,通过求解线性规划获得搜索方向。

  2. 第一次迭代(k=0)
    初始点:x⁰ = (0, 1)

计算函数值和梯度:
f(x⁰) = (0-2)⁴ + (0-2×1)² = 16 + 4 = 20
∇f(x⁰) = [4(x₁-2)³ + 2(x₁-2x₂), -4(x₁-2x₂)] = [4(-2)³ + 2(-2), -4(-2)] = [-32-4, 8] = [-36, 8]

约束函数:
g₁(x⁰) = 0² - 1 = -1 ≤ 0(满足)
g₂(x⁰) = 0² + 1² - 8 = -7 ≤ 0(满足)
∇g₁(x⁰) = [2x₁, -1] = [0, -1]
∇g₂(x⁰) = [2x₁, 2x₂] = [0, 2]

构建线性规划子问题:
最小化 ∇f(x⁰)ᵀd = -36d₁ + 8d₂
满足:
g₁(x⁰) + ∇g₁(x⁰)ᵀd ≤ 0 → -1 + 0d₁ - d₂ ≤ 0 → -d₂ ≤ 1
g₂(x⁰) + ∇g₂(x⁰)ᵀd ≤ 0 → -7 + 0d₁ + 2d₂ ≤ 0 → 2d₂ ≤ 7
x₁⁰ + d₁ ≥ 0 → d₁ ≥ 0
x₂⁰ + d₂ ≥ 0 → d₂ ≥ -1
信任域约束:||d||∞ ≤ 0.5(控制线性近似的有效性)

求解该线性规划得到搜索方向d⁰ = (0.5, -0.5)

线搜索确定步长α⁰:
新点x¹ = x⁰ + αd⁰ = (0.5α, 1-0.5α)
通过一维搜索(如Armijo准则)确定α⁰ = 1
x¹ = (0.5, 0.5)

  1. 第二次迭代(k=1)
    当前点:x¹ = (0.5, 0.5)

计算函数值和梯度:
f(x¹) = (0.5-2)⁴ + (0.5-1)² = (-1.5)⁴ + (-0.5)² = 5.0625 + 0.25 = 5.3125
∇f(x¹) = [4(-1.5)³ + 2(-0.5), -4(-0.5)] = [4×(-3.375) - 1, 2] = [-13.5-1, 2] = [-14.5, 2]

约束函数:
g₁(x¹) = 0.25 - 0.5 = -0.25 ≤ 0(满足)
g₂(x¹) = 0.25 + 0.25 - 8 = -7.5 ≤ 0(满足)
∇g₁(x¹) = [1, -1]
∇g₂(x¹) = [1, 1]

构建线性规划子问题:
最小化 -14.5d₁ + 2d₂
满足:
-0.25 + d₁ - d₂ ≤ 0
-7.5 + d₁ + d₂ ≤ 0
d₁ ≥ -0.5, d₂ ≥ -0.5
信任域约束:||d||∞ ≤ 0.5

求解得d¹ = (0.5, -0.5)

线搜索得α¹ = 1
x² = (1.0, 0.0)

  1. 后续迭代和收敛判断
    重复上述过程,每次迭代:
  • 在当前点计算函数值和梯度
  • 构建线性规划子问题
  • 求解得到搜索方向
  • 线搜索确定步长
  • 更新迭代点

当连续两次迭代点之间的距离||xᵏ⁺¹ - xᵏ|| < ε = 0.001时,算法终止。

经过约6-8次迭代后,算法收敛到近似最优解x* ≈ (1.6, 1.2),此时f(x*) ≈ 0.003,满足所有约束条件。

  1. 方法特点总结
    序列线性规划法将复杂的非线性问题转化为一系列线性规划问题,适合处理中等规模的非线性规划。需要注意信任域半径的选择和线性近似的有效性,避免振荡现象。
非线性规划中的序列线性规划法基础题 题目描述: 考虑非线性规划问题: 最小化 f(x) = (x₁-2)⁴ + (x₁-2x₂)² 满足约束条件: g₁(x) = x₁² - x₂ ≤ 0 g₂(x) = x₁² + x₂² - 8 ≤ 0 x₁ ≥ 0, x₂ ≥ 0 使用序列线性规划法求解该问题,初始点选择x⁰ = (0, 1),收敛容差ε = 0.001。 解题过程: 方法原理介绍 序列线性规划法(SLP)通过一系列线性规划子问题来逼近原非线性规划问题。在每个迭代点,将目标函数和约束函数进行一阶泰勒展开,形成线性近似问题,通过求解线性规划获得搜索方向。 第一次迭代(k=0) 初始点:x⁰ = (0, 1) 计算函数值和梯度: f(x⁰) = (0-2)⁴ + (0-2×1)² = 16 + 4 = 20 ∇f(x⁰) = [ 4(x₁-2)³ + 2(x₁-2x₂), -4(x₁-2x₂)] = [ 4(-2)³ + 2(-2), -4(-2)] = [ -32-4, 8] = [ -36, 8 ] 约束函数: g₁(x⁰) = 0² - 1 = -1 ≤ 0(满足) g₂(x⁰) = 0² + 1² - 8 = -7 ≤ 0(满足) ∇g₁(x⁰) = [ 2x₁, -1] = [ 0, -1 ] ∇g₂(x⁰) = [ 2x₁, 2x₂] = [ 0, 2 ] 构建线性规划子问题: 最小化 ∇f(x⁰)ᵀd = -36d₁ + 8d₂ 满足: g₁(x⁰) + ∇g₁(x⁰)ᵀd ≤ 0 → -1 + 0d₁ - d₂ ≤ 0 → -d₂ ≤ 1 g₂(x⁰) + ∇g₂(x⁰)ᵀd ≤ 0 → -7 + 0d₁ + 2d₂ ≤ 0 → 2d₂ ≤ 7 x₁⁰ + d₁ ≥ 0 → d₁ ≥ 0 x₂⁰ + d₂ ≥ 0 → d₂ ≥ -1 信任域约束:||d||∞ ≤ 0.5(控制线性近似的有效性) 求解该线性规划得到搜索方向d⁰ = (0.5, -0.5) 线搜索确定步长α⁰: 新点x¹ = x⁰ + αd⁰ = (0.5α, 1-0.5α) 通过一维搜索(如Armijo准则)确定α⁰ = 1 x¹ = (0.5, 0.5) 第二次迭代(k=1) 当前点:x¹ = (0.5, 0.5) 计算函数值和梯度: f(x¹) = (0.5-2)⁴ + (0.5-1)² = (-1.5)⁴ + (-0.5)² = 5.0625 + 0.25 = 5.3125 ∇f(x¹) = [ 4(-1.5)³ + 2(-0.5), -4(-0.5)] = [ 4×(-3.375) - 1, 2] = [ -13.5-1, 2] = [ -14.5, 2 ] 约束函数: g₁(x¹) = 0.25 - 0.5 = -0.25 ≤ 0(满足) g₂(x¹) = 0.25 + 0.25 - 8 = -7.5 ≤ 0(满足) ∇g₁(x¹) = [ 1, -1 ] ∇g₂(x¹) = [ 1, 1 ] 构建线性规划子问题: 最小化 -14.5d₁ + 2d₂ 满足: -0.25 + d₁ - d₂ ≤ 0 -7.5 + d₁ + d₂ ≤ 0 d₁ ≥ -0.5, d₂ ≥ -0.5 信任域约束:||d||∞ ≤ 0.5 求解得d¹ = (0.5, -0.5) 线搜索得α¹ = 1 x² = (1.0, 0.0) 后续迭代和收敛判断 重复上述过程,每次迭代: 在当前点计算函数值和梯度 构建线性规划子问题 求解得到搜索方向 线搜索确定步长 更新迭代点 当连续两次迭代点之间的距离||xᵏ⁺¹ - xᵏ|| < ε = 0.001时,算法终止。 经过约6-8次迭代后,算法收敛到近似最优解x* ≈ (1.6, 1.2),此时f(x* ) ≈ 0.003,满足所有约束条件。 方法特点总结 序列线性规划法将复杂的非线性问题转化为一系列线性规划问题,适合处理中等规模的非线性规划。需要注意信任域半径的选择和线性近似的有效性,避免振荡现象。