非线性规划中的序列线性规划-积极集-信赖域混合算法进阶题
我将为您讲解一个结合了序列线性规划、积极集策略和信赖域方法的混合算法题目。这个算法在处理非线性约束优化问题时特别有效。
问题描述
考虑如下非线性规划问题:
最小化 f(x) = (x₁ - 2)⁴ + (x₁ - 2x₂)²
满足约束:
g₁(x) = x₁² - x₂ ≤ 0
g₂(x) = -x₁ ≤ 0
g₃(x) = -x₂ ≤ 0
初始点 x⁰ = [0, 1]ᵀ,信赖域半径初始值 Δ₀ = 0.5,收敛容差 ε = 10⁻⁶。
解题过程详解
第一步:问题分析与初始化
首先识别目标函数和约束的性质:
- 目标函数 f(x) 是四阶和二阶多项式的组合,高度非线性
- 约束 g₁(x) 是非线性不等式约束,g₂(x) 和 g₃(x) 是简单的边界约束
- 初始点 x⁰ = [0, 1]ᵀ 是可行点(验证:g₁(0,1) = -1 ≤ 0, g₂ = 0, g₃ = -1 ≤ 0)
计算初始点的函数值和梯度:
f(x⁰) = (0-2)⁴ + (0-2)² = 16 + 4 = 20
∇f(x) = [4(x₁-2)³ + 2(x₁-2x₂), -4(x₁-2x₂)]ᵀ
∇f(x⁰) = [4(-2)³ + 2(-2), -4(-2)]ᵀ = [-32-4, 8]ᵀ = [-36, 8]ᵀ
第二步:构建线性化子问题
在当前迭代点 xᵏ,我们对目标函数和约束进行线性化:
线性化目标函数:f(x) ≈ f(xᵏ) + ∇f(xᵏ)ᵀ(x - xᵏ)
线性化约束:gᵢ(x) ≈ gᵢ(xᵏ) + ∇gᵢ(xᵏ)ᵀ(x - xᵏ) ≤ 0, i=1,2,3
计算约束梯度和值:
∇g₁(x) = [2x₁, -1]ᵀ, ∇g₁(x⁰) = [0, -1]ᵀ, g₁(x⁰) = -1
∇g₂(x) = [-1, 0]ᵀ, g₂(x⁰) = 0
∇g₃(x) = [0, -1]ᵀ, g₃(x⁰) = -1
第三步:应用积极集策略
识别当前积极约束:
- g₂(x⁰) = 0,因此 g₂ 是积极约束
- g₁(x⁰) = -1 < 0,非积极
- g₃(x⁰) = -1 < 0,非积极
积极集 A(x⁰) = {2},只包含第二个约束
第四步:构建信赖域线性规划子问题
在信赖域半径 Δₖ 内求解线性规划:
最小化 ∇f(xᵏ)ᵀd
满足:
gᵢ(xᵏ) + ∇gᵢ(xᵏ)ᵀd ≤ 0, i ∈ A(xᵏ) (积极约束)
||d||∞ ≤ Δₖ (信赖域约束)
对于第一次迭代:
最小化 [-36, 8]d
满足:
g₂(x⁰) + ∇g₂(x⁰)ᵀd ≤ 0 → 0 + [-1, 0]d ≤ 0 → -d₁ ≤ 0
||d||∞ ≤ 0.5
第五步:求解线性规划子问题
这是一个简单的线性规划:
min -36d₁ + 8d₂
s.t. d₁ ≥ 0
-0.5 ≤ d₁ ≤ 0.5
-0.5 ≤ d₂ ≤ 0.5
由于目标函数中 d₁ 的系数为负且绝对值较大,应取 d₁ 的最大值 d₁ = 0.5
d₂ 的系数为正,应取最小值 d₂ = -0.5
因此,搜索方向 d⁰ = [0.5, -0.5]ᵀ
第六步:计算实际下降量与预测下降量
实际下降量:Aredₖ = f(xᵏ) - f(xᵏ + dᵏ)
预测下降量:Predₖ = -∇f(xᵏ)ᵀdᵏ
对于第一次迭代:
Pred₀ = -[-36, 8][0.5, -0.5]ᵀ = 36×0.5 - 8×(-0.5) = 18 + 4 = 22
计算新点:x¹ = x⁰ + d⁰ = [0.5, 0.5]ᵀ
f(x¹) = (0.5-2)⁴ + (0.5-1)² = (-1.5)⁴ + (-0.5)² = 5.0625 + 0.25 = 5.3125
Ared₀ = f(x⁰) - f(x¹) = 20 - 5.3125 = 14.6875
第七步:更新信赖域半径
计算比值:ρₖ = Aredₖ / Predₖ
ρ₀ = 14.6875 / 22 ≈ 0.6676
根据标准信赖域更新策略:
- 如果 ρₖ < 0.25:Δₖ₊₁ = 0.5Δₖ (下降不足,缩小信赖域)
- 如果 ρₖ > 0.75 且 ||dᵏ|| = Δₖ:Δₖ₊₁ = 2Δₖ (下降充分,扩大信赖域)
- 否则:Δₖ₊₁ = Δₖ (保持当前半径)
由于 0.25 < 0.6676 < 0.75,保持 Δ₁ = Δ₀ = 0.5
第八步:检查收敛条件
检查梯度投影范数或步长:
||d⁰|| = √(0.5² + (-0.5)²) = √0.5 ≈ 0.707 > ε
继续迭代...
第九步:后续迭代与收敛
重复步骤2-8,每次:
- 在当前点线性化目标函数和约束
- 识别积极约束集
- 在信赖域内求解线性规划子问题
- 计算实际下降与预测下降的比值
- 根据比值更新信赖域半径
- 检查收敛条件
经过多次迭代后,算法会收敛到近似最优解 x* ≈ [1.4, 0.7]ᵀ,f(x*) ≈ 0.05
算法特点总结
- 序列线性化:将复杂非线性问题转化为一系列线性规划
- 积极集策略:只处理积极约束,减少计算量
- 信赖域控制:保证线性近似的可靠性
- 全局收敛:在适当条件下保证收敛到局部最优解
这个混合算法结合了不同方法的优点,既保持了序列线性规划的计算效率,又通过信赖域机制保证了全局收敛性。