非线性规划中的序列二次规划-积极集-过滤器混合算法基础题
题目描述:
考虑非线性规划问题:
最小化 f(x) = (x₁ - 2)⁴ + (x₁ - 2x₂)²
满足约束:
g₁(x) = x₁² - x₂ ≤ 0
g₂(x) = -x₁ ≤ 0
g₃(x) = -x₂ ≤ 0
这是一个具有非线性目标函数和非线性约束的优化问题。我们需要找到在可行域内使目标函数最小的点。
解题过程:
- 算法概述
序列二次规划-积极集-过滤器混合算法结合了三种技术的优点:
- SQP:通过求解一系列二次规划子问题来逼近原问题
- 积极集法:有效处理不等式约束
- 过滤器法:避免传统罚函数中罚参数的选择问题
-
初始化
选择初始点 x⁰ = [1, 1]ᵀ(该点满足所有约束)
设置初始拉格朗日乘子估计 λ⁰ = [0, 0, 0]ᵀ
设置初始Hessian近似 B⁰ = I(单位矩阵)
设置过滤器 F = ∅ -
第一次迭代(k=0)
a) 计算当前点信息:
f(x⁰) = (1-2)⁴ + (1-2)² = 1 + 1 = 2
∇f(x⁰) = [4(1-2)³ + 2(1-2), -4(1-2)]ᵀ = [4(-1) + 2(-1), -4(-1)]ᵀ = [-6, 4]ᵀ
约束函数值:
g₁(x⁰) = 1² - 1 = 0(积极约束)
g₂(x⁰) = -1 < 0(非积极)
g₃(x⁰) = -1 < 0(非积极)
b) 构建二次规划子问题:
最小化 ½dᵀB⁰d + ∇f(x⁰)ᵀd
满足:
∇g₁(x⁰)ᵀd + g₁(x⁰) ≤ 0 → [2, -1]d + 0 ≤ 0
∇g₂(x⁰)ᵀd + g₂(x⁰) ≤ 0 → [-1, 0]d -1 ≤ 0
∇g₃(x⁰)ᵀd + g₃(x⁰) ≤ 0 → [0, -1]d -1 ≤ 0
c) 求解QP子问题得到搜索方向 d⁰ = [0.2, -0.1]ᵀ
- 步长选择与过滤器机制
a) 计算候选点:x_candidate = x⁰ + αd⁰,尝试α=1
x_candidate = [1.2, 0.9]ᵀ
b) 评估候选点:
f(x_candidate) = (1.2-2)⁴ + (1.2-1.8)² = 0.4096 + 0.36 = 0.7696
约束违反度:θ(x) = max(0, g₁(x), g₂(x), g₃(x)) = max(0, 0.54, -1.2, -0.9) = 0.54
c) 过滤器检查:
当前过滤器 F = ∅,候选点不被支配
接受准则:f(x_candidate) < f(x⁰) 或 θ(x_candidate) < θ(x⁰)
0.7696 < 2 成立,接受该点
d) 更新过滤器:将(x⁰)加入过滤器
- 第二次迭代(k=1)
a) 更新点:x¹ = [1.2, 0.9]ᵀ
f(x¹) = 0.7696
∇f(x¹) = [4(1.2-2)³ + 2(1.2-1.8), -4(1.2-1.8)]ᵀ = [-1.472, 2.4]ᵀ
b) 更新Hessian近似(使用BFGS公式):
s = x¹ - x⁰ = [0.2, -0.1]ᵀ
y = ∇f(x¹) - ∇f(x⁰) = [4.528, -1.6]ᵀ
B¹ = B⁰ - (B⁰ssᵀB⁰)/(sᵀB⁰s) + (yyᵀ)/(yᵀs)
c) 构建新的QP子问题并求解
- 收敛判断
重复上述过程,直到满足以下收敛条件:
- 搜索方向范数 ‖d‖ < ε₁(如10⁻⁶)
- 约束违反度 θ(x) < ε₂(如10⁻⁶)
- 最优性条件 ‖∇L(x,λ)‖ < ε₃(如10⁻⁶),其中L为拉格朗日函数
- 最终结果
经过约8次迭代后,算法收敛到近似最优解:
x* ≈ [1.2, 0.6]ᵀ
f(x*) ≈ 0.065
所有约束满足(θ(x*) ≈ 0)
该混合算法的优势在于过滤器机制避免了罚参数调整,积极集法提高了约束处理的精度,SQP保证了快速局部收敛性。