本文主要介绍能够在整个可行集上进行搜索的算法,如Melder-Mead 单纯形法、模拟退火算法、粒子群算法和遗传算法。这些算法得到的解可以作为梯度方法、牛顿法等迭代方法的“较好”的初始点。
1. 引言
全局意义上的搜索方法能够在整个可行集上开展搜索,以找到极小点。这些方法只需要计算函数目标值,不需要对目标函数进行求导。这类方法的适用面更加广阔,在某些情况下,这些方法产生的解可以作为如梯度方法、牛顿法等迭代方法的“较好”的初始点。
2. Melder-Mead 单纯形法
在此方法中引入了“单纯形”的概念,单纯形指的是在n维空间中选取n+1个点(
通俗来讲,这个条件要求在
2.1 基本思想
针对
其中
单纯形确定之后就可以通过不断迭代,使得单纯形能够朝着函数的极小点收敛。对于函数最小化的优化问题而言,目标函数值最大的点将被另外的点代替,持续迭代之后,直到单纯形收敛到目标函数的极小点。
下面具体到二维问题来说明点的替换规则。
2.2 举例:二维问题
在二维问题中,我们需要选择3个点来构成单纯形,因为需要比较对应目标函数值的大小,所以需要对每个点对应的函数值进行排序。令
在n维为中计算最好的n个点(扣除了最差的点)的重心:
![]()
在二维问题中,最好点和次好点的重心为:
利用
然后根据
反射系数一般令
![70051fc8178b943c61097d94ca7a9ce3.png](https://i-blog.csdnimg.cn/blog_migrate/c1315cb2297c7d5726525b4994488c2d.jpeg)
1)若
反射出来的点对应的函数值小于原来次大的函数值,说明反射是成功的,则利用