非线性规划中的Nelder-Mead单纯形法基础题
字数 1360 2025-10-26 21:53:33

非线性规划中的Nelder-Mead单纯形法基础题

题目描述:考虑无约束非线性规划问题 min f(x) = (x₁-2)⁴ + (x₁-2x₂)²,其中 x = (x₁, x₂) ∈ R²。使用Nelder-Mead单纯形法求解该问题,初始单纯形由三个顶点构成:x⁰=(0,0), x¹=(1,0), x²=(0,1)。

解题过程:

  1. 算法原理介绍
    Nelder-Mead法是一种直接搜索算法,通过构造n维空间中的单纯形(n+1个顶点)并迭代更新顶点位置来寻找最优解。基本操作包括反射、扩张、收缩和缩边。

  2. 初始化步骤
    初始单纯形顶点:

  • x⁰ = (0,0), f(x⁰) = (0-2)⁴ + (0-0)² = 16
  • x¹ = (1,0), f(x¹) = (1-2)⁴ + (1-0)² = 1 + 1 = 2
  • x² = (0,1), f(x²) = (0-2)⁴ + (0-2)² = 16 + 4 = 20
  1. 第一次迭代
    (1) 排序顶点:
    最佳点 x_b = (1,0), f_b=2
    次优点 x_g = (0,0), f_g=16
    最差点 x_w = (0,1), f_w=20

(2) 计算重心点(排除最差点):
x_c = (x_b + x_g)/2 = ((1+0)/2, (0+0)/2) = (0.5, 0)

(3) 反射操作(反射系数α=1):
x_r = x_c + α(x_c - x_w) = (0.5,0) + 1×((0.5,0)-(0,1)) = (1.0, -1.0)
f(x_r) = (1-2)⁴ + (1-2×(-1))² = 1 + (1+2)² = 1 + 9 = 10

(4) 比较反射点质量:
f_b=2 < f_r=10 < f_w=20 → 用x_r替换x_w
新单纯形:{(1,0), (0,0), (1,-1)}

  1. 第二次迭代
    (1) 排序:
    x_b=(1,0), f_b=2
    x_g=(0,0), f_g=16
    x_w=(1,-1), f_w=10

(2) 重心点:
x_c = ((1+0)/2, (0+0)/2) = (0.5, 0)

(3) 反射:
x_r = (0.5,0) + 1×((0.5,0)-(1,-1)) = (0.5,0) + (-0.5,1) = (0,1)
f(x_r)=20(与之前相同)

(4) 反射点较差但非最差,进行收缩(μ=0.5):
x_s = x_c + μ(x_w - x_c) = (0.5,0) + 0.5×((1,-1)-(0.5,0)) = (0.75, -0.5)
f(x_s) = (0.75-2)⁴ + (0.75-2×(-0.5))² = (-1.25)⁴ + (0.75+1)² ≈ 2.44 + 3.06 = 5.50

(5) 收缩点改善明显,替换最差点
新单纯形:{(1,0), (0,0), (0.75,-0.5)}

  1. 收敛判断
    继续迭代直到单纯形大小小于容差(如10⁻³)。经过约20次迭代后,单纯形将收缩到最优解(2,1)附近,f(2,1)=0。

关键点:通过比较函数值动态调整单纯形形状,适应函数地形,无需梯度信息。

非线性规划中的Nelder-Mead单纯形法基础题 题目描述:考虑无约束非线性规划问题 min f(x) = (x₁-2)⁴ + (x₁-2x₂)²,其中 x = (x₁, x₂) ∈ R²。使用Nelder-Mead单纯形法求解该问题,初始单纯形由三个顶点构成:x⁰=(0,0), x¹=(1,0), x²=(0,1)。 解题过程: 算法原理介绍 Nelder-Mead法是一种直接搜索算法,通过构造n维空间中的单纯形(n+1个顶点)并迭代更新顶点位置来寻找最优解。基本操作包括反射、扩张、收缩和缩边。 初始化步骤 初始单纯形顶点: x⁰ = (0,0), f(x⁰) = (0-2)⁴ + (0-0)² = 16 x¹ = (1,0), f(x¹) = (1-2)⁴ + (1-0)² = 1 + 1 = 2 x² = (0,1), f(x²) = (0-2)⁴ + (0-2)² = 16 + 4 = 20 第一次迭代 (1) 排序顶点: 最佳点 x_ b = (1,0), f_ b=2 次优点 x_ g = (0,0), f_ g=16 最差点 x_ w = (0,1), f_ w=20 (2) 计算重心点(排除最差点): x_ c = (x_ b + x_ g)/2 = ((1+0)/2, (0+0)/2) = (0.5, 0) (3) 反射操作(反射系数α=1): x_ r = x_ c + α(x_ c - x_ w) = (0.5,0) + 1×((0.5,0)-(0,1)) = (1.0, -1.0) f(x_ r) = (1-2)⁴ + (1-2×(-1))² = 1 + (1+2)² = 1 + 9 = 10 (4) 比较反射点质量: f_ b=2 < f_ r=10 < f_ w=20 → 用x_ r替换x_ w 新单纯形:{(1,0), (0,0), (1,-1)} 第二次迭代 (1) 排序: x_ b=(1,0), f_ b=2 x_ g=(0,0), f_ g=16 x_ w=(1,-1), f_ w=10 (2) 重心点: x_ c = ((1+0)/2, (0+0)/2) = (0.5, 0) (3) 反射: x_ r = (0.5,0) + 1×((0.5,0)-(1,-1)) = (0.5,0) + (-0.5,1) = (0,1) f(x_ r)=20(与之前相同) (4) 反射点较差但非最差,进行收缩(μ=0.5): x_ s = x_ c + μ(x_ w - x_ c) = (0.5,0) + 0.5×((1,-1)-(0.5,0)) = (0.75, -0.5) f(x_ s) = (0.75-2)⁴ + (0.75-2×(-0.5))² = (-1.25)⁴ + (0.75+1)² ≈ 2.44 + 3.06 = 5.50 (5) 收缩点改善明显,替换最差点 新单纯形:{(1,0), (0,0), (0.75,-0.5)} 收敛判断 继续迭代直到单纯形大小小于容差(如10⁻³)。经过约20次迭代后,单纯形将收缩到最优解(2,1)附近,f(2,1)=0。 关键点:通过比较函数值动态调整单纯形形状,适应函数地形,无需梯度信息。