📝 遗传算法教程

18篇技术文档
  遗传算法教程

📅  最后修改于: 2020-11-24 07:08:26        🧑  作者: Mango

本教程涵盖了遗传算法的主题。通过本教程,您将能够理解遗传算法中涉及的基本概念和术语。我们还将讨论各种交叉和变异运算符,幸存者选择以及其他组件。此外,还将有其他高级主题,涉及诸如模式定理,机器学习中的GA等主题,本教程也将对此进行介绍。阅读完本教程后,预计读者将获得足够的知识,以针对特定问题提出自己的遗传算法。本教程是为希望获得“足够快”的优化问题的“良好解决方案”的本科生和研究人员准备的,这些问题...

  遗传算法-简介

📅  最后修改于: 2020-11-24 07:08:59        🧑  作者: Mango

遗传算法(GA)是基于遗传和自然选择原理的基于搜索的优化技术。它通常用于找到难题的最佳或接近最优的解决方案,否则将需要一生的时间才能解决。它经常用于解决优化问题,研究和机器学习中。优化介绍优化是使事情变得更好的过程。在任何过程中,我们都有一组输入和一组输出,如下图所示。优化是指以获取“最佳”输出值的方式查找输入值。 “最佳”的定义因问题而异,但是在数学上,它是指通过改变输入参数来最大化或最小化一个...

  遗传算法-基础

📅  最后修改于: 2020-11-24 07:09:24        🧑  作者: Mango

本节介绍了解GA所需的基本术语。而且,GA的通用结构以伪代码和图形形式表示。建议读者正确理解本节中介绍的所有概念,并在阅读本教程的其他部分时牢记这些概念。基本术语在开始讨论遗传算法之前,必须熟悉将在本教程中使用的一些基本术语。总体-它是给定问题的所有可能(编码)解决方案的子集。 GA的人口与人类的人口相似,除了我们有代表人类的候选解决方案代替人类。染色体-染色体就是解决给定问题的一种方法。基因-基...

  基因型表达

📅  最后修改于: 2020-11-24 07:09:45        🧑  作者: Mango

在实施遗传算法时要做出的最重要的决定之一就是确定我们将用来表示我们的解决方案的表示形式。已经观察到,不正确的表示会导致GA的效果不佳。因此,选择适当的表述,对表型和基因型空间之间的映射进行适当定义对于GA的成功至关重要。在本节中,我们介绍了遗传算法的一些最常用表示形式。但是,表示非常有针对性,读者可能会发现此处提到的另一种表示或这些表示的混合可能会更适合他/她的问题。二进制表示这是GA中最简单,使...

  遗传算法-种群

📅  最后修改于: 2020-11-24 07:10:03        🧑  作者: Mango

人口是当前一代人解决方案的子集。它也可以定义为一组染色体。处理GA人口时,有几件事要牢记-应当保持人口的多样性,否则可能导致过早收敛。种群数量不要保持太大,因为它可能导致GA变慢,而种群数量较小可能不足以提供良好的交配池。因此,最佳人口规模需要通过反复试验来确定。群体通常被定义为二维数组,即大小群体,大小x,染色体大小。人口初始化在GA中初始化种群的主要方法有两种。他们是-随机初始化-使用完全随机...

  遗传算法-适应度函数

📅  最后修改于: 2020-11-24 07:10:20        🧑  作者: Mango

简单地定义适应度函数是一个函数,它接受一个候选人解决问题的方法作为输入,并产生作为输出如何“配合”我们的“好”的解决方案是如何相对于在考虑的问题。适应度值的计算是在GA中重复进行的,因此应该足够快。适应度值的缓慢计算可能会对GA产生不利影响,并使其异常缓慢。在大多数情况下,适应度函数和目标函数与使最大化或最小化给定目标函数的目标相同。但是,对于具有多个目标和约束的更复杂的问题,算法设计器可能会选择...

  遗传算法-父级选择

📅  最后修改于: 2020-11-24 07:10:48        🧑  作者: Mango

父母选择是指选择能够交配并重组为下一代创造后代的父母的过程。父母的选择对于GA的收敛速度至关重要,因为好的父母会驱使个人寻求更好,更合适的解决方案。但是,应注意防止极为适合的解决方案在几代之内接管整个群体,因为这会导致解决方案在解决方案空间中彼此接近,从而导致多样性丧失。保持人口中的良好多样性对于GA的成功至关重要。通过一个非常合适的解决方案占用整个人口的过程称为过早收敛,这是GA中不希望出现的情...

  遗传算法-交叉

📅  最后修改于: 2020-11-24 07:11:10        🧑  作者: Mango

在本章中,我们将讨论交叉算子及其其他模块及其用途和优点。交叉介绍交叉运算符类似于复制和生物交换。在这种情况下,选择了一个以上的亲本,并利用亲本的遗传材料产生了一个或多个后代。交叉通常在概率很高的遗传算法中应用–pc。交叉算子在本节中,我们将讨论一些最常用的交叉运算符。请注意,这些交叉运算符非常通用,并且GA Designer可能会选择实施特定于问题的交叉运算符。一分频在此单点交叉中,选择一个随机交...

  遗传算法-变异

📅  最后修改于: 2020-11-24 07:11:29        🧑  作者: Mango

突变概论简单来说,突变可以定义为染色体中的一个小的随机调整,以获得新的解决方案。它用于维持和引入遗传种群中的多样性,通常以低概率–pm应用。如果概率很高,则GA会减少为随机搜索。变异是GA的一部分,与搜索空间的“探索”有关。已经观察到突变对于GA的收敛是必不可少的,而交叉不是必需的。变异算子在本节中,我们描述一些最常用的突变运算符。像交叉运算符一样,这并不是一个详尽的清单,GA设计人员可能会发现这...

  遗传算法-幸存者选择

📅  最后修改于: 2020-11-24 07:11:47        🧑  作者: Mango

幸存者选择政策确定哪些人将被踢出,哪些人将留在下一代中。至关重要的是,它应确保不会将健身者逐出人群,同时应保持人群的多样性。一些GA雇用Elitism。简而言之,这意味着当前人口中最适合的成员始终会传播到下一代。因此,在任何情况下都不能替换当前人口中最合适的成员。最简单的策略是将随机成员踢出人群,但是这种方法经常会出现收敛问题,因此以下策略得到了广泛使用。基于年龄的选择在基于年龄的选择中,我们没有...

  遗传算法-终止条件

📅  最后修改于: 2020-11-24 07:12:04        🧑  作者: Mango

遗传算法的终止条件对于确定GA运行何时结束很重要。已经观察到,最初,GA进步很快,每隔几次迭代就会出现更好的解决方案,但是在以后的改进很小的阶段中,趋于饱和。通常,我们需要终止条件,以便在运行结束时使解决方案接近最佳状态。通常,我们保留以下终止条件之一-如果X迭代的总体没有改善。当我们达到绝对世代数时。当目标函数值达到某个预定值时。例如,在遗传算法中,我们保留一个计数器,该计数器跟踪种群没有改善的...

  生命适应模型

📅  最后修改于: 2020-11-24 07:12:25        🧑  作者: Mango

到目前为止,在本教程中,无论我们讨论的是什么,都与达尔文进化模型相对应-自然选择和通过重组和突变的遗传变异。实际上,只有个体基因型中包含的信息才能被传递给下一代。到目前为止,这是我们在本教程中一直遵循的方法。但是,也存在其他寿命适应模型-Lamarckian模型和Baldwinian模型。要指出的是,哪种模型最好,尚有争议,研究人员获得的结果表明,生命周期适应性的选择是高度特定于问题的。通常,我们...

  有效实施

📅  最后修改于: 2020-11-24 07:12:47        🧑  作者: Mango

GA本质上非常笼统,仅将其应用于任何优化问题都不会取得良好的效果。在本节中,我们将描述一些要点,这些要点将有助于并协助GA设计人员或GA实施人员进行工作。介绍特定于问题的领域知识据观察,我们将更多特定于问题的领域知识纳入了GA;我们获得更好的客观价值。可以通过使用特定于问题的交叉或变异运算符,自定义表示等来添加特定于问题的信息。下图显示了Michalewicz(1990)的EA视图-减少拥挤当高度...

  遗传算法-高级主题

📅  最后修改于: 2020-11-24 07:13:16        🧑  作者: Mango

在本节中,我们介绍了遗传算法中的一些高级主题。希望仅阅读GA简介的读者可以选择跳过此部分。约束优化问题约束优化问题是那些我们必须最大化或最小化受某些约束约束的给定目标函数值的那些优化问题。因此,并非解决方案空间中的所有结果都是可行的,并且解决方案空间包含可行的区域,如下图所示。在这种情况下,交叉和变异运算符可能会为我们提供不可行的解决方案。因此,在处理约束优化问题时,GA中必须采用其他机制。一些最...

  遗传算法-应用领域

📅  最后修改于: 2020-11-24 07:13:39        🧑  作者: Mango

遗传算法主要用于各种优化问题,但它们也经常用于其他应用领域。在本节中,我们列出了一些经常使用遗传算法的领域。这些是-优化-遗传算法最常用于优化问题,其中我们必须在给定的约束条件下最大化或最小化给定的目标函数值。在本教程中,重点介绍了解决优化问题的方法。经济学-GA也用于表征各种经济模型,例如蜘蛛网模型,博弈论均衡解决方案,资产定价等。神经网络-GA也用于训练神经网络,尤其是递归神经网络。并行化-G...