非线性规划中的序列二次规划-积极集-信赖域混合算法基础题
题目描述:
考虑非线性约束优化问题:
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,所有约束在最优点活跃
该混合算法通过结合积极集策略的效率和信赖域方法的鲁棒性,有效解决了这个非线性规划问题。