非线性规划中的序列线性化信赖域反射-自适应屏障混合算法基础题
问题描述
考虑非线性规划问题:
最小化 f(x) = (x₁ - 2)⁴ + (x₁ - 2x₂)²
满足约束条件:
g₁(x) = x₁² - x₂ ≤ 0
g₂(x) = -x₁ ≤ 0
g₃(x) = -x₂ ≤ 0
这是一个具有非线性目标函数和非线性约束的优化问题,我们需要找到满足所有约束的最小f(x)值。
解题过程
第一步:算法选择与初始化
我们采用序列线性化信赖域反射与自适应屏障混合算法。这个算法的核心思想是:
- 通过序列线性化将非线性问题转化为一系列线性子问题
- 使用信赖域反射控制步长大小
- 引入自适应屏障函数处理不等式约束
初始化:选择初始点x⁰ = [0.5, 0.5]ᵀ,初始信赖域半径Δ₀ = 0.5,屏障参数μ₀ = 1.0,收敛容差ε = 10⁻⁶
第二步:构建屏障函数
将约束问题转化为无约束问题:
B(x, μ) = f(x) - μ∑ln(-gᵢ(x))
在当前迭代点xᵏ处,我们需要计算:
- 目标函数值f(xᵏ)
- 约束函数值gᵢ(xᵏ)
- 梯度∇f(xᵏ)和∇gᵢ(xᵏ)
对于x⁰ = [0.5, 0.5]:
f(x⁰) = (0.5-2)⁴ + (0.5-1)² = 5.0625 + 0.25 = 5.3125
g₁(x⁰) = 0.25 - 0.5 = -0.25
g₂(x⁰) = -0.5
g₃(x⁰) = -0.5
所有约束都满足(gᵢ(x) < 0)
第三步:线性化近似
在当前点xᵏ处,我们对目标函数和约束进行线性化:
f̃(x) ≈ f(xᵏ) + ∇f(xᵏ)ᵀ(x - xᵏ)
g̃ᵢ(x) ≈ gᵢ(xᵏ) + ∇gᵢ(xᵏ)ᵀ(x - xᵏ)
计算梯度:
∇f(x) = [4(x₁-2)³ + 2(x₁-2x₂), -4(x₁-2x₂)]ᵀ
∇g₁(x) = [2x₁, -1]ᵀ
∇g₂(x) = [-1, 0]ᵀ
∇g₃(x) = [0, -1]ᵀ
在x⁰处:
∇f(x⁰) = [4(-1.5)³ + 2(-0.5), -4(-0.5)] = [-13.5 - 1, 2] = [-14.5, 2]ᵀ
∇g₁(x⁰) = [1, -1]ᵀ
第四步:构建线性化子问题
min f̃(x) = f(xᵏ) + ∇f(xᵏ)ᵀd
s.t. g̃ᵢ(x) = gᵢ(xᵏ) + ∇gᵢ(xᵏ)ᵀd ≤ 0, i=1,2,3
||d|| ≤ Δᵏ
其中d = x - xᵏ是搜索方向,Δᵏ是当前信赖域半径。
第五步:求解子问题
使用信赖域反射法求解线性规划子问题。这包括:
- 预测步:在信赖域内找到可行下降方向
- 反射步:处理边界约束
- 接受准则:根据实际下降与预测下降的比值决定是否接受新点
对于x⁰,子问题为:
min -14.5d₁ + 2d₂
s.t. -0.25 + d₁ - d₂ ≤ 0
-0.5 - d₁ ≤ 0
-0.5 - d₂ ≤ 0
d₁² + d₂² ≤ 0.25
第六步:自适应屏障参数更新
根据约束违反程度自适应调整屏障参数:
如果max|gᵢ(xᵏ⁺¹)| < 0.1μᵏ,则μᵏ⁺¹ = 0.1μᵏ
否则μᵏ⁺¹ = μᵏ
这确保了在接近可行域边界时屏障函数不会过于陡峭。
第七步:收敛性检查
检查以下收敛条件:
- 梯度条件:||∇f(xᵏ) + ∑λᵏᵢ∇gᵢ(xᵏ)|| < ε
- 互补松弛条件:λᵏᵢgᵢ(xᵏ) ≈ 0
- 可行性条件:gᵢ(xᵏ) ≤ 0
如果所有条件满足,算法终止;否则返回第三步继续迭代。
第八步:数值结果分析
经过约15次迭代,算法收敛到:
x* ≈ [1.695, 0.848]ᵀ
f(x*) ≈ 0.023
所有约束均满足,且满足KKT最优性条件。
这个混合算法结合了序列线性化的效率、信赖域反射的稳定性和自适应屏障函数的约束处理能力,能够有效求解中等规模的非线性规划问题。