本文主要介绍能够在整个可行集上进行搜索的算法,如Melder-Mead 单纯形法、模拟退火算法、粒子群算法和遗传算法。这些算法得到的解可以作为梯度方法、牛顿法等迭代方法的“较好”的初始点。
1. 引言
全局意义上的搜索方法能够在整个可行集上开展搜索,以找到极小点。这些方法只需要计算函数目标值,不需要对目标函数进行求导。这类方法的适用面更加广阔,在某些情况下,这些方法产生的解可以作为如梯度方法、牛顿法等迭代方法的“较好”的初始点。
2. Melder-Mead 单纯形法
在此方法中引入了“单纯形”的概念,单纯形指的是在n维空间中选取n+1个点(
)所组成的几何形状,需要满足:
通俗来讲,这个条件要求在
中,两个点不重合;在
中,3个点不共线;在
中,4个点不共面。也就是说,单纯形包围的n维空间具有有限的体积。
2.1 基本思想
针对
的最小化问题,首先需要选择n+1个点构成单纯形。具体选择方法为先选择初始点
,然后在按照如下方式产生其他点:
其中
为空间中的标准基,
为正数,按照优化问题的规模确定其大小。选择n+1个点之后就可以构成单纯形了。
单纯形确定之后就可以通过不断迭代,使得单纯形能够朝着函数的极小点收敛。对于函数最小化的优化问题而言,目标函数值最大的点将被另外的点代替,持续迭代之后,直到单纯形收敛到目标函数的极小点。
下面具体到二维问题来说明点的替换规则。
2.2 举例:二维问题
在二维问题中,我们需要选择3个点来构成单纯形,因为需要比较对应目标函数值的大小,所以需要对每个点对应的函数值进行排序。令
分别表示对应函数值最大、次大和最小的点。
在n维为中计算最好的n个点(扣除了最差的点)的重心:
在二维问题中,最好点和次好点的重心为:
利用
进行反射操作,反射系数
,在
方向上对最差点
进行反射,得到反射点
:
然后根据
的取值情况,再决定怎么取代最差点
。
反射系数一般令
,反射过程如图所示:
1)若
:
反射出来的点对应的函数值小于原来次大的函数值,说明反射是成功的,则利用
代替原来的