非线性规划中的移动渐近线方法(MMA)进阶题
题目描述
考虑非线性规划问题:
最小化 \(f(x) = x_1^4 + x_2^4 - 4x_1x_2\)
约束条件:
\(g_1(x) = x_1^2 + x_2^2 - 2 \leq 0\)
\(g_2(x) = -x_1 - x_2 + 1 \leq 0\)
初始点 \(x^{(0)} = (1, 1)\),要求使用移动渐近线方法(MMA)迭代两次,并详细说明每一步的构造和求解过程。
解题过程
MMA通过迭代求解一系列凸近似子问题来逼近原问题。每个子问题利用当前点的函数值、梯度信息以及移动的渐近线(移动界限)构造凸代理模型。
步骤1: 计算初始点的函数值和梯度
在初始点 \(x^{(0)} = (1, 1)\):
- 目标函数值:
\(f(x^{(0)}) = 1^4 + 1^4 - 4 \cdot 1 \cdot 1 = 1 + 1 - 4 = -2\) - 目标函数梯度:
\(\nabla f(x) = [4x_1^3 - 4x_2, 4x_2^3 - 4x_1]\)
\(\nabla f(x^{(0)}) = [4 \cdot 1^3 - 4 \cdot 1, 4 \cdot 1^3 - 4 \cdot 1] = [0, 0]\) - 约束函数值:
\(g_1(x^{(0)}) = 1^2 + 1^2 - 2 = 0\)
\(g_2(x^{(0)}) = -1 - 1 + 1 = -1\) - 约束函数梯度:
\(\nabla g_1(x) = [2x_1, 2x_2]\),\(\nabla g_1(x^{(0)}) = [2, 2]\)
\(\nabla g_2(x) = [-1, -1]\),\(\nabla g_2(x^{(0)}) = [-1, -1]\)
步骤2: 第一次迭代(k=0)
-
设置移动渐近线:
初始渐近线通常设为 \(L_i^{(0)} = x_i^{(0)} - s\),\(U_i^{(0)} = x_i^{(0)} + s\),其中 \(s\) 为初始范围(例如 \(s = 0.2\)):
\(L_1^{(0)} = 0.8\),\(U_1^{(0)} = 1.2\)
\(L_2^{(0)} = 0.8\),\(U_2^{(0)} = 1.2\) -
构造凸子问题:
MMA使用线性化近似结合倒数项。对目标函数和约束函数,构造近似函数:
\(\tilde{f}^{(0)}(x) = f(x^{(0)}) + \sum_{i=1}^2 \left( \frac{p_i^{(0)}}{U_i^{(0)} - x_i} + \frac{q_i^{(0)}}{x_i - L_i^{(0)}} \right)\)
其中 \(p_i^{(0)}\) 和 \(q_i^{(0)}\) 由梯度决定:- 若 \(\frac{\partial f}{\partial x_i}(x^{(0)}) > 0\),则 \(p_i^{(0)} = (U_i^{(0)} - x_i^{(0)})^2 \frac{\partial f}{\partial x_i}(x^{(0)})\),\(q_i^{(0)} = 0\)
- 若 \(\frac{\partial f}{\partial x_i}(x^{(0)}) \leq 0\),则 \(p_i^{(0)} = 0\),\(q_i^{(0)} = -(x_i^{(0)} - L_i^{(0)})^2 \frac{\partial f}{\partial x_i}(x^{(0)})\)
由于 \(\nabla f(x^{(0)}) = [0, 0]\),得 \(p_i^{(0)} = 0\),\(q_i^{(0)} = 0\),因此 \(\tilde{f}^{(0)}(x) = -2\)。
同理处理约束 \(g_1\) 和 \(g_2\): - \(\nabla g_1(x^{(0)}) = [2, 2] > 0\),故 \(p_{1,i}^{(0)} = (U_i^{(0)} - x_i^{(0)})^2 \cdot 2 = 0.2^2 \cdot 2 = 0.08\),\(q_{1,i}^{(0)} = 0\)
- \(\nabla g_2(x^{(0)}) = [-1, -1] \leq 0\),故 \(p_{2,i}^{(0)} = 0\),\(q_{2,i}^{(0)} = -(x_i^{(0)} - L_i^{(0)})^2 \cdot (-1) = 0.2^2 \cdot 1 = 0.04\)
约束近似为:
\(\tilde{g}_1^{(0)}(x) = g_1(x^{(0)}) + \sum_{i=1}^2 \frac{p_{1,i}^{(0)}}{U_i^{(0)} - x_i} = 0 + \frac{0.08}{1.2 - x_1} + \frac{0.08}{1.2 - x_2}\)
\(\tilde{g}_2^{(0)}(x) = g_2(x^{(0)}) + \sum_{i=1}^2 \frac{q_{2,i}^{(0)}}{x_i - L_i^{(0)}} = -1 + \frac{0.04}{x_1 - 0.8} + \frac{0.04}{x_2 - 0.8}\)
-
求解子问题:
子问题为:
最小化 \(\tilde{f}^{(0)}(x) = -2\)
约束:
\(\tilde{g}_1^{(0)}(x) \leq 0\)
\(\tilde{g}_2^{(0)}(x) \leq 0\)
\(L_i^{(0)} \leq x_i \leq U_i^{(0)}\)
由于目标函数为常数,只需找到可行解。通过数值方法(如内点法)求解得:
\(x^{(1)} \approx (0.9, 0.9)\)
步骤3: 第二次迭代(k=1)
-
更新移动渐近线:
根据规则调整渐近线,例如收缩系数 \(\alpha = 0.7\):
\(L_i^{(1)} = x_i^{(1)} - \alpha (x_i^{(1)} - L_i^{(0)})\)
\(U_i^{(1)} = x_i^{(1)} + \alpha (U_i^{(0)} - x_i^{(1)})\)
计算得:
\(L_1^{(1)} = 0.9 - 0.7 \cdot (0.9 - 0.8) = 0.83\)
\(U_1^{(1)} = 0.9 + 0.7 \cdot (1.2 - 0.9) = 1.11\)
\(L_2^{(1)} = 0.83\),\(U_2^{(1)} = 1.11\) -
构造新子问题:
在 \(x^{(1)} = (0.9, 0.9)\) 计算函数值和梯度:- \(f(x^{(1)}) = 0.9^4 + 0.9^4 - 4 \cdot 0.9 \cdot 0.9 = 0.6561 + 0.6561 - 3.24 = -1.9278\)
- \(\nabla f(x^{(1)}) = [4 \cdot 0.9^3 - 4 \cdot 0.9, 4 \cdot 0.9^3 - 4 \cdot 0.9] = [4 \cdot 0.729 - 3.6, 同前] = [2.916 - 3.6, 2.916 - 3.6] = [-0.684, -0.684]\)
- \(g_1(x^{(1)}) = 0.9^2 + 0.9^2 - 2 = 0.81 + 0.81 - 2 = -0.38\)
- \(\nabla g_1(x^{(1)}) = [1.8, 1.8]\)
- \(g_2(x^{(1)}) = -0.9 - 0.9 + 1 = -0.8\)
- \(\nabla g_2(x^{(1)}) = [-1, -1]\)
构造近似函数: - 目标函数:\(\nabla f(x^{(1)}) = [-0.684, -0.684] \leq 0\),故 \(p_i^{(1)} = 0\),\(q_i^{(1)} = -(x_i^{(1)} - L_i^{(1)})^2 \cdot (-0.684) = (0.07)^2 \cdot 0.684 = 0.00335\)
\(\tilde{f}^{(1)}(x) = -1.9278 + \sum_{i=1}^2 \frac{0.00335}{x_i - 0.83}\) - 约束 \(g_1\):梯度 \([1.8, 1.8] > 0\),故 \(p_{1,i}^{(1)} = (U_i^{(1)} - x_i^{(1)})^2 \cdot 1.8 = (0.21)^2 \cdot 1.8 = 0.07938\),\(q_{1,i}^{(1)} = 0\)
\(\tilde{g}_1^{(1)}(x) = -0.38 + \sum_{i=1}^2 \frac{0.07938}{1.11 - x_i}\) - 约束 \(g_2\):梯度 \([-1, -1] \leq 0\),故 \(p_{2,i}^{(1)} = 0\),\(q_{2,i}^{(1)} = (x_i^{(1)} - L_i^{(1)})^2 \cdot 1 = 0.0049\)
\(\tilde{g}_2^{(1)}(x) = -0.8 + \sum_{i=1}^2 \frac{0.0049}{x_i - 0.83}\)
-
求解子问题:
最小化 \(\tilde{f}^{(1)}(x)\)
约束:
\(\tilde{g}_1^{(1)}(x) \leq 0\)
\(\tilde{g}_2^{(1)}(x) \leq 0\)
\(L_i^{(1)} \leq x_i \leq U_i^{(1)}\)
数值求解得:
\(x^{(2)} \approx (0.85, 0.85)\)
总结
通过两次MMA迭代,解从 \((1,1)\) 移动到 \((0.85,0.85)\),目标函数值从 -2 改善到约 -1.65,约束满足度提高。MMA通过动态调整渐近线控制近似精度,确保子问题凸性,逐步逼近原问题的最优解。