本文属于个人学习总结,如有不足之处,请各位大牛指出,谢谢。
其中涉及的代码,个人均按照了一定的工程编码规范编码,使其具有可读性。在编码过程中参考了部分论文,由于记不清楚论文名称和作者了,不能一一列出,抱歉。
一、遗传算法:Genetic Algorithm
优化求解问题的一种方法,模拟生物进化过程,所以称遗传算法。
遗传算法的内容:
1)、编码
2)、适应度函数
3)、遗传进化
遗传算法不能直接处理问题空间的参数,必须把它们转换成遗传空间的由基因按一定结构组成的染色体或个体。这一转换操作就叫做编码,也可以称作(问题的)表示。
评估编码策略常采用以下3个规范:
a)完备性(completeness):问题空间中的所有点(候选解)都能作为GA空间中的点(染色体)表现。
b)健全性(soundness): GA空间中的染色体能对应所有问题空间中的候选解。
c)非冗余性(nonredundancy):染色体和候选解一一对应。
目前的几种常用的编码技术有二进制编码,字符编码,变成编码等。
而二进制编码是目前遗传算法中最常用的编码方法。即是由二进制{0,1}产生通常的0,1字符串来表示问题空间的候选解。它具有以下特点:
a)简单易行
b)符合最小字符集编码原则
c)便于用模式定理进行分析,因为模式定理就是以基础的
2.适应度函数
进化论中的适应度,是表示某一个体对环境的适应能力,也表示该个体繁殖后代的能力。遗传算法的适应度函数也叫评价函数,是用来判断群体中的个体的优劣程度的指标,它是根据所求问题的目标函数来进行评估的。
遗传算法在搜索进化过程中一般不需要其他外部信息,仅用评估函数来评估个体或解的优劣,并作为以后遗传操作的依据。由于遗传算法中,适应度函数要比较排序并在此基础上计算选择概率,所以适应度函数的值要取正值。由此可见,在不少场合,将目标函数映射成求最大值形式且函数值,非负的适应度函数是必要的。