遗传算法是一种模仿自然选择过程的算法。它们有助于解决优化和搜索问题。遗传算法是更大类的进化算法的一部分。遗传算法模仿自然生物过程,如遗传、变异、选择和交叉。
遗传算法的概念是计算机科学中经常使用的一种搜索技术,用于寻找算法优化和搜索问题的复杂、非显而易见的解决方案。遗传算法是全局搜索启发式方法。
遗传算法是一种模仿自然选择过程的算法。它们有助于解决优化和搜索问题。遗传算法是更大类的进化算法的一部分。遗传算法模仿自然生物过程,如遗传、变异、选择和交叉。
遗传算法的概念是计算机科学中经常使用的一种搜索技术,用于寻找算法优化和搜索问题的复杂、非显而易见的解决方案。遗传算法是全局搜索启发式方法。
自然进化可以被模拟成一场游戏,在这场游戏中,对一个玩得好的生物体的奖励是将其遗传物质传递给它的后继者和继续生存。[2]在自然进化中,一个个体的表现如何,取决于它与谁合作,与谁竞争,以及环境的影响。遗传算法是对一个优化问题的候选解决方案的群体(染色体、个体、生物或表型)的自然选择的模拟。
对候选者进行评估和杂交,试图做出好的解决方案。这样的解决方案可能需要大量的时间,而且对人类来说并不明显。进化阶段从一个随机生成的生命群体开始。在每一代中,人口中每个个体的适配性都被评估。一些个体被随机地从当前种群中挑选出来(基于他们的健康状况),并被修改(重新组合,可能是随机变异)以形成一个新的种群。这个循环在这个新种群中重复进行。该算法在设定的世代数过后,或在种群达到良好的适配水平后结束。如果算法因达到最大代数而结束,这并不一定意味着已经获得了良好的健身水平。
伪代码是。
上述描述是抽象的。一个具体的例子有助于。
遗传算法擅长解决包括时间表和日程安排的问题。它们也被应用于工程。它们经常被用来解决全局优化问题。
作为一般的经验法则,遗传算法在具有复杂健身景观的问题领域可能是有用的,因为混合的目的是使种群远离传统爬坡算法可能陷入的局部优化。常用的交叉运算符不能改变任何统一的群体。仅仅是变异就可以提供整个遗传算法过程的反复性(被视为马尔科夫链)。
遗传算法解决的问题的例子包括:设计用于将阳光输送到太阳能收集器的镜子、设计用于在太空中接收无线电信号的天线、计算机数字的行走方法、复杂流场中空气动力体的最佳设计
在他的《算法设计手册》中,Skiena建议不要用遗传算法来完成任何任务:"用遗传算子(如比特串上的突变和交叉)来模拟应用是很不自然的。伪生物学在你和你的问题之间又增加了一层复杂性。第二,遗传算法在非微观问题上需要很长的时间。[......]与进化论的类比--重大进展需要[原文如此]数百万年--可能相当合适。[......]我从来没有遇到过任何问题,在我看来,遗传算法是攻击它的正确方式。此外,我从未见过任何使用遗传算法的计算结果给我留下良好的印象。对于你的启发式搜索需求,请坚持使用模拟退火法"。
棋盘游戏是应用于博弈论问题的遗传算法领域的一个非常相关的部分。早期关于计算智能和游戏的大部分工作都是针对经典的棋盘游戏,如井字棋、象棋和跳棋。[3]国际象棋和跳棋。[4]现在,在大多数情况下,棋盘游戏可以由计算机发挥出比最好的人类更高的水平,即使使用盲目的穷举搜索技术。围棋是这种趋势的一个明显的例外,到目前为止,它一直在抵制机器的攻击。现在最好的围棋电脑玩家的水平与一个优秀的新手差不多。[5][6]据说,围棋策略在很大程度上依赖于模式识别,而不是像国际象棋和其他更多的棋子独立的游戏那样仅仅依靠逻辑分析。寻找高质量解决方案所需的巨大有效分支因素严重限制了在棋谱搜索中可以使用的前瞻。
遗传算法可用于计算机游戏,以创造人工智能(计算机与你对弈)。这可以使游戏体验更加真实;如果人类玩家可以找到一连串的步骤,即使在不同的游戏中重复,也总能获得成功,那就不能再有挑战了。相反,如果一种学习技术,如战略家的遗传算法可以避免重复过去的错误,那么游戏将有更多的可玩性。
遗传算法需要以下部分。
健身函数接受一个实体的变异实例并测量其质量。这个函数是根据问题领域定制的。在许多情况下,特别是那些涉及代码优化的情况下,健身函数可能只是一个系统计时函数。一旦定义了遗传表征和健身函数,遗传算法将如前所述实例化初始候选人,然后通过重复应用突变、交叉、反转和选择操作符(根据问题领域定义)来改进。
与其他优化算法相比,遗传算法的使用有其局限性。
1950年,阿兰-图灵提出了一种 "学习机",它将与进化的原理并行。计算机模拟进化的工作早在1954年就开始了,当时尼尔斯-阿勒-巴里切利在新泽西州普林斯顿高等研究所使用计算机。他在1954年发表的文章没有受到广泛关注。从1957年开始,澳大利亚定量遗传学家亚历克斯-弗雷泽发表了一系列关于对具有控制可测量性状的多个基因座的生物体进行人工选择的模拟论文。从这些开始,生物学家对进化的计算机模拟在20世纪60年代初变得更加普遍,Fraser和Burnell(1970)和Crosby(1973)的书中描述了这些方法。弗雷泽的模拟包括现代遗传算法的所有基本要素。此外,Hans-Joachim Bremermann在20世纪60年代发表了一系列论文,也采用了优化问题的解决方案的群体,经历了重组、变异和选择。布雷默曼的研究还包括现代遗传算法的元素。其他值得注意的早期先驱包括理查德-弗里德伯格、乔治-弗里德曼和迈克尔-康拉德。许多早期论文被Fogel(1998)转载。
尽管巴里切利在他1963年报告的工作中,模拟了玩一个简单游戏的能力的进化,但由于英戈-雷恩伯格和汉斯-保罗-施韦费尔在20世纪60年代和70年代初的工作,人工进化成为一种广泛认可的优化方法--雷恩伯格的小组能够通过进化策略解决复杂的工程问题。另一种方法是Lawrence J. Fogel的进化编程技术,它被提出来用于生成人工智能。进化编程最初使用有限状态机来预测环境,并使用变异和选择来优化预测逻辑。特别是遗传算法,通过约翰-霍兰在20世纪70年代初的工作,特别是他的《自然和人工系统中的适应》(1975)一书而变得流行。他的工作起源于Holland和他在密歇根大学的学生对细胞自动机的研究。Holland提出了一个预测下一代质量的形式化框架,被称为Holland的模式定理。遗传算法的研究在很大程度上仍然是理论性的,直到20世纪80年代中期,第一届遗传算法国际会议在宾夕法尼亚州的匹兹堡举行。
问:什么是遗传算法?
答:遗传算法是一种模仿自然选择过程的算法。
问:遗传算法可以帮助解决什么问题?
答:遗传算法可以帮助解决优化和搜索问题。
问:遗传算法属于哪一类算法?
答:遗传算法属于更大的一类进化算法。
问:遗传算法模仿的是什么过程?
答:遗传算法模仿自然界的生物过程,如遗传、变异、选择和交叉。
问:遗传算法常被用于哪个研究领域?
答:遗传算法经常被用于计算机科学领域,为算法优化和搜索问题寻找复杂的、不明显的解决方案。
问:遗传算法是什么类型的搜索技术?
答:遗传算法是全局搜索启发式方法。
问:遗传算法的目的是什么?
答:遗传算法的目的是通过模仿自然的生物过程来寻找优化和搜索问题的解决方案。