zoukankan      html  css  js  c++  java
  • 遗传算法

      遗传算法,很多博客把生物的遗传原理讲得相当到位,而对于算法的详细步骤及应用却避之不谈。本博客少量提及生物原理,然后介绍算法步骤及应用。写得很匆忙,暂时这么理解,多有错误,望读者见谅。

    一、生物原理及数学表示

      遗传算法,从生物角度看,对物种的选择是,“物竞天择,适者生存”。亲代通过基因重组和基因突变遗传和变异,产生子代。在子代中,适应能力强的继续生存,适应能力弱的死亡。循环如此,最终,有利基因得以保留,不利基因被迫淘汰。

      接着,我们把上述的原理用数学式子表示出来,才能真正地进行算法分析(可以用浮点表示法,也可以用二进制,这里以二进制为例)。虽然,这里对突然而来的表示感到不适,但先接受它,最后融会贯通。

    (1)淘汰

      一个种群中有许许多多这样的亲代,根据自己定义的适度值(适应能力)大小决定产生子代概率,如果不产生子代就意味着被淘汰了。

    (2)遗传变异

      基因重组:

      亲代:001|101  110|111 

      子代:001|111  110|101

      观察到,交叉点后面对换

      基因突变:

      亲代:10|1011

      子代:10|0011

      观察到,交叉点处逆位

      ...

      还有很多变异方式。

    (3)重复上述两个步骤,直到不满足循环条件

    二、如何将生物原理和实际的优化问题联系起来

      原理就是这么简单,难得是这个遗传原理如何具体地和优化联系起来。

    举例:

      f(x1,x2)=x12+x1x2+x2+5

      0≤x1,x2≤10

      解的精度为0.001

    (1)

      先转成二进制。既然解的精度为0.001,而解的范围为0~10。这意味着总共有1 0000种可能。从0~1 0000用二进制表示它。14位二进制可以表示。

      10 1100 0111 0011 11 0110 0100 1100

      前14位为x1,后14为为x2

    (2)

      多个亲代形成种群。根据适应度大小决定产生子代的概率,然后进行遗传变异,然后根据适应度淘汰。适应度是啥?怎么选?没经验,就是知道有的情况直接使用目标优化函数来做适应度计算。

      先避开适应度函数的选择,设为g(x1,x2),对n个亲代,求其适应度设为gi(x1,x2),i=1,2,...,n。那么这些亲代产生后代的概率分别为

      pi=gi(x1,x2)/Σ(gi(x1,x2))

      化成轮盘的情况:

      这个轮盘根据pi的大小画出。根据轮盘的旋转停下来的指向决定哪个亲代可以产生子代,产生一定数量的子代后停止旋转。

      对产生的子代进行遗传变异。

    (3)重复步骤(2),直到不满足循环条件

    三、其他的机制

      精英机制。产生后代后,发现某亲代比它的子代适应度大,用该亲代取代子代继续繁殖。

    四、算法流程

    五、比喻

      从前,有一大群袋鼠,它们被莫名其妙的零散地遗弃于喜马拉雅山脉。于是只好在那里艰苦的生活。海拔 低的地方弥漫着一种无色无味的毒气,海拔越高毒气越稀薄。可是可怜的袋鼠们对此全然不觉,还是习惯于活蹦乱跳。于是,不断有袋鼠死于海拔较低的地方,而越是在海拔高的袋鼠越是能活得更久,也越有机会生儿育女。就这样经过许多年,这些袋鼠们竟然都不自觉地聚拢到了一个个的山峰上,可是在所有的袋鼠中,只有聚 拢到珠穆朗玛峰的袋鼠被带回了美丽的澳洲。

    参考文献:

    很好的比喻:http://blog.csdn.net/emiyasstar__/article/details/6938608

    很好的例子:http://blog.csdn.net/b2b160/article/details/4680853/

    插图来源:http://www.360doc.com/content/11/0130/15/991597_89950992.shtml

      

  • 相关阅读:
    CentOS7安装(三)- 配置阿里云yum源
    OSQA的配置
    MySQL学习 (三) Limit-Distinct-Union
    MySQL学习(二)-字段类型及约束
    MySQL学习(一)-基本知识
    Python闭包
    软件测试面试常考点
    人生感悟
    常用的Linux命令
    细说php一些常见的知识点
  • 原文地址:https://www.cnblogs.com/Wanggcong/p/4695249.html
Copyright © 2011-2022 走看看