智能算法-遗传算法(1)

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第10天,点击查看活动详情

1. 遗传算法

首先说一说通俗理解吧,遗传算法首先需要把初始解集以某种手段编译成遗传基因序列(染色体),如下图所示就是一个编译完成的染色体,这个染色体代表(对应)着一个初始解。当然,为了涵盖所有种群基因,需要先编译产生很多很多类似的染色体。

image.png

然后,很多很多这样的染色体就组成一个初始种群。接下来就开始繁衍,计算出该种群内的每个染色体的优劣程度(适应度)进行比较,淘汰一部分比较差的个体。

对于剩下的个体进行基因重组,两两染色体进行基因序列交换(交叉),组成新的子代染色体序列。对于新的子代染色体序列,有一定几率出现变异(染色体基因序列某几个基因发生改变)。

接下来,这些子代作为父代,再重复以上所有操作,实现了优胜劣汰,经过多代的繁衍,最终省下来的染色体就是找到的最优解。

2. 基本概念举例解释

编码(coding):表现型到基因型的映射,比如说把某一个 x = 32 x=32 解编码成 0110101010 0110101010 这样的一个基因。

解码(decoding):从基因型到表现型的映射,比如说 0110101010 0110101010 这样的一个基因代表 x = 32 x=32 这个解。

适应度(fitness):度量某个物种对于生存环境的适应程度。对生存环境适应程度较高的物种将获得更多的繁殖机会,而对生存环境适应程度较低的物种,其繁殖机会就会相对较少,甚至逐渐灭绝。在具体问题中可以理解成某个解代入目标函数的大小,也就是这个解的“好坏”。

选择(selection):指决定以一定的概率从种群中选择若干个体的操作,比如说每次都从种群中选择前80%的个体进入下一代,后20%淘汰掉。

交叉(crossover):在两个染色体的某一相同位置处DNA被切断,其前后两串分别交叉组合形成两个新的染色体。又称基因重组,俗称“杂交”(交叉有很多种方式,这只是最简单的方式),例如,将两条染色体首尾对齐,随机选择一个点位,一刀切断,交换一下序列。

image.png 变异(mutation):在细胞进行复制时可能以很小的概率产生某些复制差错,从而使DNA发生某种变异,产生出新的染色体,这些新的染色体表现出新的性状,从另一角度思考,变异也可以丰富基因多样性。

个体(individual):在遗传学的角度是指染色体带有特征的实体,对于具体问题求解过程,个体就相当于是一个解。

3. 遗传算法基本思路图

image.png 上图中主要就包含了评估、适应度、选择、繁殖、交叉、变异几个关键步骤。

猜你喜欢

转载自juejin.im/post/7087962767415574564