目录
什么是遗传算法?
生物学上的遗传过程包括染色体的复制,并且伴随一定概率发生染色体片段的交换、极小的概率发生基因突变。遗传算法是一种搜索寻优技术,它效仿生物的进化与遗传,跟据“生存竞争”和“优胜劣汰”的原则,借助复制、交换、突变等操作,使所要解决的问题从初始解一步步地逼近最优解。说到这里,你是否理解初步掌握了遗传算法的基本概念。
如何用数学手段体现“优胜劣汰”的选择过程?如何用数学实现交换、突变?
交换、突变对于问题的解决有什么意义?
这些问题是理解遗传算法的关键所在。
遗传算法的流程
(1)编码
对实际问题进行抽象化,用数学进行表示。
遗传算法首先需要对实际问题进行编码,用字符串表达问题。这种字符串相当于遗传学中的染色体,每一代所产生的字符串总和称为群体。在计算机中,一般采用长度固定的二进制表示。
(2)计算适应度
衡量字符串(染色体)好坏的指标是适应度,也就是遗传算法的目标函数F(x)。适应度是驱动遗传算法的动力。
(3)复制
为了将已有的群体变为下一代群体,遗传算法仿效进化论中“自然选择、适者生存”的原则,从旧群体中选择优良个体进行复制。选择的依据是个体适应度的大小,适应度大的个体接受复制,使之繁殖;适应度小的个体则删除掉,使之死亡。
(4)交换
通过复制产生的新群体,其性能得到改善,然而它不能产生新的个体。为了产生新的个体,遗传算法仿照生物学中杂交的方法,对染色体(字符串)的某些部分进行交叉换位。被交换的母体都选自经过复制产生的新一代个体。
进行交换的对象、交换的位置都是依据随机概率进行选择。
(5)突变
遗传算法模仿生物学中基因突变的方法,将个体字符串某位符号进行逆变,即由1变为0或由0变为1。遗传算法中,个体是否进行突变以及在哪个部位突变,都由事先给定的概率决定。通常,突变概率很小,约为0.008。
(6)终止条件
遗传算法是一种反复迭代的搜索方法,需要确定终止条件。最常用的终止方法是规定遗传(迭代)的代次。刚开始时,迭代次数小一些,如规定100次。然后视情况逐渐增加次数,可达到上千次。当目标函数是方差这一类有最优目标值的问题时,可采用控制偏差的方法实现终止。一旦遗传算法得出的目标函数值(适应度)与实际目标值之差小于允许值后,算法终止,即:
| f(x) – f * | ≤△
f(x) : 遗传算法得出的目标函数值。f * :实际目标值。△ :足够小的数。
第三种终止方法是检查适应度的变化。在遗传算法后期,一旦最优个体的适应度没有变化或变化很小时,即令计算终止。
小结
由上可知,遗传算法参考生物中有关进化与遗传的过程,利用复制、交换、突变等操作,不断进行循环迭代执行,逐步逼近全局最优解。 注意:是逼近全局最优解,而不是恰好等于最优解。
遗传算法的基本特征
(1)智能式搜索
遗传算法的搜索策略,既不是盲目式的乱搜索,也不是穷举式的全面搜索,它是有指导的搜索。指导遗传算法执行搜索的依据是适应度,也就是它的目标函数。利用适应度,使遗传算法逐步逼近目标值。
(2)渐进式优化
遗传算法利用复制、交换、突变等操作,使新一代的结果优于上一代,通过不断地迭代,逐渐得到最优的结果,它是一种反复迭代的过程。
(3)全局最优解
遗传算法由于采用交换、突变等操作,产生新的个体,扩大了搜索范围,使得搜索得到的优化结果是全局最优解而不是局部最优解。交换、突变操作避免了算法过早地收敛,陷入局部最优解。
(4)黑箱式结构
遗传算法根据所解决问题的特性,进行编码和选择适应度。一旦完成字符串和适应度的表达,其余的复制、交换、突变等操作都可按常规手续执行。个体的编码如同输入,适应度如同输出。因此遗传算法从某种意义上讲是一种只考虑输入与输出关系的黑箱问题。
(5)并行式算法
遗传算法是从初始群体出发,经过复制、交换、突变等操作,产生一组新的群体。每次迭代计算,都是针对一组个体同时进行,而不是针对某个个体进行。因此,尽管遗传算法是一种搜索算法,但是由于采用这种并行机理,搜索速度很高。这种并行式计算是遗传算法的一个重要特征。
举个栗子
极大值问题
设自变量 x 介于0~31,用遗传算法求其二次函数的最大值,即: max f(x) = x^2, x∈ [0, 31]
(1)编码
本例中,利用5位二进制数表示x值,采用随机产生的方法,假设得出拥有四个个体的初始群体,即:01101,11000,01000,10011。x值相应为13,24,8,19。
(2)计算适应度
表中还列出了当前适应度的总和∑f(xi)及平均值f,第6列的 f(xi)/f 表示每个个体的相对适应度,它反映了个体之间的相对优劣性。表中的M表示传递给下一代的个体数目,其中2号个体占2个,3号个体为0,1号、4号个体保持为1个。
(3)复制
在本例中,根据相对适应度的大小对个体进行取舍,2号个体性能最优,予以复制繁殖。3号个体性能最差,将它删除,使之死亡,表中的M表示传递给下一代的个体数目,其中2号个体占2个,3号个体为0,1号、4号个体保持为1个。
(4)交换
(5)突变
问题回答
如何用数学手段体现“优胜劣汰”的选择过程?
选择方法——适应度比例法(转轮法)
按各染色体适应度大小比例来决定其被选择数目的多少。
某染色体被选的概率:Pc:
如何用数学实现交换、突变?
随机选择二个染色体(双亲染色体),随机指定一点或多点, 进行交换,可得二个新的染色体(子辈染色体)。模拟生物在自然界环境变化,引起基因的突变.在染色体二进制编码中,1变成0;或0变成1.突变产生染色体的多样性,避免进化中早期成熟,陷入局部极值点,突变的概率很低。
交换、突变对于问题的解决有什么意义?
交换、突变操作避免了算法过早地收敛,陷入局部最优解。