遗传算法

2025年3月17日 | 阅读 7 分钟

遗传算法 (GA) 是一类基于自然进化过程设计的搜索算法。遗传算法基于适者生存的原则。

遗传算法方法受到生物学世界,特别是查尔斯·达尔文的进化论的启发,并以此作为其工作的基础。约翰·霍兰德1975年引入了遗传算法。遗传算法通过模仿物种的进化行为来解决优化问题。从初始的随机解种群开始,通过选择、突变和交叉操作(受自然进化启发)来推进这个种群。通过执行给定的一组操作,种群经历一个迭代过程,在这个过程中它达到各种状态,每个状态都称为。作为这个过程的结果,种群预计会达到一个包含问题良好解决方案的代。在遗传算法中,问题的解决方案被编码为位串实数

在实践中,它们已被证明在功能优化方面非常高效。它用于搜索巨大而复杂的空间。遗传算法 (GA) 是基于生物进化的各种特征用于优化和机器学习的算法。

它们需要给定的组件:

  • 将解决方案编码为染色体以解决问题的过程。
  • 一个评估函数,用于恢复赋予它的每个染色体的评级。
  • 在父母繁殖时可以实施的操作员,以改变它们的遗传组成。标准操作员是突变和交叉。
  • 在父母繁殖时可以实施的操作员,以修改它们的遗传组成。标准操作员是突变和交叉。

通过进化计算发展 ANN

ANN 的发展是一个已用截然不同的技术广泛处理的课题。进化算法的世界也不例外,大量关于该领域各种技术(甚至包括遗传算法或 GP)的已发表作品就是证明。通常,使用进化算法生成 ANN 的领域分为三个主要领域:权重进化架构学习规则

最初,权重进化从具有预定拓扑的 ANN 开始。要解决的问题是训练关联权重,试图限制网络误差。通过使用进化算法,权重可以表示为二进制值或实值的连接。

其次,架构进化包括拓扑结构的生成。为了利用进化算法创建 ANN 架构,需要选择如何加密给定网络的基因型,以便遗传操作符可以使用它。

在第一个选项中,直接编码,所有基因及其产生的表型之间存在平衡的类比。最典型的编码技术包括一个矩阵,它表示一个架构,其中每个组件揭示了两个节点之间是否存在关联。

在编码方案中,GP 已被用于同时创建架构和关联权重,无论是对于前馈还是循环 ANN,其架构没有限制。这种新的编码方案还允许获取具有最少神经元和关联的基本网络,并且已发表的结果是吉祥的。除了直接编码,还有一些间接编码技术。在这些技术中,只有架构的一些特征被编码在染色体中。这些技术有各种表示类型。首先,参数表示将网络描绘为一组参数。例如,每层的节点数,两层之间的关联数,隐藏层的数量等。另一种非直接表示类型依赖于语法规则。在这个系统中,网络由一组规则表示,这些规则构建为生成规则,形成一个表示网络的矩阵。关于学习规则的进化,有各种方法,然而,它们中的大多数仅基于学习如何改变或管理进化以及架构和关联权重之间的关系。

ANN 的工作原理

标准遗传算法的工作原理如下图所示。所涉及的重要步骤是生成解决方案种群、识别目标函数和适应度函数以及应用遗传算子。这些方面在下面以基本遗传算法的帮助下进行描述。

Genetic Algorithm

开始

它生成一个包含 n 条染色体的随机种群。

适应度

它计算种群中每条染色体 x 的适应度 f(x)。

新种群

通过重复以下步骤,直到新种群完成,从而生成新种群。

选拔

它根据它们的适应度从种群中选择两条父染色体。适应度越高,被选择的概率越高。

交叉

在交叉概率中,对父母进行交叉以形成新的后代(子代)。如果没有进行交叉,则后代是父母的精确副本。

突变

在突变概率中,在每个基因座上突变新的后代。

接受

它将新的后代放入新种群中。

替换

它使用新生成的种群进行算法的进一步运行。

测试

如果满足结束条件,则停止并返回当前种群中的最佳解决方案。

循环

在此步骤中,您需要转到第二步进行适应度评估。

遗传算法背后的基本原理是它们生成并维护由染色体表示的个体种群。染色体是字符串,实际上等同于 DNA 中出现的染色体。这些染色体通常是问题的编码解决方案。它根据选择、繁殖和突变规则经历一个进化过程。环境中(由染色体代表)的每个个体都会获得其在环境中适应度的度量。繁殖选择种群中具有高适应度值的个体。通过这些个体的交叉和突变,确定了一个新的种群,其中个体可能更适合其环境。交叉过程包括两条染色体交换数据块,类似于繁殖过程。突变对一小部分现有种群引入微小变化,它代表一个进化步骤。

Genetic Algorithm

传统方法与遗传方法的区别

算法是解决问题的一系列步骤。遗传算法是一种以遗传学作为其问题解决模型的问题解决技术。它是一种寻找优化和搜索问题的近似解的搜索方法。人们可以很容易地区分传统算法和遗传算法。

传统算法遗传算法
它通过确定性计算选择序列中的下一个点。它通过使用随机数生成器的计算来选择下一个种群。
它在每次迭代中创建单个点。点序列接近最优解。它在每次迭代中创建点种群。种群中的最佳点接近最优解。
每次迭代的进步是问题特定的。每次迭代的一致性与问题无关。

遗传算法的优势

遗传算法概念易于理解。

遗传算法支持多目标优化。

遗传算法适用于嘈杂环境。

遗传算法对局部最小值/最大值具有鲁棒性。

遗传算法利用概率转移规则。

遗传算法利用收益(目标函数)信息,而不是导数。

遗传算法在混合离散函数上表现良好。

遗传算法的局限性

尽管遗传算法已被证明是一种快速而强大的问题解决方法,但其中也存在一些局限性。下面列出了其中一些局限性:

构建遗传算法的第一个也是最重要的考虑因素是定义问题的表示。用于确定候选解决方案的语言必须是健壮的。它必须能够承受随机变化,以免致命错误。

遗传算法的一个重要障碍是适应度(评估)函数的编码,以便实现更高的适应度,并为问题产生更好的解决方案。适应度函数的错误决定可能导致重大后果。例如,它无法找到问题的解决方案并返回错误的解决方案。

除了对适应度函数做出良好选择外,还必须有效地选择遗传算法的不同参数,例如种群大小、突变和交叉率。较小的种群大小将不足以使遗传算法产生精确的结果。遗传变化频率过高或选择方案不佳将导致破坏有益的模式。

不建议将遗传算法用于分析问题。尽管遗传算法可以找到这些问题的精确解,但传统的分析技术可以在短时间内以少量计算数据找到相同的解。

遗传算法的应用

机器人技术中的遗传算法

机器人技术是当今计算机行业中最受讨论的领域之一。它被用于各种行业,以提高盈利效率和准确性。随着机器人工作的环境随时间变化,开发人员很难弄清机器人的每种可能行为以应对这些变化。这就是遗传算法发挥关键作用的地方。因此,需要一种合适的方法,它将引导机器人达到其目标,并使其适应它遇到的新情况。遗传算法是用于学习高性能知识结构的自适应搜索技术。

金融规划中的遗传算法

借助遗传算法,战术资产分配国际股票方法的模型得到了增强。遗传算法对于金融建模应用非常高效,因为它们由调整驱动,这些调整可用于提高预测效率和相对于基准的收益。此外,这些方法是稳健的,允许更大范围的扩展和约束,这可能无法在传统技术中得到适应。