程序实现---遗传法与最小生成树算法解决旅行商问题分析对比.docVIP

程序实现---遗传法与最小生成树算法解决旅行商问题分析对比.doc

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
程序实现---遗传法与最小生成树算法解决旅行商问题分析对比

遗传算法与最小生成树算法解决旅行商问题分析对比 摘要: 本实验采用遗传算法实现了旅行商问题的模拟求解,并在同等规模问题上用最小生成树算法做了一定的对比工作。遗传算法在计算时间和占用内存上,都远远优于最小生成树算法。这间接证明了智能算法在解决大规模问题上性能优于传统算法 程序采用Microsoft visual studio 2008 结合MFC基本对话框类库开发。32位windows 7系统下调试运行。 引言 遗传算法(Genetic Algorithm)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法,由密歇根大学的约翰?霍兰德和他的同事于二十世纪六十年代在对细胞自动机(英文:cellular automata)进行研究时率先提出, 并于1975年出版了颇有影响的专著《Adaptation in Natural and Artificial Systems》,GA这个名称才逐渐为人所知,约翰?霍兰德教授所提出的GA通常为简单遗传算法(SGA)。在二十世纪八十年代中期之前,对于遗传算法的研究还仅仅限于理论方面,直到在伊利诺伊大学召开了第一届世界遗传算法大会。随着计算机计算能力的发展和实际应用需求的增多,遗传算法逐渐进入实际应用阶段。1989年,纽约时报作者约翰?马科夫写了一篇文章描述第一个商业用途的遗传算法--进化者(英文:Evolver)。之后,越来越多种类的遗传算法出现并被用于许多领域中,财富杂志500强企业中大多数都用它进行时间表安排、数据分析、未来趋势预测、预算、以及解决很多其他组合优化问题。 遗传算法是从代表问题可能潜在的解集的一个种群(population)开始的,而一个种群则由经过基因(gene)编码的一定数目的个体 individual 组成。每个个体实际上是染色体 chromosome 带有特征的实体。染色体作为遗传物质的主要载体,即多个基因的集合,其内部表现(即基因型)是某种基因组合,它决定了个体的形状的外部表现,如黑头发的特征是由染色体中控制这一特征的某种基因组合决定的。因此,在一开始需要实现从表现型到基因型的映射即编码工作。由于仿照基因编码的工作很复杂,我们往往进行简化,如二进制编码,初代种群产生之后,按照适者生存和优胜劣汰的原理,逐代(generation)演化产生出越来越好的近似解,在每一代,根据问题域中个体的适应度(fitness)大小选择(selection)个体,并借助于自然遗传学的遗传算子(genetic operators)进行组合交叉(crossover)和变异(mutation),产生出代表新的解集的种群。这个过程将导致种群像自然进化一样的后生代种群比前代更加适应于环境,末代种群中的最优个体经过解码(decoding),可以作为问题近似最优解[1]。 遗传算法是借鉴生物界的进化规律(适者生存,优胜劣汰遗传机制)演化而来的。其主要特点是直接对结构对象进行操作,不存在求导和函数连续性的限定;具有内在的隐并行性和更好的全局寻优能力;采用概率化的寻优方法,能自动获取和指导优化的搜索空间,自适应地调整搜索方向,不需要确定的规则。遗传算法的这些性质,已被人们广泛地应用于组合优化、机器学习、信号处理、自适应控制和人工生命等领域。它是现代有关智能计算中的关键技术。 综述: 程序总体流程图: 这个程序的思想是,随机生成“地点数”编辑框输入的数字的地点,存储在一个vector里。然后用一个“基因类”表示该基因代表第几个点,接着一个“基因组类”有序包含了很多“基因类”,如果一个“基因组类”包含的基因类顺序为:基因组.基因0].data 第二个点;基因组.基因1].data 第三个点;基因组.基因3].data 第一个点;就说明该基因组表示的连线顺序是从第二点连到第三个点再连到第一个点。10个城市为 0 1 2 3 4 5 6 7 8 9 ,随机地组成一个染色体(以下所有情况都以10个城市为例说明)。 约定这10个城市之间的行走路线为: 其余基因序列的路线同样道理 接着有一个“遗传机器类”包含了很多基因组。基因组的数量由“”编辑框决定。初始化的时候,每个基因组的基因顺序是随机决定的。进行第一代进化的时候,遍历vector ,计算每个基因组代表的连线方式的连线长度。连线长度越长,说明这个基因组越差劲,因为我们要计算以何种方式连线连线长度最短。我们用不适应度来记录连线长度。接着就是选择哪个基因组可以生育,遗传给下一代。我采用了一个轮盘赌的策略,尽可能选择不适应度低的基因组进行生育。选择出的基因组进行交换变异后,就把这个基因组复制给下一代。最后,选择两个最好的基因组,不进行任何变异,直接复制到下一代。这样循环反复,迭

文档评论(0)

whemm + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档