考完六级我又满血复活啦,小伙伴们有没有想我呀,嘿嘿嘿,一定是有的吧。这次考六级可谓是呕心沥血了,不过还好结果还不错。
顺带提醒一下,今天是父亲节,记得给你们的爸爸打电话送祝福哦!!!
好啦,废话不多说,我们来开启今天的主题吧,那就是遗传算法啦。在这个愉快的节日里,就说一些相对轻松的内容吧。我们这次的遗传算法模块较多,所以分块也就较多,应该会有四次。
我们先来了解一下遗传算法的内容吧:
遗传,很容易就让我们想到了高中生物中学到的那些知识,没错,我们的遗传算法就是在自然界生物的进化中找到经验总结成算法。总的来说就是物竞天择,适者生存。
遗传算法可以用于处理数据域庞大的问题,然后选择出自己需要的数据。比如,我们要在-1~1中以10^(-10)的精度选择出我们需要的数据,如果把每个算出来,再进行比较你可以想象一下这需要多少次计算比较。但是遗传算法,可以帮助我们更快地找到需要的数据,具体的情况,下次实际操作中我们再来体会。
遗传算法的具体步骤就和我们种群的进化一样,有着自然界的选择,交叉以及变异:
1.自然界用染色体为我们编码,那我们仿照自然界可以用自己的方式为我们的变量空间编码(这个编码就是按照自己的需要灵活多变,常见编码有二进制编码),再产生一个特定大小的种群。
2.计算每一个染色体对环境的适应度。例,假如我们需要找到某个数集中映射到输入最大的点,那么我们用当前的数映射到输出的大小来作为适应度;
3.根据适应度我们可以进行选择下一代种群的染色体组成,此处常用赌盘法,但是也可以根据需要找到其他算法。
4.模仿自然界中的变异,我们也对染色体进行变异操作(此步骤可以帮助我们更加精确找到最适点)
5.我们经过选择,交叉,变异后获得了一个新的种群,继续进行第二个步骤,循环直到达到了我们想要的结果。
这就是遗传算法大概的框架啦,下次就是编码,适应度计算和赌盘法啦。有兴趣也可以自己事先学习哦。
领取专属 10元无门槛券
私享最新 技术干货