非线性规划中的序列二次约束二次规划(SQCQP)算法进阶题
题目描述
考虑一个非线性规划问题,其中目标函数和约束条件均为非线性,且包含二次约束。具体问题如下:
最小化 \(f(x) = x_1^2 + 2x_2^2 - 2x_1x_2 + e^{x_1}\),
满足约束:
- \(g_1(x) = x_1^2 + x_2^2 - 1 \leq 0\)(二次不等式约束),
- \(g_2(x) = x_1 + x_2 - 2 = 0\)(线性等式约束),
- \(x_1 \geq 0, x_2 \geq 0\)(变量边界)。
该问题的难点在于非线性目标函数与二次约束的结合,需用序列二次约束二次规划(SQCQP)求解。SQCQP通过迭代求解一系列二次约束二次子问题(每个子问题目标函数为二次近似,约束为原约束的线性化或二次近似)来逼近原问题解。
解题过程
-
初始化
- 选择初始点 \(x^{(0)} = (0.5, 0.5)\),需满足可行条件(如 \(g_1(x^{(0)}) \leq 0\),若不满足则需调整)。
- 设定收敛容差 \(\epsilon = 10^{-6}\),最大迭代次数 \(K = 100\)。
-
迭代步骤(第k步)
a. 构建子问题
在当前点 \(x^{(k)}\) 处,对目标函数 \(f(x)\) 和约束 \(g_1(x)\) 进行近似:- 目标函数二次近似:
\[ \tilde{f}(x; x^{(k)}) = f(x^{(k)}) + \nabla f(x^{(k)})^T (x - x^{(k)}) + \frac{1}{2} (x - x^{(k)})^T H_k (x - x^{(k)}) \]
其中 $ \nabla f(x) = [2x_1 - 2x_2 + e^{x_1}, 4x_2 - 2x_1]^T $,$ H_k $ 为Hessian矩阵 $ \nabla^2 f(x^{(k)}) $ 或拟牛顿近似(例如BFGS更新)。
- 二次约束 \(g_1(x)\) 保留二次形式(因本身为二次型),无需线性化:
\[ \tilde{g}_1(x) = x_1^2 + x_2^2 - 1 \leq 0 \]
- 线性约束 \(g_2(x)\) 直接保留:
\[ \tilde{g}_2(x) = x_1 + x_2 - 2 = 0 \]
- 变量边界保持不变: \(x_1 \geq 0, x_2 \geq 0\)。
子问题为二次约束二次规划(QCQP):
\[ \min_x \tilde{f}(x; x^{(k)}) \quad \text{s.t.} \quad \tilde{g}_1(x) \leq 0,\ \tilde{g}_2(x) = 0,\ x_1, x_2 \geq 0. \]
b. 求解子问题
使用QCQP求解器(如内点法)解得子问题最优解 \(x^{(k+1)}\)。若子问题不可行,需引入松弛变量或调整信赖域策略(此处暂不展开)。
c. 收敛判断
计算相邻迭代点变化量 \(\|x^{(k+1)} - x^{(k)}\|\) 和约束违反度:
- 若 \(\|x^{(k+1)} - x^{(k)}\| < \epsilon\) 且 \(\max\{g_1(x^{(k+1)}), 0\} < \epsilon\),则终止迭代。
- 否则,更新 \(k = k+1\) 并返回步骤2a。
- 示例迭代(第0步)
- 初始点 \(x^{(0)} = (0.5, 0.5)\):
\(f(x^{(0)}) = 0.25 + 0.5 - 0.5 + e^{0.5} \approx 2.1487\),
\(\nabla f(x^{(0)}) = [2 \cdot 0.5 - 2 \cdot 0.5 + e^{0.5}, 4 \cdot 0.5 - 2 \cdot 0.5]^T \approx [1.6487, 1.0]^T\)。 - 子问题目标函数:
- 初始点 \(x^{(0)} = (0.5, 0.5)\):
\[ \tilde{f}(x; x^{(0)}) = 2.1487 + [1.6487, 1.0] \begin{bmatrix} x_1 - 0.5 \\ x_2 - 0.5 \end{bmatrix} + \frac{1}{2} (x - x^{(0)})^T H_0 (x - x^{(0)}) \]
其中 $ H_0 $ 可用精确Hessian $ \nabla^2 f(x^{(0)}) = \begin{bmatrix} 2 + e^{0.5} & -2 \\ -2 & 4 \end{bmatrix} \approx \begin{bmatrix} 3.6487 & -2 \\ -2 & 4 \end{bmatrix} $。
- 求解该QCQP子问题得 \(x^{(1)}\),重复直至收敛。
- 算法特性
- SQCQP通过精确处理二次约束,避免线性化误差,适合含二次约束的问题。
- 收敛性依赖子问题可行性与Hessian近似质量,通常需全局化策略(如信赖域)。
- 最终解满足一阶必要条件(KKT条件)。