什么是遗传算法

遗传算法是计算数学中用于解决最优化的搜索算法,是进化算法的一种。进化算法最初是借鉴了进化生物学中的一些现象而发展起来的,这些现象包括遗传、突变、自然选择以及杂交等。
遗传算法通常实现为一种计算机模拟。对于一个最优化问题,一定数量的候选解(称为个体)的抽象表示(称为染色体)的种群向更好的解进化。传统上,解用二进制表示(即0和1的串),但也可以用其他表示方法。进化从完全随机个体的种群开始,之后一代一代发生。在每一代中,整个种群的适应度被评价,从当前种群中随机地选择多个个体(基于它们的适应度),通过自然选择和突变产生新的生命种群,该种群在算法的下一次迭代中成为当前种群。

遗传算法的机理

在遗传算法里,优化问题的解被称为个体,它表示为一个参数列表,叫做染色体或者基因串。染色体一般被表达为简单的字符串或数字串,不过也有其他的表示方法适用。一开始,算法随机生成一定数量的个体,有时候操作者也可以对这个随机产生过程进行干预,播下已经部分优化的种子。在每一代中,每一个个体都被评价,并通过计算适应度函数得到一个适应度数值。种群中的个体被按照适应度排序,适应度高的在前面。这里的“高”是相对于初始的种群的低适应度来说的。
下一步是产生下一代个体并组成种群。这个过程是通过选择和繁殖完成的,其中繁殖包括杂交和突变。选择则是根据新个体的适应度进行的,适应度越高,被选择的机会越高,而适应度低的,被选择的机会就低。初始的数据可以通过这样的选择过程组成一个相对优化的群体。之后,被选择的个体进入杂交过程。一般的遗传算法都有一个杂交率的参数,范围一般是0.6~1,这个杂交率反映两个被选中的个体进行杂交的概率。例如,杂交率为0.8,则80%的“夫妻”会生育后代。每两个个体通过杂交产生两个新个体,代替原来的“老”个体,而不杂交的个体则保持不变。杂交父母的染色体相互交错,从而产生两个新的染色体,第一个个体前半段是父亲的染色体,后半段是母亲的,第二个个体则正好相反。不过这里的半段不是真正的一半,这个位置叫做杂交点,也是随机产生的,可以是染色体的任意位置。再下一步是突变,通过突变产生新的“子”个体。一般遗传算法都有一个固定的突变常数,通常是0.01或者更小,这代表突变发生的概率。根据这个概率,新个体的染色体随机的突变,通常就是改变染色体的一个字节(0变到1,或者1变到0)。
经过这一系列的过程(选择、杂交和突变),产生的新一代个体不同于初始的一代,并一代一代向增加整体适应度的方向发展,因为最好的个体总是更多的被选择去产生下一代,而适应度低的个体逐渐被淘汰掉。这样的过程不断的重复:每个个体被评价,计算出适应度,两个个体杂交,然后突变,产生第三代。周而复始,直到终止条件满足为止。一般终止条件有以下几种:

进化次数限制; 计算耗费的资源限制(例如计算时间、计算占用的内存等); 一个个体已经满足最小值的条件,即最小值已经找到; 适应度已经达到饱和,继续进化不会造成适应度更好的个体; 人为干预; 以及以上两种或更多种的组合;

算法

选择初始生命种群
循环评价种群中的个体适应度选择产生下一个种群改变该种群(杂交和突变)
直到停止循环的条件满足
遗传算法在解决优化问题过程中有如下特点:
  • 遗传算法在适应度函数选择不当的情况下有可能收敛于局部最优,而不能达到全局最优。
  • 对于动态数据,用遗传算法求最优解比较困难,因为染色体种群很可能过早地收敛,而对以后变化了的数据不再产生变化。对于这个问题,研究者提出了一些方法增加基因的多样性,从而防止过早的收敛。其中一种是所谓触发式超级突变,就是当染色体群体的质量下降(彼此的区别减少)时增加突变概率;另一种叫随机外来染色体,是偶尔加入一些全新的随机生成的染色体个体,从而增加染色体多样性。
  • 选择过程很重要,但杂交和突变的重要性存在争议。一种观点认为杂交比突变更重要,因为突变仅仅是保证不丢失某些可能的解;而另一种观点则认为杂交过程的作用只不过是在种群中推广突变过程所造成的更新,对于初期的种群来说,杂交几乎等效于一个非常大的突变率,而这么大的突变很可能影响进化过程。
  • 遗传算法很快就能找到良好的解,即使是在很复杂的解空间中。
  • 遗传算法并不一定总是最好的优化策略,优化问题要具体情况具体分析。所以在使用遗传算法的同时,也可以尝试其他算法,互相补充,甚至根本不用遗传算法。
  • 遗传算法不能解决那些“大海捞针”的问题,所谓“大海捞针”问题就是没有一个确切的适应度函数表征个体好坏的问题,遗传算法对这类问题无法找到收敛的路。
  • 对于任何一个具体的优化问题,调节遗传算法的参数可能会有利于更好的更快的收敛,这些参数包括个体数目、杂交律和突变律。例如太大的突变律会导致丢失最优解,而过小的突变律会导致算法过早的收敛于局部最优点。对于这些参数的选择,现在还没有实用的上下限。
  • 适应度函数对于算法的速度和效果也很重要。

变量

最简单的遗传算法将染色体表示为一个数位串,数值变量也可以表示成整数,或者实数(浮点数)。算法中的杂交和突变都是在字节串上进行的,所以所谓的整数或者实数表示也一定要转化为数位形式。例如一个变量的形式是实数,其范围是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.

转载于:https://blog.51cto.com/liulingyu/62032

遗传算法介绍三(来自维基百科)相关推荐

  1. 论文摘要写作(来自维基百科)

    来自维基百科https://www.wikihow.com/Write-an-Abstract 一.摘要写作 1.基本注意事项 先写文章,后写摘要,摘要是一个文章的综述,包括背景,方法,结果,提高部分 ...

  2. truetype 字体的历史 来自维基百科

    ���¼���ԭʼ��ҳ��ӡ TrueType - 维基百科,自由的百科全书 TrueType是由美国苹果公司和微软公司共同开发的一种电脑轮廓字体类型标准.这种类型字体文件的扩展名是.ttf,类型代 ...

  3. flv介绍,来自百度百科

    flv 目录 FLV视频格式的定义 FLV视频格式的普及 FLV视频格式的优势 FLV视频格式的使用 FLV播放器的生成 FLV视频文件的下载 利用flash MX 制作 flash video FL ...

  4. CIE 1931 颜色空间(来自维基百科)

    原文地址:https://en.wikipedia.org/wiki/CIE_1931_color_space#CIE_xy_chromaticity_diagram_and_the_CIE_xyY_ ...

  5. Drupal中的Pathauto介绍(来自站长百科)

    Pathauto,可以为drupal站点的各种内容,比如:node(文章页).Taxonomy term(分类).users(用户),自动生成url别名,而不需要管理员自己一个个添加别名.它可以为你的 ...

  6. 实时流协议(RTSP) 来自 维基百科

    https://zh.wikipedia.org/wiki/%E5%8D%B3%E6%99%82%E4%B8%B2%E6%B5%81%E5%8D%94%E5%AE%9A 目录 协议指令 OPTIONS ...

  7. 世界各国信用评级[来自维基百科]

    标准普尔 标准普尔各国主权债券评级:[1][2] 绿色 - AAA 青绿色 - AA 浅蓝 - A 深蓝 - BBB 紫色 - BB 红 - B 灰 - 未评级 如果一国的级别大于等于BBB-,标普把 ...

  8. 【NLP】利用维基百科促进自然语言处理

    作者 | Nicola Melluso 编译 | VK 来源 | Towards Data Science 介绍 自然语言处理(NLP)正在兴起.计算语言学和人工智能正在联手促进新的突破. 虽然研究的 ...

  9. 堆栈概念(来自维基)

    引言 使用维基百科需要注意一个地方,其自带的语言选择可以用,但不推荐. 比如,查看"CallStack"(调用栈)的百科,英文版本和中文版本完全不一样,建议阅读英文版本,直接或使用 ...

最新文章

  1. matlab仿真谱间干扰,内外分解和谱分解问题解析计算及其MATLAB仿真.pdf
  2. C++友元函数和友元类(三)
  3. STM32之Systick(系统时钟滴答定时器)
  4. 7-4 计算职工工资 (15 分)
  5. LOJ#6360. 复燃「恋之埋火」(最小圆覆盖+高斯消元)
  6. 《啊哈算法》知识点总结
  7. scrt设置右键粘贴,选中复制
  8. 新闻:西部数据拟200亿美元收购原东芝存储 《创新者的窘境》硬盘发展史
  9. linux查看lammps版本,lammps linux
  10. mysql新闻管理系统表_《新闻管理系统》数据库设计_参考答案.doc
  11. 关于sklearn下class_weight参数
  12. 区块链中的节点是什么意思?
  13. 总结27 -- E45: ‘readonly‘ option is set (add ! to override)
  14. 计算机组成原理——第4章 指令系统
  15. 【建议收藏】2020年中高级Android大厂面试秘籍,为你保驾护航金三银四,直通大厂(Java篇)
  16. Ubuntu: failed to fetch
  17. 计算机硬件软件分析图,中国工业软件产业链全景图布局及企业分析
  18. Photoshopcs6 自学笔记三 画笔工具
  19. 创建第一个phpstorm项目(phpstorm+Apache)
  20. 转载(https://blog.csdn.net/qq_36738482/article/details/72823509)大数据的概念

热门文章

  1. 2017年9月11日 晴转多云
  2. H3C堡垒机自动添加纳管设备
  3. 全国计算机等级考试数据库语言,全国计算机等级考试系列辅导教材(二级)——数据库(FoxBASE+语言篇)...
  4. THE compile of serveral files
  5. opengl高级光照之视差贴图(陡峭视差贴图以及视差遮蔽映射)
  6. 京东商城项目实战(2)------京东商城登录页面
  7. 胡玮炜卸任后美团将优化裁员;爆料称罗永浩卸任锤子科技CEO;华为麒麟985首次曝光 | 雷锋早报...
  8. 认知评估与反馈训练系统--认知训练、压力和情绪管理
  9. Chrome浏览器安装Axure RP Extension for Chrome插件方法
  10. 三极管作为开关的使用方法