一群平地山羊在猎人数代的围剿之下跑到山顶生活,逐渐进化成山地山羊。海滩上五角星形状的贝壳总是被人拣去,经过十数万代的演化后,几乎所有的贝壳都变成了圆形。

生物和进化的力量是强大的。这两个故事表明了,只要有足够有趣的筛选法则,生物会进化成很奇妙的样子。

真正将山羊或者贝壳繁殖数十万代需要很长很长时间,而使用电脑中饲养的电子生物进行模拟可以大大缩短进化时间。

为了求函数sin(10 * x) * x + cos(2 * x) * x在区间[0,5]上的极大值,便可以先养一群紫色的点,让这群点生活在这段函数图像之中,不断向著高处进化。

要通过100个三角形来生成firefox或者chrome的图标,也可以养一群由100个三角形构成的图片,让这群图片向著目标进化。

在动画片《瑞克和莫迪》中,瑞克通过创造一个微宇宙,让整个微宇宙中的所有人不断踏脚踏板来产生能量为自己的汽车电池供电。这听起来挺混蛋的,但是遗传演算法差不多在干同样的事情——在电脑中创造一个种群,让他们互相交配、变异、优胜劣汰,繁衍数万代。这些种群中的个体死也不会知道,自己丰富多彩充满了交配和变异的一生只是为了解决某个数值优化问题而存在的,并且得到的解还不是最优解。

唯有赵忠祥老师才能为二进位数字构成的小动物们的一生附上生命的意义:

数百年以来,紫斑山羊群落一直生活在sin(10 * x) * x + cos(2 * x) * x山谷。现在正是山谷的春季,羊群遍布在区间[0,5]的每一个角落,四处寻找食物。羊宝宝0110010110诞生在去年冬天,现在正好奇地打量著家门外刚刚孵化和苏醒的世界。它在出生时只有十个位元组长度,由4个0和6个1组成。有了温暖的阳光和充足的干草,它就可以快快长大,迎来自己的变异与交换,获得新的性状。

羊爸爸0111100110爬上坐标2处的山峰,寻找一家人每日所需。黄花苜蓿是一种多年生的草本植物,也是小羊的最爱。这些植物广泛分布于山坡的顶部和朝阳面,倒卵形或长倒卵形的叶子富含蛋白质,可以为小羊一家提供一天的养分。然而今天,羊爸爸的运气不好,仅仅找到了被啃食过的草根和三叶草种子。

小羊在半岁左右便可以性成熟,每年的夏天都是交配的季节。公羊和母羊交换彼此的DNA片段,组合出新的、适合生存的性状。不适合生存的羊将会被大自然无情地淘汰。

变异是羊群中偶尔会发生的现象。小羊的哥哥0101111101在去年的秋天发生了变异,其中的0001序列变成了1101。因此,他获得了更加强健的腿部肌肉和更加有攻击力的羊角。正是这样的变异,让他在去年的秋天逃过了猎人的围捕。

区间[0,1]坡度平缓,食物丰富,很适合羊群嬉戏。小羊0110010110第一次出游需要妈妈的陪伴。在小羊躺在地上打滚儿的同时,羊妈妈警惕地注视著周围。尽管阳光明媚,春光灿烂,但是一头不怀好意的长角成年公羊仍会成为未成年小羊们的威胁。

然而,真正的威胁并不源于其他羊群,而是来自于山下的猎人。生活在山脚下的亚美利加人是世代的猎人,孩童十岁后便要跟著成年人去捕猎。亚美利加人的脚趾和跖骨比其他人种要长,更加适合在平原上奔跑追逐羊群。每年秋季是捕猎的季节,山谷中的羊群要么爬过陡峭的山坡躲到山顶,要么被勤劳的猎人捕捉回家成为过冬的食物。久而久之,经过数年的进化,羊群们更加倾向于生活在海拔更高的地方。

人与羊的故事年年在发生,年年在重复。几百年后,上帝降临山谷,抓去了生活在最高处的羊,记录了栖息地的海拔高度,得到了函数在区间上的极大值。得到数据之后,上帝随手扔颗陨石,摧毁了紫斑山羊、摧毁了亚美利加猎人、摧毁了整个山谷。

The end.


推荐阅读:
查看原文 >>
相关文章