遗传算法的道理

遗传算法,按老蔡的理解,称为“进化算法”可能更贴切。进化,无疑是自然界中,最残忍、最无情的一种规则,自然界中,我们称之为“丛林法则”。

植物和动物在自然界中生长,为了更好地生存而繁衍、进化;程序在CPU中计算,内存中存储,为了更好地达到业务的需求而升级、打补丁。如此看来,两者好像有些形似了。

不同的动植物,对同一个环境的适应情况不同,水草应该在水中生长,鸟大多在树上筑巢,交换了环境,都会难以生存;

不同的需求导致产生不同的程序,库管,进销存,ERP,网页,嵌入式,游戏,程序只有用对了场景,价值才能体现出来。

从馄饨之中,万物诞生,有了这一套系统,就并不用需要上帝来一一创造生物,而有没有一个办法,一个系统,不用程序员就能实现编程呢?于是程序员这一群懒人们之中有人想到了利用这个算法,让程序自己“进化”。

二进制的世界,对于人,无所谓残忍,就像我们的世界对于上帝来说,也或许没有什么感触。我们可以设计一个算法,让程序面对同一个选择的时候,自动选出不同的应对策略,而面对不同的多次选择,产生不同的策略集,就像“变异”出了不同的多种“基因”,并以交换“基因”的方式产生新的策略集,并在繁衍的同时淘汰掉最差的个体,将“种群”保持在一定的数量。

给出一个简单的需求达成的条件,经过几百轮迭代,就可以形成我们希望得到的程序的一个大致的样子;再多几千轮的优胜劣汰,就能和有经验的程序员编写出来的程序具有相当的效果。

人从猿进化到现在的智慧,也是在对生存环境的争夺中,在各种残酷的战争甚至屠杀中不断进化,不断优胜劣汰,才从智慧上甩开其他种群的生物那么大的一截。所以看透了这一切后,有时候理性到一定的程度,甚至会丧失同情心。

算法要达到人的智慧,需要模仿很多模仿生物的算法,等有空有心情,再说说神经网络。