3.2 SCA算法原理
一般来说,基于群体的优化技术是以一组随机解开始优化过程的。该组随机解由目标函数反复求值,并由优化技术的核心规则集进行改进。由于基于群体的优化技术是随机地寻找优化问题的最优解的,因此不能保证在每次运行中都找到一个解。然而,随着随机解的数量和优化步骤(迭代)的增加,找到全局最优解的概率将增加。
尽管不同的基于随机解的优化算法之间存在差异,但其共同点是将优化过程划分为两个阶段:探索阶段与开发阶段[164]。在探索阶段,一种优化算法将解集中的随机解突然结合起来,以较高的随机性寻找搜索空间的有希望区域。在开发阶段,随机解是逐渐变化的,随机变化要比探索阶段小得多。
SCA算法是一种基于群体的优化算法,它主要依赖正余弦算子使搜索代理朝目标方向移动。该算法基于以下位置更新方程:
式中,为第t次迭代时,当前解在第i维中的位置;r1~r3为随机数;为目标点在第i维中的位置。于是有:
式中,r4是[0,1]中的一个随机数。
如式(3.3)所示,SCA中有4个主要参数:r1~r4。r1指示下一个位置s区域(或移动方向),该区域可以位于解和目标之间的空间,也可以位于目标之外。r2定义了朝向目标或远离目标移动的距离。为了随机地加强(r3>1)或减弱(r3<1)目标在定义距离时的影响,r3为目标带来一个随机权重。最后,在式(3.3)中,r4在正弦分量和余弦分量之间均匀切换。
由于式(3.3)中使用了正弦函数和余弦函数,所以这个算法被命名为正余弦算法(SCA)。图3.1显示了该算法如何在搜索空间中定义两个解之间的空间。需要注意的是,虽然图3.1中显示了一个二维模型,但实际上可以扩展到更高的维度。正弦函数和余弦函数的循环模式允许一个解围绕另一个解重新定位。这可以保证利用两个解之间定义的空间。为了探索搜索空间,解还应该能够在其对应目标之间的空间之外进行搜索。
图3.1 朝向目标或远离目标
从图3.1可以看出,当搜索代理进入[-2,1]和(1,2)时,当前解将离开目标,探索搜索空间;但是,当搜索代理在[-1,1]中移动时,当前的解将向目标移动并利用搜索空间。
算法应该能够平衡探索和开发,找到搜索空间中有希望的区域,并最终收敛到全局最优。众所周知,探索和开发阶段寻求相互矛盾的目标。因此,为了平衡探索和开发,在优化过程中利用下式自适应地改变r1的值:
式中,t为当前迭代;T为最大迭代次数;a为常数。图3.2显示了随着迭代次数的增加,正弦函数值和余弦函数值的范围是如何减小的。
图3.2 迭代次数的变化与正、余弦函数值的变化
从图3.2可以看出,随着迭代次数的增加,搜索空间的范围逐渐缩小,开发变得越来越重要。此外,图3.2(b)的范围小于图3.2(a)的范围,这表明,a=2时比a=3时更容易进入搜索空间的开发阶段,但探索能力较弱。也就是说,参数a决定了搜索空间的探索和开发之间的平衡。在本章中,将参数模型设为a=2。
SCA算法的伪代码如算法3.1所示。该算法首先通过一组随机解启动优化的过程,然后保存到目前为止获得的最佳解,将其指定为目标解,并更新与之相关的其他解。同时,随着迭代次数的增加,对正弦函数值和余弦函数值的范围进行了更新,以强调对搜索空间的开发。当迭代次数超过最大迭代次数时,算法终止优化过程。然而,任何其他终止条件,如最大迭代次数或得到的全局最优解的精度都可以被考虑。
算法3.1 SCA算法的伪代码
通过以上介绍,从理论上可以确定优化问题的全局最优解,理由如下。
① SCA算法为给定的问题创建并改进了一组随机解决方案,因此与基于个人的算法相比,SCA算法在本质上受益于较高的探索性能,从而避免了局部优化。
② 当正弦函数和余弦函数返回值大于或小于-1时,搜索空间的不同区域。
③ 当正弦函数和余弦函数返回值在-1和1之间时,搜索空间中有希望的区域被利用。
④ 该算法利用正弦函数和余弦函数的自适应范围,实现了由探索到开发的平稳过渡。
⑤ 全局最优解的最佳逼近作为目标点存储在一个变量中,在优化过程中不会丢失。
⑥ 由于解总是围绕目前得到的最优解更新位置,所以在优化过程中搜索空间的最优区域是有趋势的。
⑦ 由于该算法将优化问题视为黑盒问题,所以只要问题表述得当,就可以很容易地将其应用到不同领域的问题中。
为了说明SCA算法的收敛性能,选取23个基准函数(见附录A)中的F1、F9、F11和F14进行测试。参数设置如下:种群大小为30;迭代次数为1000。测试函数和收敛曲线如图3.3所示。
图3.3 测试函数和收敛曲线
图3.3 测试函数和收敛曲线(续)
从图3.3中可以看出,单峰函数和多峰函数的测试中均具有明显的收敛性。因此,可以将其用在目标跟踪上,可看作在图像上有多个变量时的求最优解问题。