一、概念
遗传算法(Genetic Algorithm, GA) 是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。
- 基因型:性状染色体的内部表现
- 表现型:染色体决定的性状的外部表现
- 编码:表现型到基因型的映射
- 解码:基因型到表现型的映射
- 适应度:度量某个物种对于生存环境的适应程度。
遗传算法并不保证你能获得问题的最优解,但是使用遗传算法的最大优点在于你不必去了解和操心如何去“找”最优解。
二、进化环节
1、编码
编码方法影响到交叉算子、变异算子等遗传算子的运算方法,很大程度上决定了遗传进化的效率。
常用的编码方法:二进制编码法、浮点编码法、符号编码法。
二进制编码法:
它由二进制符号0和1所组成的二值符号集,例如:11011100001
长度的设置对最终的结果有较大的影响
优点:简单
缺点:由于其随机性使得其局部搜索能力较差,存在着连续函数离散化时的映射误差。
浮点编码法
个体的每个基因值用某一范围内的一个浮点数来表示。例如0.2-1.9-5.2.-0.9-2.0-5.3
必须保证基因值在给定的区间限制范围内。
优点:适用于精度要求较高,范围较大
符号编码法
个体染色体编码串中的基因值取自一个无数值含义、而只有代码含义的符号集。例如:ABCDFEFG
优点:符合有意义积术块编码原则
2、适应度函数
适应度函数也称评价函数,是根据目标函数确定的用于区分群体中个体好坏的标准。适应度函数总是非负的,而目标函数可能有正有负,故需要在目标函数与适应度函数之间进行变换。
评价个体适应度的一般过程为:
对个体编码串进行解码处理后,可得到个体的表现型。
由个体的表现型可计算出对应个体的目标函数值。
根据最优化问题的类型,由目标函数值按一定的转换规则求出个体的适应度。
3、选择函数
确定从父代群体中选取那些优秀个体的方法,选择操作用来确定重组或交叉个体,以及被选个体将产生多少个子代个体。
常用的选择算子:轮盘赌选择、随机竞争选择、竞标赛选择
轮盘赌选择
回放式随机采样方法,被选择的概率等于它的适应度值与整个种群中个体适应度值和的比例。
缺点:误差较大
随机竞争选择
每次按轮盘赌选择一对个体,然后让这两个个体进行竞争,适应度高的被选中,如此反复,直到选满为止
竞标赛选择
每次选取几个个体中适应度最高的一个个体遗传到下一代群体中。
4、交叉
将选择出来的两个染色体按某种方式相互交换其部分基因,从而形成两个新的个体。
根据交叉点,进行交换。
如下图:
5、变异
将个体染色体编码串中的某些基因座上的基因值用该基因座上的其它等位基因来替换。
为了避免陷入局部最优。
如,变异前为 101100001,变异后 001100001
6、复制
每次进化中,为了保留上一代优良的染色体,需要将上一代中适应度最高的几条染色体直接原封不动地复制给下一代。
三、整体流程
- 随机产生种群。
- 根据策略判断个体的适应度,是否符合优化准则,若符合,输出最佳个体及其最优解,结束。否则,进行下一步。
- 依据适应度选择父母,适应度高的个体被选中的概率高,适应度低的个体被淘汰。
- 用父母的染色体按照一定的方法进行交叉,生成子代。
- 对子代染色体进行变异
由交叉和变异产生新一代种群,返回步骤2,直到最优解产生。
参考文献
【优化算法】遗传算法(Genetic Algorithm) (附代码及注释)10分钟搞懂遗传算法(含源码)