Nelder–Mead算法详解

Nelder-Mead算法是一种用于非线性优化的局部搜索方法,尤其适用于导数不可知的问题。它通过迭代调整n+1个点组成的单纯形来寻找目标函数的最小值。算法涉及反射、扩展、收缩和收缩四个步骤,以及相应的系数调整。当达到预设的终止条件,如迭代次数或目标函数值的精度时,算法结束。
摘要由CSDN通过智能技术生成

1. Nelder–Mead算法1

介绍

请不要与Dantzig针对线性优化问题的simplex algorithem(单纯型)方法混淆
用于多维空间寻找目标函数的最大值最小值问题。它是基于比较的直接搜索方法,通常应用于导数不可知的非线性优化问题。局部优化方法,所得解不稳定。
通常用来求解最小化问题,需要求解最大化问题f(x)时,就是最小化-f(x)
n维的Nelder–Mead包括n+1个测试点,组成一个simplex,然后计算的每个点的目标函数值,目的是找到一个新的测试点替代旧的测试点,迭代进程。最简单的方法是用质心(前n个点的均值)的反射点(reflection)替换最差的点、如果反射点比当前点更好,可以继续在反射点的方向上延伸寻找;如果不敌当前点,那就将所有点往一个更好的方向收缩。

算法步骤

目标是求解f(x)的最小值, x ∈ R x\in R xR. 目前的测试点有 x 1 x_1 x1, …, x n + 1 x_{n+1} xn+1

  1. 将各个的测试点的函数值从小到大排序: f ( x 1 ) ≤ f ( x 2 ) ≤ . . . ≤ f ( x n + 1 ) f(x_1) \le f(x_2) \le ... \le f(x_{n+1}) f(x1)f(x2)...f(xn+1) 并检查是否需要终止
  2. 计算质心 x o x_o xo, 等于前n个x的平均值
  3. 计算反射点 x r = x o + α ( x o − x n + 1 ) , α > 0 x_r = x_o + \alpha(x_o - x_{n+1}), \alpha \gt 0 xr=x
  • 12
    点赞
  • 80
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值