初识遗传算法(三): 模块化和积木
2018-02-02 05:10
609 查看
上节讨论了适应度地形和协同进化,这节来到了重点部分,模块化(Modularity)和积木(Building-blocks)。
(1)理解网络即将复杂的网络分为许多子网络
(2)复杂系统的衍化性指的是: 对于一个复杂的生物种群,其适应度地形中可能存在很多盆地(basin),而这些盆地使得普通的遗传算法或者爬山法陷在局部最优中,那么如果将这个总的基因的进化任务分为许多小的半相关的部分,每部分负责不同表现型的进化(譬如这一块负责眼睛,那一块负责耳朵)之类的,就能很大程度上确保不被局部最优所困。
譬如一个基因是1001100010,我们从中间将其一分为二,设前一半的最高适应度的目标基因型是11111,对后一半最高适应度基因型是00000,设a是当前基因前一半与目标基因型符合的基因个数,b是后一半的,适应度方程为$$r*(2^a+2^b)$$。其中r从(0.5,1]取得一个随机数。那么在例子1001100010中a=3,b=4。
对于这个适应度函数而言,当基因长度增加到60或以上后,一般的爬山法是无法得到最优解的,因为乘的那个r相当于一个高斯白噪声,由于这个噪声的存在,进化过程中的梯度被大大减弱,使得爬山法无法找到正确的梯度下降的道路,也就无法取得全局最优。但用building blocks的遗传算法不一样,它能通过后代的交叉传播,使得优秀的两个模块相结合,从而得到全局最优。
其过程是两个模块单独进化,不互相影响,之后再通过交叉传播(crossover),达到不同个体包含的不同优秀的模块能相互结合,最后形成完成且完美的基因型。
References: Watson,
R. A. (2004, September). A simple two-module problem to exemplify building-block assembly under crossover. In International Conference
on Parallel Problem Solving from Nature (pp. 161-171). Springer, Berlin, Heidelberg.
1.为什么使用模块化
大致来说模块化有两大功效: 帮助理解网络和激发复杂系统的衍化性。(1)理解网络即将复杂的网络分为许多子网络
(2)复杂系统的衍化性指的是: 对于一个复杂的生物种群,其适应度地形中可能存在很多盆地(basin),而这些盆地使得普通的遗传算法或者爬山法陷在局部最优中,那么如果将这个总的基因的进化任务分为许多小的半相关的部分,每部分负责不同表现型的进化(譬如这一块负责眼睛,那一块负责耳朵)之类的,就能很大程度上确保不被局部最优所困。
2.模块化的例子之一: 积木
积木(Building block)即将一个基因分为多个部分,然后对每个部分设立适应度方程。譬如一个基因是1001100010,我们从中间将其一分为二,设前一半的最高适应度的目标基因型是11111,对后一半最高适应度基因型是00000,设a是当前基因前一半与目标基因型符合的基因个数,b是后一半的,适应度方程为$$r*(2^a+2^b)$$。其中r从(0.5,1]取得一个随机数。那么在例子1001100010中a=3,b=4。
对于这个适应度函数而言,当基因长度增加到60或以上后,一般的爬山法是无法得到最优解的,因为乘的那个r相当于一个高斯白噪声,由于这个噪声的存在,进化过程中的梯度被大大减弱,使得爬山法无法找到正确的梯度下降的道路,也就无法取得全局最优。但用building blocks的遗传算法不一样,它能通过后代的交叉传播,使得优秀的两个模块相结合,从而得到全局最优。
其过程是两个模块单独进化,不互相影响,之后再通过交叉传播(crossover),达到不同个体包含的不同优秀的模块能相互结合,最后形成完成且完美的基因型。
References: Watson,
R. A. (2004, September). A simple two-module problem to exemplify building-block assembly under crossover. In International Conference
on Parallel Problem Solving from Nature (pp. 161-171). Springer, Berlin, Heidelberg.
相关文章推荐
- 初识Matlab遗传算法工具箱 ga
- 初识遗传算法
- 模块化设计与积木
- JS模块化工具requirejs教程(一):初识requirejs
- 初识前端模块化
- JS模块化工具requirejs教程(一):初识requirejs
- JS模块化工具requirejs教程(一):初识requirejs
- JS模块化工具requirejs教程(一):初识requirejs
- 初识遗传算法
- JS模块化工具requirejs教程(一):初识requirejs
- nodejs之初识模块化
- 初识遗传算法(二): 适应度地形与协同进化
- 遗传算法初识
- JS模块化工具requirejs教程(一):初识requirejs
- 【转】JS模块化工具requirejs教程(一):初识requirejs
- 初识遗传算法 蚁群算法
- 初识遗传算法(一): 基本概念
- 初识遗传算法
- JS模块化工具requirejs教程(一):初识requirejs
- Javascript模块化编程-初识[1]