遗传算法是什么?
遗传算法(GA)是基于进化和遗传原理的问题求解系统,该算法是由美国密执安大学John Holland教授于1975年正式提出的。Holland创建了一个用二进制字串表示的电子有机体(染色体),然后使用适应比例选择的遗传进化原理进行繁殖(包括随机杂交和变异),用于高效地搜索巨大的求解空间。所谓的遗传程序设计语言,也应用了相同的原理,但往往利用基于树的内部数据结构来代替比特串作为“染色体”。
计算系统性能价格比的不断改进使得遗传算法对某些类型的优化问题颇具吸引力。尤其是对于连续和离散相混合的组合优化问题,遗传算法相当成功。与梯度搜索方法相比,该算法不容易陷入局部最优。
遗传算法是基于生物学的,理解或编程都不太难。下面是遗传算法的一般算法:
创建一个随机的初始状态
初始种群是从解中随机选择出来的,将这些解比喻为染色体或基因,该种群被称为第一代,这和符号人工智能系统的情况不一样,在那里问题的初始状态已经给定了。
评估适应度
对每一个解(染色体)指定一个适应度的值,根据问题求解的实际接近程度来指定(以便逼近求解问题的答案)。不要把这些“解”与问题的“答案”混为一谈,可以把它理解成为要得到答案,系统可能需要利用的那些特性。
繁殖(包括子代突变)
带有较高适应度值的那些染色体更可能产生后代(后代产生后也将发生突变)。后代是父母的产物,他们由来自父母的基因结合而成,这个过程被称为“杂交”。
下一代
如果新的一代包含一个解,能产生一个充分接近或等于期望答案的输出,那么问题就已经解决了。如果情况并非如此,新的一代将重复他们父母所进行的繁衍过程,一代一代演化下去,直到达到期望的解为止。
并行计算
非常容易将遗传算法用到并行计算和群集环境中。一种方法是直接把每个节点当成一个并行的种群看待。然后有机体根据不同的繁殖方法从一个节点迁移到另一个节点。另一种方法是“农场主/劳工”体系结构,指定一个节点为“农场主”节点,负责选择有机体和分派适应度的值,另外的节点作为“劳工”节点,负责重新组合、变异和适应度函数的评估。
就是基因算发