本文参考了很多张军老师《计算智能》的第九章知识。
本文来源:https://blog.csdn.net/qq_44186838/article/details/109181453
Memetic算法
1.1 Memetic算法的基本思想
在讲Memetic算法之前,我们先来了解一下meme。
基于图中内容,Mosato(1989)提出了Memetic算法。
那么,Memetic算法出现的原因是啥呢?Memetic算法是啥呢?
那在讲Memetic算法之前,我们先来稍微回忆一下遗传算法、蚁群优化算法、粒子群优化算法等这些进化算法以及群体智能优化算法,这些算法有啥共性呢?
好吧,共性其实很多。这里我想讲的是:在面对大规模、复杂的优化问题时,这些算法往往存在着收敛速度慢、难以寻找高精度的解的缺点。
而在这些算法的基础上,引入局部搜索方法,对计算智能方法所发现的解进行改进,将有效地提高计算智能方法的求解效率和精度。
以上就是其出现的大致原因。基于此,我们不难发现,Memetic算法其实就是基于群体的计算智能方法与局部搜索方法相结合的一类新型的优化技术。
Memetic算法的框架
为系统分析MA,Krasnogor和Smith提出了MA的框架模型,根据该框架,一个MA应该包含如下9种要素:
其中:
下图为MA的基本流程框架
不难发现,与传统的进化方法相比,MA实际上知识增加了一个局部搜索操作,即增加了L = (
L
1
L_1
L1,
L
2
L_2
L2, …,
L
m
L_m
Lm) 这个要素(大部分MA的m值为1,即只适用一种局部瘦身策略)。
通过上图我们也可以发现,局部搜索可以与全局搜索策略的生成函数(例如GA中的交叉、变异操作)相结合,也可以与更新函数(例如GA中的选择操作)相结合。注意:有些文献中也把局部搜索作用域初始解,以提高初始解的质量,但这一般只作为一种辅助方法。
另外,补充一下,局部搜索的执行可以依据Lamarckian模型,也可以依据Baldwinian模型;可以作用于群体中的某个个体之中,也可以作用于整个群体。
对于一个MA来说,局部搜索的选择以及全局搜索与局部搜索的结合方式将直接影响到算法性能的好坏。因此,设计一个高性能的MA必须考虑以下四方面的问题:
(1)应该选择什么局部搜索策略;
(2)应该在什么时候执行局部搜索;
(3)应该针对哪些个体进行局部搜索,应该采用Lamarckian模型还是Baldwinian模型;
(4)如何平衡算法的全局搜索能力和局部搜索能力。
基于此,下面将会给大家介绍多种针对MA的分类方式以及对应的几种Memetic算法。
1.3 静态Memetic算法
静态Memetic算法的特点
一般只采用一种局部搜索策略。
局部搜索的执行位置和方式都预先确定,在算法执行过程中保持不变。
1.3.1 局部搜索的位置
可以根据局部搜索的位置不同,分为:
与生成函数相结合的局部搜索,以及与更新函数相结合的局部搜索。
1.3.2 Lamarckian模式Baldwinian模式
简单介绍一下这两种模式。
在进化算法中引人局部搜索的主要模式包括Lamarckian模式(可译作拉马克式)和Baldwinian模式。Lamarckian模式指的是“后天获取的特性也可以遗传”,也就是说,在采用局部搜索策略改进了某个个体之后,改进了的个体将(代替原有个体)参与全局搜索方法的进化操作。相反地,在 Baldwinian模式中,被局部搜索策略改进了的个体不会代替原有个体参与进化操作,交叉、变异等进化算子仍然只作用于未被局部搜索改进的个体上。
1.4 动态Memetic算法
1.4.1 动态Memetic算法
动态MA是一种动态调整局部搜索策略。
分类
按照动态调整类型,分成三类:
静态型—按照静态的规则来调整
适应型—利用在线反馈的信息来调整
自适应型—将局部搜索设置信息也编码到算法当中一起进化(协同进化的MA)
按照自适应的层次,分成三类:
外部型—利用外部的先验知识(一般属于静态型)
局部型—采用了局部反馈信息来调整
自适应型—采用了全部反馈信息来调整
1.4.2 Meta-Lamarckian学习型MA
Meta-Lamarckian学习型MA:每次执行局部搜索之前,从局部搜索策略池中选择一种局部搜索方案。
基本Meta-Lamarckian学习方案
基本Meta-Lamarckian学习方案采用了一种简单的随机游走方案来选择局部搜索策略。在这种方案下,算法每次执行局部搜索之前都从局部搜索策略池中随机地选择一种局部搜索方法。显然,这种方案并没有借鉴任何在搜索过程中在线得到的反馈信息,因此属于静态,外部型的MA。
子问题分解的启发式搜索方案
子问题分解的启发式搜索方案的Meta-Lamarckian学习方式如下图所示。
在MA的最初前g次迭代中(g是一个预先设定的参数),算法仍然采用随机游走的方式来选择局部搜索策略。随后,算法在每次执行局部搜索之前,首先从局部搜索初始点的邻域中寻找k个曾经搜索过的点(例如,可以选择离局部搜索初始点的欧几里德距离最近的k个曾经搜索过的点),统计在这k个点上曾经使用过的局部搜索策略所对应的适应值。最后,算法将采用在该邻域内具有最大平均适应值的局部搜索策略。
带偏向性轮盘赌的随机搜索方案
带偏向性轮盘赌的随机搜索方案的Meta-Lamarckian学习方式如下图所示。
这种MA采用了轮盘赌机制来选择局部搜索策略。在算法开始时,各种局部搜索策略被选择的概率是相同的。算法首先按照随机给定的次序把每一种局部搜索策略都执行一次,并根据各种局部搜索策略所带来的适应值改进幅度来调节局部搜索被选择的概率。随后,算法在每次执行局部搜索之前都采用轮盘赌方式选择一种局部搜索策略,并在局部搜索执行完毕后更新该局部搜索策略被选择的概率。
1.4.3 超启发式Memetic算法
随机超启发式
随机地选择局部搜索策略。
贪心超启发式
选择能够得到最大改进幅度的局部搜索策略
基于选择函数的超启发式
根据局部搜索策略的选择函数F值来选择局部搜索策略。
1.4.4 协同进化Memetic算法
局部搜索的具体设置(包括局部搜索策略、局部搜索的执行方式以及局部搜索深度、频率、邻域大小等各种参数编码成文化基因)也编码到个体的基因中,共同进化。
下图为协同进化MA的流程图。
目前MA已应用于众多复杂优化问题。