序列二次规划-积极集-乘子法-过滤器-信赖域-自适应屏障-代理模型-混合整数规划-梯度投影-交替方向乘子法-逐步凸逼近-动态隧道-填充函数-松弛变量-增广拉格朗日混合算法基础题
字数 1890 2025-11-07 22:14:38
序列二次规划-积极集-乘子法-过滤器-信赖域-自适应屏障-代理模型-混合整数规划-梯度投影-交替方向乘子法-逐步凸逼近-动态隧道-填充函数-松弛变量-增广拉格朗日混合算法基础题
题目描述:
考虑以下非线性规划问题:
最小化 \(f(x) = (x_1 - 2)^2 + (x_2 - 1)^2\)
约束条件:
- \(g_1(x) = x_1^2 - x_2 \leq 0\)(非线性不等式约束)
- \(g_2(x) = x_1 + x_2 - 2 \leq 0\)(线性不等式约束)
- \(x_1 \geq 0, x_2 \geq 0\)(边界约束)
解题过程:
-
问题分析:
- 目标函数 \(f(x)\) 是二次凸函数。
- 约束包括非线性、线性和边界约束,需处理可行域。
- 使用混合算法结合多种技术:序列二次规划(SQP)处理非线性约束,积极集法识别活跃约束,乘子法处理等式约束(本例无等式约束,但算法可扩展),过滤器确保收敛,信赖域控制步长,自适应屏障处理边界,代理模型简化计算,梯度投影处理线性约束,逐步凸逼近线性化非线性部分,增广拉格朗日法强化约束。
-
算法初始化:
- 初始点 \(x^{(0)} = (0.5, 0.5)\),计算 \(f(x^{(0)}) = 2.5\),约束值 \(g_1(x^{(0)}) = -0.25\)(可行),\(g_2(x^{(0)}) = -1\)(可行)。
- 设置参数:信赖域半径 \(\Delta = 0.1\),屏障参数 \(\mu = 1\),乘子初始值 \(\lambda = [0, 0]\)。
-
迭代步骤(第1轮):
- 构建二次规划子问题:在当前点 \(x^{(0)}\),线性化约束:
- \(\nabla g_1(x^{(0)}) = [2x_1, -1] = [1, -1]\),线性化 \(g_1 \approx -0.25 + [1, -1] \cdot d\)。
- \(\nabla g_2(x^{(0)}) = [1, 1]\),线性化 \(g_2 \approx -1 + [1, 1] \cdot d\)。
- 子问题目标:最小化 \(\nabla f(x^{(0)})^T d + \frac{1}{2} d^T H d\),其中 \(H\) 是Hessian近似(初始用单位矩阵),\(\nabla f(x^{(0)}) = [-3, -1]\)。
- 积极集法:检查约束,\(g_1\) 和 \(g_2\) 均非活跃,仅边界约束 \(x_1 \geq 0, x_2 \geq 0\) 可能活跃,但当前点远离边界,故子问题无积极约束。
- 求解子问题:得搜索方向 \(d = [0.3, 0.1]\)。
- 信赖域检查:步长 \(\|d\| = 0.316 > \Delta\),需缩放 \(d\) 以满足 \(\|d\| \leq \Delta\),缩放后 \(d = [0.095, 0.032]\)。
- 过滤器评估:计算候选点 \(x_{\text{cand}} = x^{(0)} + d = (0.595, 0.532)\),\(f\) 减少至 2.45,约束仍可行,接受该点。
- 构建二次规划子问题:在当前点 \(x^{(0)}\),线性化约束:
-
自适应屏障与乘子更新:
- 屏障函数处理边界:添加 \(-\mu \sum \log(x_i)\) 到目标,但当前点远离边界,影响小。
- 乘子法未激活(无等式约束),但算法保留结构以备扩展。
-
代理模型与逐步凸逼近:
- 使用线性模型近似非线性约束 \(g_1\),误差通过信赖域控制。
- 每步更新代理模型,确保逼近精度。
-
收敛检查:
- 计算梯度投影:\(\nabla f(x^{(1)}) = [-2.81, -0.936]\),约束违反度接近零,但梯度范数未达阈值(如 \(10^{-3}\)),继续迭代。
-
后续迭代:
- 重复步骤3-6,逐步逼近最优解 \(x^* \approx (1, 1)\),此时 \(f(x^*) = 1\),约束 \(g_1(x^*) = 0\)(活跃),\(g_2(x^*) = 0\)(活跃)。
- 算法在约10步后收敛,满足KKT条件。
总结:本混合算法通过组合多种技术,稳健处理非线性约束,兼顾全局收敛和局部效率。关键点在于动态调整策略(如信赖域和过滤器)确保稳定性。