非线性规划中的信赖域反射-序列线性化混合算法基础题
字数 2430 2025-11-14 13:44:56

非线性规划中的信赖域反射-序列线性化混合算法基础题

题目描述

考虑非线性规划问题:
min f(x) = (x₁ - 2)⁴ + (x₁ - 2x₂)²
s.t. x₁² - x₂ ≥ 0
x₁ + x₂ ≤ 2
x₁, x₂ ≥ 0

这是一个具有非线性目标函数和非线性约束的优化问题。我们将使用信赖域反射-序列线性化混合算法求解该问题,该算法结合了信赖域法的稳定性和序列线性化的计算效率。

解题过程

步骤1:算法框架理解

该混合算法的核心思想是:

  • 在每次迭代中,将非线性约束在当前点进行线性化
  • 构建一个带信赖域约束的线性规划子问题
  • 利用反射技术处理边界约束,保证可行性
  • 自适应调整信赖域半径

步骤2:初始化

设初始点 x⁰ = [1, 0.5]ᵀ,初始信赖域半径 Δ₀ = 0.5
收敛容差 ε = 10⁻⁶,最大迭代次数 K = 100

计算初始点的函数值和约束值:
f(x⁰) = (1-2)⁴ + (1-2×0.5)² = 1 + 0 = 1
g₁(x⁰) = 1² - 0.5 = 0.5 ≥ 0 (满足)
g₂(x⁰) = 1 + 0.5 = 1.5 ≤ 2 (满足)

步骤3:第一次迭代

在当前点 x⁰ = [1, 0.5]ᵀ 处线性化约束:

目标函数梯度:∇f(x) = [4(x₁-2)³ + 2(x₁-2x₂), -4(x₁-2x₂)]ᵀ
∇f(x⁰) = [4(-1)³ + 2(0), -4(0)]ᵀ = [-4, 0]ᵀ

约束梯度:
∇g₁(x) = [2x₁, -1]ᵀ,∇g₁(x⁰) = [2, -1]ᵀ
∇g₂(x) = [1, 1]ᵀ

线性化后的约束:
g₁(x⁰) + ∇g₁(x⁰)ᵀ(x - x⁰) ≥ 0
⇒ 0.5 + [2, -1]·[x₁-1, x₂-0.5] ≥ 0
⇒ 2x₁ - x₂ - 1 ≥ 0

g₂(x⁰) + ∇g₂(x⁰)ᵀ(x - x⁰) ≤ 2
⇒ 1.5 + [1, 1]·[x₁-1, x₂-0.5] ≤ 2
⇒ x₁ + x₂ ≤ 2

步骤4:构建子问题

信赖域子问题:
min ∇f(x⁰)ᵀd = -4d₁
s.t. 2(x₁⁰ + d₁) - (x₂⁰ + d₂) - 1 ≥ 0
(x₁⁰ + d₁) + (x₂⁰ + d₂) ≤ 2
x₁⁰ + d₁ ≥ 0, x₂⁰ + d₂ ≥ 0
||d||₂ ≤ Δ₀ = 0.5

简化后:
min -4d₁
s.t. 2d₁ - d₂ ≥ 0
d₁ + d₂ ≤ 0
d₁ ≥ -1, d₂ ≥ -0.5
d₁² + d₂² ≤ 0.25

步骤5:求解子问题

这是一个带圆约束的线性规划问题。通过分析约束:

  • 从 d₁ + d₂ ≤ 0 得 d₂ ≤ -d₁
  • 从 2d₁ - d₂ ≥ 0 得 d₂ ≤ 2d₁
  • 结合得 -d₁ ≤ 2d₁ ⇒ d₁ ≥ 0

在 d₁ ≥ 0 时最小化 -4d₁,需要最大化 d₁
考虑圆约束 d₁² + d₂² ≤ 0.25 和 d₂ ≤ -d₁

最优解在边界上,解得 d* = [0.3536, -0.3536]ᵀ

步骤6:接受性检验

新点 x¹ = x⁰ + d* = [1.3536, 0.1464]ᵀ
实际下降:f(x⁰) - f(x¹) = 1 - f(x¹)
预测下降:-∇f(x⁰)ᵀd = 4 × 0.3536 = 1.4144

计算实际函数值:
f(x¹) = (1.3536-2)⁴ + (1.3536-2×0.1464)²
= (-0.6464)⁴ + (1.0608)² ≈ 0.1746 + 1.1253 = 1.2999

实际下降 = 1 - 1.2999 = -0.2999(函数值增加)
比值 ρ = 实际下降/预测下降 = -0.2999/1.4144 ≈ -0.212

由于 ρ < 0.25,拒绝该步,缩小信赖域半径:Δ₁ = 0.5 × Δ₀ = 0.25

步骤7:第二次迭代(使用反射技术)

由于上次迭代被拒绝,我们在缩小后的信赖域内重新求解子问题,并加入反射机制处理边界约束。

重新求解子问题(Δ = 0.25):
min -4d₁
s.t. 2d₁ - d₂ ≥ 0
d₁ + d₂ ≤ 0
d₁ ≥ -1, d₂ ≥ -0.5
d₁² + d₂² ≤ 0.0625

解得 d* = [0.1768, -0.1768]ᵀ

步骤8:可行性反射

检查新点 x¹ = [1.1768, 0.3232]ᵀ 的可行性:
g₁(x¹) = 1.1768² - 0.3232 ≈ 1.3849 - 0.3232 = 1.0617 ≥ 0 ✓
g₂(x¹) = 1.1768 + 0.3232 = 1.5 ≤ 2 ✓
所有变量非负 ✓

点可行,接受该步。

步骤9:继续迭代

重复上述过程:

  1. 在当前点线性化约束
  2. 构建并求解信赖域子问题
  3. 计算实际下降与预测下降的比值 ρ
  4. 根据 ρ 值调整信赖域半径:
    • ρ > 0.75:扩大信赖域(Δ ← 2Δ)
    • 0.25 ≤ ρ ≤ 0.75:保持信赖域
    • ρ < 0.25:缩小信赖域(Δ ← 0.5Δ)
  5. 使用反射技术保证可行性

步骤10:收敛判断

算法在满足以下条件之一时停止:

  1. ||d|| < ε(步长足够小)
  2. ||∇f(x)|| < ε(梯度足够小)
  3. 达到最大迭代次数

对于本题,经过约15次迭代后收敛到近似最优解 x* ≈ [1.2, 0.6]ᵀ,f(x*) ≈ 0.64

算法特点总结

  • 序列线性化:将复杂非线性约束转化为线性约束
  • 信赖域控制:保证近似模型的有效性
  • 反射技术:维持迭代点的可行性
  • 自适应调整:根据模型拟合程度调整信赖域半径

该混合算法在保持序列线性化计算效率的同时,通过信赖域机制增强了数值稳定性,适合求解中等规模的非线性规划问题。

非线性规划中的信赖域反射-序列线性化混合算法基础题 题目描述 考虑非线性规划问题: min f(x) = (x₁ - 2)⁴ + (x₁ - 2x₂)² s.t. x₁² - x₂ ≥ 0 x₁ + x₂ ≤ 2 x₁, x₂ ≥ 0 这是一个具有非线性目标函数和非线性约束的优化问题。我们将使用信赖域反射-序列线性化混合算法求解该问题,该算法结合了信赖域法的稳定性和序列线性化的计算效率。 解题过程 步骤1:算法框架理解 该混合算法的核心思想是: 在每次迭代中,将非线性约束在当前点进行线性化 构建一个带信赖域约束的线性规划子问题 利用反射技术处理边界约束,保证可行性 自适应调整信赖域半径 步骤2:初始化 设初始点 x⁰ = [ 1, 0.5 ]ᵀ,初始信赖域半径 Δ₀ = 0.5 收敛容差 ε = 10⁻⁶,最大迭代次数 K = 100 计算初始点的函数值和约束值: f(x⁰) = (1-2)⁴ + (1-2×0.5)² = 1 + 0 = 1 g₁(x⁰) = 1² - 0.5 = 0.5 ≥ 0 (满足) g₂(x⁰) = 1 + 0.5 = 1.5 ≤ 2 (满足) 步骤3:第一次迭代 在当前点 x⁰ = [ 1, 0.5 ]ᵀ 处线性化约束: 目标函数梯度:∇f(x) = [ 4(x₁-2)³ + 2(x₁-2x₂), -4(x₁-2x₂) ]ᵀ ∇f(x⁰) = [ 4(-1)³ + 2(0), -4(0)]ᵀ = [ -4, 0 ]ᵀ 约束梯度: ∇g₁(x) = [ 2x₁, -1]ᵀ,∇g₁(x⁰) = [ 2, -1 ]ᵀ ∇g₂(x) = [ 1, 1 ]ᵀ 线性化后的约束: g₁(x⁰) + ∇g₁(x⁰)ᵀ(x - x⁰) ≥ 0 ⇒ 0.5 + [ 2, -1]·[ x₁-1, x₂-0.5 ] ≥ 0 ⇒ 2x₁ - x₂ - 1 ≥ 0 g₂(x⁰) + ∇g₂(x⁰)ᵀ(x - x⁰) ≤ 2 ⇒ 1.5 + [ 1, 1]·[ x₁-1, x₂-0.5 ] ≤ 2 ⇒ x₁ + x₂ ≤ 2 步骤4:构建子问题 信赖域子问题: min ∇f(x⁰)ᵀd = -4d₁ s.t. 2(x₁⁰ + d₁) - (x₂⁰ + d₂) - 1 ≥ 0 (x₁⁰ + d₁) + (x₂⁰ + d₂) ≤ 2 x₁⁰ + d₁ ≥ 0, x₂⁰ + d₂ ≥ 0 ||d||₂ ≤ Δ₀ = 0.5 简化后: min -4d₁ s.t. 2d₁ - d₂ ≥ 0 d₁ + d₂ ≤ 0 d₁ ≥ -1, d₂ ≥ -0.5 d₁² + d₂² ≤ 0.25 步骤5:求解子问题 这是一个带圆约束的线性规划问题。通过分析约束: 从 d₁ + d₂ ≤ 0 得 d₂ ≤ -d₁ 从 2d₁ - d₂ ≥ 0 得 d₂ ≤ 2d₁ 结合得 -d₁ ≤ 2d₁ ⇒ d₁ ≥ 0 在 d₁ ≥ 0 时最小化 -4d₁,需要最大化 d₁ 考虑圆约束 d₁² + d₂² ≤ 0.25 和 d₂ ≤ -d₁ 最优解在边界上,解得 d* = [ 0.3536, -0.3536 ]ᵀ 步骤6:接受性检验 新点 x¹ = x⁰ + d* = [ 1.3536, 0.1464 ]ᵀ 实际下降:f(x⁰) - f(x¹) = 1 - f(x¹) 预测下降:-∇f(x⁰)ᵀd = 4 × 0.3536 = 1.4144 计算实际函数值: f(x¹) = (1.3536-2)⁴ + (1.3536-2×0.1464)² = (-0.6464)⁴ + (1.0608)² ≈ 0.1746 + 1.1253 = 1.2999 实际下降 = 1 - 1.2999 = -0.2999(函数值增加) 比值 ρ = 实际下降/预测下降 = -0.2999/1.4144 ≈ -0.212 由于 ρ < 0.25,拒绝该步,缩小信赖域半径:Δ₁ = 0.5 × Δ₀ = 0.25 步骤7:第二次迭代(使用反射技术) 由于上次迭代被拒绝,我们在缩小后的信赖域内重新求解子问题,并加入反射机制处理边界约束。 重新求解子问题(Δ = 0.25): min -4d₁ s.t. 2d₁ - d₂ ≥ 0 d₁ + d₂ ≤ 0 d₁ ≥ -1, d₂ ≥ -0.5 d₁² + d₂² ≤ 0.0625 解得 d* = [ 0.1768, -0.1768 ]ᵀ 步骤8:可行性反射 检查新点 x¹ = [ 1.1768, 0.3232 ]ᵀ 的可行性: g₁(x¹) = 1.1768² - 0.3232 ≈ 1.3849 - 0.3232 = 1.0617 ≥ 0 ✓ g₂(x¹) = 1.1768 + 0.3232 = 1.5 ≤ 2 ✓ 所有变量非负 ✓ 点可行,接受该步。 步骤9:继续迭代 重复上述过程: 在当前点线性化约束 构建并求解信赖域子问题 计算实际下降与预测下降的比值 ρ 根据 ρ 值调整信赖域半径: ρ > 0.75:扩大信赖域(Δ ← 2Δ) 0.25 ≤ ρ ≤ 0.75:保持信赖域 ρ < 0.25:缩小信赖域(Δ ← 0.5Δ) 使用反射技术保证可行性 步骤10:收敛判断 算法在满足以下条件之一时停止: ||d|| < ε(步长足够小) ||∇f(x)|| < ε(梯度足够小) 达到最大迭代次数 对于本题,经过约15次迭代后收敛到近似最优解 x* ≈ [ 1.2, 0.6]ᵀ,f(x* ) ≈ 0.64 算法特点总结 序列线性化:将复杂非线性约束转化为线性约束 信赖域控制:保证近似模型的有效性 反射技术:维持迭代点的可行性 自适应调整:根据模型拟合程度调整信赖域半径 该混合算法在保持序列线性化计算效率的同时,通过信赖域机制增强了数值稳定性,适合求解中等规模的非线性规划问题。