Word害我重写=_=顺便重新整理下思路
背景:写论文时用到遗传算法,花了近一周时间,还算理解了算法以及能够进行基础的编程实现(保持谦虚)。
说明:具体的实现没敢细讲,主要是原理的方法上的介绍(讲解都算不上)。
先说说算法学习,个人觉得首先需要了解这个算法是拿来干嘛的,然后学习它的理论原理,多看懂几遍总是好的;结合实际例子,接着把算法的每一块儿研究清楚,通篇理解后,自己试着编程实现,这样学起来感觉也还不错。
关于遗传算法原理:模拟自然界优胜劣汰的进化现象,把搜索空间(问题解的组成空间)映射为遗传空间,把可能的解编码成一个向量——染色体,向量的每个元素称为基因。通过不断计算各染色体的适应值,选择最好的染色体,获得最优解。
简单说,就是给你一堆人儿(解和种群),让你选择一部分基因优良(解的适应度更高,比如值更大)的人出来,让他们生小孩组成后代(选择交叉和变异),把这些后代和之前选出来的父代,再比较基因优良,再选择,再遗传,这样循环,最后找出一个超级英雄(最优解)就达到目的了。
这样类似于一种无目的的搜索式寻找最优,不过遗传算法的效率更高。
关于原理,知乎上有些通俗好玩的文章可以看下:https://www.zhihu.com/question/23293449
关于算法步骤:从原理也可以总结出,主要步骤包括,适应度函数的设计,编码,选择,交叉,变异。
即是说,我们主要能用代码实