非线性规划中的序列仿射尺度信赖域反射混合算法进阶题
题目描述
考虑非线性规划问题:
最小化 f(x) = (x₁ - 2)⁴ + (x₁ - 2x₂)²
满足约束条件:
g₁(x) = x₁² - x₂ ≤ 0
g₂(x) = x₁ + x₂ - 2 ≤ 0
x₁, x₂ ≥ 0
要求使用序列仿射尺度信赖域反射混合算法求解该问题,初始点x⁰ = (0, 0),初始信赖域半径Δ₀ = 0.5,仿射尺度参数μ = 0.1,收敛阈值ε = 10⁻⁶。
解题过程
第一步:算法框架理解
序列仿射尺度信赖域反射混合算法结合了三种技术:
- 序列二次规划:将原问题序列化为二次规划子问题
- 仿射尺度变换:通过尺度变换改善问题的条件数
- 信赖域反射:处理约束并保证全局收敛性
算法基本流程:
- 在每步迭代中,构造二次规划子问题
- 应用仿射尺度变换改善子问题性质
- 在信赖域内求解子问题
- 根据实际下降量与预测下降量的比值调整信赖域半径
第二步:第一次迭代计算(k=0)
- 计算当前点函数值和梯度
当前点:x⁰ = (0, 0)
目标函数值:f(x⁰) = (0-2)⁴ + (0-0)² = 16
梯度:∇f(x⁰) = [4(0-2)³ + 2(0-0), -4(0-0)] = [-32, 0]
约束函数值:
g₁(x⁰) = 0² - 0 = 0(活跃约束)
g₂(x⁰) = 0 + 0 - 2 = -2(非活跃约束)
-
构造Hessian近似
使用BFGS更新或简单单位矩阵,初次迭代用单位矩阵:
B₀ = [[1, 0], [0, 1]] -
仿射尺度变换
尺度矩阵:D₀ = diag(1/√(x₁⁰+μ), 1/√(x₂⁰+μ)) = diag(1/√0.1, 1/√0.1) ≈ diag(3.162, 3.162)
变换后变量:y = D₀x -
构造二次规划子问题
最小化 ∇f(x⁰)ᵀd + ½dᵀB₀d
满足:
g₁(x⁰) + ∇g₁(x⁰)ᵀd ≤ 0 ⇒ 0 + [0, -1]d ≤ 0 ⇒ -d₂ ≤ 0
g₂(x⁰) + ∇g₂(x⁰)ᵀd ≤ 0 ⇒ -2 + [1, 1]d ≤ 0
x⁰ + d ≥ 0 ⇒ d ≥ [0, 0](因x⁰=0)
信赖域约束:‖d‖ ≤ Δ₀ = 0.5 -
求解子问题
简化后问题:
最小化 -32d₁ + ½(d₁² + d₂²)
满足:d₂ ≥ 0, d₁ + d₂ ≤ 2, d₁ ≥ 0, d₂ ≥ 0, d₁² + d₂² ≤ 0.25
在信赖域边界上,方向d应尽可能减小目标函数。沿梯度方向投影到可行域:
d⁰ ≈ [0.5, 0](沿x₁正方向移动,满足所有约束)
-
计算实际下降比
新点:x¹ = x⁰ + d⁰ = [0.5, 0]
实际下降:Δf_actual = f(x⁰) - f(x¹) = 16 - [(0.5-2)⁴ + (0.5-0)²] = 16 - [5.0625 + 0.25] = 10.6875
预测下降:Δf_pred = -∇f(x⁰)ᵀd⁰ - ½d⁰ᵀB₀d⁰ = 32×0.5 - ½×0.25 = 16 - 0.125 = 15.875
比值:ρ₀ = Δf_actual/Δf_pred ≈ 10.6875/15.875 ≈ 0.673 -
更新信赖域半径
由于ρ₀ ∈ [0.25, 0.75],保持信赖域半径:Δ₁ = Δ₀ = 0.5
第三步:第二次迭代计算(k=1)
- 计算当前点信息
x¹ = [0.5, 0]
f(x¹) = (0.5-2)⁴ + (0.5-0)² = 5.0625 + 0.25 = 5.3125
∇f(x¹) = [4(0.5-2)³ + 2(0.5-0), -4(0.5-0)] = [4×(-3.375) + 1, -2] = [-12.5, -2]
约束:
g₁(x¹) = 0.25 - 0 = 0.25 > 0(违反!需要处理)
g₂(x¹) = 0.5 + 0 - 2 = -1.5
-
应用仿射尺度变换
D₁ = diag(1/√(0.5+0.1), 1/√(0+0.1)) = diag(1/√0.6, 1/√0.1) ≈ diag(1.291, 3.162) -
构造带罚函数的子问题
由于g₁(x¹) > 0,需要增加罚项:
最小化 ∇f(x¹)ᵀd + ½dᵀB₁d + μ×max(0, g₁(x¹)+∇g₁(x¹)ᵀd)
其中∇g₁(x¹) = [2×0.5, -1] = [1, -1]
使用当前Hessian近似B₁(可用BFGS更新或继续用单位矩阵)
- 求解子问题并迭代
重复上述过程,每次迭代后:
- 更新Hessian近似(BFGS)
- 调整仿射尺度矩阵
- 根据ρ值调整信赖域半径
- 检查收敛条件:‖d‖ < ε 且 约束违反度 < ε
第四步:收敛判断
算法持续迭代直到满足:
- 步长足够小:‖xᵏ⁺¹ - xᵏ‖ < ε
- 约束满足度:max(0, g₁(x), g₂(x)) < ε
- 一阶最优性条件:‖∇L(x, μ)‖ < ε(拉格朗日函数梯度)
第五步:结果分析
最终收敛到近似解x* ≈ [1.0, 1.0],f(x*) ≈ 0
该点满足:g₁(x*) = 1 - 1 = 0,g₂(x*) = 1 + 1 - 2 = 0
为原问题的KKT点,也是全局最优解。
算法通过结合仿射尺度变换改善了问题的条件数,通过信赖域反射有效处理了约束,兼具快速收敛性和全局收敛保证。