SFLA=SCE+PSO
SCE: shuffled complex evolution algorithm(Duan 1992) = CRS(controlled radom search Price 1978)+Competive evolution(Holland 1975)+shuffling
SCE算法背后的理念是将全球搜索作为自然进化的过程。人口被划分为几个社区(综合体),每个社区都被允许独立发展。经过定义的进化数量后,复合体被迫混合,新的群落通过洗牌过程形成。这一策略有助于通过共享每个社区独立获得的信息和属性来改进解决方案。
一、framework
想想一群青蛙在沼泽中跳跃;沼泽在离散的地方有很多石头,青蛙可以跳过这些石头来找到最大数量的可用食物。青蛙被允许互相交流,这样他们就可以利用别人的信息来改进他们的模因。
在每个模因中,青蛙被其他青蛙的想法感染;因此他们经历了一个迷因进化。迷因进化提高了个体模因的质量,并提高了个体青蛙对目标的表现。
为了确保感染过程具有竞争性,需要有更好的模因(思想)的青蛙比那些思想贫乏的青蛙更能促进新思想的发展。用三角形概率分布选择青蛙为更好的想法提供了竞争优势。在进化过程中,青蛙可能会根据memeplex的信息或整个种群中最好的信息改变它们的模因。
模因型(s)的增量变化对应于跳跃的步长,新的模因对应于青蛙的新位置。
在一只青蛙改善了它的位置后,它又回到了社区。
在一定数量的模因演化时间循环之后,模因组被迫混合,并通过一个洗牌过程形成新的模因。这种洗牌提高了被沼泽不同地区的青蛙感染后的模因的质量。
青蛙的迁移(想法和/或设计的交叉受精)加速了搜索过程,以感染的形式分享他们的经验,并确保任何特定兴趣的文化进化都是没有区域偏见的。
二、steps
全局搜索
step 0 Initialize. 选择m和n。其中m是模因memeplexes的数量, n是 is 每个模因中青蛙的数量。在沼泽中总样本大小为F=mn。
step 1 生成一个虚拟人口。虚拟青蛙U(1), U(2), U(3), ..., U(F)
step 2 青蛙排序。对F型青蛙进行排序,以降低其性能值。储存在X队列中。记录下最好的青蛙的位置 PX =U(1) 。
step 3 分区青蛙into memeplexes。将数组X分割成 m个memeplexes Y1,Y2,…Ym,每一个都含有n个青蛙。
step 4 每个memplexes的内存演化。发展每个memeplex Yk,k = 1,…m 根据下面概述的青蛙跳跃算法。
step 5 重组模因。在每个memeplex中都有一个定义数量的memetic演化步骤,然后替换Y1…Ym 用X表示,X = {Yk,k = 1, .., m}。排序X以降低性能值。更新人口最佳青蛙的位置PX。
step 6 检查收敛。如果收敛条件满足,停止。否则,返回到步骤3。通常情况下,当至少一只青蛙携带着“最好的记忆模式”时,决定何时停止的决定是连续的时间循环。或者,可以定义一个最大的函数评估总数。
局部搜索:跳蛙算法
在全局搜索的第4步,每个memeplex的演化都独立地持续了N次。在memeplexes进化后,算法返回到对全局探索的重组。下面是对每个memeplex的局部搜索的详细信息。
step 0 设置im = 0,在这里我计算memeplex的数量,并将与memeplexes的总数m比较。
设置iN为= 0,iN用于计算进化步骤的数目,将与在每个memeplex中完成的步骤的最大数字N进行比较。
step 1 im=im+1
step 2 iN=iN+1
Consideragroupoffrogsleapinginaswamp;theswamphasanumberofstonesatdiscrete locations on to which the frogs can leap to ?nd the stone that has the maximum amount of available food. The frogs are allowed to communicate with each other, so that they can improvetheirmemesusingothers’information