自适应小生境遗传算法的性能分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
自适应小生境遗传算法的性能分析1
李明林
(福州大学机械工程及自动化学院 福建福州 350002)
E-mail:lml_006@
摘 要:本文提出一种改进的维持物种多样性的小生境实现技术——自适应小生境遗传算法。该算法以Mahfoud提出的确定性排挤策略为基础,采用数值编码,并结合算术交叉、非均匀变异和高斯变异、自适应变异概率。经过实验分析,验证了该算法能有效地、自适应地形成小生境进化环境,并具备相当的收敛速度和相当的求解精度。
关键词:小生境,自适应,遗传算法,多态优化,排挤
1 引言
作为一种模拟生物在自然环境中遗传和进化过程的自适应全局优化搜索算法,遗传算法以其明显优于传统优化算法的鲁棒性、自适应性、全局优化性和隐含并行性广泛地用于求解各种工程优化问题。近年来,人们特别关注发展用于多目标优化、多峰值函数优化与组合优化问题的小生境遗传算法[1]。
观察各种小生境的实现方法,可看出其共同点都是为了有效地维持群体的多样性。而其差别可归纳为两种基本类型:一种是将连续的、无限的搜索空间划分为离散的、有限的小生境区域;另一种则是对种群的适应度作适当的修整以抑制超级个体的复制概率来维持进化过程中的群体多样性。前一种类型以De Jong 提出的基于排挤机制(Crowding)的小生境实现方法为代表(1975),后一种类型以Goldberg等提出的基于共享机制(Sharing)的小生境技术为代表(1987)。在此基础上,各种各样的小生境技术不断出现。我们项目的研究主要是对一些有代表性的技术进行性能分析,为小生境遗传算法的实际工程应用提供有用的设计依据。
本文首先在深入理解Mahfoud提出的基于确定性排挤机制(Deterministic Crowding)的小生境思想的基础上,以实验的手段论证其思想的有效性和正确性。在实验过程中,不断修改程序的各个组成部分,并用于函数优化测试。最后发现一种程序组合具有较明显的特点。它可维持种群的多样性,而且可自适应形成大小、形状各异的小生境。因此将它称为自适应小生境遗传算法(简称SNGA)。
本文首先介绍确定性排挤机制的基本思想和算法结构,结合文献[2]的遗传算子编写了SNGA类库函数。其次结合三种较为典型的数值优化测试函数,对SNGA进行实验分析。最后对SNGA进行总结讨论。
2 确定性排挤机制和SNGA
1970年,Cavicchio提出了基于预选择机制(Preselection)的小生境技术,其基本思想是父代个体经过遗传操作后生成子代个体,父子个体相互竞争,适应度高的进入下一代群体中。DeJong于1975年一般化了Cavicchio的预选择机,在其博士论文提出了基于排挤机制(Crowding)的小生境技术。即:在父代群体中选取部分个体作为小生境主体,在新生子代群体中与小生境主体相似的个体不得进入下一代群体。他们声称这两种方法都可在群体中形成小生境的进化环境,并维持了群体的多样性。
1本课题得到福建省教育厅(JB04025)项目资助。
1992年Mahfoud [3]对Preselcetion 和Crowding 进行比较深入的研究,指出在实际应用中,这两种方法并不象其作者所声称的那样能成功地维持种群多样性。真实情况是这两种方法
所采用的随机替代技术将产生大量的基因
漂移,而使算法收敛于局部最优解。在综合Preselection 和Crowding 两种机制的优点后,Mahfoud 提出了基于确定性排挤机制的遗传算法(简称DCGA )。并认为该方法可从根本上消除基因漂移。 DCGA 的基本思想是:父代个体经过交叉、变异后生成子代个体,父子之间相似的个体进行竞争,适应度高的进入下一代群体。DCGA 的主要思想体现在图1所示的第3至第5步骤[4]。 针对数值优化测试函数,本文采用实数型编码,这样个体的基因型也是测试函数的表现型——变量,因此无需进行编码和解码操作;个体的适应度函数为测试函数的函数值;交叉算子采用均匀算术交叉;
变异算子采用非均匀变异和高斯变异向结
合。算法的控制参数只包括种群规模m 和
最大进化代数T ,其余交叉概率为1.0,即每个父代个体均参与交叉;变异概率根据进化代数自适应变化。而为了自适应形成小生境,本算法仅对群体按适应度进行降序排列。SNGA 程序结构如图1所示。
假设两父代个体的基因分别为X 1、X 2,经过算术交叉后子代个体的基因分别为X 1C 、X 2C
。它们可由下式确定:
()()2
12
12111X X X
X X X C C αααα−+=−+= ,其中:α为(0,1)内的随机数。
而非均匀变异算子可表示为:
()()(2,15
.0,,5.0,,=⎩⎨⎧>∆−≤∆+=i if y t X if y t X X
C
i C i M i
αα),其中:()2
1,⎟
⎠
⎞⎜⎝⎛Τ−=
ƥ
•t y
y t α y 为X i C 到函数变量取值上界或下界的距离,t 为进化代数。
高斯变异算子为:
⎟⎟
⎟⎠
⎞⎜⎜⎜⎝
⎛−•∑
+
==612
16
j j y
X X
C i
M i
α
上述遗传操作中,交叉算子可搜索两个父代个体之间的各种基因型,适用凸区间;变
异算子可搜索父代个体周围小区域的基因空间,适合细化搜索。交叉运算和非均匀变异运算在每对父代个体中执行;而高斯变异运算则根据变异概率进行——即此前生成的0、1区间的随机数小于变异概率时,父代个体发生高斯变异。变异概率由下式确定:
T
t P m −
=0.1 下面我们将根据一些数值优化测试函数来测试SNGA 的性能。