非线性规划中的模式搜索法基础题
字数 2531 2025-10-26 09:00:43

非线性规划中的模式搜索法基础题

题目描述:
考虑非线性规划问题:

\[\min f(x) = (x_1 - 2)^4 + (x_1 - 2x_2)^2 \]

其中 \(x = (x_1, x_2) \in \mathbb{R}^2\)。初始点设为 \(x^{(0)} = (0, 3)\),使用模式搜索法(Pattern Search)求解该问题,要求通过迭代逐步逼近局部极小点。


解题过程:

1. 模式搜索法简介
模式搜索法是一种直接搜索算法,适用于目标函数不可导或导数难以计算的情况。其核心思想是:

  • 探索移动(Exploratory Move):在当前位置周围按一定模式(如坐标方向)试探,寻找比当前点更优的点。
  • 模式移动(Pattern Move):若探索成功,则沿“当前点→新点”方向加速移动,扩大步长以快速收敛。
  • 若模式移动失败,则缩小步长,重新探索。

2. 算法参数设置

  • 初始点 \(x^{(0)} = (0, 3)\)
  • 初始步长 \(\delta^{(0)} = 1\)
  • 步长缩小系数 \(\beta = 0.5\)(若探索失败则步长减半)
  • 步长扩大系数 \(\gamma = 2\)(模式移动成功时步长加倍)
  • 收敛阈值 \(\epsilon = 10^{-3}\)(步长小于该值时停止)
  • 搜索方向集:标准坐标方向 \(D = \{ (1,0), (-1,0), (0,1), (0,-1) \}\)

3. 迭代过程详解

第1轮迭代(k=0)

  • 当前点\(x^{(0)} = (0, 3)\)\(f(x^{(0)}) = (0-2)^4 + (0-2\times3)^2 = 16 + 36 = 52\)
  • 探索移动:以步长 \(\delta = 1\) 沿四个方向试探:
    • 方向 \((1,0)\)\(x_{\text{test}} = (0+1, 3) = (1, 3)\)\(f = (1-2)^4 + (1-6)^2 = 1 + 25 = 26\)(更优)
    • 方向 \((-1,0)\)\(x_{\text{test}} = (-1, 3)\)\(f = 81 + 49 = 130\)(更差)
    • 方向 \((0,1)\)\(x_{\text{test}} = (0, 4)\)\(f = 16 + 64 = 80\)(更差)
    • 方向 \((0,-1)\)\(x_{\text{test}} = (0, 2)\)\(f = 16 + 16 = 32\)(更优)
    • 选择最优方向:比较 \((1,0)\)\((0,-1)\)\(f=26\) 更小,故探索成功点 \(x^{(1)}_{\text{exp}} = (1, 3)\)
  • 模式移动:计算方向 \(d = x^{(1)}_{\text{exp}} - x^{(0)} = (1, 0)\)
    • 新模式点 \(x^{(1)}_{\text{pat}} = x^{(1)}_{\text{exp}} + \gamma \cdot d = (1, 3) + 2 \cdot (1, 0) = (3, 3)\)
    • 计算 \(f(3,3) = (3-2)^4 + (3-6)^2 = 1 + 9 = 10\)(比 \(f=26\) 更优),故模式移动成功
    • 更新当前点 \(x^{(1)} = (3, 3)\),步长保持 \(\delta = 1\)

第2轮迭代(k=1)

  • 当前点\(x^{(1)} = (3, 3)\)\(f = 10\)
  • 探索移动:以 \(\delta = 1\) 试探:
    • 方向 \((1,0)\)\((4,3)\)\(f = (4-2)^4 + (4-6)^2 = 16 + 4 = 20\)(更差)
    • 方向 \((-1,0)\)\((2,3)\)\(f = 0 + (2-6)^2 = 16\)(更差)
    • 方向 \((0,1)\)\((3,4)\)\(f = 1 + (3-8)^2 = 26\)(更差)
    • 方向 \((0,-1)\)\((3,2)\)\(f = 1 + (3-4)^2 = 2\)(更优)
    • 探索成功点 \(x^{(2)}_{\text{exp}} = (3, 2)\)
  • 模式移动:方向 \(d = (3,2) - (3,3) = (0, -1)\)
    • 新模式点 \(x^{(2)}_{\text{pat}} = (3,2) + 2 \cdot (0,-1) = (3,0)\)
    • \(f(3,0) = 1 + (3-0)^2 = 10\)(比 \(f=2\) 更差),故模式移动失败
    • 退回探索点 \(x^{(2)} = (3, 2)\),步长缩小为 \(\delta = 0.5\)

第3轮迭代(k=2)

  • 当前点\(x^{(2)} = (3, 2)\)\(f = 2\)
  • 探索移动(步长 \(\delta = 0.5\)):
    • 试探四个方向均无更优点(例如 \((3.5,2)\)\(f = 5.06\) 更差),探索失败
  • 步长更新:缩小步长 \(\delta = 0.5 \times 0.5 = 0.25\)
  • 当前点不变 \(x^{(3)} = (3, 2)\)

后续迭代
重复探索,直至步长 \(\delta < 10^{-3}\)。最终收敛到点 \(x^* \approx (2, 1)\),此时 \(f(2,1) = 0 + (2-2)^2 = 0\),为精确极小点。


4. 关键点总结

  • 模式搜索法通过“探索→模式移动”循环,结合步长自适应调整,兼顾全局搜索与局部精细优化。
  • 本例中,模式移动在初期加速收敛,后期步长缩小确保精度。
  • 算法简单可靠,但收敛速度较慢,适合低维问题或导数信息缺失的场景。
非线性规划中的模式搜索法基础题 题目描述: 考虑非线性规划问题: \[ \min f(x) = (x_ 1 - 2)^4 + (x_ 1 - 2x_ 2)^2 \] 其中 \( x = (x_ 1, x_ 2) \in \mathbb{R}^2 \)。初始点设为 \( x^{(0)} = (0, 3) \),使用 模式搜索法(Pattern Search) 求解该问题,要求通过迭代逐步逼近局部极小点。 解题过程: 1. 模式搜索法简介 模式搜索法是一种直接搜索算法,适用于目标函数不可导或导数难以计算的情况。其核心思想是: 探索移动(Exploratory Move) :在当前位置周围按一定模式(如坐标方向)试探,寻找比当前点更优的点。 模式移动(Pattern Move) :若探索成功,则沿“当前点→新点”方向加速移动,扩大步长以快速收敛。 若模式移动失败,则缩小步长,重新探索。 2. 算法参数设置 初始点 \( x^{(0)} = (0, 3) \) 初始步长 \( \delta^{(0)} = 1 \) 步长缩小系数 \( \beta = 0.5 \)(若探索失败则步长减半) 步长扩大系数 \( \gamma = 2 \)(模式移动成功时步长加倍) 收敛阈值 \( \epsilon = 10^{-3} \)(步长小于该值时停止) 搜索方向集:标准坐标方向 \( D = \{ (1,0), (-1,0), (0,1), (0,-1) \} \) 3. 迭代过程详解 第1轮迭代(k=0) 当前点 :\( x^{(0)} = (0, 3) \),\( f(x^{(0)}) = (0-2)^4 + (0-2\times3)^2 = 16 + 36 = 52 \) 探索移动 :以步长 \( \delta = 1 \) 沿四个方向试探: 方向 \( (1,0) \):\( x_ {\text{test}} = (0+1, 3) = (1, 3) \),\( f = (1-2)^4 + (1-6)^2 = 1 + 25 = 26 \)(更优) 方向 \( (-1,0) \):\( x_ {\text{test}} = (-1, 3) \),\( f = 81 + 49 = 130 \)(更差) 方向 \( (0,1) \):\( x_ {\text{test}} = (0, 4) \),\( f = 16 + 64 = 80 \)(更差) 方向 \( (0,-1) \):\( x_ {\text{test}} = (0, 2) \),\( f = 16 + 16 = 32 \)(更优) 选择最优方向:比较 \( (1,0) \) 和 \( (0,-1) \),\( f=26 \) 更小,故探索成功点 \( x^{(1)}_ {\text{exp}} = (1, 3) \) 模式移动 :计算方向 \( d = x^{(1)}_ {\text{exp}} - x^{(0)} = (1, 0) \) 新模式点 \( x^{(1)} {\text{pat}} = x^{(1)} {\text{exp}} + \gamma \cdot d = (1, 3) + 2 \cdot (1, 0) = (3, 3) \) 计算 \( f(3,3) = (3-2)^4 + (3-6)^2 = 1 + 9 = 10 \)(比 \( f=26 \) 更优),故模式移动成功 更新当前点 \( x^{(1)} = (3, 3) \),步长保持 \( \delta = 1 \) 第2轮迭代(k=1) 当前点 :\( x^{(1)} = (3, 3) \),\( f = 10 \) 探索移动 :以 \( \delta = 1 \) 试探: 方向 \( (1,0) \):\( (4,3) \),\( f = (4-2)^4 + (4-6)^2 = 16 + 4 = 20 \)(更差) 方向 \( (-1,0) \):\( (2,3) \),\( f = 0 + (2-6)^2 = 16 \)(更差) 方向 \( (0,1) \):\( (3,4) \),\( f = 1 + (3-8)^2 = 26 \)(更差) 方向 \( (0,-1) \):\( (3,2) \),\( f = 1 + (3-4)^2 = 2 \)(更优) 探索成功点 \( x^{(2)}_ {\text{exp}} = (3, 2) \) 模式移动 :方向 \( d = (3,2) - (3,3) = (0, -1) \) 新模式点 \( x^{(2)}_ {\text{pat}} = (3,2) + 2 \cdot (0,-1) = (3,0) \) \( f(3,0) = 1 + (3-0)^2 = 10 \)(比 \( f=2 \) 更差),故模式移动失败 退回探索点 \( x^{(2)} = (3, 2) \),步长缩小为 \( \delta = 0.5 \) 第3轮迭代(k=2) 当前点 :\( x^{(2)} = (3, 2) \),\( f = 2 \) 探索移动 (步长 \( \delta = 0.5 \)): 试探四个方向均无更优点(例如 \( (3.5,2) \) 的 \( f = 5.06 \) 更差),探索失败 步长更新 :缩小步长 \( \delta = 0.5 \times 0.5 = 0.25 \) 当前点不变 \( x^{(3)} = (3, 2) \) 后续迭代 重复探索,直至步长 \( \delta < 10^{-3} \)。最终收敛到点 \( x^* \approx (2, 1) \),此时 \( f(2,1) = 0 + (2-2)^2 = 0 \),为精确极小点。 4. 关键点总结 模式搜索法通过“探索→模式移动”循环,结合步长自适应调整,兼顾全局搜索与局部精细优化。 本例中,模式移动在初期加速收敛,后期步长缩小确保精度。 算法简单可靠,但收敛速度较慢,适合低维问题或导数信息缺失的场景。