Nelder–Mead method

声明来源:(结合了wiki和scholarpedia上的内容,外加自己的一点理解。

Link:https://en.wikipedia.org/wiki/Nelder%E2%80%93Mead_method    &&  http://www.scholarpedia.org/article/Nelder-Mead_algorithm)

Nelder–Mead algorithm ( NM算法 )其实是一种非常简单易懂的适用于在线最优化的算法。。。总的来说这个算法有些无脑。。。

收敛速度慢,效果一般般,因为适用范围较广(或者说unconstrained optimization,无固定模型也可以)

核心就是:向着最优的解收敛,不断抛弃更新现有的解

简介:

  n维空间中,由n+1个顶点,可以组成“最简单”的图形,叫单纯形。

  NM算法就是先构造一个出师的,包含给定点的单纯形。

  然后使用可能的三种手段(反射,扩展,压缩)去替换函数值最差的顶点。

  在以上三种手段失效的时候,使用收缩。

  知道该单纯形的半径足够的小。

  (半径的定义可以有很多,比如两两点的距离,两两点构成的向量中最大的维度的值,

只要当“半径”趋近与0的时候,该单纯形趋于一个点即可)

以下来自wiki:

x

i

=

x

1

+
σ
(

x

i

x

1

)

for all i


{
2
,

,
n
+
1
}

{\displaystyle {\textbf
{x}}_{i}={\textbf {x}}_{1}+\sigma ({\textbf {x}}_{i}-{\textbf
{x}}_{1}){\text{ for all i }}\in \{2,\dots ,n+1\}}

. go to step 1.

理解:

Reflection:以最优点为中心,做最差点的反射点,来达到抛弃最差点的目的。

Expansion:扩大最优点的优势,尝试是否能够得到更优的解。

Contraction:收缩搜索范围。

Shrink:整体向着最优解收缩。

时间: 2024-10-27 05:50:54

Nelder–Mead method的相关文章

凸优化教材(2017-12-15发布于知乎)

我学习的教材是Numerical Optimization , 作者是JorgeNocedal 和Stephen Wright. JorgeNocedal 大叔现在在西北大学,研究的方向是优化和优化在机器学习中的应用等等.本科墨西哥国立大学,莱斯大学读的phd.老爷子今年55,15年和16年每年都发了三篇paper.优化领域顶级大牛.放一张老爷子的照片. Stephen Wright大叔现在在威斯康辛大学的计算机系,专攻实变量的数值最优化.在他的主页上写着“I'm interested in t

科研常用优化代码软件介绍

Free and Open Source software Name License Brief info ADMB BSD nonlinear optimization framework, using automatic differentiation ALGENCAN GPL Fortran code for general nonlinear programming. Interfaces with AMPL, C/C++, CUTEr, Matlab, Python, Octave a

无梯度优化算法

介绍: http://adl.stanford.edu/aa222/Lecture_Notes_files/chapter6_gradfree.pdf Nelder–Mead 算法 direct 算法. https://ctk.math.ncsu.edu/Finkel_Direct/ 原文地址:https://www.cnblogs.com/bregman/p/11350417.html

different between method and function

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Arial; color: #242729 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Arial; color: #242729; background-color: #ffffff } span.s1 { background-color: #ffffff } span.s2 { } A method is on an o

关于form表单中method里get和post的区别

在html里form可谓不得不用的一条代码,而form里的method选项里只有get和post两种. 因为我们大多数情况下只有post,所以get和post的区别很容易被遗忘. 简单区别来讲: get提交:提交的数据会在ul上进行提交,明文不加密,不安全,提交的数据有限. Post提交:以form表单封装的方式提交,适合提交大量的数据,相对安全. 虽然我们很少用get,但是我们一定常见到这种方式,只是我们很少注意到罢了. 比如,百度的搜索内容就是用的get方式,我们可以在url上看到我们都提交

fetch 报错 Failed to execute 'fetch' on 'Window': Request with GET/HEAD method cannot have body.

TypeError: Failed to execute 'fetch' on 'Window': Request with GET/HEAD method cannot have body. 在"窗口"上执行"取"失败:GET / get方法的请求不能有正文. GET requests can't have a request body, you can't make them have one. GET requests only retrieve data,

【反射】Class Field Method Constructor

Class public final class java.lang.Class<T> extends Object implements Serializable, GenericDeclaration, Type, AnnotatedElement 类型参数 T:由此 Class 对象建模的类的类型.例如, String.class 的类型是 Class<String>.如果将被建模的类未知,则使用 Class<?>. Instances of the class

设计模式的征途—17.模板方法(Template Method)模式

在现实生活中,很多事情都需要经过几个步骤才能完成,例如请客吃饭,无论吃什么,一般都包含:点单.吃东西.买单等几个步骤,通常情况下这几个步骤的次序是:点单=>吃东西=>买单.在这3个步骤中,点单和买单大同小异,最大的区别在于第2步-吃什么?吃面条和吃满汉全席可大不相同. 在软件开发中,有时候也会遇到类似的情况,某个方法的实现需要多个步骤(类似于“请客”),其中有些步骤是固定的,而有些步骤则存在可变性.为了提高代码复用性和系统灵活性,可以使用一种称之为模板方法模式的设计模式来对这类情况进行设计.

[Angular] HostListener Method Arguments - Blocking Default Keyboard Behavior

We are going to see how to using method arguments for @HostListener. First, we can use HostListener without method arguments: @HostListener('dblclick') toggle(){ this.collapsed = !this.collapsed; } It works fine. But if we need to get the $event obje