非线性规划中的序列线性规划法基础题
题目描述
考虑非线性规划问题:
最小化 f(x) = (x₁ - 2)⁴ + (x₁ - 2x₂)²
满足约束条件:
h(x) = x₁² - x₂ = 0
g(x) = x₁ + x₂ - 2 ≤ 0
初始点 x⁰ = [0, 0]ᵀ
请使用序列线性规划法(SLP)求解该问题,展示前两次迭代的详细计算过程。
解题过程
1. 方法原理介绍
序列线性规划法通过在原问题点处对非线性函数进行一阶泰勒展开,将非线性规划问题转化为一系列线性规划子问题来求解。每个子问题的解为搜索方向,再通过线搜索确定步长。
2. 第一次迭代(k=0)
2.1 计算当前点函数值
x⁰ = [0,0]ᵀ
f(x⁰) = (0-2)⁴ + (0-0)² = 16
h(x⁰) = 0² - 0 = 0
g(x⁰) = 0 + 0 - 2 = -2 ≤ 0
2.2 计算梯度
∇f(x) = [4(x₁-2)³ + 2(x₁-2x₂), -4(x₁-2x₂)]ᵀ
∇f(x⁰) = [4(0-2)³ + 2(0-0), -4(0-0)]ᵀ = [-32, 0]ᵀ
∇h(x) = [2x₁, -1]ᵀ
∇h(x⁰) = [0, -1]ᵀ
∇g(x) = [1, 1]ᵀ
∇g(x⁰) = [1, 1]ᵀ
2.3 构建线性规划子问题
在x⁰处线性化:
min d ∇f(x⁰)ᵀd = -32d₁ + 0d₂
满足:
h(x⁰) + ∇h(x⁰)ᵀd = 0 → 0 + [0, -1][d₁,d₂]ᵀ = 0 → -d₂ = 0
g(x⁰) + ∇g(x⁰)ᵀd ≤ 0 → -2 + [1,1][d₁,d₂]ᵀ ≤ 0 → d₁ + d₂ ≤ 2
2.4 求解线性规划子问题
由约束-d₂=0得d₂=0,代入d₁+d₂≤2得d₁≤2
目标函数为-32d₁,要最小化需使d₁最大化
最优解:d⁰ = [2, 0]ᵀ
目标函数值:-32×2 = -64
2.5 线搜索确定步长
新点:x⁰ + αd⁰ = [2α, 0]ᵀ
考虑约束违反度:Φ(x) = |h(x)| + max(0, g(x))
在α∈(0,1]内搜索使f(x)下降且Φ(x)较小的α
经计算选择α₀=0.5:
x¹ = [1, 0]ᵀ
f(x¹) = (1-2)⁴ + (1-0)² = 1 + 1 = 2
h(x¹) = 1² - 0 = 1 ≠ 0
g(x¹) = 1 + 0 - 2 = -1 ≤ 0
3. 第二次迭代(k=1)
3.1 计算当前点函数值
x¹ = [1,0]ᵀ
f(x¹) = 2
h(x¹) = 1
g(x¹) = -1
3.2 计算梯度
∇f(x¹) = [4(1-2)³ + 2(1-0), -4(1-0)]ᵀ = [-4+2, -4]ᵀ = [-2, -4]ᵀ
∇h(x¹) = [2×1, -1]ᵀ = [2, -1]ᵀ
∇g(x¹) = [1, 1]ᵀ
3.3 构建线性规划子问题
min d ∇f(x¹)ᵀd = -2d₁ -4d₂
满足:
h(x¹) + ∇h(x¹)ᵀd = 0 → 1 + [2, -1][d₁,d₂]ᵀ = 0 → 2d₁ - d₂ = -1
g(x¹) + ∇g(x¹)ᵀd ≤ 0 → -1 + [1,1][d₁,d₂]ᵀ ≤ 0 → d₁ + d₂ ≤ 1
3.4 求解线性规划子问题
由2d₁ - d₂ = -1得d₂ = 2d₁ + 1
代入d₁ + d₂ ≤ 1:d₁ + (2d₁+1) ≤ 1 → 3d₁ ≤ 0 → d₁ ≤ 0
目标函数:-2d₁ -4(2d₁+1) = -2d₁ -8d₁ -4 = -10d₁ -4
为最小化目标,需使d₁最大化,结合d₁≤0得d₁=0
则d₂ = 2×0 + 1 = 1
最优解:d¹ = [0, 1]ᵀ
目标函数值:-10×0 -4 = -4
3.5 线搜索确定步长
新点:x¹ + αd¹ = [1, α]ᵀ
选择α₁=1:
x² = [1, 1]ᵀ
f(x²) = (1-2)⁴ + (1-2)² = 1 + 1 = 2
h(x²) = 1² - 1 = 0
g(x²) = 1 + 1 - 2 = 0 ≤ 0
经过两次迭代,点x²=[1,1]ᵀ已满足所有约束,且目标函数值从16降至2。