1975年,美国的Holland教授在他的专著《自然界与人工系统的适应性》中首先提出了遗传算法(Genetic Algorithm,GA),它是一类借鉴了生物界中自然选择和遗传的随机化搜索算法。遗传算法有很多的优点,如鲁棒性、并行性、自适应性和快速收敛,可以应用于图像处理领域中图像分割技术来确定分割阈值。
遗传算法的搜索机制:遗传算法模拟自然选择和自然遗传过程中发生的繁殖、交叉和基因突变现象,在每次迭代中都保留一组候选解,并按某种指标从种群中选取较优的个体,利用遗传算子(选择、交叉和变异)对这些个体进行组合,产生新一代的候选解群,重复此过程,直到满足某种收敛指标为止。
遗传算法的基本组成:(1)编码(产生初始种群);(2)适应度函数;(3)遗传算子(选择、交叉、变异);(4)运行参数。
参数编码、种群的初始化设定、适应度函数的设计、遗传操作设计和控制参数设定等五个要素组成了遗传算法的核心内容。
遗传算法的基本概念:参数编码、适应度函数(Fitness)、选择算子、交叉算子、变异算子。
参数编码:GA是通过某种编码机制把对象抽象为由特定符号按一定顺序排成的串。正如研究生物遗传是从染色体着手,而染色体则是由基因排成的串。SGA使用二进制串进行编码。
适应度函数(Fitness):适应度高的个体遗传到下一代的概率就越大,适应度低的个体遗传到下一代的概率就相对就小。(1)对个体编码串进行解码处理后,可得到个体的表现型;(2)由个体的表现型,可计算出对应个体的目标函数值;(3)根据最优化问题的类型,由目标函数按一定的转换规则求出个体的适应度。
选择算法:选择算子是从群体中按某一概率成对选择个体,某个体被选择的概率Pi与其适应度函数值成正比。选择算子有很多,最常用的是比例选择算子(赌盘法)。它是把当前的个体按与适应度成正比的概率复制到新的群体中去。
基本步骤如下:
(1) 先计算出群体中所有个体的适应度函数的总和;
(2) 其次,计算出每个个体的相对适应度的大小,即各个个体被遗传到下一代群体中的概率。
(3) 最后使用模拟赌盘操作(即0和1之间的随机数)来确定各个个体被选中的次数。
交叉算子:交叉算子将被选中的2个个体的基因链按概率进行交叉,生成2个新的个体,交叉位置是随机的。
单点交叉算法示例:
交叉前00000|01110000011
11100|00001111110
交叉后11100|01110000011
00000|00001111110
变异算子:变异算子将新个体的基因链的各位按概率进行变异,对二值基因链来说即是取反。
遗传算法的基本流程图: