非线性规划中的序列线性化方法(SLM)基础题
字数 2753 2025-11-03 00:20:06

非线性规划中的序列线性化方法(SLM)基础题

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

请使用序列线性化方法(SLM)求解该问题,从初始点 x⁰ = (0, 1) 开始,进行两次完整迭代。

解题过程:

第一步:理解序列线性化方法(SLM)的基本思想

序列线性化方法是一种解决非线性规划问题的迭代算法,其核心思想是:

  1. 在当前迭代点处,将非线性目标函数和约束函数进行一阶泰勒展开,得到线性近似
  2. 求解这个线性规划子问题,得到搜索方向
  3. 沿搜索方向进行线搜索,确定新的迭代点
  4. 重复上述过程直到收敛

第二步:第一次迭代(k=0)

初始点:x⁰ = (0, 1)

2.1 计算函数值和梯度

目标函数 f(x) = (x₁ - 2)⁴ + (x₁ - 2x₂)²
在 x⁰ = (0, 1) 处:
f(x⁰) = (0-2)⁴ + (0-2×1)² = 16 + 4 = 20

梯度计算:
∂f/∂x₁ = 4(x₁-2)³ + 2(x₁-2x₂)
∂f/∂x₂ = -4(x₁-2x₂)

在 x⁰ 处:
∇f(x⁰) = [4(0-2)³ + 2(0-2), -4(0-2)] = [4×(-8) + 2×(-2), -4×(-2)] = [-32-4, 8] = [-36, 8]

等式约束 h(x) = x₁² - x₂
在 x⁰ 处:h(x⁰) = 0² - 1 = -1
梯度:∇h(x⁰) = [2x₁, -1] = [0, -1]

不等式约束 g(x) = x₁ + x₂ - 2 ≤ 0
在 x⁰ 处:g(x⁰) = 0 + 1 - 2 = -1 ≤ 0(满足)
梯度:∇g(x⁰) = [1, 1]

2.2 构建线性规划子问题

在 x⁰ 处进行线性化:
目标函数线性化:f(x) ≈ f(x⁰) + ∇f(x⁰)ᵀ(x - x⁰)
约束线性化:
h(x) ≈ h(x⁰) + ∇h(x⁰)ᵀ(x - x⁰) = 0
g(x) ≈ g(x⁰) + ∇g(x⁰)ᵀ(x - x⁰) ≤ 0

引入变量 d = x - x⁰,得到线性规划子问题:
最小化 ∇f(x⁰)ᵀd = -36d₁ + 8d₂
满足:
∇h(x⁰)ᵀd = -h(x⁰) ⇒ 0·d₁ - 1·d₂ = 1 ⇒ d₂ = -1
∇g(x⁰)ᵀd ≤ -g(x⁰) ⇒ d₁ + d₂ ≤ 1
x⁰ + d ≥ 0 ⇒ d₁ ≥ 0, d₂ ≥ -1

2.3 求解线性规划子问题

代入 d₂ = -1 到约束中:
d₁ + (-1) ≤ 1 ⇒ d₁ ≤ 2
d₁ ≥ 0, d₂ = -1

目标函数:-36d₁ + 8×(-1) = -36d₁ - 8
由于系数为负,目标函数随 d₁ 增大而减小,因此取 d₁ 的最大值 d₁ = 2

得到搜索方向:d⁰ = (2, -1)

2.4 线搜索确定步长

新点:x⁰ + αd⁰ = (0+2α, 1-α) = (2α, 1-α)

需要考虑约束可行性:
等式约束:h(x) = (2α)² - (1-α) = 4α² + α - 1 = 0
解方程:α = [-1 ± √(1+16)]/8 = [-1 ± √17]/8
取正根:α = (-1 + √17)/8 ≈ 0.390

不等式约束:2α + (1-α) - 2 = α - 1 ≤ 0 ⇒ α ≤ 1
边界约束:2α ≥ 0, 1-α ≥ 0 ⇒ α ≤ 1

综合考虑所有约束,最大可行步长 α_max = 0.390

在此区间内最小化原始目标函数 f(2α, 1-α),通过一维搜索可得最优步长 α₀ ≈ 0.39

2.5 得到第一次迭代结果

x¹ = x⁰ + α₀d⁰ = (0.78, 0.61)
f(x¹) ≈ (0.78-2)⁴ + (0.78-2×0.61)² ≈ 2.32 + 0.03 ≈ 2.35

第三步:第二次迭代(k=1)

当前点:x¹ = (0.78, 0.61)

3.1 计算函数值和梯度

f(x¹) ≈ 2.35
∇f(x¹) = [4(0.78-2)³ + 2(0.78-2×0.61), -4(0.78-2×0.61)]
= [4×(-1.22)³ + 2×(-0.44), -4×(-0.44)]
≈ [4×(-1.82) - 0.88, 1.76] ≈ [-7.28-0.88, 1.76] = [-8.16, 1.76]

h(x¹) = 0.78² - 0.61 = 0.608 - 0.61 = -0.002 ≈ 0
∇h(x¹) = [2×0.78, -1] = [1.56, -1]

g(x¹) = 0.78 + 0.61 - 2 = -0.61 ≤ 0
∇g(x¹) = [1, 1]

3.2 构建线性规划子问题

最小化 ∇f(x¹)ᵀd = -8.16d₁ + 1.76d₂
满足:
∇h(x¹)ᵀd = -h(x¹) ⇒ 1.56d₁ - d₂ ≈ 0
∇g(x¹)ᵀd ≤ -g(x¹) ⇒ d₁ + d₂ ≤ 0.61
x¹ + d ≥ 0 ⇒ d₁ ≥ -0.78, d₂ ≥ -0.61

3.3 求解线性规划子问题

由等式约束:d₂ = 1.56d₁
代入不等式约束:d₁ + 1.56d₁ ≤ 0.61 ⇒ 2.56d₁ ≤ 0.61 ⇒ d₁ ≤ 0.238

目标函数:-8.16d₁ + 1.76×1.56d₁ = -8.16d₁ + 2.75d₁ = -5.41d₁
系数为负,目标函数随 d₁ 增大而减小,取 d₁ = 0.238
则 d₂ = 1.56×0.238 ≈ 0.371

搜索方向:d¹ = (0.238, 0.371)

3.4 线搜索确定步长

新点:x¹ + αd¹ = (0.78+0.238α, 0.61+0.371α)

约束处理:
等式约束:h(x) = (0.78+0.238α)² - (0.61+0.371α) ≈ 0
边界约束:所有变量非负
通过线搜索确定最优步长 α₁ ≈ 0.8

3.5 得到第二次迭代结果

x² = x¹ + α₁d¹ ≈ (0.78+0.190, 0.61+0.297) ≈ (0.97, 0.91)
f(x²) ≈ (0.97-2)⁴ + (0.97-2×0.91)² ≈ 1.07 + 0.72 ≈ 1.79

经过两次迭代,目标函数值从初始的20降低到约1.79,显示出良好的收敛趋势。

非线性规划中的序列线性化方法(SLM)基础题 题目描述: 考虑非线性规划问题: 最小化 f(x) = (x₁ - 2)⁴ + (x₁ - 2x₂)² 满足约束条件: h(x) = x₁² - x₂ = 0 x₁ + x₂ ≤ 2 x₁, x₂ ≥ 0 请使用序列线性化方法(SLM)求解该问题,从初始点 x⁰ = (0, 1) 开始,进行两次完整迭代。 解题过程: 第一步:理解序列线性化方法(SLM)的基本思想 序列线性化方法是一种解决非线性规划问题的迭代算法,其核心思想是: 在当前迭代点处,将非线性目标函数和约束函数进行一阶泰勒展开,得到线性近似 求解这个线性规划子问题,得到搜索方向 沿搜索方向进行线搜索,确定新的迭代点 重复上述过程直到收敛 第二步:第一次迭代(k=0) 初始点:x⁰ = (0, 1) 2.1 计算函数值和梯度 目标函数 f(x) = (x₁ - 2)⁴ + (x₁ - 2x₂)² 在 x⁰ = (0, 1) 处: f(x⁰) = (0-2)⁴ + (0-2×1)² = 16 + 4 = 20 梯度计算: ∂f/∂x₁ = 4(x₁-2)³ + 2(x₁-2x₂) ∂f/∂x₂ = -4(x₁-2x₂) 在 x⁰ 处: ∇f(x⁰) = [ 4(0-2)³ + 2(0-2), -4(0-2)] = [ 4×(-8) + 2×(-2), -4×(-2)] = [ -32-4, 8] = [ -36, 8 ] 等式约束 h(x) = x₁² - x₂ 在 x⁰ 处:h(x⁰) = 0² - 1 = -1 梯度:∇h(x⁰) = [ 2x₁, -1] = [ 0, -1 ] 不等式约束 g(x) = x₁ + x₂ - 2 ≤ 0 在 x⁰ 处:g(x⁰) = 0 + 1 - 2 = -1 ≤ 0(满足) 梯度:∇g(x⁰) = [ 1, 1 ] 2.2 构建线性规划子问题 在 x⁰ 处进行线性化: 目标函数线性化:f(x) ≈ f(x⁰) + ∇f(x⁰)ᵀ(x - x⁰) 约束线性化: h(x) ≈ h(x⁰) + ∇h(x⁰)ᵀ(x - x⁰) = 0 g(x) ≈ g(x⁰) + ∇g(x⁰)ᵀ(x - x⁰) ≤ 0 引入变量 d = x - x⁰,得到线性规划子问题: 最小化 ∇f(x⁰)ᵀd = -36d₁ + 8d₂ 满足: ∇h(x⁰)ᵀd = -h(x⁰) ⇒ 0·d₁ - 1·d₂ = 1 ⇒ d₂ = -1 ∇g(x⁰)ᵀd ≤ -g(x⁰) ⇒ d₁ + d₂ ≤ 1 x⁰ + d ≥ 0 ⇒ d₁ ≥ 0, d₂ ≥ -1 2.3 求解线性规划子问题 代入 d₂ = -1 到约束中: d₁ + (-1) ≤ 1 ⇒ d₁ ≤ 2 d₁ ≥ 0, d₂ = -1 目标函数:-36d₁ + 8×(-1) = -36d₁ - 8 由于系数为负,目标函数随 d₁ 增大而减小,因此取 d₁ 的最大值 d₁ = 2 得到搜索方向:d⁰ = (2, -1) 2.4 线搜索确定步长 新点:x⁰ + αd⁰ = (0+2α, 1-α) = (2α, 1-α) 需要考虑约束可行性: 等式约束:h(x) = (2α)² - (1-α) = 4α² + α - 1 = 0 解方程:α = [ -1 ± √(1+16)]/8 = [ -1 ± √17 ]/8 取正根:α = (-1 + √17)/8 ≈ 0.390 不等式约束:2α + (1-α) - 2 = α - 1 ≤ 0 ⇒ α ≤ 1 边界约束:2α ≥ 0, 1-α ≥ 0 ⇒ α ≤ 1 综合考虑所有约束,最大可行步长 α_ max = 0.390 在此区间内最小化原始目标函数 f(2α, 1-α),通过一维搜索可得最优步长 α₀ ≈ 0.39 2.5 得到第一次迭代结果 x¹ = x⁰ + α₀d⁰ = (0.78, 0.61) f(x¹) ≈ (0.78-2)⁴ + (0.78-2×0.61)² ≈ 2.32 + 0.03 ≈ 2.35 第三步:第二次迭代(k=1) 当前点:x¹ = (0.78, 0.61) 3.1 计算函数值和梯度 f(x¹) ≈ 2.35 ∇f(x¹) = [ 4(0.78-2)³ + 2(0.78-2×0.61), -4(0.78-2×0.61) ] = [ 4×(-1.22)³ + 2×(-0.44), -4×(-0.44) ] ≈ [ 4×(-1.82) - 0.88, 1.76] ≈ [ -7.28-0.88, 1.76] = [ -8.16, 1.76 ] h(x¹) = 0.78² - 0.61 = 0.608 - 0.61 = -0.002 ≈ 0 ∇h(x¹) = [ 2×0.78, -1] = [ 1.56, -1 ] g(x¹) = 0.78 + 0.61 - 2 = -0.61 ≤ 0 ∇g(x¹) = [ 1, 1 ] 3.2 构建线性规划子问题 最小化 ∇f(x¹)ᵀd = -8.16d₁ + 1.76d₂ 满足: ∇h(x¹)ᵀd = -h(x¹) ⇒ 1.56d₁ - d₂ ≈ 0 ∇g(x¹)ᵀd ≤ -g(x¹) ⇒ d₁ + d₂ ≤ 0.61 x¹ + d ≥ 0 ⇒ d₁ ≥ -0.78, d₂ ≥ -0.61 3.3 求解线性规划子问题 由等式约束:d₂ = 1.56d₁ 代入不等式约束:d₁ + 1.56d₁ ≤ 0.61 ⇒ 2.56d₁ ≤ 0.61 ⇒ d₁ ≤ 0.238 目标函数:-8.16d₁ + 1.76×1.56d₁ = -8.16d₁ + 2.75d₁ = -5.41d₁ 系数为负,目标函数随 d₁ 增大而减小,取 d₁ = 0.238 则 d₂ = 1.56×0.238 ≈ 0.371 搜索方向:d¹ = (0.238, 0.371) 3.4 线搜索确定步长 新点:x¹ + αd¹ = (0.78+0.238α, 0.61+0.371α) 约束处理: 等式约束:h(x) = (0.78+0.238α)² - (0.61+0.371α) ≈ 0 边界约束:所有变量非负 通过线搜索确定最优步长 α₁ ≈ 0.8 3.5 得到第二次迭代结果 x² = x¹ + α₁d¹ ≈ (0.78+0.190, 0.61+0.297) ≈ (0.97, 0.91) f(x²) ≈ (0.97-2)⁴ + (0.97-2×0.91)² ≈ 1.07 + 0.72 ≈ 1.79 经过两次迭代,目标函数值从初始的20降低到约1.79,显示出良好的收敛趋势。