一、遗传算法
1.介绍:遗传算法(Genetic Algorithm, GA)是近几年发展起来的一种崭新的全局优化算法。1962 年霍兰德 (Holland) 教授首次提出了 GA 算法的思想,它借用了仿真生物遗传学和自然选择机理,通过自然选择、遗传、变异等作用机制,实现各个个体的适应性的提高。从某种程度上说遗传算法是对生物进化过程进行的数学方式仿真。
2.算法操作:
a.选择:选择是另一种意义上的复制,从群体中按照个体的适应度函数选择出比较适应环境的个体。最常用的实现方法是转盘法,令令Σ fi 表示群体的适应度值之总和,fi 表示种群中第 i 个染色体的适应度值,它被选择的概率正好为其适应度值所占份额 fi /Σ fi。
b.交叉:交叉算子将被选中的两个个体的基因链按一定概率 pc 进行交叉,从而生成两个新的个体,交叉位置 pc 是随机的。其中 Pc 是一个系统参数。根据问题的不同,交叉又为了单点交叉算子(Single Point Crossover)、双点交叉算子(Two Point Crossover)、均匀交叉算子 (Uniform Crossover),在此我们只讨论单点交叉的情况。
c.变异:这是在选中的个体中,将新个体的基因链的各位按概率 pm 进行异向转化,最简单方式是改变串上某个位置数值。对二进制编码来说将 0 与 1 互换:0 变异为 1,1 变异为 0。
d.精英主义:仅仅从产生的子代中选择基因去构造新的种群可能会丢失掉上一代种群中的很多信息。也就是说当利用交叉和变异产生新的一代时,我们有很大的可能把在某个中间步骤中得到的最优解丢失。在此我们使用精英主义(Elitism)方法,在每一次产生新的一代时,我们首先把当前最优解原封不动的复制到新的一代中,其他步骤不变。这样任何时刻产生的一个最优解都可以存活到遗传算法结束。
3.遗传步骤:对待解决问题进行编码 , 我们将问题结构变换为位串形式编码表示的过程叫编码;而相反将位串形式编码表示变换为原问题结构的过程叫译码。
1 随机初始化群体 P(0):=(p1, p2, … pn);
2 计算群体上每个个体的适应度值 (Fitness)
3 评估适应度 , 对当前群体 P(t) 中每个个体 Pi 计算其适应度 F(Pi),适应度表示了该个体的性能好坏
4 按由个体适应度值所决定的某个规则应用选择算子产生中间代 Pr(t)
5 依照 Pc 选择个体进行交叉操作
6 仿照 Pm 对繁殖个体进行变异操作
7 没有满足某种停止条件,则转第 3 步,否则进入 9
8 输出种群中适应度值最优的个体
程序的停止条件最简单的有如下二种:完成了预先给定的进化代数则停止;种群中的最优个体在连续若干代没有改进或平均适应度在连