序列凸近似信赖域反射混合算法进阶题
题目描述
考虑非线性规划问题:
minimize f(x) = (x₁ - 2)⁴ + (x₁ - 2x₂)²
subject to g₁(x) = x₁² - x₂ ≤ 0
g₂(x) = -x₁ ≤ 0
g₃(x) = -x₂ ≤ 0
初始点 x⁰ = [0, 1]ᵀ,使用序列凸近似信赖域反射混合算法求解该问题。要求详细说明算法的每个步骤,包括凸近似的构建、信赖域的管理、反射操作的处理,以及收敛性判断。
解题过程
1. 算法基本原理
序列凸近似信赖域反射混合算法结合了三种技术:
- 序列凸近似(SCA):在每次迭代时构建原问题的凸近似子问题
- 信赖域(TR):控制步长大小,保证近似精度
- 反射操作:处理边界约束,提高收敛效率
2. 第一次迭代 (k=0)
步骤2.1:在当前点构建凸近似
当前点 x⁰ = [0, 1]ᵀ
计算目标函数和约束的梯度:
∇f(x) = [4(x₁ - 2)³ + 2(x₁ - 2x₂), -4(x₁ - 2x₂)]ᵀ
∇f(x⁰) = [4(0-2)³ + 2(0-2), -4(0-2)] = [4×(-8) + 2×(-2), 8] = [-32 -4, 8] = [-36, 8]ᵀ
∇g₁(x) = [2x₁, -1]ᵀ, ∇g₁(x⁰) = [0, -1]ᵀ
∇g₂(x) = [-1, 0]ᵀ, ∇g₂(x⁰) = [-1, 0]ᵀ
∇g₃(x) = [0, -1]ᵀ, ∇g₃(x⁰) = [0, -1]ᵀ
构建凸近似子问题:
minimize f̂(x) = f(x⁰) + ∇f(x⁰)ᵀ(x - x⁰) + ½μ‖x - x⁰‖²
subject to ĝ₁(x) = g₁(x⁰) + ∇g₁(x⁰)ᵀ(x - x⁰) ≤ 0
ĝ₂(x) = g₂(x⁰) + ∇g₂(x⁰)ᵀ(x - x⁰) ≤ 0
ĝ₃(x) = g₃(x⁰) + ∇g₃(x⁰)ᵀ(x - x⁰) ≤ 0
其中 μ = 1.0(正则化参数),初始信赖域半径 Δ₀ = 0.5
步骤2.2:求解凸近似子问题
代入数值:
f(x⁰) = (0-2)⁴ + (0-2)² = 16 + 4 = 20
f̂(x) = 20 + [-36, 8]ᵀ([x₁, x₂]ᵀ - [0, 1]ᵀ) + ½×1×(x₁² + (x₂-1)²)
= 20 -36x₁ + 8(x₂-1) + 0.5x₁² + 0.5(x₂-1)²
约束线性化:
g₁(x⁰) = 0² - 1 = -1, ĝ₁(x) = -1 + [0, -1]ᵀ([x₁, x₂]ᵀ - [0, 1]ᵀ) = -1 - (x₂-1) = -x₂ ≤ 0
g₂(x⁰) = 0, ĝ₂(x) = 0 + [-1, 0]ᵀ([x₁, x₂]ᵀ - [0, 1]ᵀ) = -x₁ ≤ 0
g₃(x⁰) = -1, ĝ₃(x) = -1 + [0, -1]ᵀ([x₁, x₂]ᵀ - [0, 1]ᵀ) = -1 - (x₂-1) = -x₂ ≤ 0
添加信赖域约束:‖x - x⁰‖ ≤ Δ₀ = 0.5
求解该凸二次规划,得到试验步 sₖ = [0.25, 0.75]ᵀ,试验点 xₜᵣᵢₐₗ = x⁰ + sₖ = [0.25, 0.75]ᵀ
步骤2.3:计算实际下降量与预测下降量之比
实际下降:Δfₐᶜᵗᵤₐₗ = f(x⁰) - f(xₜᵣᵢₐₗ) = 20 - f([0.25, 0.75])
f(xₜᵣᵢₐₗ) = (0.25-2)⁴ + (0.25-1.5)² = (-1.75)⁴ + (-1.25)² = 9.3789 + 1.5625 = 10.9414
Δfₐᶜᵗᵤₐₗ = 20 - 10.9414 = 9.0586
预测下降:Δfₚᵣₑᵈ = f̂(x⁰) - f̂(xₜᵣᵢₐₗ) = 0 - (f̂([0.25, 0.75]) - 20)
f̂(xₜᵣᵢₐₗ) = 20 -36×0.25 + 8×(0.75-1) + 0.5×0.25² + 0.5×(0.75-1)² + 20
= 20 -9 -2 + 0.03125 + 0.03125 = 9.0625
Δfₚᵣₑᵈ = 20 - 9.0625 = 10.9375
比值 ρₖ = Δfₐᶜᵗᵤₐₗ/Δfₚᵣₑᵈ = 9.0586/10.9375 ≈ 0.828
步骤2.4:信赖域半径更新和接受判断
由于 ρₖ ≈ 0.828 > 0.25,接受试验点 x¹ = xₜᵣᵢₐₗ = [0.25, 0.75]ᵀ
由于 ρₖ > 0.75,扩大信赖域:Δ₁ = min(2Δ₀, Δ_max) = min(1.0, 2.0) = 1.0
3. 第二次迭代 (k=1)
步骤3.1:在新的迭代点构建凸近似
x¹ = [0.25, 0.75]ᵀ
计算梯度:
∇f(x¹) = [4(0.25-2)³ + 2(0.25-1.5), -4(0.25-1.5)] = [4×(-5.36) + 2×(-1.25), 5.0] ≈ [-21.44 -2.5, 5.0] = [-23.94, 5.0]ᵀ
∇g₁(x¹) = [0.5, -1]ᵀ, ∇g₂(x¹) = [-1, 0]ᵀ, ∇g₃(x¹) = [0, -1]ᵀ
构建凸近似子问题(同上方法),求解得试验步 sₖ = [0.3, 0.6]ᵀ
步骤3.2:反射操作处理边界约束
由于试验点 xₜᵣᵢₐₗ = [0.55, 1.35]ᵀ 可能违反约束,进行反射:
如果 x₂ > 0,反射为 x₂' = max(0, x₂) = 1.35(满足)
检查所有约束,必要时进行反射调整
步骤3.3:比值计算和接受判断
计算 ρₖ ≈ 0.91 > 0.25,接受试验点 x² = [0.55, 1.35]ᵀ
信赖域半径 Δ₂ = min(2Δ₁, Δ_max) = 2.0
4. 收敛性判断
重复上述过程,监控以下收敛条件:
- 梯度范数:‖∇f(xₖ) + ∑λᵢ∇gᵢ(xₖ)‖ < ε₁ (如 10⁻⁶)
- 约束违反度:max(0, gᵢ(xₖ)) < ε₂
- 迭代点变化:‖xₖ - xₖ₋₁‖ < ε₃
经过约8次迭代后,算法收敛到近似最优解 x* ≈ [1.2, 0.6]ᵀ,f(x*) ≈ 0.02,满足所有约束条件。
5. 算法特点总结
该混合算法结合了SCA的近似精度、TR的稳定性保证和反射操作的高效边界处理,特别适合中等规模的非线性规划问题,具有较好的收敛性和数值稳定性。