您的当前位置:首页正文

遗传算法基本原理和应用

来源:要发发知识网

概述

遗传算法是什么?以下是某个知乎牛人的解释,个人觉得很有趣,遂引用之:

遗传算法(GA,Genetic Algorithm),顾名思义,应该跟遗传学有关的。没错,遗传算法是模拟种群优胜劣汰的进化机制而提出的一种启发式算法,是一种高效、并行、全局搜索的方法,能在搜索过程中自动获取和积累有关搜索空间的知识,并自适应地控制搜索过程以求得最佳解。

种群 生物的进化是以集团的形式共同进行的, 这样的一个团体称为种群,组成种群的单个生物称为个体, 每个个体对生存环境都有不同的适应能力, 这种适应能力称为个体的适应度(Fitness)。
优胜劣汰 按照达尔文的进化论, 那些具有较强适应环境变化能力的生物个体具有更高的生存能力, 容易存话下来, 并有较多的机会产生后代;相反, 具有较低生存能力的个体则被淘汰, 或者产生后代的机会越来越少, 直至消亡。达尔文把这一过程和现象叫做“自然选择, 适者生存”。
进化 种群在其延续生存的过程中,逐渐适应生存环境,品质不断得到改良,这种现象称为进化。
启发式算法 一个基于直观或经验构造的算法,在可接受的花费(指计算时间和空间)下给出待解决组合优化问题每一个实例的一个,该可行解与最优解的偏离程度一般不能被预计。模拟退火、鱼群算法、粒子群算法等也属于启发式算法。

遗传算法原理

种群和适应性函数

种群和适应性函数是遗传算法的两个输入,其中:
种群代表“基因”,是对问题的解的一种编码方案,可以是二进制编码,浮点数编码或者其他类型的编码。种群的每一个个体都初始化为不同的基因型。
适应性函数代表“大自然”,可以理解为评价函数,用来评价个体对环境的适应程度。

遗传算法基本流程

遗传算法的基本流程可以用下图表示:


GA基本流程

以上为遗传算法的基本流程,实际应用时还会有很多额外的“规则”以确保进化方向最优、增大随机性,比如“精英策略”、“多点交叉”、“多点变异”等等。详见下图:


GA详解

遗传算法应用

组合优化问题


TSP是一个典型的组合优化问题。此外, 、、图形划分问题等也属于组合优化问题,也是遗传算法较为成功的应用领域。
此外,GA也在生产调度问题、自动控制、机器人学、、、遗传编码和等方面获得了广泛的运用。
函数优化问题
image.png
这个函数看上去是如此奇怪,如果让我们去求它的最大值,完全不知道如何下手,但是不管一个函数的形状多么奇怪,遗传算法都能在很短的时间内找到它在一个区间内的(近似)最大值。
车间调度问题

车间调度问题是一个典型的NP-Hard问题,遗传算法作为一种经典的智能算法广泛用于车间调度中,很多学者都致力于用遗传算法解决车间调度问题,现今也取得了十分丰硕的成果。从最初的传统车间调度(JSP)问题到柔性作业车间调度问题(FJSP),遗传算法都有优异的表现,在很多算例中都得到了最优或近优解。

其他应用

综上所述,遗传算法似乎擅长解决目标未知或难以描述、但却知道怎么评估的一类问题。