1、遗传算法(Genetic Algorithm,GA)和进化算法EA基本概念理念

进化算法,也被称为演化算法(evolutionary algorithms,简称EAs),它不是一个具体的算法,而是一个“算法簇”,遗传算法(GA)是进化算法中的一类

机器学习中四类进化算法的详细讲解:遗传算法、差分进化算法、协同进化算法、分布估计算法

基础概念:

适应度(fitness)

所谓的适应度,本质上可以理解为一个代价函数,或者一个规则,通过对初始种群中的个体计算适应度,能够得到对初始种群中的个体是否优劣的一个度量。

外在fitness、内在fitness

外在fitness和内在fitness是进化生物学领域中的两个概念。

外在fitness(exogenous fitness)指因为适应环境(所有非生物因素,如气候、温度、食物等)而对个体或群体所产生的选择性压力。换句话说,它是指由于个体或群体的适应性而导致的生存、繁殖或其他方面的成功。

内在fitness(endogenous fitness)则是指遗传信息中的优劣性,即个体或群体基因组的贡献度。内在fitness取决于个体或群体基因组中的各种基因和基因型,包括它们的表达方式、功能以及相互作用等。

高外在fitness、高内在fitness

高外在fitness和高内在fitness分别指个体或群体在适应环境和基因遗传信息方面的较高适应度,从而使它们具有更高的生存和繁殖成功率。

高外在fitness指个体或群体根据其形态、行为等特征能够更好地适应当前环境条件,获得更高生存和繁殖成功的机会。这意味着它们具有更有效的适应性,并能够更好地应对环境变化和风险因素。

高内在fitness则指个体或群体基因组中所包含的优良基因和基因型,这些基因和基因型可能使它们具有更好的生存和繁殖能力。例如,在一定的环境条件下,表现出更强的免疫系统、更快的生长速度、更高的智力等等。

选择

选择操作是根据种群中的个体的适应度函数值所度量的优、劣程度决定它在下一代是被淘汰还是被遗传。

交叉

交叉操作是将选择的两个个体p1和 p2作为父母节点,将两者的部分码值进行交换。假设有下面的两个节点的二进制编码表示:

这里写图片描述

 随机产生一个1到7之间的随机数,假设为3,则将p1和 p2的倒数三位进行互换,如下图所示,就完成了交叉操作:

这里写图片描述

当然这个只是非常简单的交叉方法,业界常用的交叉方法为模拟二进制交叉。

变异

变异操作就是改变节点p2的二进制编码的某些未知上位置上的数值,如下所示:

1    1    0    1    1    1    1

随机产生一个1到8之间的随机数,假设为6,则将编码的第6位进行变异,将1变为0,如下图所示,就完成了交叉操作:

1    1    0    1    1    0    1

这个依旧是一种简单的变异操作,业界常用的变异操作方法有高斯变异,柯西变异等。

算法的收敛性

通过上面的操作,我们介绍了遗传算法的大概流程,那么现在还剩下一个问题,算法是否收敛,这个才是算法最关键的。

Radolph在文献[Radolph G. Convergence Analysis of Canonical Genetic Algorithms. IEEE Transactions on Neural Network, 1994,5(1): 96-101.]中证明了一般的遗传算法不一定收敛,只有每代保存了最优个体时才收敛

这里写图片描述
遗传算法框架

进化算法

进化算法包括遗传算法、进化程序设计、进化规划和进化策略等等,进化算法的基本框架还是简单遗传算法所描述的框架,但在进化的方式上有较大的差异(选择、交叉、变异、种群控制等)有很多变化,进化算法的大致框图可描述如下图所示:

这里写图片描述

同遗传算法一样,进化算法的收敛性也是在保存最优个体时通用的进化计算是收敛的。但进化算法的很多结果是从遗传算法推过去的。

遗传算法对交叉操作要看重一些,认为变异操作是算法的辅助操作;而进化规划和进化策略认为在一般意义上说交叉并不优于变异,甚至可以不要交叉操作。

Code: https://github.com/MorvanZhou/Evolutionary-Algorithm

介绍:进化算法 (Evolutionary-Algorithm) | 莫烦Python

猜你喜欢

转载自blog.csdn.net/weixin_43135178/article/details/130724856