初识遗传算法(二): 适应度地形与协同进化

上一节讲了遗传算法的基本概念和一些专有名词,这一节谈谈适应度地形和协同进化


1.适应度地形(fitness landscape)


1.1适应度地形的定义

适应度地形(fitness landscape)是由一系列基因型组成的三维的地形图(如图)。它包含三个基本元素

《初识遗传算法(二): 适应度地形与协同进化》



1. 基因型的集合 如果要生成一个适应度地形,则需要一个集合的基因型,即每个基因型在这个集合中都是独一无二的,这样才能保证整个地形是波动的

2. 邻居关系 邻居关系代表在空间中排列基因型的方式,这种排列方式是: 相似的基因型在空间上距离较近, 不同的基因型空间上距离较远, 临近的基因型一般只相差一个基因。

3. 地形高度 在适应度地形中,高度代表该基因型的适应度(fitness)

提到适应度地形就不得不提上位性(epistasis), 在遗传算法中,上位性指代着同一位点上的基因受别的位点基因抑制而不能表达。举个例子,设有两个基因位点,A和B代表显性基因,a和b代表隐形基因,A或a位于第一个基因位点,而B或b位于第二个。若F(ab)=1, F(Ab)=1.1, F(aB)=2, F(AB)=2.8 ,其中F代表这个基因组合的适应度,那么这就是发生了上位性这种情况。如果没有上位性的话,F(AB)应该等于2.1, 这样F(AB)-F(aB)=F(Ab)-F(ab),就没有抑制的情况发生。

1.2 合成地形



合成地形的地形有许多, 例如上位性网络,即用上位性基因构成的网络,如royal road 和royal staircase(我实在不知道怎么翻译),这两个概念是分别由Mitchell和van Nimwegen提出,其指代的是基因的模块化,我们将在下节讨论。除此之外,较为注明的就是NK 地形了

N指代的是一个基因序列中有多少个基因,而K指代的是每个基因对适应度的贡献度与其自身基因和另外K个基因有关,换句话说就是每个基因与其他K各基因有关。而K的大小决定了上位性的程度。如果k等于0,也就是说只与其自身有关,那么整个地形的形状就是一个整的山峰,而随着K的增大,则会出现越来越多其他的侧峰,当K较大时,整个地形如图所示
《初识遗传算法(二): 适应度地形与协同进化》

            (Leandro Nunes de Castro)



而K最大值即为N-1。


2.协同进化(竞争型)



协同进化有两种类型,一种是竞争型,一种是合作型,合作型将留到下节讲模块化的时候来讨论。 竞争型协同进化即为两个或多个种群或物种是有竞争关系,它们不断地相互竞争,然后不断地提高。

首先一点是,我们为什么需要竞争的协同进化呢,这有多方面的原因 1. 当我们没有很好的适应度函数时,我们可能需要一个隐含的适应度函数。也就是说如果我们只有一个种群,然后我们发现对于这个种群,我们没有或者没必要找出一个合适的可用于进化的适应度方程,在这种情况下,我们就需要协同进化了,因为协同进化只需要定义一个隐式的适应度方程

2.就算我们已经对一个种群定义了一个适应度函数,那么我们能保证这个函数始终能提供合适的梯度让这个种群不断进化吗。因为遗传算法的目的即将一个种群的基因进化为适应度最高的基因,那么这个适应度函数能不能源源不断提供这个梯度用来使种群进化呢,有的适应度函数会设置一些鞍点,或者盆地,那些只是局部最优值,而我们的目的是全局最优值,用单一的适应度函数可能会深陷局部最优而无法爬出来。那么竞争型协同进化就能解决这个问题,因为是竞争型能确保两个种群通过不断竞争而提高适应度,这么一来就提供了源源不断的梯度供两个种群进行进化

3.哪怕就算单一种群的适应度函数能提供合适的梯度,但竞争型协同进化是没有确定的终点的,也就是说不像普通的进化算法有一个固定的进化终点,竞争型协同进化没有一个明确地终点,只是不断地在提高

虽说如此,那么在有些情况下,竞争型协同进化也会失败 譬如:

梯度消失: 如果种群1中每个个体都能打败种群二中所有个体,那么种群1中每个个体所得到的分数都是一样的,种群1也就没法进化了。

过于细致: 如果种群1有着固定的行为模式,譬如两个人下棋,棋手A每次一上来第一步棋就架炮,那么很显然棋手B就会专门针对这第一步棋而研发一个独有的策略,对于遗传算法同理,在进化中种群2可能会根据种群1的固定行为模式而研发特定的策略 ,这样的策略并不具有普适性。

非传递性(Intransitivity): 如果是三个种群协同进化,A打败了B,B打败了C,C打败了A,就像剪刀石头布一样,很显然,这样一来我们并不知道该往哪个方向进化了,不断地在绕圈

红皇后(Red queen): 两个种群的得分都相差无几,也就是说都很平庸

下一章我们讨论一下模块化(Modularity)和积木(Building blocks)

    原文作者:遗传算法
    原文地址: https://blog.csdn.net/qq_27888109/article/details/79212634
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞