算法
选择初始生命种群
循环
评价种群中的个体适应度
选择产生下一个种群
改变该种群(杂交和突变)
直到停止循环的条件满足
特点
遗传算法在解决优化问题过程中有如下特点:
遗传算法在适应度函数选择不当的情况下有可能收敛于局部最优,而不能达到全局最优。
对于动态数据,用遗传算法求最优解比较困难,因为染色体种群很可能过早地收敛,而对以后变化了的数据不再产生变化。对于这个问题,研究者提出了一些方法增加基因的多样性,从而防止过早的收敛。其中一种是所谓触发式超级突变,就是当染色体群体的质量下降(彼此的区别减少)时增加突变概率;另一种叫随机外来染色体,是偶尔加入一些全新的随机生成的染色体个体,从而增加染色体多样性。
选择过程很重要,但杂交和突变的重要性存在争议。一种观点认为杂交比突变更重要,因为突变仅仅是保证不丢失某些可能的解;而另一种观点则认为杂交过程的作用只不过是在种群中推广突变过程所造成的更新,对于初期的种群来说,杂交几乎等效于一个非常大的突变率,而这么大的突变很可能影响进化过程。
遗传算法很快就能找到良好的解,即使是在很复杂的解空间中。
遗传算法并不一定总是最好的优化策略,优化问题要具体情况具体分析。所以在使用遗传算法的同时,也可以尝试其他算法,互相补充,甚至根本不用遗传算法。
遗传算法不能解决那些“大海捞针”的问题,所谓“大海捞针”问题就是没有一个确切的适应度函数表征个体好坏的问题,遗传算法对这类问题无法找到收敛的路。
对于任何一个具体的优化问题,调节遗传算法的参数可能会有利于更好的更快的收敛,这些参数包括个体数目、杂交律和突变律。例如太大的突变律会导致丢失最优解,而过小的突变律会导致算法过早的收敛于局部最优点。对于这些参数的选择,现在还没有实用的上下限。
适应度函数对于算法的速度和效果也很重要。
变量
最简单的遗传算法将染色体表示为一个数位串,数值变量也可以表示成整数,或者实数(浮点数)。算法中的杂交和突变都是在字节串上进行的,所以所谓的整数或者实数表示也一定要转化为数位形式。例如一个变量的形式是实数,其范围是0~1,而要求的精度是0.001,那么可以用10个数位表示:0000000000表示0,1111111111表示1。那么0110001110就代表0.389。
在遗传算法里,精英选择是一种非常成功的产生新个体的策略,它是把最好的若干个个体作为精英直接带入下一代个体中,而不经过任何改变。
通过并行计算实现遗传算法一般有两种,一种是所谓粗糙并行遗传算法,即一个计算单元包含一个种群;而另一种是所谓精细并行遗传算法,每一个计算单元处理一个染色体个体。
遗传算法有时候还引入其他变量,例如在实时优化问题中,可以在适应度函数中引入时间相关性和干扰。
适用的问题
遗传算法擅长解决的问题是全局最优化问题,例如,解决时间表安排问题就是它的一个特长,很多安排时间表的软件都使用遗传算法,遗传算法还经常被用于解决实际工程问题。
跟传统的爬山算法相比,遗传算法能够跳出局部最优而找到全局最优点。而且遗传算法允许使用非常复杂的适应度函数(或者叫做目标函数),并对变量的变化范围可以加以限制。而如果是传统的爬山算法,对变量范围进行限制意味着复杂的多的解决过程,这方面的介绍可以参看受限优化问题和非受限优化问题。
应用领域
汽车设计,包括材料选择、多目标汽车组件设计、减轻重量等。
机电系统设计。
分布计算机网络的拓扑结构。
电路设计,此类用途的遗传算法叫做进化电路。
电子游戏设计,例如计算平衡解决方案。
机器智能设计和机器人学习。
模糊控制系统的训练。
移动通讯优化结构。
时间表安排,例如为一个大学安排不冲突的课程时间表。
旅行推销员问题.
神经网络的训练,也叫做神经进化。
参考文献
Goldberg, David E (1989), 遗传算法:搜索、优化和机器学习 Kluwer Academic Publishers, Boston, MA.
Goldberg, David E (2002), 创新的设计:竞争遗传算法课程 Addison-Wesley, Reading, MA.
Harvey, Inman (1992), 物种适应和遗传算法持续进行的基础 in 'Toward a Practice of Autonomous Systems: Proceedings of the First European Conference on Artificial Life', F.J. Varela and P. Bourgine (eds.), MIT Press/Bradford Books, Cambridge, MA, pp. 346-354.
Koza, John (1992), 遗传算法:通过自然选择编写计算机程序
Michalewicz, Zbigniew (1999), 遗传算法+数据结构=进化程序 Springer-Verlag.
Mitchell, Melanie, (1996), 遗传算法概论 MIT Press, Cambridge, MA.
Schmitt, Lothar M (2001), 遗传算法理论 Theoretical Computer Science (259), pp. 1-61
Schmitt, Lothar M (2004), 遗传算法理论(二) Theoretical Computer Science (310), pp. 181-231
Vose, Michael D (1999), 简单遗传算法:基础和理论 MIT Press, Cambridge, MA. |
|