非线性规划中的序列线性化信赖域反射法进阶题
我将为您讲解序列线性化信赖域反射法在非线性规划中的应用。这个算法结合了序列线性化、信赖域和反射技术,特别适合处理带约束的非线性优化问题。
问题描述
考虑如下非线性规划问题:
最小化 f(x) = (x₁ - 2)⁴ + (x₁ - 2x₂)²
满足约束:
c₁(x) = x₁² - x₂ ≥ 0
c₂(x) = x₁ + x₂ - 2 ≥ 0
其中初始点 x⁰ = [0, 0]ᵀ
解题过程
第一步:算法框架理解
序列线性化信赖域反射法的核心思想是:
- 在当前迭代点将非线性问题线性化
- 在信赖域内求解线性化子问题
- 使用反射技术处理约束边界
- 根据实际下降与预测下降的比值调整信赖域半径
第二步:构建线性化子问题
在当前点 xᵏ = [x₁ᵏ, x₂ᵏ]ᵀ,我们对目标函数和约束进行线性化:
目标函数线性化:
f̃(x) ≈ f(xᵏ) + ∇f(xᵏ)ᵀ(x - xᵏ)
约束线性化:
c̃₁(x) ≈ c₁(xᵏ) + ∇c₁(xᵏ)ᵀ(x - xᵏ) ≥ 0
c̃₂(x) ≈ c₂(xᵏ) + ∇c₂(xᵏ)ᵀ(x - xᵏ) ≥ 0
其中梯度计算:
∇f(x) = [4(x₁ - 2)³ + 2(x₁ - 2x₂), -4(x₁ - 2x₂)]ᵀ
∇c₁(x) = [2x₁, -1]ᵀ
∇c₂(x) = [1, 1]ᵀ
第三步:初始点计算
在 x⁰ = [0, 0]ᵀ:
f(x⁰) = (0-2)⁴ + (0-0)² = 16
∇f(x⁰) = [4(-2)³ + 2(0), -4(0)]ᵀ = [-32, 0]ᵀ
c₁(x⁰) = 0 - 0 = 0, ∇c₁(x⁰) = [0, -1]ᵀ
c₂(x⁰) = 0 + 0 - 2 = -2, ∇c₂(x⁰) = [1, 1]ᵀ
初始信赖域半径 Δ₀ = 1.0
第四步:求解第一个子问题
在 x⁰ 处,线性化子问题为:
最小化 16 - 32d₁
满足:
0 + 0·d₁ - 1·d₂ ≥ 0 ⇒ -d₂ ≥ 0
-2 + 1·d₁ + 1·d₂ ≥ 0 ⇒ d₁ + d₂ ≥ 2
||d|| ≤ Δ₀ = 1.0
这是一个线性规划问题,最优解为 d⁰ = [1, 1]ᵀ(在信赖域边界上)
第五步:反射技术应用
由于 d⁰ 可能违反原始非线性约束,我们采用反射技术:
- 计算试探点 xᵗʳⁱᵃˡ = x⁰ + d⁰ = [1, 1]ᵀ
- 检查约束违反度:c₂(xᵗʳⁱᵃˡ) = 1 + 1 - 2 = 0(临界)
- 如果约束违反,沿约束边界反射搜索方向
第六步:接受准则和信赖域调整
计算实际下降与预测下降的比值:
实际下降:f(x⁰) - f(x¹) = 16 - f([1,1])
预测下降:f(x⁰) - f̃(x¹) = 16 - (16 - 32×1) = 32
在 x¹ = [1,1]ᵀ:
f(x¹) = (1-2)⁴ + (1-2)² = 1 + 1 = 2
实际下降 = 16 - 2 = 14
比值 ρ = 14/32 = 0.4375
由于 0.25 < ρ < 0.75,接受该步长但保持信赖域半径 Δ₁ = Δ₀ = 1.0
第七步:迭代收敛
重复上述过程:
- 在 x¹ = [1,1]ᵀ 重新线性化
- 求解新的线性化子问题
- 应用反射技术处理约束边界
- 调整信赖域半径
经过数次迭代后,算法收敛到最优解 x* ≈ [1.5, 0.75]ᵀ,f(x*) ≈ 0.0625
算法特点
- 序列线性化:将复杂非线性问题转化为一系列线性子问题
- 信赖域:控制步长大小,保证算法稳定性
- 反射技术:有效处理约束边界,提高收敛效率
- 自适应调整:根据模型拟合程度动态调整信赖域半径
这个方法在工程优化中广泛应用,特别适合中等规模的非线性约束优化问题。