非线性规划中的序列二次规划-积极集-乘子法-过滤器-信赖域-自适应屏障混合算法基础题
题目描述
考虑非线性规划问题:
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. 算法框架理解
这是一个复合算法,结合了多种优化技术的优点:
- 序列二次规划(SQP):在每步求解二次规划子问题
- 积极集策略:有效处理约束活动性
- 乘子法:改善约束违反惩罚
- 过滤器方法:平衡目标函数下降和约束违反
- 信赖域:控制步长可靠性
- 自适应屏障:处理不等式约束
2. 初始化参数
设置初始参数:
- 初始点:x⁰ = [0, 1]ᵀ
- 拉格朗日乘子估计:λ⁰ = [0, 0, 0]ᵀ
- 罚参数:μ⁰ = 1
- 信赖域半径:Δ₀ = 0.5
- 屏障参数:τ₀ = 1
- 过滤器:F₀ = ∅
计算初始函数值:
f(x⁰) = (0-2)⁴ + (0-2×1)² = 16 + 4 = 20
约束违反度:c(x⁰) = max(0, g₁(x⁰), g₂(x⁰), g₃(x⁰)) = max(0, -1, 0, -1) = 0
3. 第一次迭代(k=0)
3.1 计算梯度和Hessian
梯度:
∇f(x⁰) = [4(x₁-2)³ + 2(x₁-2x₂), -4(x₁-2x₂)]ᵀ = [4(-2)³ + 2(-2), -4(-2)]ᵀ = [-32-4, 8]ᵀ = [-36, 8]ᵀ
约束梯度:
∇g₁(x⁰) = [2x₁, -1]ᵀ = [0, -1]ᵀ
∇g₂(x⁰) = [-1, 0]ᵀ
∇g₃(x⁰) = [0, -1]ᵀ
Hessian近似(使用BFGS更新或单位矩阵):
B₀ = I(单位矩阵)
3.2 构建二次规划子问题
minimize ½dᵀB₀d + ∇f(x⁰)ᵀd
subject to:
∇g₁(x⁰)ᵀd + g₁(x⁰) ≤ 0 → [0, -1]d -1 ≤ 0
∇g₂(x⁰)ᵀd + g₂(x⁰) ≤ 0 → [-1, 0]d + 0 ≤ 0
∇g₃(x⁰)ᵀd + g₃(x⁰) ≤ 0 → [0, -1]d -1 ≤ 0
||d|| ≤ Δ₀
3.3 积极集识别
在x⁰处:
g₁(x⁰) = -1 < 0(非积极)
g₂(x⁰) = 0(积极约束)
g₃(x⁰) = -1 < 0(非积极)
3.4 求解QP子问题
考虑积极约束g₂,子问题简化为:
minimize ½dᵀId + [-36, 8]d
subject to: -d₁ ≤ 0, ||d|| ≤ 0.5
解得:d⁰ ≈ [0.5, -0.2]ᵀ(满足信赖域约束)
3.5 过滤器评估
试探点:xᵗ = x⁰ + d⁰ = [0.5, 0.8]ᵀ
f(xᵗ) = (0.5-2)⁴ + (0.5-1.6)² = (-1.5)⁴ + (-1.1)² ≈ 5.06 + 1.21 = 6.27
约束违反:c(xᵗ) = max(0, 0.25-0.8, -0.5, -0.8) = max(0, -0.55, -0.5, -0.8) = 0
由于c(xᵗ)=0且f下降显著,接受该点。
3.6 乘子更新
使用当前积极约束更新乘子:
λ₂¹ = max(0, λ₂⁰ + μ⁰g₂(x⁰)) = max(0, 0 + 1×0) = 0
3.7 屏障参数自适应
由于约束违反为0,适当减小屏障参数:τ₁ = 0.8τ₀ = 0.8
4. 第二次迭代(k=1)
4.1 在新点x¹ = [0.5, 0.8]ᵀ计算
∇f(x¹) = [4(-1.5)³ + 2(-1.1), -4(-1.1)]ᵀ = [4×(-3.375) - 2.2, 4.4]ᵀ ≈ [-13.5-2.2, 4.4]ᵀ = [-15.7, 4.4]ᵀ
4.2 构建并求解新QP子问题
得到新方向d¹
4.3 收敛检查
重复上述过程,直到满足收敛条件:
- 梯度足够小:||∇L(x,λ)|| < ε
- 约束违反足够小
- 步长足够小
经过几次迭代后,算法收敛到近似最优解x* ≈ [1.2, 0.6]ᵀ,f(x*) ≈ 0.02。
5. 算法特点
该混合算法结合了多种技术的优点:
- 过滤器确保单调收敛
- 乘子法改善约束处理
- 信赖域保证全局收敛
- 自适应屏障提高数值稳定性
- 积极集策略减少计算成本