这一次读到的文章 遗传算法:内存中的进化 消除了对“遗传算法”的神秘和恐惧。
作者给出的例子很有意思。题目是“用100个三角形画一个firefox的logo”。评价solution的方法也简单,就是和手绘的logo尽可能的像。
遗传算法解决这类问题,按照“繁衍、变异、淘汰、终止”这个流程来组织代码。
理解文中的算法,有几个要点。个体由基因直接组成?看来,不如把个体的变异改用DNA的变异来描述。变异即是基因的替换。淘汰实现的关键是要有一个施加于个体的压力函数fitness function。文中的迭代终止条件很一般。
wolfel 的评论很中肯,该是对待遗传算法的正确态度。