目录
禁忌搜索
人工鱼群算法
群搜索优化器
混合蛙跳算法
萤火虫算法
细菌觅食优化
人工蜂群算法
引力搜索算法
和声搜索
基于教学的优化
禁忌搜索
禁忌搜索,Tabu,或taboo,意味着禁止或不许可。禁忌搜索并非严格意义上基于种群的优化方法,但可以把它看成是一个进化算法因为它以自然界为基础,并且又是一个迭代搜索过程。基本思想是,如果在搜索过程中已经访问过搜索空间中的某个区域,这个区域就成为禁忌,要避免搜索算法再度访问它。类似的,如果在搜索过程中已经用过某个搜索策略,这个搜索策略也成为了禁忌,要避免搜索算法再使用它。
算法1概述了基本的禁忌搜索算法。其中T是禁忌特征的列表,是当前最好的候选解。当用生成子代时,不允许搜索过程含有来自T的特征。当找到一个改进的候选解之后,我们将的特征添加到禁忌列表T中。或根据特征在T中存在的时间长短定期清除。这样做意在模拟禁忌随时间的变化过程。
我们可以利用算1的很多变种。例如,可以有不同程度的禁忌,在禁忌列表中还可以包括需要避免的特征,又包括需要避免的搜索策略。禁忌搜索常用来强化别的进化算法。
人工鱼群算法
人工鱼群算法基本上是以鱼的群体行为为基础。一条人工鱼在搜索空间中的位置记为,这里i∈[1,N],N为鱼群中鱼的数目。对于k∈[1,n],n是搜索空间的维数,记搜索空间的每一维为[,]每条鱼都由一个视野并能看到视野中的其他鱼,不能看到视野之外的鱼。将鱼的可视范围定义为:
是一个可调参数,它在优化过程中逐渐减小。
处在鱼的可视范围内的鱼的标记为
我们称一条鱼在拥挤的环境中,如果其视野范围内的鱼较多:
其中是一个可调参数。下面讨论人工鱼群算法的五种行为:随机、追逐、聚集、搜索和跳跃。
1.随机行为
有时候鱼的行为是随机的,它们会在搜索空间中一个随机的方向上移动。如果一条鱼的视野范围内没有别的鱼或者优化过程停滞,这时候就会出现随机行为。停滞就是在前m代中种群中最好个体的性能不再明显改进,即
是第t代个体x的优化函数值,m是取正整数值得一个可调参数,是一个非负的可调参数。算法2是人工鱼群算法的随机行为。
2.追逐行为
有时候,鱼会移向在其视野范围内食物浓度最高处的鱼。鱼的追逐行为描述如下:
其中r∈[0,1]是一个均匀分布的随机变量,是的新位置。假定优化问题是最小化问题,所以是在视野范围内性能最好的鱼的指标。如果一条鱼的可视范围内没有其他的鱼就不会发生追逐行为。只有当鱼的可视范围中最好的鱼的性能比的更好,鱼才会追逐。
3.聚集行为
鱼是一种社会动物,它们有时会聚集在一起。鱼移向其可视范围内的鱼群中心。鱼的聚集行为描述如下:
其中r∈[0,1]是均匀分布的随机变量,是的新位置。如果一条鱼的可视范围内没有别的鱼则不会发生聚集行为。只有当鱼的可视范围内既不空也不拥挤,并且比更好,才会有聚集。
4.搜索行为
当一条鱼看到另一条鱼有更多的食物时,它移向那条鱼。鱼得搜索行为描述如下:
其中r∈[0,1]是均匀分布的随机变量,是的新位置。如果一条鱼的可视范围内没有别的鱼则不会发生搜索行为。当鱼的视野范围内很拥挤或者鱼的视野范围内并不拥挤但比的性能差,或者鱼的视野范围内并不拥挤但鱼的性能比的更差时,才会有搜索行为。
5.跳跃行为
有时候,一条鱼会在搜索空间中随机跳跃。如果优化过程停滞,会随机选出单条鱼跳跃。算法3是鱼的跳跃行为的伪代码。
人工鱼群算法概要
人工鱼群算法使用贪婪选择方法。在上述的物种行为之后,鱼移动到新的位置,但只有新位置比它的旧位置更好的情况下才会这样做。算法4是最小化n元函数的人工鱼群算法。
群搜索优化器
群搜索优化器(GSO),也被称为群搜索优化,它以动物的觅食为基础,GSO的基础是从陆地上动物那里观察到的行为。
一些动物专注于寻找食物,这些动物被称为生产者;一些动物其中精力跟随并利用其他动物觅食,这些动物被称为参与者,或乞讨者;一些动物以随机游走的方式获取资源,这些动物被称为流浪者。
每个个体在n维搜索空间中的位置,航向角记为=[]。
生产者
GSO在种群中只有一个生产者,每一代由费用最低的个体来承担生产者的角色。生产者在他周围的环境中搜索三个点寻找比它的当前位置费用函数值更小的点,如果在这三点中找到费用函数值更小的点,就立即移动到那一点,否则,它留在原地将航向角随机转移到一个新的值。这相应于局部搜索。如果记生产者为,则这三个点为
其中,是零均值单位方差的正态分布随机变量;∈[0,1]是均匀分布的随机变量;是的航向角;是一个可调参数,它能定义生产者能看多远;也是一个可调参数,它定义生产者的头能转动的最大角度;D(·)是一个极坐标变换,定义为
如果生产者在次搜索中都无法找到更好的点,就将它的航向角移回到之前的值。
乞讨者
乞讨者一般会移向生产者,但它们并不是直接移向生产者;而是以一种锯齿形的模式移动,这样做能让它们在移动时搜索到较小的费用函数值。乞讨者运动建模:
其中是一个n维的随机变量,其每一个元素都在[0,1]上均匀分布;o表示元素与元素的乘积。
流浪者
流浪者在搜索空间中随机游走寻找费用函数值最低的区域。流浪者的运动建模为
其中,是一个可调参数,它定义流浪者的头能转动的最大角度;∈[-1,1]是均匀分布的随机变量;是一个可调参数,它与流浪者在一代中能移动的最远距离有关;是零均值单位方差的正态分布随机变量。
小结
算法5概述GSO,它有几个可调参数。算法5指定一个生产者,大约80%的乞讨者,20%流浪者。
GSO与粒子群优化类似。有一个差别是在粒子群优化中,没一个个体会记住它在搜索空间中的前一个位置。另一个不同是在粒子群优化中,每一个个体执行相同的搜索策略。
混合蛙跳算法
混合蛙跳算法(SFLA)是粒子群优化和混合复杂进化的杂交。混合复杂进化的基本思想是在子种群独立进化的同时让子种群之间定期交互。混合复杂进化在每个子种群中采用概率选择父代并随机生成子代以避免停滞。SFLA以混合复杂进化和粒子群优化的思想为基础。
算法6说明SFLA的全局进化策略。从随机生成的N个候选解的一个集合开始,然后将N个个体分成m个子种群,我们也称之为模因复合体。通常N是m的倍数,所以每个子种群包含的个体数相同。然后在每个子种群中执行局部搜索算法。在下一代之初,将种群打乱并重组,将没一个个体随机的分配到新的子种群。
算法6中的进行局部搜索由算法7来完成,在局部搜索中,每个子种群独立执行次迭代的进化搜索。每次迭代只更新唯一的,它是种群中费用最差的个体:
其中,r∈[0,1]是均匀分布的随机数,是子种群中费用最好的个体1.如果上式无法改进,则使用如下的更新:
其中,r∈[0,1]是均匀分布的新的随机数,是整个种群中费用最好的值。如果上式也没有改进,就用随机生成的个体替换。
萤火虫算法
萤火虫算法以萤火虫互相之间的吸引力为基础。吸引力基于萤火虫能感知到的亮度,这个亮度随距离指数减少。一只萤火虫只会被比它亮的萤火虫吸引。
算法8为萤火虫算法的伪代码。当→无穷时,萤火虫不会相互吸引,它相应于随机飞行和随机搜索。当→0时,所有萤火虫的相互吸引都相同,它相应于大气中光的色散。参数和α决定在开发(对其他萤火虫的吸引)和搜索(随机搜索)之间的平衡。
每只萤火虫将其亮度与其他萤火虫的亮度作比较。如果亮,则会移动到某个位置,这个位置包含随机成分和指向的成分。
算法8一直没有更新种群中最好的个体。为搜索到更好的个体,定期更新最好的个体也许能改进算法的性能。不过,这个方法可能是高风险低回报的操作,因为在搜索空间中找到比当前最优位置更好的位置需要很多次函数评价。
细菌觅食优化
细菌觅食优化算法BFOA,以大肠杆菌的行为为基础。BFOA基于自然选择利于成功觅食行为这一遗传学传播的前提。
BFOA基于细菌的三种行为。首先,细菌会受环境的驱动,这种行为被称为趋化作用。其次,细菌会繁殖;第三,因环境中的某些事件,细菌会从它们的栖息地消失或者分散在栖息地的各处。
趋化作用
细菌的第一种行为,自驱动或趋化作用可进一步分为两个行为,首先,细菌会在随机方向上翻转,其次,细菌可以在食物供应多的方向上驱动自己。第二种自驱动不仅受到食物的影响还受到其他细菌的影响。细菌之间既相互吸引又相互排斥。
假设要找到函数f(x)的最小值,在BFOA中,细菌的自动驱动建模为
其中x是种群个体在搜索空间中的位置,c是步长,是搜索空间中某个反向上的单位向量。当翻转时,是一个随机单位向量。将其他细菌对个体x的吸引和排斥组合起来得到x的实际费用函数:
其中,N为种群规模,h,,d和是与细菌的排斥或吸引有关的可调参数。如果有个个体x在f'(x)减小的方向上翻转,则它会继续沿着那个方向移动,但在给定方向的一栋次数存在一个上限繁殖
每一个个体重复上述的自驱动次迭代,即它首先在一个随机的方向上翻转。如果这个随即翻转使得f'(x)的值减小,它继续在这个方向上移动。次移动定义了每只细菌的寿命。然后用每只细菌在前面次迭代的f'(x)的平均值来度量它的健康状况。在最健康的那一半中,每只细菌都克隆出两只,为下一代提供N只新细菌。
消失和分散
每只细菌以概率分散到搜索空间的一个随机位置。
小结
算法9概述基本的BFOA。可调参数通常取下列的值:
BFOA中代数的定义不像别的进化算法那样清晰。最外层的循环执行次,通常只有2次。算法9通过克隆来复制个体,为改进性能我们还能使用更复杂的重组操作。由于参数太多,可调参数的动态自适应对BFOA特别重要并且可以改进性能。
人工蜂群算法
人工蜂群(ABC)算法以蜜蜂的行为为基础。ABC模拟三种蜜蜂。
觅食蜂,也被称为雇佣蜂,在食物源和它们的巢之间来回穿梭。每只觅食蜂与具体的位置相关,在巢之间来回穿梭时会记住自己的位置。当觅食蜂将花蜜带回巢之后就返回食物源,但也会在周边搜索更好的食物源。
其次,观察蜂与任何一个具体的食物源不相关,但他们观察觅食蜂回巢时的行为,观察觅食蜂带回的花蜜的量,并利用这些信息决定去哪里寻找花蜜。观察蜂基于它们对觅食蜂的观察依概率决定要搜索的地方。
第三,侦查蜂是探索者。如果侦查蜂看到觅食蜂回巢后的花蜜的量不再逐步增长呈现停滞状态,侦查蜂就在搜索中间中随机的搜索新的花蜜。
ABC算法没有强制的分工。ABC算法的关键思路是在搜索全局最优时模拟觅食、观察和侦查的行为。
算法10显示,每只觅食蜂随机的修改其在搜索空间中的位置。如果随机修改能改进性能,觅食蜂就移动到新的位置。观察蜂也随机的修改觅食蜂的位置,它用轮盘赌选出被修改的觅食蜂,如果随机修改能改进性能,觅食蜂就移动到新的位置。最后,如果觅食蜂在预设的随机修改次数之后仍没有改进,侦查蜂就代替觅食蜂。算法10中的计数器T()是觅食蜂的实验计数器,它记录下每只觅食蜂连续不成功的修改次数。ABC包含有几个可调参数。ABC的经典参数为
引力搜索算法
引力搜索算法(GSA),它以万有引力为基础。GAS与粒子群优化类似,种群中每一个个体在搜索空间中有位置和速度,还有加速度。粒子基于它们的质量相互吸引,其质量与适应度值成正比。算法11描述了基础GSA算法。
算法11首先更新引力常数G的值。G会逐渐减小让算法这种探索的成分随时间的推进而减小。接下来设定适应度值,让最差个体的适应度=0,最好个体的适应度=1,再接下来我们得到正规化后的适应度{},其总和为1。然后对每一个个体计算引力,接下来我们取力向量的随机组合得到每一个个体的加速度向量,最后用加速度更新每一个向量的位置和速度。
和声搜索
和声搜索(HS)以音乐过程为基础。和声向量是指进化算法中的个体或候选解x,和声记忆库规模是指种群规模,和声记忆库取值率类似于遗传算法中的交叉率c,音调微调率是指变异率,而距离带宽是指高斯变异的标准差。
由算法12可见,和声搜索在每一代生成一个子代。对每一个解的特征,生成一个随机数。如果小于交叉率c,子代中的这个解的特征设置为从种群中随机选择的解的特征,这一步与全局交叉重组类似。如果大于交叉率,则将子代中的这个解的特征设置为搜索域中的一个随机数,这一步与以搜索域为中心的均匀变异类似。如果子代是从种群而不是随机获得的特征,就以解的特征为中心进行高斯变异。最后,如果子代比种群中最差个体好,就用子代代替这个最差的个体。
和声搜索的贡献体现在两个方面:首先,和声搜索一种新方式将这些想法结合起来,其次,和声搜索的音乐动机也是新的。
基于教学的优化
基于教学优化(TLBO)以课堂上教与学的过程为基础。在每一代种群中,最好的候选解被视为教师,其他候选解则被视为学员。学员主要接受来自教师的指令,但也会相互学习。一门课程类似于一个独立变量或者候选解的一个特征。教师阶段按如下方式修改每个候选解的每一个特征:
N是种群规模,n是问题的维数,是种群中最好的个体,即教师。r∈[0,1]上均匀分布的随机数。被称为教师因子并且以相同的概率设置为1或2。如果子代比父代好,就用子代替换父代。总的来说,在朝向最好个体的方向上调整。从的期望就可以看出来:
更接近而不是,平均来说比它的父代种群更接近0,这可能会让TLBO在解为0的问题上具有不公平的优势。
教师阶段结束后学员阶段开始。在调整没一个个体时需要基于另一个随机选择的个体:对于i∈[1,N]和s∈[1,n],
其中,k是[1,N]中的一个随机整数,并且k≠i,r是在[0,1]上均匀分布的随机数。在学员阶段如果更差(上式的第一种情况),就让远离,如果更好(上式中的第二种情况)就让他靠近。
算法13概述TLBO。TLBO与差分进化最相似。将差分算法中的交叉率设为1,并进一步假设我们不用常步长参数F而是对每一个独立变量用不同的随机步长参数,因此在每次变异向量v中设置一个独立变量。再进一步假设,对每一个个体,一但形成它的子代就立即用子代替换它,而不是等到生成所有子代之后才替换。因此改进的差分算法如算法14所示。
算法14中不是随机生成而是将它们设置为
差分进化算法14因此变为算法15,它等价于TLBO算法13中=1的教师阶段。
类似的,假设算法14中不是随机的生成,而是将它们设置为
其中k是一个随机的整数,k∈[1,N],k≠i。就得到TLBO的学员阶段。
TLBO是对差分算法的改进,差分进化本身是遗传算法的一个变种。TLBO的贡献在于,首先,它用两个不同的阶段执行差分算法,一个是所谓的教师阶段,另一个是学员阶段。其次,TLBO的教学动机是新的。
如果觉得《进化算法——其他进化算法》对你有帮助,请点赞、收藏,并留下你的观点哦!