非线性规划中的序列二次规划-代理模型-信赖域-自适应屏障混合算法进阶题
题目描述:
考虑非线性规划问题:
最小化 \(f(x) = (x_1 - 1)^2 + (x_2 - 2.5)^2 + \sin(x_1 x_2)\)
满足约束:
\(g_1(x) = x_1 - 2x_2 + 2 \geq 0\)
\(g_2(x) = -x_1 - 2x_2 + 6 \geq 0\)
\(g_3(x) = -x_1 + 2x_2 + 2 \geq 0\)
\(x_1, x_2 \geq 0\)
要求使用序列二次规划-代理模型-信赖域-自适应屏障混合算法求解该问题,从初始点 \(x^{(0)} = (2, 0)\) 开始,找到满足约束的局部最优解。
解题过程:
- 算法框架理解
该混合算法结合了序列二次规划(SQP)、代理模型、信赖域和自适应屏障方法:
- SQP:在每次迭代中求解二次规划子问题
- 代理模型:用简化模型近似复杂函数
- 信赖域:控制步长大小,保证近似精度
- 自适应屏障:处理不等式约束,屏障参数随迭代自适应调整
- 初始化
设置初始点 \(x^{(0)} = (2, 0)\)
初始信赖域半径 \(\Delta_0 = 0.5\)
初始屏障参数 \(\mu_0 = 1.0\)
收敛容差 \(\epsilon = 10^{-6}\)
迭代计数器 \(k = 0\)
计算初始点的函数值和约束值:
\(f(x^{(0)}) = (2-1)^2 + (0-2.5)^2 + \sin(0) = 1 + 6.25 + 0 = 7.25\)
\(g_1(x^{(0)}) = 2 - 0 + 2 = 4 \geq 0\)(可行)
\(g_2(x^{(0)}) = -2 - 0 + 6 = 4 \geq 0\)(可行)
\(g_3(x^{(0)}) = -2 + 0 + 2 = 0\)(边界)
- 构建增广拉格朗日函数
对于屏障法,构建对数屏障函数:
\(B(x, \mu) = f(x) - \mu \sum_{i=1}^3 \ln(g_i(x)) - \mu \sum_{j=1}^2 \ln(x_j)\)
在当前点 \(x^{(0)} = (2, 0)\) 处,由于 \(g_3(x^{(0)}) = 0\),屏障项趋于无穷大,这表明需要调整初始点或屏障参数。
- 调整初始点
由于 \(x_2 = 0\) 在边界上,将初始点微调为 \(x^{(0)} = (2, 0.001)\) 以避免数值问题。
重新计算:
\(f(x^{(0)}) \approx 7.250\)
\(g_1(x^{(0)}) \approx 4.002\)
\(g_2(x^{(0)}) \approx 3.998\)
\(g_3(x^{(0)}) \approx 0.002\)
- 构建二次规划子问题
在当前点构造QP子问题:
目标函数:\(\min \frac{1}{2} d^T H_k d + \nabla f(x^{(k)})^T d\)
约束:\(\nabla g_i(x^{(k)})^T d + g_i(x^{(k)}) \geq 0\)
计算梯度:
\(\nabla f(x) = [2(x_1-1) + x_2 \cos(x_1 x_2), 2(x_2-2.5) + x_1 \cos(x_1 x_2)]\)
\(\nabla g_1(x) = [1, -2]\)
\(\nabla g_2(x) = [-1, -2]\)
\(\nabla g_3(x) = [-1, 2]\)
在 \(x^{(0)}\) 处:
\(\nabla f(x^{(0)}) \approx [2.0, -4.998]\)
使用单位矩阵作为初始Hessian近似:\(H_0 = I\)
- 求解QP子问题
求解:
\(\min \frac{1}{2} (d_1^2 + d_2^2) + 2.0 d_1 - 4.998 d_2\)
满足:
\( d_1 - 2d_2 + 4.002 \geq 0 \(\) -d_1 - 2d_2 + 3.998 \geq 0 \(\) -d_1 + 2d_2 + 0.002 \geq 0 \(\) d_1 \geq -2, d_2 \geq -0.001 $(边界约束线性化)
该QP问题可用有效集法求解,得到搜索方向 \(d^{(0)}\)。
- 代理模型与信赖域管理
构建二次代理模型近似原函数,在信赖域 \(\|d\| \leq \Delta_k\) 内求解。
计算实际下降量 \( \Delta f = f(x^{(k)}) - f(x^{(k)}+d) \(预测下降量 \( \Delta m = -[\frac{1}{2} d^T H_k d + \nabla f(x^{(k)})^T d] \)
比值 \( \rho_k = \frac{\Delta f}{\Delta m} $
根据 \(\rho_k\) 调整信赖域半径:
- 若 \(\rho_k < 0.25\),缩小信赖域:\( \Delta_{k+1} = 0.5 \Delta_k $
- 若 \(\rho_k > 0.75\) 且 \( |d| = \Delta_k \(,扩大信赖域:\) \Delta_{k+1} = 2 \Delta_k $
- 否则保持 \( \Delta_{k+1} = \Delta_k $
-
自适应屏障参数更新
屏障参数按规则更新:\( \mu_{k+1} = \sigma \mu_k \(,其中 \) \sigma \in (0,1) \(通常取 \) \sigma = 0.1 \(或\) \sigma = 0.2 $,在初始阶段快速减小,接近最优解时缓慢减小。 -
迭代直至收敛
重复步骤5-8,直到满足收敛条件:
\( |d| < \epsilon \(且\) \mu_k < \epsilon $ 且 KKT条件满足
在最优解附近,预期找到 \(x^* \approx (1.4, 1.7)\),\(f(x^*) \approx 2.0\)
- 算法特点
- 代理模型减少计算成本,特别适用于昂贵函数求值
- 信赖域保证全局收敛性
- 自适应屏障有效处理不等式约束
- 混合策略平衡收敛速度和稳定性
该算法通过序列二次规划提供快速局部收敛,代理模型降低计算成本,信赖域保证全局收敛,自适应屏障处理不等式约束,形成强大的混合优化框架。