非线性规划中的自适应信赖域-序列线性规划混合算法进阶题
题目描述:
考虑非线性规划问题:
min f(x) = (x₁ - 2)⁴ + (x₁ - 2x₂)²
s.t. x₁² + x₂² ≤ 1
x₁ + x₂ ≥ 0.5
其中x = (x₁, x₂) ∈ R²。要求使用自适应信赖域-序列线性规划混合算法求解该问题,初始点x⁰ = (0, 0),初始信赖域半径Δ₀ = 0.5。
解题过程:
-
算法框架理解
该混合算法结合了序列线性规划(SLP)的简单性和信赖域法的全局收敛性。核心思想是:在每次迭代中,用一阶泰勒展开近似原问题得到线性规划子问题,同时用信赖域约束保证近似的合理性,并根据实际下降量与预测下降量的比值自适应调整信赖域半径。 -
第一次迭代(k=0)
当前点:x⁰ = (0, 0),Δ₀ = 0.5
-
计算函数值和约束:
f(x⁰) = (0-2)⁴ + (0-0)² = 16
约束:0+0=0 ≤ 1(满足),0+0=0 ≥ 0.5(违反,需处理) -
构建线性化子问题:
梯度∇f(x⁰) = [4(0-2)³ + 2(0-0), -4(0-0)]ᵀ = [-32, 0]ᵀ
约束线性化:
g₁(x) = x₁² + x₂² - 1 ≤ 0 → ∇g₁(x⁰) = [0, 0]ᵀ, g₁(x⁰) = -1
g₂(x) = 0.5 - x₁ - x₂ ≤ 0 → ∇g₂(x⁰) = [-1, -1]ᵀ, g₂(x⁰) = 0.5
子问题:
min -32d₁ + 0d₂
s.t. [0, 0]d ≤ 1(实际退化为0≤1)
[-1, -1]d ≤ -0.5(因g₂(x⁰)=0.5)
||d||∞ ≤ 0.5(信赖域约束,∞-范数便于线性化)
-
求解子问题:
第二个约束化为:-d₁ - d₂ ≤ -0.5 → d₁ + d₂ ≥ 0.5
结合信赖域约束-0.5 ≤ d₁, d₂ ≤ 0.5,易得最优解d* = (0.5, 0)或(0, 0.5),取d* = (0.5, 0)(沿梯度下降方向) -
计算实际下降比:
候选点x¹ = x⁰ + d* = (0.5, 0)
f(x¹) = (0.5-2)⁴ + (0.5-0)² = (-1.5)⁴ + 0.25 = 5.0625 + 0.25 = 5.3125
实际下降:ared = f(x⁰) - f(x¹) = 16 - 5.3125 = 10.6875
预测下降:pred = -∇f(x⁰)ᵀd* = -(-32)×0.5 = 16
比值ρ = ared/pred = 10.6875/16 ≈ 0.668 -
更新信赖域半径:
由于ρ ∈ [0.25, 0.75],保持Δ₁ = Δ₀ = 0.5
接受步长,x¹ = (0.5, 0)
- 第二次迭代(k=1)
当前点:x¹ = (0.5, 0),Δ₁ = 0.5
-
计算函数值和约束:
f(x¹) = 5.3125
约束:0.25+0=0.25≤1(满足),0.5+0=0.5≥0.5(满足,紧约束) -
构建线性化子问题:
∇f(x¹) = [4(0.5-2)³ + 2(0.5-0), -4(0.5-0)]ᵀ
= [4×(-1.5)³ + 1, -2]ᵀ = [4×(-3.375) + 1, -2]ᵀ = [-13.5+1, -2]ᵀ = [-12.5, -2]ᵀ
约束线性化:
g₁(x)线性化:∇g₁(x¹) = [1, 0]ᵀ, g₁(x¹) = 0.25-1 = -0.75
g₂(x)线性化:∇g₂(x¹) = [-1, -1]ᵀ, g₂(x¹) = 0.5-0.5-0 = 0(紧约束)
子问题:
min -12.5d₁ - 2d₂
s.t. [1,0]d ≤ 0.75(来自g₁线性化)
[-1,-1]d ≤ 0(来自g₂线性化,因g₂(x¹)=0)
||d||∞ ≤ 0.5
-
求解子问题:
约束化为:d₁ ≤ 0.75(松散),d₁ + d₂ ≥ 0
在d₁ + d₂ ≥ 0和|d₁|,|d₂|≤0.5下最小化-12.5d₁ - 2d₂
分析:为减小目标,需d₁尽可能大,d₂尽可能小,但受d₁+d₂≥0限制
取d₂ = -d₁可满足约束,则目标为-12.5d₁ - 2(-d₁) = -10.5d₁
为最小化该值,需d₁最大,即d₁=0.5, d₂=-0.5
验证:d₁+d₂=0≥0,满足约束 -
计算实际下降比:
候选点x² = (0.5+0.5, 0-0.5) = (1, -0.5)
f(x²) = (1-2)⁴ + (1-2×(-0.5))² = (-1)⁴ + (1+1)² = 1 + 4 = 5
ared = 5.3125 - 5 = 0.3125
pred = -(-12.5×0.5 - 2×(-0.5)) = 6.25 - 1 = 5.25
ρ = 0.3125/5.25 ≈ 0.0595 -
更新信赖域半径:
由于ρ < 0.25,拒绝步长,缩小信赖域Δ₂ = 0.5×Δ₁ = 0.25
保持x² = x¹ = (0.5, 0)
- 第三次迭代(k=2)
在当前点x² = (0.5, 0)以Δ₂=0.25重新求解线性化子问题,但约束||d||∞≤0.25
-
子问题:
min -12.5d₁ - 2d₂
s.t. d₁ ≤ 0.75, d₁ + d₂ ≥ 0, |d₁|≤0.25, |d₂|≤0.25
在更紧的信赖域下,取d₁=0.25, d₂=-0.25(满足d₁+d₂=0)
目标值变化:-12.5×0.25 - 2×(-0.25) = -3.125 + 0.5 = -2.625
pred = 2.625 -
候选点x³ = (0.75, -0.25)
f(x³) = (0.75-2)⁴ + (0.75 - 2×(-0.25))² = (-1.25)⁴ + (0.75+0.5)²
= 2.4414 + (1.25)² = 2.4414 + 1.5625 = 4.0039
ared = 5.3125 - 4.0039 = 1.3086
ρ = 1.3086/2.625 ≈ 0.498 -
由于ρ ∈ [0.25, 0.75],保持Δ₃ = Δ₂ = 0.25,接受步长
- 收敛判断
继续迭代直至||d||小于阈值(如10⁻³)。最终趋近于解x* ≈ (1, 0.5)(可行域内最小点),实际最优解需更多迭代,但混合算法通过自适应调整信赖域半径,平衡收敛速度和稳定性。