非线性规划中的序列二次规划-积极集-乘子法-过滤器-信赖域-自适应屏障-代理模型混合算法基础题
题目描述:
考虑非线性规划问题:
minimize f(x) = (x₁ - 2)⁴ + (x₁ - 2x₂)²
subject to:
g₁(x) = x₁² - x₂ ≤ 0
g₂(x) = x₁² + x₂² - 1 ≤ 0
其中 x = (x₁, x₂) ∈ R²
这是一个具有非线性目标函数和非线性约束的优化问题,我们将使用综合算法求解。
解题过程:
第一步:算法框架理解
本算法结合了多种技术的优点:
- 序列二次规划(SQP)提供局部收敛性
- 积极集法处理约束活动性
- 乘子法改善约束违反惩罚
- 过滤器法平衡目标下降和约束可行性
- 信赖域保证子问题可解性
- 自适应屏障处理不等式约束
- 代理模型减少计算成本
第二步:初始化
设初始点 x⁰ = (0, 0)
初始乘子估计 μ⁰ = (1, 1)
初始信赖域半径 Δ₀ = 0.5
初始屏障参数 τ₀ = 1.0
过滤器 F = ∅(空集)
计算初始函数值:
f(x⁰) = (0-2)⁴ + (0-0)² = 16
约束违反度:h(x⁰) = max(0, g₁(x⁰), g₂(x⁰)) = max(0, 0, -1) = 0
第三步:构建代理模型
在当前点 xᵏ 处,构建二次代理模型:
mᵏ(d) = f(xᵏ) + ∇f(xᵏ)ᵀd + ½dᵀBᵏd
其中 Bᵏ 是Hessian的近似,初始使用单位矩阵。
计算梯度:
∇f(x) = [4(x₁-2)³ + 2(x₁-2x₂), -4(x₁-2x₂)]
∇f(0,0) = [4(-2)³ + 2(0), -4(0)] = [-32, 0]
第四步:构建自适应屏障函数
P(x, μ, τ) = f(x) - τ∑μᵢln(-gᵢ(x))
屏障函数将不等式约束转化为目标函数中的屏障项。
第五步:求解信赖域子问题
在信赖域半径 Δₖ 内求解二次规划子问题:
minimize ∇f(xᵏ)ᵀd + ½dᵀBᵏd
subject to:
gᵢ(xᵏ) + ∇gᵢ(xᵏ)ᵀd ≤ 0, i=1,2
∥d∥ ≤ Δₖ
计算约束梯度:
∇g₁(0,0) = [2x₁, -1] = [0, -1]
∇g₂(0,0) = [2x₁, 2x₂] = [0, 0]
第六步:过滤器接受检验
计算试探点 xᵗʳᵢᵃˡ = xᵏ + dᵏ
检查是否被过滤器接受:
如果 (f(xᵗʳᵢᵃˡ), h(xᵗʳᵢᵃˡ)) 不被任何过滤器点支配,则接受
第七步:参数更新
如果接受试探点:
- 更新 xᵏ⁺¹ = xᵏ + dᵏ
- 更新乘子估计 μᵏ⁺¹
- 调整信赖域半径 Δₖ⁺¹
- 更新屏障参数 τₖ⁺¹
第八步:收敛判断
检查KKT条件的满足程度:
∥∇f(x) + ∑μᵢ∇gᵢ(x)∥ ≤ ε
μᵢgᵢ(x) = 0, μᵢ ≥ 0
gᵢ(x) ≤ 0
重复第三到第八步直到收敛。
经过数次迭代后,算法将收敛到近似最优解 x* ≈ (0.7, 0.5),f(x*) ≈ 0.2,满足所有约束条件。