遗传算法的智慧:不唯名家,不拒草根
2021-08-19仇士鹏
仇士鹏
在高中生物课上,我们都学过自然选择、遗传进化的知识。正所谓:“师法自然,格物致知。”有人便从中提炼出了用于处理复杂优化问题的遗传算法。在大学及以后的科研实际中,遗传算法运用广泛。
遗传算法很简单,因为是对达尔文进化论的模拟,它包含了自然选择、基因重组和突变三个过程。打个比方,它们就像是加工厂,一堆原材料被输送进去,质量好的将会被留下,然后,随机交换彼此身上的一些特质,再随机进行突变。如果达到了出厂标准,就停止,否则便送回去重新加工。
遗传算法的核心便在于它的随机性,无论是选择、重组还是变异,都是以概率的方式进行操作。它并不是按照从高到低的排名方式僵硬地选择优秀的个体,而是用轮盘赌的方式——转动轮盘,在面积大的区域有较大的选中概率,而在面积小的区域也有较小的选中概率。
这种选择,不是门槛式的,而是筛子型的。它能让潜力很大,可是只露出冰山一角的,或者偏科严重,虽不足以遮百丑,但确实有一“白”的个体得以保留。这是一种“活”的选择方式。
因为一个人表现出的优劣和他本身的优劣并不是直接等同的关系。这是一个多元化、多维的世界,评语并不是只站在一条标准上指手画脚,而是在多方面的考量后综合评定的。但在特定条件下,评定的内容往往只有固定的几条标准。因此,在某些评价标准中,表现失色的人即使在别的方面有着极为峥嵘的头角,如果按照传统的排名方式,也会被放弃掉。这对整体的人才培养和个体的自我提升都是不利的。
有些钉子,想要露出布袋,也许只要一个机会。把它们留下来,发挥拿来主义,与其他钉子交换身上的特质,再进行突变,也许就能集百家之长,成为更逼近完美的钉子,脱颖而出。这是对怀才不遇者最好的成全。
当然,这种选择方式也有弊病。同样是因为随机性,一些本来就比较拔尖的个体会受到无妄之灾,优秀的特质反而被破坏,或者交换走了,结果跌落凡尘。如果不想成为别人的踏脚石,则只能不断提高自己,直到自己从成功率的分母中走出,走进分子,成为坚持到最后的那个人,凯旋时,仍是少年。
有人会问,为什么不把所有的情况一一列举出来,详细比对呢?因为在现实中,复杂问题涉及的可能方案的数量往往是以数量级为单位的,且其精度要求又高,即使用电脑计算,也容易导致死机。遗传算法解决了这个问题,它只要通过一群适量的个体不断进化,就可以找出最优秀的个体。
此外,遗传算法还可以成为“渔”,而不是“鱼”,换一种问题,也能迅速上岗,并不需要重新开始,一点点地罗列,重新编写程序。
这便是大自然给予人类的启迪。大自然在造物时,并不会把所有的物种都捏造出来,而是创造一部分,让他们成长、进化或者灭绝,最终使得世界缤纷多彩。在这一点上,自然選择和生物自身努力其实是互为因果的关系,共同推动着彼此的发展。
当然,遗传算法并不能找到绝对最佳的个体,有时候运气不好,随机性发挥了负面效果,结果就会很差。这时,它就要和其他算法相结合。遗传算法也变成了它概念下的一个个体,和别的算法相互交换优点,取长补短,进化出更优秀的算法,青出于蓝而胜于蓝。
(作者系河海大学水文学与水资源专业2020级工程硕士)