启发式搜索算法3 -遗传算法

相关文章:
启发式搜索算法1 – 最佳优先搜索算法
启发式搜索算法2 – A*算法

人类是非常聪明,在面对复杂问题的时候都懂得寻找事物规律,适当简化问题,最终找到方法解决问题。比如在使用牛顿三大力学定律的时候,前提条件是忽略了摩擦力,物体间的引力等。就算后面出现了相对论,量子力学,更加严谨地解释了这个世界的运行规律,但这些古老力学定律还是有它们的用武之地。在算法上也体现这样的行为方式,如分治算法和动态规划都是把问题拆解和简化,再逐一解决。但有时候过于简化问题,得到的结果就离实际情况越远,毕竟忽略了很多现实中的问题。在面对复杂问题时候,提出了遗传算法,学习大自然的生物进化模式,来解决问题。

遗传算法(genetic algorithm)

是用于解决最优化的搜索算法,是进化算法的一种。遗传算法基于自然选择和遗传学的思想。这是随机搜索的智能化优化,可将搜索引导到解决方案空间中性能更好的区间。其优点是原理和操作简单、通用性强、不受限制条件的约束,全局解搜索能力,而且天生具有并行性,代码很容易放到集群上进行分布式并行处理,它们通常用于优化问题和搜索问题,提供比较有效的解决方案。

遗传算法就是模拟自然选择的过程,物竞天择,适者生存,只有适应环境的种群才能繁殖并进入下一代。简而言之,他们在连续几代人中模拟“适者生存”,以解决问题。每一代都由一群人组成,每个人代表搜索空间和可能解决方案中的一个点。在程序中可以用字符串,整数,浮点数或者位来表示每一个人,类似于染色体都是独一无二的解。下面来认识遗传算法的几个相关概念和解题思路。
遗传算法的基本思路是模拟种群染色体的遗传结构和行为,大家想一想动物是怎样择偶的。

  • (1)个体在有限的资源里面争取资源和交配权力。
  • (2)那些最强壮的个体(适应者)就有更多交配权,产生更多的后代。我们知道在猩猩,狮子,狼等群居动物,一般只有一只雄性拥有交配权,它也是通过打败其他雄性对手才能做到这个领地的王者。
  • (3)优秀父母的基因会传播给他们下一代,下一代很有可能超越父母成为更好的后代。 (4)通过这样的方式每一代都会更适合这个生活环境。

染色体怎样表示呢?它和问题的解有什么关系?

每个个体是搜索空间中的一个解,它们会被编码,编码的长度取决于问题的可变成分,因此一条染色体(个体)由几个基因组成,如图所示。
在这里插入图片描述

如何判断哪些是适应者?

此时需要构建一个适应能力评分函数,计算每一个个体的适用能力,从中挑选最佳适应者。遗传算法可维护n个个体(染色体或问题的一个解)的种群及其适应能力评分,适应能力评分较高的个体比其他个体具有更多的繁殖机会。这些个体通过结合父母的染色体而交配并产生更好的后代。个体数量总是不变的,因此必须为新生命开辟空间。当上一代的所有交配机会都用尽时,一些个体就会死亡并被新生命代替,最终创造了新一代。算法总是希望在新生代中找到更好的解决方案,同时使最不适合的个体死亡。

一般情况下,新一代都比前几代有更多好基因。因此每个新生代都有比前几代更好的“部分解决方案”。一旦产生的后代与前几代的适应能力没有显着差异,该种群便已经完全适应了这个环境,也可以说该算法已收敛到该问题的一组解决方案了。

怎样模拟种群的繁衍?两个个体基因怎样遗传给下一代?盘古开天,创建初生代后,然后算法将使用以下操作来模拟演化。

1.选择操作:挑选优秀适应者(适应能力评分高的个体),让他们将基因传递给后代。一般的遗传算法都有一个交配概率,范围一般是0.6~1,这个交配概率反映两个被选中的个体进行交配的概率。例如,交配概率为0.8,则80%的“夫妻”会生育后代。

2.交叉操作:模拟个体之间的交配,使用选择操作挑选两个个体,并随机选择交叉位置。然后交换这些交换位置的基因,从而创造出一个全新的个体(后代)。如下图所示,分别挑选两个个体不同部分,组合为一个新个体。
在这里插入图片描述
3.突变操作:模拟自然界中的基因突变,在后代中插入随机基因以保持种群的多样性。一般遗传算法都有一个固定的突变常数(又称为变异概率),通常是0.1或者更小,这代表变异发生的概率。根据这个概率,新个体的染色体随机的突变,通常就是改变染色体的一个字节,如图所示。
在这里插入图片描述
遗传算法看上去就像拥有生命的算法,多么神奇,那么它的实际效果如何呢?,什么问题适合使用呢?适应能力评估函数,交配概率,突变概率需要怎样设置?

请看下一篇:遗传算法实践:吊死鬼游戏

  • 22
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值