美文网首页数据结构和算法分析
这可能是有史以来最容易理解的遗传算法

这可能是有史以来最容易理解的遗传算法

作者: 黑盒理论 | 来源:发表于2018-04-23 19:35 被阅读5次

    首先有一个种小东西,它们都生活在大草原上,跑的快的就不会被吃掉,就可以生存下来。

    这个东西的一般是长这样的:

    它由几个元素组成:

    Node,暂且把它叫做,也就是上图圆圆的东西颜色越深表示和地面的摩擦力越大

    Muscal,肌肉连接圆圈的粗线,颜色越深越粗的肌肉表示更有力量,而且每一条肌肉都有不同的原始长度。肌肉越强,他就越有能力拉动连接的两个Node

    还有最重要的下图:时钟。也就是这些肌肉有拉长的时间和收缩的时间。在拉长时间,肌肉总想让两腿之间距离变远,收缩时间肌肉又想让腿之间距离近。

    是不是很复杂?

    其实就可以想象一下:几个铁球被几根橡皮筋连接在一起,橡皮筋在有规律的抽动,然后这个东西随着抽动会向前跑。

    所以然后我们的目标来了:什么样的这样的东西(几个球,几根皮筋,强度多少)可以跑的最快?

    就是遗传算法发挥作用的时候到了。

    第一步,第一批种子选手

    遗传算法首先要有父本。也就是初始的一些这样的小东西。

    一般来说要是我们知道一些知识,比如大概知道什么样子的东西可以跑的快的话,可以挑一些出来作为父本。

    但是我们现在连这些东西怎么跑都不知道,怎么会知道哪个跑的快?

    于是最粗暴的就是:随便来1000个!

    100个随机生成的小东西。有三条腿的,也有四条五条六条七条的,肌肉也有多有少。然后我们看看他们跑的怎么样。

    第一位选手:

    怎么说呢,在一阵蠕动当中,一号选手竟然可以在15秒跑出差不多1米的距离。表现非常不错!

    你以为这个不够快?

    看看比如2号选手:

    “请不要躺在地上”

    还有其他选手:

    总体来说,因为是全部随机生成的选手,很多都只能留在原地,而且有一半选手选择了向后退而不是向前。

    遗传算法第二步:生存

    “适者生存”

    第一代的父本,按照在15秒之内跑的距离排序。跑的慢的就会被淘汰掉。

    1000个小东西按照跑的快慢排序

    但是,并不一定是所有跑的慢的都会大自然就一定会被淘汰掉。只是说,跑的快的更容易保留下来,跑的慢的更容易死掉

    大自然就是这么神奇,会允许一些幸运的弱者生存下来。说不定会在下一代表现出不一样的特点。

    第一代的1000个,淘汰掉一半,剩下的才有资格作为下一代的父本,留下基因。下图黑色的代表被淘汰了。

    遗传算法第三步:产生后代

    就像两个黑头发生下来有大概率是黑头发,父母都1米9生下孩子大概率都也会很高。但是也会有两个父母都不聪明生的天才小孩。

    遗传算法里也是一样,两个父亲(不要在意这些细节)结合产生的后代,有可能“腿”会不一样粗:

    也很有可能“肌肉”会不一样强壮:

    但是也会相对比较少见有变异的:

    腿不一样多。当然都是大自然的力量,和隔壁住了谁关系不大。

    变异在遗传算法中的意义就在于:就算父本的基因中不包含有最佳的基因(比如父本都是5条腿,但是最佳的方案其实是3条),也有可能会通过变异产生。变异的结果如果很好,就会留下来成为新的父本。这样下一代群体中就包含了最佳的基因。

    于是我们又有了下一代:上一代500个样本的孩子-->1000个新的样本。

    遗传算法最后一步:迭代

    我们已经有了完整的过程,

    1. 有一个群体

    2. 群体根据成绩(目标函数)随机淘汰

    3. 交叉产生新的群体

    4. 群体再次淘汰

    5. 不断的重复3和4,直到找到满足条件的样本(达到要求),或者群体不能再显著的进化。

    我们看一下这样的遗传算法,最终可以达到什么样子的效果

    到第10代的时候,跑的最快的一个已经可以在15秒跑到快3米。跑起来是这个样子的

    这个小东西有5条腿,已经可以稳定向前蠕动

    到了第30代:

    感觉已经要快飞起来了。还是5条腿。

    30代的时候,跑的最快的一个已经可以在15秒内跑到6米,而中间值(千人马拉松第500名)也可以跑到3米。整个群体都在飞快的进步

    这个图显示了进化中每一代跑的最快的(上边黑线)和群体中位数(红线)的成绩。

    然后到了62代,一个有4条腿的家伙成为了新的冠军:

    看来是进化的力量发挥了作用。有4条腿的族群中进化出现了一个非常利于跑步的结构:后边一条黑色腿,前边一条白色腿,中间两条相似的腿。

    而且在整个群体中,4条腿6根肌肉的生物也占据了大部分,其他3条腿,5条腿的大多慢慢都被淘汰了。

    结果

    到了300代的时候,增长速度变得非常缓慢,停止模拟。

    这一代里有个叫博尔特的跑的简直要飞起来了,我们欣赏一下:

    大自然真是神奇~学到了么?

    ——————

    关注我会有意想不到的事情发生

    还有有喜欢的可以关注我,关注我的知乎专栏,或者我的微信公众号 /投稿/聊天

    机械+数据工程师/职业发展/一起成长

    机械数据工程师的未来​zhuanlan.zhihu.com

    文章预告:

    如何从机械转到数据?

    和专业的出身的数据分析师相比没有竞争力,工业背景的数据分析师可以做什么?

    相关文章

      网友评论

        本文标题:这可能是有史以来最容易理解的遗传算法

        本文链接:https://www.haomeiwen.com/subject/fyallftx.html