码迷,mamicode.com
首页 > 编程语言 > 详细

遗传算法

时间:2017-01-16 14:08:40      阅读:313      评论:0      收藏:0      [点我收藏+]

标签:基因突变   算法   例子   fit   介绍   使用   ref   数组   进制   

参考这篇文章,写的不错。

http://www.cnblogs.com/heaad/archive/2010/12/23/1914725.html

另外上一篇文章说了模拟退火算法。

 

遗传算法 ( GA , Genetic Algorithm ) ,也称进化算法 。 遗传算法是受达尔文的进化论的启发,借鉴生物进化过程而提出的一种启发式搜索算法。因此在介绍遗传算法前有必要简单的介绍生物进化知识。

 

一.进化论知识 

简单说来就是:繁殖过程,会发生基因交叉( Crossover ) ,基因突变 ( Mutation ) ,适应度( Fitness )低的个体会被逐步淘汰,而适应度高的个体会越来越多。那么经过N代的自然选择后,保存下来的个体都是适应度很高的,其中很可能包含史上产生的适应度最高的那个个体。

 

二.遗传算法思想 

 举个例子,使用遗传算法解决“0-1背包问题”的思路:0-1背包的解可以编码为一串0-1字符串(0:不取,1:取) ;首先,随机产生M个0-1字符串,然后评价这些0-1字符串作为0-1背包问题的解的优劣;然后,随机选择一些字符串通过交叉、突变等操作产生下一代的M个字符串,而且较优的解被选中的概率要比较高。这样经过G代的进化后就可能会产生出0-1背包问题的一个“近似最优解”。

 

编码:需要将问题的解编码成字符串的形式才能使用遗传算法。最简单的一种编码方式是二进制编码,即将问题的解编码成二进制位数组的形式。例如,问题的解是整数,那么可以将其编码成二进制位数组的形式。将0-1字符串作为0-1背包问题的解就属于二进制编码。

 

遗传算法有3个最基本的操作:选择,交叉,变异。

(具体内容看原文) 

 

四.基本遗传算法优化 

   下面的方法可优化遗传算法的性能。

   精英主义(Elitist Strategy)选择:是基本遗传算法的一种优化。为了防止进化过程中产生的最优解被交叉和变异所破坏,可以将每一代中的最优解原封不动的复制到下一代中。

   插入操作:可在3个基本操作的基础上增加一个插入操作。插入操作将染色体中的某个随机的片段移位到另一个随机的位置。

 

(完)

 

遗传算法

标签:基因突变   算法   例子   fit   介绍   使用   ref   数组   进制   

原文地址:http://www.cnblogs.com/charlesblc/p/6289252.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!