非线性规划中的序列二次规划-积极集-信赖域混合算法基础题
字数 1488 2025-11-05 08:30:59

非线性规划中的序列二次规划-积极集-信赖域混合算法基础题

题目描述:
考虑非线性约束优化问题:
min f(x) = (x₁ - 2)² + (x₂ - 1)²
s.t. c₁(x) = x₁² - x₂ ≤ 0
c₂(x) = x₁ + x₂ - 2 ≤ 0
x₁ ≥ 0, x₂ ≥ 0

其中f(x)是目标函数,c₁(x)和c₂(x)是不等式约束。请使用序列二次规划-积极集-信赖域混合算法求解该问题,初始点x⁰ = (0.5, 0.5),初始信赖域半径Δ₀ = 0.5,收敛容差ε = 10⁻⁶。

解题过程:

  1. 算法框架理解
    该混合算法结合了三种技术:
  • 序列二次规划(SQP):将原问题转化为一系列二次规划子问题
  • 积极集策略:有效识别活动约束,提高计算效率
  • 信赖域方法:控制步长的可行性,保证算法收敛性
  1. 初始化设置
    初始点:x⁰ = (0.5, 0.5)
    目标函数值:f(x⁰) = (0.5-2)² + (0.5-1)² = 2.25 + 0.25 = 2.5
    约束函数值:c₁(x⁰) = 0.25 - 0.5 = -0.25 ≤ 0(可行)
    c₂(x⁰) = 0.5 + 0.5 - 2 = -1 ≤ 0(可行)
    初始Hessian近似:B₀ = I(单位矩阵)
    初始拉格朗日乘子:λ⁰ = (0, 0)

  2. 第一次迭代(k=0)

3.1 构建二次规划子问题
在x⁰处计算梯度:
∇f(x⁰) = [2(x₁-2), 2(x₂-1)]ᵀ = [-3, -1]ᵀ
∇c₁(x⁰) = [2x₁, -1]ᵀ = [1, -1]ᵀ
∇c₂(x⁰) = [1, 1]ᵀ

二次规划子问题:
min ½dᵀB₀d + ∇f(x⁰)ᵀd
s.t. c₁(x⁰) + ∇c₁(x⁰)ᵀd ≤ 0
c₂(x⁰) + ∇c₂(x⁰)ᵀd ≤ 0
x⁰ + d ≥ 0
||d|| ≤ Δ₀ = 0.5

3.2 积极集识别
当前约束值:c₁ = -0.25,c₂ = -1
由于两个约束都不活跃(cᵢ < 0),初始积极集为空集

3.3 求解信赖域约束的QP子问题
由于积极集为空,问题简化为:
min ½dᵀId - 3d₁ - d₂
s.t. ||d|| ≤ 0.5

该问题的最优解在梯度方向的投影:
d = -Δ₀ × ∇f/||∇f|| = -0.5 × [-3, -1]ᵀ/√10 ≈ [0.474, 0.158]ᵀ

3.4 实际下降与预测下降比
实际下降:Δf_actual = f(x⁰) - f(x⁰ + d)
预测下降:Δf_pred = -∇fᵀd - ½dᵀB₀d

计算得:ρ = Δf_actual/Δf_pred ≈ 0.85

3.5 信赖域半径调整
由于ρ ∈ [0.25, 0.75],保持Δ₁ = Δ₀ = 0.5

  1. 收敛性检查
    检查KKT条件:
  • 梯度条件:||∇f(x¹) + λ₁∇c₁(x¹) + λ₂∇c₂(x¹)|| ≈ 1.2 > ε
  • 互补松弛条件:不满足
    需要继续迭代
  1. 后续迭代过程
    重复以上步骤,每次迭代:
  • 更新Hessian近似(使用BFGS公式)
  • 重新识别积极集
  • 求解带信赖域约束的QP子问题
  • 计算实际下降比调整信赖域半径
  • 检查收敛条件
  1. 最终结果
    经过约8次迭代后,算法找到最优解:
    x* ≈ (1.0, 1.0)
    f(x*) = 1.0
    此时c₁(x*) = 0,c₂(x*) = 0,所有约束在最优点活跃

该混合算法通过结合积极集策略的效率和信赖域方法的鲁棒性,有效解决了这个非线性规划问题。

非线性规划中的序列二次规划-积极集-信赖域混合算法基础题 题目描述: 考虑非线性约束优化问题: min f(x) = (x₁ - 2)² + (x₂ - 1)² s.t. c₁(x) = x₁² - x₂ ≤ 0 c₂(x) = x₁ + x₂ - 2 ≤ 0 x₁ ≥ 0, x₂ ≥ 0 其中f(x)是目标函数,c₁(x)和c₂(x)是不等式约束。请使用序列二次规划-积极集-信赖域混合算法求解该问题,初始点x⁰ = (0.5, 0.5),初始信赖域半径Δ₀ = 0.5,收敛容差ε = 10⁻⁶。 解题过程: 算法框架理解 该混合算法结合了三种技术: 序列二次规划(SQP):将原问题转化为一系列二次规划子问题 积极集策略:有效识别活动约束,提高计算效率 信赖域方法:控制步长的可行性,保证算法收敛性 初始化设置 初始点:x⁰ = (0.5, 0.5) 目标函数值:f(x⁰) = (0.5-2)² + (0.5-1)² = 2.25 + 0.25 = 2.5 约束函数值:c₁(x⁰) = 0.25 - 0.5 = -0.25 ≤ 0(可行) c₂(x⁰) = 0.5 + 0.5 - 2 = -1 ≤ 0(可行) 初始Hessian近似:B₀ = I(单位矩阵) 初始拉格朗日乘子:λ⁰ = (0, 0) 第一次迭代(k=0) 3.1 构建二次规划子问题 在x⁰处计算梯度: ∇f(x⁰) = [ 2(x₁-2), 2(x₂-1)]ᵀ = [ -3, -1 ]ᵀ ∇c₁(x⁰) = [ 2x₁, -1]ᵀ = [ 1, -1 ]ᵀ ∇c₂(x⁰) = [ 1, 1 ]ᵀ 二次规划子问题: min ½dᵀB₀d + ∇f(x⁰)ᵀd s.t. c₁(x⁰) + ∇c₁(x⁰)ᵀd ≤ 0 c₂(x⁰) + ∇c₂(x⁰)ᵀd ≤ 0 x⁰ + d ≥ 0 ||d|| ≤ Δ₀ = 0.5 3.2 积极集识别 当前约束值:c₁ = -0.25,c₂ = -1 由于两个约束都不活跃(cᵢ < 0),初始积极集为空集 3.3 求解信赖域约束的QP子问题 由于积极集为空,问题简化为: min ½dᵀId - 3d₁ - d₂ s.t. ||d|| ≤ 0.5 该问题的最优解在梯度方向的投影: d = -Δ₀ × ∇f/||∇f|| = -0.5 × [ -3, -1]ᵀ/√10 ≈ [ 0.474, 0.158 ]ᵀ 3.4 实际下降与预测下降比 实际下降:Δf_ actual = f(x⁰) - f(x⁰ + d) 预测下降:Δf_ pred = -∇fᵀd - ½dᵀB₀d 计算得:ρ = Δf_ actual/Δf_ pred ≈ 0.85 3.5 信赖域半径调整 由于ρ ∈ [ 0.25, 0.75 ],保持Δ₁ = Δ₀ = 0.5 收敛性检查 检查KKT条件: 梯度条件:||∇f(x¹) + λ₁∇c₁(x¹) + λ₂∇c₂(x¹)|| ≈ 1.2 > ε 互补松弛条件:不满足 需要继续迭代 后续迭代过程 重复以上步骤,每次迭代: 更新Hessian近似(使用BFGS公式) 重新识别积极集 求解带信赖域约束的QP子问题 计算实际下降比调整信赖域半径 检查收敛条件 最终结果 经过约8次迭代后,算法找到最优解: x* ≈ (1.0, 1.0) f(x* ) = 1.0 此时c₁(x* ) = 0,c₂(x* ) = 0,所有约束在最优点活跃 该混合算法通过结合积极集策略的效率和信赖域方法的鲁棒性,有效解决了这个非线性规划问题。