什么是遗传算法?

本文阅读 7 分钟
首页 知识库 正文

算法简介

遗传算法 ( Genetic Algorithms, GA )是基于生物界自然选择和基因遗传学原理的一种广为应用的、高效的随机搜索算法,20世纪60年代由美国的密执根大学的Holland教授首先提出。该算法将优化问题看作是自然界中生物的进化过程,通过模拟大自然中生物进化过程中的遗传规律,来达到寻优的目的。近年来,遗传算法已广泛地应用于作业调度与排序、可靠性设计、车辆路径选择与调度、成组技术、设备布置与分配、交通问题等等。
用遗传算法求解优化问题时,一定数量的候选解(称为个体)的抽象表示(称为染色体)的种群向更好的解进化。传统上,解用二进制表示(即0和1的串),但也可以用其他表示方法。进化从完全随机个体的种群开始,之后一代一代发生。在每一代中,整个种群的适应度被评价,从当前种群中随机地选择多个个体(基于它们的适应度),通过自然选择和突变产生新的生命种群,该种群在算法的下一次迭代中成为当前种群。

算法描述

选择初始生命种群
循环
评价种群中的个体适应度
以比例原则(分数高的挑中机率也较高)选择产生下一个种群(轮盘法 en:roulette wheel selection、竞争法 en:tournament selection 及等级轮盘法 Rank Based Wheel Selection)。不仅仅挑分数最高的的原因是这么做可能收敛到 local 的最佳点,而非 globe 的。
改变该种群(交叉和变异)
直到停止循环的条件满足

算法参数

种群规模(P,population size):即种群中染色体个体的数目。
字串长度(l, string length)
交叉概率(pc, probability of performing crossover):控制着交叉算子的使用频率。交叉操作可以加快收敛,使解达到最有希望的最优解区域,因此一般取较大的交叉概率,但交叉概率太高也可能导致过早收敛。
变异概率(pm, probability of mutation):控制着变异算子的使用频率。
中止条件(termination criteria)

算法特点

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

解压密码: detechn或detechn.com

免责声明

本站所有资源出自互联网收集整理,本站不参与制作,如果侵犯了您的合法权益,请联系本站我们会及时删除。

本站发布资源来源于互联网,可能存在水印或者引流等信息,请用户自行鉴别,做一个有主见和判断力的用户。

本站资源仅供研究、学习交流之用,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担。

什么是模拟退火算法?
« 上一篇 04-27
bagging、boosting、stacking区别和偏差,方差的关系
下一篇 » 04-30

发表评论

惪特博客
  • 文章总数:
    18474 篇
  • 评论总数:
    53155 条
  • 标签总数:
    8841 个
  • 总浏览量:
    19374901 次
  • 最后更新:
    10月12日

最多点赞

随便看看

标签TAG