Logo
Section 1 / 6

理解遗传算法

了解遗传算法是什么,以及它们如何与优化过程相关联。

导入

理解遗传算法

了解遗传算法是什么,以及它们如何与优化过程相关联。

优化的过程

在竞争激烈的世界中,人们总是追求最佳选择:最好的工作、最健康的饮食、最优的财务规划等等。然而,面对如此多的选择,我们不可能每次都做出最佳决策。幸运的是,人类已经进化出应对日常复杂性的能力,能够做出明智的决策,最终走向成功。

虽然大脑天生擅长做出有根据的决策,但计算机并非如此。计算机是“天真”的——它们只能执行我们编写的指令。那么,我们该如何让计算机做出明智的决策?这又为何必要?

举个例子:我们被要求为一家大型航运公司设计运输路线。已知有十五个城市,我们的任务是找出连接这些城市的最短路径,以节省公司的燃油和旅行成本。起初,我们可能会想计算所有可能的路径,毕竟只有十五个城市。但事实上,可能的路径数量高达130,766,744,000,000——也就是130万亿条。这是一个典型的旅行商问题,目标是在指定数量的城市之间找到最短的路径。

可能路径的数量以阶乘速度增长。阶乘是指从1到某个整数的所有整数相乘的结果。在上述十五个城市的例子中,路径总数可以通过将1到15的所有整数相乘得到。

...
阶乘增长示例

没有人有足够的时间去计算130万亿条路径的距离,因此我们需要另一种方法。我们可以随机选择一个起点,然后每次前往最近的城市。这种策略或许能产生最短路径。甚至可以尝试从每个城市出发,计算每种路径的距离,再从中选出最短的一条。这样一来,我们只需计算15条路径即可。然而,尝试不同的策略仍然耗时,且缺乏系统性方法时,我们可能错过真正最优的策略。

那么,如何才能做出最佳决策,并教会计算机也做到这一点?

...
如何教会计算机做出最佳选择?

答案就是优化。优化是指在特定情境下做出最佳可能决策的过程。我们可以把优化理解为寻找最优解的过程。人类在优化方面非常出色,自然地就能为自己做出最佳选择。计算机同样可以成为优化高手,只是需要一些引导。

优化算法是一类用于解决优化问题的技术,特别是那些旨在寻找“最好”结果的问题。我们知道,算法是一系列指令,因此可以将优化算法重新定义为“一套寻找问题最优解的指令”。尽管存在无数种优化算法,其中一种最古老且最常用的是遗传算法。

什么是遗传算法?

遗传算法是一类基于进化与自然选择的优化算法。它们借鉴了遗传学和生物学的原理,用于求解复杂问题的最优或近似最优解。遗传算法最初于20世纪60年代提出,初衷是作为一种创建自适应程序的技术。如今,遗传算法广泛应用于人工智能、金融等多个领域。它们特别适合解决困难的优化问题,也易于并行计算和分布式架构实现,甚至可以有效解决前述的航运路线问题。

第一个遗传算法

第一个遗传算法由密歇根大学的约翰·霍兰德在20世纪60年代提出。不过,在此之前,进化类算法已有雏形。早期的人工智能研究者认为,进化是创造真正智能程序的关键。如今,进化计算领域包含多个相对松散的研究分支,如进化策略、遗传编程和遗传算法。

从根本上说,优化问题本质上是搜索问题。搜索问题要求我们在某个空间中(比如迷宫)寻找目标(比如迷宫出口)。优化问题与此类似,但存在多个可能的解决方案。想象一个拥有多个出口的迷宫,我们的目标是以最快速度离开迷宫,即找到通往任意出口的最短路径。

解决搜索问题主要有两种基本方法:暴力搜索和启发式搜索。

...
解决搜索问题的方法

了解暴力搜索与启发式搜索之间的区别,对于理解优化以及遗传算法为何如此有用至关重要。

简介

遗传算法中探索与开发的作用