📅  最后修改于: 2020-11-24 07:08:59             🧑  作者: Mango
遗传算法(GA)是基于遗传和自然选择原理的基于搜索的优化技术。它通常用于找到难题的最佳或接近最优的解决方案,否则将需要一生的时间才能解决。它经常用于解决优化问题,研究和机器学习中。
优化是使事情变得更好的过程。在任何过程中,我们都有一组输入和一组输出,如下图所示。
优化是指以获取“最佳”输出值的方式查找输入值。 “最佳”的定义因问题而异,但是在数学上,它是指通过改变输入参数来最大化或最小化一个或多个目标函数。
输入可以占据搜索空间的所有可能解决方案或值的集合。在此搜索空间中,存在一个或一组点,这些点或点可以提供最佳解决方案。优化的目的是在搜索空间中找到该点或一组点。
大自然一直是全人类灵感的重要来源。遗传算法(GA)是基于搜索的算法,基于自然选择和遗传学的概念。遗传算法是称为进化计算的更大的计算分支的子集。
遗传算法是由约翰·霍兰德(John Holland)和他的密歇根大学的学生和同事开发的,最著名的是大卫·E·戈德堡(David E. Goldberg)。
在Google Analytics(分析)中,对于特定问题,我们拥有一个或一组可能的解决方案。这些溶液然后进行重组和突变(就像在自然遗传学中一样),产生了新的孩子,并且这一过程在各个世代中都重复了。每个人(或候选解决方案)都被分配一个适应度值(基于其目标函数值),而适应性强的人则有更高的机会交配并产生更多的“更适合”的人。这符合达尔文的“适者生存”理论。
通过这种方式,我们可以不断“改进”好几代人或解决方案,直到达到制止标准。
遗传算法在本质上具有足够的随机性,但它们的性能也比随机局部搜索(在随机搜索中我们尝试各种随机解,跟踪迄今为止的最佳方案)要好得多,因为它们也利用了历史信息。
GA具有各种优势,因此非常受欢迎。这些包括-
不需要任何派生信息(许多实际问题可能不可用)。
与传统方法相比,更快,更高效。
具有很好的并行能力。
优化连续函数和离散函数,以及多目标问题。
提供“好的”解决方案列表,而不仅仅是一个解决方案。
总是能找到问题的答案,随着时间的流逝会越来越好。
当搜索空间很大并且涉及大量参数时很有用。
与任何技术一样,GA也有一些局限性。这些包括-
GA并不适合所有问题,尤其是那些简单且可获取派生信息的问题。
适应度值是反复计算的,对于某些问题可能会在计算上昂贵。
由于是随机的,因此无法保证解决方案的最优性或质量。
如果实施不正确,则GA可能无法收敛到最佳解决方案。
遗传算法能够提供“足够好”的解决方案“足够快”。这使得遗传算法对于解决优化问题具有吸引力。需要GA的原因如下-
在计算机科学中,存在大量问题,即NP-Hard 。这实际上意味着,即使是功能最强大的计算系统,也要花费很长时间(甚至数年!)来解决该问题。在这种情况下,GA被证明是一种有效的工具,可以在短时间内提供可用的最佳解决方案。
传统的基于演算的方法是从一个随机点开始,然后沿渐变方向移动,直到到达山顶为止。此技术非常有效,并且对于单峰目标函数(如线性回归中的成本函数)非常有效。但是,在大多数现实情况下,我们有一个非常复杂的问题,称为风景,它由许多峰和许多山谷构成,导致这种方法失败,因为它们固有地会陷入局部最优状态。如下图所示。
一些困难的问题,例如旅行商问题(TSP),具有现实世界中的应用程序,例如路径查找和VLSI设计。现在,假设您正在使用GPS导航系统,并且要花费几分钟(甚至几小时)来计算从源到目的地的“最佳”路径。在现实世界中应用程序的延迟是不可接受的,因此需要“快速”交付的“足够好”的解决方案。