遗传算法中的CROSSOVER和MUTATION

来源:互联网 发布:php开源商城源码下载 编辑:程序博客网 时间:2024/05/22 04:28

结合上次发的代码,这次再多说点,今天看了别人的代码,才晓得在实值编码下crossover和mutation的做法。

1:crossover,对于实值编码的染色体一般进行crossover的时候,是先随机选择2个parent,然后选择一部分进行交换,这样的做法是最常见的。而在我上面的代码中是(parent1+parent2)/2 来做了。那么就在这里说下选择部分进行交换的做法。
比如群体的size是N,先选择最好的M个,那么就需要在产生N-M个才能维持好种群的大小。怎么产生着N-M个后代?做法是这样的,假设每个染色体的长度是K,那么先把M个种群中的染色体的第一个基因,按照倍数复制成长度为N-M,接着随机再给这个N-M排序下,组成了N-M个后代的第一个基因,以此类推,就完成了任意2个parent的基因交换和重组。

2:mutation中最常见的就是以X的概率去mutation,那么怎么弄?这个mutation是针对每个染色体上的每个基因的,做法是这样的,遍历这N个染色体上的K个基因,然后产生随机数,如果这个随机数小于X,那么久给这个基因做mutation,如果大于则不更改,具体的实现的时候可以灵活点。

至此,这就是crossover和mutation的常见做法。

0 0
原创粉丝点击