遗传算法 简单理解

遗传算法 简单理解

ID:26605182

大小:145.00 KB

页数:8页

时间:2018-11-27

遗传算法 简单理解_第1页
遗传算法 简单理解_第2页
遗传算法 简单理解_第3页
遗传算法 简单理解_第4页
遗传算法 简单理解_第5页
资源描述:

《遗传算法 简单理解》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、遗传算法(GeneticAlgorithm)又叫基因进化算法,或进化算法。属于启发式搜索算法一种,这个算法比较有趣,并且弄明白后很简单,写个100-200行代码就可以实现。在某些场合下简单有效。本文就花一些篇幅,尽量白话方式讲解一下。      首先说一下问题。在我们学校数据结构这门功课的时候,时常会有一些比较经典的问题(而且比较复杂问题)作为学习素材,如八皇后,背包问题,染色问题等等。上面列出的几个问题都可以通过遗传算法去解决。本文列举的问题是TSP(TravelingSalesmanProblem)类的问题。   

2、   TSP问题实际上是”哈密顿回路问题”中的”哈密顿最短回路问题”.如下图,就是要把下面8个城市不重复的全部走一遍。有点像小时候玩的画笔画游戏,一笔到底不能重复。TSP不光是要求全部走一遍,并且是要求路径最短。就是有可能全部走一遍有很多走法,要找出其中总路程最短的走法。      和这个问题有点相似的是欧拉回路(下图)问题,它不是要求把每个点都走一遍,而是要求把每个边都不重复走一遍(点可以重复),当然欧拉回路不是本算法研究的范畴。 本文会从TSP引申出下面系列问题1、 TSP问题:要求每个点都遍历到,而且要求每个点只

3、被遍历一次,并且总路程最短。2、 最短路径问题:要求从城市1到城市8,找一条最短路径。3、 遍历m个点,要求找出其距离最短的路线。(如果m=N总数,其实就是问题1了,所以问题1可以看成是问题3的特例)。 遗传算法的理论是根据达尔文进化论而设计出来的算法:人类是朝着好的方向(最优解)进化,进化过程中,会自动选择优良基因,淘汰劣等基因。在上面tsp问题中,一个城市节点可以看成是一个基因,一个最优解就是一条路径,包含若干个点。就类似一条染色体有若干基因组成一样。所以求最短路径问题,可以抽象成求最优染色体的问题。遗传算法很简单

4、,没有什么分支判断,只有两个大循环,流程大概如下   流程中有几个关键元素:        1、 适度值评估函数。这个函数是算法的关键,就是对这个繁衍出来的后代进行评估打分,是优秀,还是一般,还是很差的畸形儿。用这个函数进行量化。在tsp中,路径越短,分数越高。函数可以可以这样fitness=1/total_distance.或者fitness=MAX_DISTANCE–total_distance.不同的计算方法会影响算法的收敛速度,直接影响结果和性能。        2、 选择运算规则:又称选择算子。对应着达尔文理

5、论中适者生存,也有地方叫着精英主义原则,意思就是只有优秀的人才有更大的几率存活下来,拥有交配权。有权利拥有更多后代,传承下自己血脉基因。和现实中很相像,皇帝权臣遗留下来的子孙后代比较多。选择方法比较多。最常见的是roundrobinselection算法,即轮盘赌算法,这个算法比较简单有效。选择算法目前已有的有10来种之多。各种不同业务可以按需选择。            选择公式如下:    1.//选择运算---轮盘赌,此算法要求不能有负数. 2.    int32_tGenetic::Selection(Geno

6、me&selGenome)3.    {4.        //生成一个随机浮点数        //本算法在轮盘赌算法上加上了选择概率,提高最大可行解入围概率1.        doubleftmp=(((random())%100001)/(100000+0.0000001));2.        if(ftmp>0.9)3.        {4.            GetBestGenome(selGenome);5.            returnESUCCESS;6.        }7.      

7、  //生成一个【0,m_dTotalFitness】之间的随机浮点数8.        doubledRange    =(((random()+random())%100001)/(100000+0.0000001))*m_dTotalFitness;9.        doubledCursor    =0.0;10.        size_ti        =0;11.        12.        for(i=0;i

8、       dCursor+=m_vGenome[i].dFitness;15.            16.            if(dCursor>dRange)17.            {18.                break;19.            }20.        }21.22.     

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。