遗传算法小生境技术简介
生物学上,小生境是指特定环境下的一种组织结构。在自然界中,往往特征,形状相似的物种相聚在一起,并在同类中交配繁衍后代。在SGA 中,交配完全是随机的,在进化的后期,大量的个体集中于某一极值点上,在用遗传算法求解多峰值问题时,经常只能找到个别的几个最优值,甚至往往得到是局部最优解。利用小生境我们可以找到全部最优解。
小生境技术就是将每一代个体划分为若干类,每个类中选出若干适应度较大的个体作为一个类的优秀代表组成一个群,再在种群中,以及不同种群中之间,杂交,变异产生新一代个体群。同时采用预选择机制和排挤机制或分享机制完成任务。基于这种小生境的遗传算法(Niched Genetic Algorithms,NGA),可以更好的保持解的多样性,同时具有很高的全局寻优能力和收敛速度,特别适合于复杂多峰函数的优化问题。
模拟小生境技术主要建立在常规选择操作的改进之上。Cavichio 在1970年提出了基于预选择机制的选择策略,其基本做法是:当新产生的子代个体的适应度超过其父代个体的适应度时,所产生的子代才能代替其父代而遗传到下一代群体中去,否则父代个体仍保留在下一代群体中。由于子代个体和父代个体之间编码结构的相似性,所以替换掉的只是一些编码结构
相似的个体,故它能够有效的维持群体的多样性,并造就小生境的进化环境。De Jong在1975年提出基于排挤机制的选择策略,其基本思想源于在一个有限的生存环境中,各种不同的生物为了能够延续生存,他们之间必须相互竞争各种有限的生存资源。因此,在算法中设置一个排挤因子CF(一般取梦见水牛CF=2满月祝福语或3),由群体中随机选取的1/CF 个个体组成排挤成员,然后依据新产生的的个体与排挤成员的相似性来排挤一些与预排挤成员相类似的个体,个体之间的相似性可用个体编码之间的海明距离来度量。随着排挤过程的进行,群体中的个体逐渐被分类,从而形成一个个小的生成环境,并维持群体的多样性。
Goldberg软件行业等在1987年提出了基于共享机制(Sharing)的小生境实现方法。这种实现方法的基本思想是:通过反映个体之间的相似程度的共享函数来调节群体中各个个体的适应度,从而在这以后的群体进化过程中,算法能够依据这个调整后的新适应度来进行选择运算,以维持群体的多样性,创造出小生境的进化环境。
共享函数(Sharing Function)是表示群体中两个个体之间密切关系程度的一个函数,可记为S(d )其中表示个体i和j之间的关系。例如,个体基因型之间的海明距离就可以为一种共享函数。这里,个体之间的密切程度主要体现为个体基因型的相似性或个体表现型的相似性上。当个体之间比较相似时,其共享函数值就比较大;反之,当个体之间不太相似时,
其共享函数值比较小。
共享度是某个个体在群体中共享程度的一中度量,它定义为该个体与群体内其它各个个体之间的共享函数值之和,用S 表示:
S = (i=1, ,M)
在计算出了群体中各个个体的共享度之后,依据下式来调整各个个体的适应度:
F (X)=F (X)/S (i=1, ,M)
由于每个个体的遗传概率是由其适应度大小来控制的,所以这种调整适应度的方法就能够限制群体中个别个体的大量增加,从而维护了群体的多样性,并造就了一种小生境的进化环境。岗位技能培训
下面介绍一个基于小生境概念的遗传算法。这个算法的基本思想是:首先两两比较群体中各个个体之间的距离,若这个距离在预先的距离L 之内的话,在比较两者之间的适应度大小,并对其中适应值较低的个体施加一个较强的罚函数,极大地降低其适应度,这样,对于在预先指定的某一距离L之内的两个个体,其中较差的个体经处理后其适应度变得更差,他在后面的进化过程被淘汰的概率就极大。也就是说,在距离肉糜炖蛋L 内将只存在一个优良个体,从而既维护了群体的多样性,又使得各个个体之间保持一定的距离,并使得个体能够
在整个约束的空间中分散开来,这样就实现了一种小生境遗传算法。
这个小生境算法的描述如下:
算法 NicheGA (1)设置进化代数计数器;随机生成M养肺吃什么食物好个初始群体P(t),并求出各个个体的适应度F (i=1,2,M)。(2) 依据各个个体的适应度对其进行降序排列,记忆前N个个体(N<M).(3) 选择算法。对群体P(t)进行比例选择运算,得到P (t)。(4)交叉选择。对选择的个体集合P (t)忘怀 作单点交叉运算,得到P (t)。(5)变异运算。对P (t)作均匀变异运算,得到P (t)。(6)小生境淘汰运算。将第(5)步得到的M个个体和第(2)步所记忆的N个个体合并在一起,得到一个含有M+N 个个体的新群体;对着M+N个个体,按照下式得到两个个体x 和x 之间的海明距离:|| x - x ||= ( )当|| x - x ||<L时,比较个体x 和个体x 的适应度大小,并对其中适应度较低的个体处以罚函数: Fmin(x ,x )=Penalty(7繁忙的英语)依据这M+N个个体的新适应度对各个个体进行降序排列,记忆前N个个体。(8)终止条件判断。若不满足终止条件,则:更新进化代数记忆器t t+1, 并将第(7)步排列中的前M个个体作为新的下一代群体P(t),然后转到第(3)步:若满足终止条件,则:输出计算结果,算法结束。