无约束优化之单纯形法(Nelder-Mead Algorithm)

单纯形法只需要计算目标函数值,是无需要一维搜索,也无需进行求导的一种直接法。其优点计算比较简单,几何概念清晰,适用于目标函数求导比较困难或不知道目标函数的具体表达式而仅知道其具体计算方法的情况。

一、基本思想
所谓n维欧氏空间中的单纯形,是指在n维空间中由n+1个顶点构成的简单图形或多面体。例如,在二维平面中的单纯形应具有三个顶点,即三角形。在三维空间中的单纯形应具有四个顶点,即四面体。当各顶点之间的距离相等时,这种几何图形就称为正规单纯形。
单纯形法的基本思想是:选n+1个顶点构成初始单纯形,计算并比较各顶点目标函数值的大小,确定它们当中函数值大的顶点及函数值的下降方向,再设法找到一个函数值较小的新点替换函数值最大的顶点,从而构成新的单纯形。随着这种取代过程不断进行,新的单纯形想着极小值点收缩逼近,从而求得极小值点。
迭代过程的主要步骤:反射、延伸、压缩。

二、单纯形法的方法原理
现在以二维问题为例说明单纯形方法的原理。
(1)构造初始单纯形
在这里插入图片描述

如图,设二维目标函数 f ( x ) = f ( x 1 , x 2 ) f(x)=f(x_1,x_2) f(x)=f(x1,x2),在二维平面上选三个线性无关的顶点 x 1 , x 2 , x 3 x_1,x_2,x_3 x1,x2,x3构成初始单纯形。计算这三个顶点处的目标函数值 f ( x 1 ) , f ( x 2 ) , f ( x 3 ) f(x_1),f(x_2),f(x_3) f(x1),f(x2),f(x3)并比较其大小。若 f ( x 1 ) > f ( x 2 ) > f ( x 3 ) f(x_1)>f(x_2)>f(x_3) f(x1)>f(x2)>f(x3),把目标函数值最小的点 x 3 x_3 x3成为最好点,用 x L x_L xL表示;把目标函数值最大的点 x 1 x_1 x1成为最坏点,用 x H x_H xH表示;把目标函数值次大的点 x 2 x_2 x2称为次坏点,用 x G x_G xG表示。求除 x H x_H xH以外的所有顶点的集合形心 x C x_C xC

(2)反射
一般来说,目标函数值下降方向在最坏点 x H x_H xH关于形心 x C x_C xC的对称位置的方向可能性最大。故首先求反射点,以探测目标函数值的变化趋向。
x L , x G x_L,x_G xL,xG的中心点 x C x_C xC,在 x H x_H xH x C x_C xC延长线取一点 x R x_R xR,使
x R = x C + α ( x C − x H ) x_R=x_C+\alpha(x_C-x_H) xR=xC+α(xCxH)
x R x_R xR称为最坏点 x H x_H xH关于形心 x C x_C xC的反射点; α \alpha α称为反射系数,一般取 α = 1 \alpha=1 α=1,故上式变为
x R = 2 x C − x H x_R = 2x_C-x_H xR=2xCxH
计算函数值 f ( x R ) f(x_R) f(xR),若 f ( x R ) < f ( x L ) f(x_R)<f(x_L) f(xR)<f(xL),说明所取的探索方向正确,可沿该方向进一步扩大效果。

(3)延伸(扩张)
将搜索点延伸到 x E x_E xE,且
x E = x C + γ ( x R − x C ) x_E = x_C + \gamma(x_R-x_C) xE=xC+γ(xRxC)
式中, γ \gamma γ为扩张系数, γ = 1.2   2 \gamma=1.2~2 γ=1.2 2,一般取 γ = 2 \gamma=2 γ=2
如果 f ( x E ) < f ( x R ) f(x_E)<f(x_R) f(xE)<f(xR),说明扩张有利,以 x E x_E xE代替最坏点 x H x_H xH得到新的单纯形顶点 { x E , x G , x L } \{x_E,x_G,x_L\} { xE,xG,xL};如果 f ( x E ) > f ( x R ) f(x_E)>f(x_R) f(xE)

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值