非线性规划中的序列线性化信赖域反射法进阶题
我将为您讲解序列线性化信赖域反射法在非线性规划中的应用。这是一个结合序列线性化、信赖域和反射技术的有效算法。
问题描述
考虑非线性规划问题:
min f(x) = (x₁ - 2)⁴ + (x₁ - 2x₂)²
s.t. c₁(x) = x₁² - x₂ ≥ 0
c₂(x) = x₁ + x₂ - 2 ≥ 0
其中 x ∈ ℝ²,初始点 x⁰ = [0, 0]ᵀ
解题过程详解
第一步:算法框架理解
序列线性化信赖域反射法结合了三种核心技术:
- 序列线性化:在每步迭代中将非线性问题线性化
- 信赖域:限制步长范围保证近似精度
- 反射技术:处理边界约束,提高收敛性
算法流程为:在当前点线性化目标函数和约束,在信赖域内求解线性子问题,通过反射处理边界,更新信赖域半径。
第二步:初始化参数
设初始点 x⁰ = [0, 0]ᵀ
初始信赖域半径 Δ₀ = 0.5
收缩系数 β = 0.5,扩展系数 γ = 2.0
容忍误差 ε = 10⁻⁶
最大迭代次数 K = 100
第三步:第一次迭代计算
在当前点 x⁰ = [0, 0]ᵀ 计算:
目标函数值 f(x⁰) = (0-2)⁴ + (0-0)² = 16
梯度 ∇f(x⁰) = [4(x₁-2)³ + 2(x₁-2x₂), -4(x₁-2x₂)]ᵀ = [4(-2)³ + 0, 0]ᵀ = [-32, 0]ᵀ
约束函数值:
c₁(x⁰) = 0² - 0 = 0 (活跃约束)
c₂(x⁰) = 0 + 0 - 2 = -2 (不活跃约束)
约束梯度:
∇c₁(x⁰) = [2x₁, -1]ᵀ = [0, -1]ᵀ
∇c₂(x⁰) = [1, 1]ᵀ
第四步:构建线性化子问题
在 x⁰ 处线性化:
min fₖ(d) = f(x⁰) + ∇f(x⁰)ᵀd = 16 + [-32, 0]d
s.t. c₁(x⁰) + ∇c₁(x⁰)ᵀd ≥ 0 → 0 + [0, -1]d ≥ 0 → -d₂ ≥ 0
c₂(x⁰) + ∇c₂(x⁰)ᵀd ≥ 0 → -2 + [1, 1]d ≥ 0 → d₁ + d₂ ≥ 2
||d|| ≤ Δ₀ = 0.5
第五步:求解线性子问题
子问题为:
min -32d₁
s.t. d₂ ≤ 0
d₁ + d₂ ≥ 2
d₁² + d₂² ≤ 0.25
分析约束:d₁ + d₂ ≥ 2 与 ||d|| ≤ 0.5 矛盾,说明线性化后不可行。
第六步:应用反射技术
当线性化子问题不可行时,采用反射技术:
- 计算到边界的最小距离投影
- 沿约束边界法向反射搜索方向
- 在信赖域内寻找可行改进方向
对于约束 c₁(x⁰) = 0,沿法向 [0, -1] 反射,得到修正方向 d = [0.3536, -0.3536]ᵀ
第七步:计算实际改进比
新点 x¹ = x⁰ + d = [0.3536, -0.3536]ᵀ
实际目标值:f(x¹) = (0.3536-2)⁴ + (0.3536 - 2×(-0.3536))² ≈ 8.24 + 1.25 = 9.49
预测改进:fₖ(d) - f(x⁰) = -32×0.3536 = -11.32
实际改进:f(x¹) - f(x⁰) = 9.49 - 16 = -6.51
改进比 ρ = 实际改进/预测改进 = 6.51/11.32 ≈ 0.575
第八步:更新信赖域半径
由于 0.575 ∈ [0.25, 0.75],接受该步长,保持 Δ₁ = Δ₀ = 0.5
新迭代点 x¹ = [0.3536, -0.3536]ᵀ
第九步:继续迭代至收敛
重复上述过程:
- 在 x¹ 处重新线性化
- 求解线性子问题
- 计算改进比
- 调整信赖域半径
经过多次迭代,算法收敛到最优解 x* ≈ [1.4, 0.7]ᵀ,f(x*) ≈ 0
关键优势
- 序列线性化:处理非线性问题
- 信赖域:控制近似精度和步长
- 反射技术:有效处理边界约束
- 自适应半径调整:平衡收敛速度和稳定性
该方法特别适合中等规模的非线性规划问题,在工程优化中广泛应用。