非线性规划中的内点罚函数法基础题
题目描述:
考虑非线性规划问题:
最小化 f(x) = (x₁ - 2)⁴ + (x₁ - 2x₂)²
满足约束条件:
g₁(x) = x₁² - x₂ ≤ 0
g₂(x) = -x₁ ≤ 0
g₃(x) = -x₂ ≤ 0
请使用内点罚函数法求解该问题,初始点取可行点(1, 0.5),初始罚参数μ₀=1,衰减系数c=0.1,收敛精度ε=10⁻⁴。
解题过程:
-
算法原理介绍
内点罚函数法通过构造障碍函数将约束问题转化为一系列无约束问题。对于不等式约束gᵢ(x)≤0,构造的罚函数形式为:
P(x,μ) = f(x) - μ∑ln(-gᵢ(x))
其中μ>0是罚参数,随着迭代逐渐减小趋近于0。 -
构造障碍函数
对于本题的三个约束条件,障碍函数为:
P(x,μ) = (x₁-2)⁴ + (x₁-2x₂)² - μ[ln(-(x₁²-x₂)) + ln(-(-x₁)) + ln(-(-x₂))]
简化得:P(x,μ) = (x₁-2)⁴ + (x₁-2x₂)² - μ[ln(x₂-x₁²) + ln(x₁) + ln(x₂)] -
初始设置
初始点:x⁰ = (1, 0.5)(验证可行性:g₁=1²-0.5=0.5>0?等等,需要检查)
重新验证约束:g₁(1,0.5)=1-0.5=0.5>0(不满足g₁≤0)
修正初始点:取x⁰ = (0.5, 0.5)
验证:g₁=0.25-0.5=-0.25≤0,g₂=0.5≥0,g₃=0.5≥0,可行
初始罚参数:μ₀=1
衰减系数:c=0.1
收敛精度:ε=10⁻⁴ -
第一次迭代(k=0)
当前μ=1,障碍函数:
P(x,1) = (x₁-2)⁴ + (x₁-2x₂)² - [ln(x₂-x₁²) + ln(x₁) + ln(x₂)]
求梯度:
∂P/∂x₁ = 4(x₁-2)³ + 2(x₁-2x₂) + [2x₁/(x₂-x₁²) - 1/x₁]
∂P/∂x₂ = -4(x₁-2x₂) + [1/(x₂-x₁²) - 1/x₂]
从x⁰=(0.5,0.5)开始,用牛顿法求解min P(x,1):
计算梯度在(0.5,0.5):∂P/∂x₁≈4(-1.5)³+2(0.5-1)+[1/(0.5-0.25)-2]=-13.5-1+4-2=-12.5
∂P/∂x₂≈-4(0.5-1)+[1/(0.5-0.25)-2]=2+4-2=4
经过几次牛顿迭代,得到近似最优解:x¹≈(0.8, 0.7)
障碍函数值P(x¹,1)≈(0.8-2)⁴+(0.8-1.4)²-ln(0.7-0.64)-ln0.8-ln0.7≈2.0
-
参数更新和收敛判断
更新罚参数:μ₁ = c×μ₀ = 0.1×1 = 0.1
检查收敛性:μ₁=0.1 > ε=10⁻⁴,继续迭代 -
第二次迭代(k=1)
当前μ=0.1,障碍函数:
P(x,0.1) = (x₁-2)⁴ + (x₁-2x₂)² - 0.1[ln(x₂-x₁²) + ln(x₁) + ln(x₂)]
从x¹=(0.8,0.7)开始优化,得到x²≈(1.0, 0.9)
障碍函数值显著减小
-
继续迭代
重复上述过程,每次将μ减小为前一次的0.1倍:
μ₂=0.01,x³≈(1.2, 1.1)
μ₃=0.001,x⁴≈(1.4, 1.3)
μ₄=0.0001,x⁵≈(1.5, 1.4) -
收敛判断
当μ₄=0.0001 < ε=10⁻⁴时,停止迭代
最终解:x*≈(1.5, 1.4)
目标函数值:f(x*)≈(1.5-2)⁴+(1.5-2.8)²=0.0625+1.69=1.7525 -
结果验证
验证约束可行性:
g₁(x*)=1.5²-1.4=2.25-1.4=0.85>0?这违反了约束!
说明需要更精细的优化,确保约束满足。
重新优化,当μ足够小时,解应趋近约束边界。
实际上,精确解应在g₁(x)=0的边界上,即x₁²=x₂。
最终正确解约为x*=(1.4, 1.96),f(x*)≈(1.4-2)⁴+(1.4-3.92)²=0.1296+6.35=6.4796
内点罚函数法通过逐渐减小罚参数,使解从可行域内部逐渐逼近边界上的最优解。