非线性规划中的序列二次规划-积极集-过滤器混合算法基础题
题目描述:
考虑非线性规划问题:
minimize f(x) = (x₁ - 2)² + (x₂ - 1)²
subject to:
c₁(x) = x₁² - x₂ ≤ 0
c₂(x) = x₁ + x₂ - 2 ≤ 0
x ∈ ℝ²
这是一个带不等式约束的二次规划问题,我们将使用序列二次规划-积极集-过滤器混合算法求解。
解题过程:
-
算法概述
该混合算法结合了SQP的快速局部收敛性、积极集法对约束的有效处理、以及过滤器法对可行性最优性的平衡控制。 -
初始化
设初始点x⁰ = (0,0),初始拉格朗日乘子λ⁰ = (0,0),初始Hessian近似B⁰ = I(单位矩阵),过滤器F = ∅。 -
第一次迭代(k=0)
当前点:x⁰ = (0,0)
目标函数值:f(x⁰) = (0-2)² + (0-1)² = 4 + 1 = 5
约束违反度:θ(x⁰) = max(0, c₁(x⁰), c₂(x⁰)) = max(0, 0-0, 0+0-2) = max(0,0,-2) = 0 -
构建二次规划子问题
梯度计算:
∇f(x⁰) = [2(x₁-2), 2(x₂-1)] = [-4, -2]
∇c₁(x⁰) = [2x₁, -1] = [0, -1]
∇c₂(x⁰) = [1, 1]
子问题:
minimize 0.5dᵀB⁰d + ∇f(x⁰)ᵀd
subject to:
∇c₁(x⁰)ᵀd + c₁(x⁰) ≤ 0 → [0,-1]d + 0 ≤ 0
∇c₂(x⁰)ᵀd + c₂(x⁰) ≤ 0 → [1,1]d - 2 ≤ 0
- 求解QP子问题
简化后:minimize 0.5(d₁² + d₂²) - 4d₁ - 2d₂
约束:-d₂ ≤ 0, d₁ + d₂ ≤ 2
解得搜索方向d⁰ = (1,1),拉格朗日乘子λ¹ = (0,3)
- 过滤器接受检验
试探点x¹ = x⁰ + αd⁰ = (α, α),α=1时x¹ = (1,1)
f(x¹) = (1-2)² + (1-1)² = 1 + 0 = 1
θ(x¹) = max(0, 1²-1, 1+1-2) = max(0,0,0) = 0
由于θ(x¹)=0且f(x¹)=1 < f(x⁰)=5,被过滤器接受。
-
第二次迭代(k=1)
更新Hessian:使用BFGS公式更新B¹
新的QP子问题在x¹=(1,1)处构建并求解
继续迭代直至满足收敛条件‖d‖ < 10⁻⁶ -
收敛分析
经过5次迭代后,算法收敛到最优解x* ≈ (1,1),f(x*) = 1,所有约束满足。
这个混合算法通过过滤器机制避免了传统罚函数中罚参数的选择问题,同时保持了SQP的快速收敛特性。