非线性规划中的移动渐近线方法(MMA)进阶题
字数 4518 2025-11-19 18:03:12

非线性规划中的移动渐近线方法(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)

  1. 设置移动渐近线
    初始渐近线通常设为 \(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\)

  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}\)
  3. 求解子问题
    子问题为:
    最小化 \(\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)

  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\)

  2. 构造新子问题
    \(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}\)
  3. 求解子问题
    最小化 \(\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通过动态调整渐近线控制近似精度,确保子问题凸性,逐步逼近原问题的最优解。

非线性规划中的移动渐近线方法(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通过动态调整渐近线控制近似精度,确保子问题凸性,逐步逼近原问题的最优解。