VectorLu

遗传算法初探

遗传算法——听上去颇为神秘有趣,那么遗传算法究竟是什么呢?应该如何用代码实现这一算法呢?

遗传算法理论简介

基本概念

  • 基因:组成染色体的单元,可以表示为一个二进制位,一个整数或一个字符等。
  • 染色体:表示待求解问题的一个可能解,由若干基因组成,是 GA 操作的基本对象。
  • 个体:在本节中个体等同于染色体,从基因角度而言称为染色体,从适应度函数角度称为个体。
  • 群体:一定数量的染色体组成了群体,表示 GA 的遗传搜索空间。
  • 适应度:代表一个染色体所对应解的优劣,通常由某一适应度函数表示。

基本操作:

  • 选择:根据个体的适应度,在群体中按照一定的概率选择可以作为父本的个体,选择依据是适应度大的个体被选中的概率高。选择操作体现了适者生存、优胜劣汰的进化规则。
  • 交叉:将父本染色体的基因按照一定概率随机地交换,形成新的染色体。
  • 变异:按一定的概率改变染色体内的某个基因值。

主要处理步骤:

  1. 对优化问题的解进行编码,即用染色体表示优化问题的可能解,组成染色体的元素称为基因。
  2. 适应度函数的构造和应用——因优化问题的目标函数而定。
  3. 以各染色体所对应的适应度函数值的大小决定哪些染色体适应生存,哪些被淘汰。
  4. 生存下来的染色体组成种群,形成一个可以繁衍下一代的群体。双亲遗传的结合通过编码之间的交叉 crossover 实现下一代的产生。新的染色体产生时,以一定概率发生基因变异,变异使解有更大的遍历性,防止过早收敛于局部极小值
您的支持将鼓励我继续创作!

热评文章