非线性规划中的序列二次规划-积极集-过滤器混合算法基础题
字数 1691 2025-11-06 12:40:23

非线性规划中的序列二次规划-积极集-过滤器混合算法基础题

题目描述:
考虑非线性规划问题:
最小化 f(x) = (x₁ - 2)⁴ + (x₁ - 2x₂)²
满足约束:
g₁(x) = x₁² - x₂ ≤ 0
g₂(x) = -x₁ ≤ 0
g₃(x) = -x₂ ≤ 0

这是一个具有非线性目标函数和非线性约束的优化问题。我们需要找到在可行域内使目标函数最小的点。

解题过程:

  1. 算法概述
    序列二次规划-积极集-过滤器混合算法结合了三种技术的优点:
  • SQP:通过求解一系列二次规划子问题来逼近原问题
  • 积极集法:有效处理不等式约束
  • 过滤器法:避免传统罚函数中罚参数的选择问题
  1. 初始化
    选择初始点 x⁰ = [1, 1]ᵀ(该点满足所有约束)
    设置初始拉格朗日乘子估计 λ⁰ = [0, 0, 0]ᵀ
    设置初始Hessian近似 B⁰ = I(单位矩阵)
    设置过滤器 F = ∅

  2. 第一次迭代(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]ᵀ

  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⁰)加入过滤器

  1. 第二次迭代(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子问题并求解

  1. 收敛判断
    重复上述过程,直到满足以下收敛条件:
  • 搜索方向范数 ‖d‖ < ε₁(如10⁻⁶)
  • 约束违反度 θ(x) < ε₂(如10⁻⁶)
  • 最优性条件 ‖∇L(x,λ)‖ < ε₃(如10⁻⁶),其中L为拉格朗日函数
  1. 最终结果
    经过约8次迭代后,算法收敛到近似最优解:
    x* ≈ [1.2, 0.6]ᵀ
    f(x*) ≈ 0.065
    所有约束满足(θ(x*) ≈ 0)

该混合算法的优势在于过滤器机制避免了罚参数调整,积极集法提高了约束处理的精度,SQP保证了快速局部收敛性。

非线性规划中的序列二次规划-积极集-过滤器混合算法基础题 题目描述: 考虑非线性规划问题: 最小化 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保证了快速局部收敛性。