导航:首页 > 源码编译 > 遗传算法如何提前终止

遗传算法如何提前终止

发布时间:2022-12-19 12:24:00

‘壹’ 遗传算法<sup>[1,]</sup>

遗传算法,又称基因算法(Genetic Algorithm,简称GA),也是一种启发式蒙特卡洛优化算法。遗传算法最早是由Holland(1975)提出,它模拟了生物适者生存、优胜劣汰的进化过程,具有不依赖于初始模型的选择、不容易陷入局部极小、在反演过程中不用计算偏导数矩阵等优点。遗传算法最早由Stoffa和Sen(1991)用于地震波的一维反演,之后在地球物理资料的非线性反演中得到广泛的应用。GA算法对模型群体进行追踪、搜索,即模型状态通过模型群体传送,具有比模拟退火法更大、更复杂的“记忆”,潜力更大。

遗传算法在反演中的基本思路和过程是:

(1)将生物体看成模型,模型参数看成染色体,有多少个模型的参数就有多少个染色体。对每个模型的参数(染色体)用二进制进行编码,这个编码就是基因。

(2)随机生成一个模型群体(相当于生物的种群),然后在模型群体中进行繁殖,通过母本的选择、交换和变异等遗传操作产生下一代,然后保留较好基因,淘汰较差基因。

(3)通过一代一代的繁殖优胜劣汰的进化过程,最后所剩下的种群基本上都是最优的基因,种群趋于一致。所谓群体“一致”,即群体目标函数的方差或标准差很小,或者群体目标函数的均值接近于极值(可能是极大值或极小值),从而获得非线性反演问题所对应的最优解或近似最优解。

下面以一个实例来简述遗传算法的基本过程。

[例1]设m是正整数,且0≤m≤127,求方程φ(m)=m2的极大值。

这个例子极为简单,只有一个模型参数,因此只有一条染色体,目标函数的极值是极大值(此例子来自阮百尧课件)。遗传算法通过以下7个步骤来实现:

(1)模型参数二进制编码。

每个模型参数就是一条染色体,把十进制的模型参数表示为二进制,这就是基因。首先确定二进制码的长度(基因的长度):

2N=[mmax(i)-mmin(i)]/Δm(i) (8.20)

其中:N为第i条染色体基因的长度(也就是第i个模型参数的二进制码位数);[mmin(i),mmax(i)]为第i个模型参数的取值范围;Δm(i)为第i个模型参数的分辨率。这样就把模型参数离散化了,它只能按Δm(i)的整数倍变化。基因的长度按下式计算:

地球物理反演教程

其中:c为实数;N为基因长度,是整数;int[ ]为取整函数。上式表示如果c不是整数,那么基因长度N就是对c取整后加1,这样保证最小分辨率。

基因的编码按下式进行:

地球物理反演教程

其中:式(8.22)是编码公式;k为基因编码的十进制数,是整数;int[ ]为取整函数。把k转化为二进制就是基因的编码。解码是按照式(8.23)进行的。首先把一个基因的二进制编码转化为十进制数k,然后按式(8.23)可以计算出第i个模型参数m(i)的十进制值。

例如:电阻率参数ρ(1),它的变化范围为10~5000Ω·m,分辨率为2Ω·m,设当前参数ρ(1)=133Ω·m,按式(8.21)计算得

c=11.28482,N=12

所以二进制基因长度为13位。

利用式(8.22)计算基因编码k的十进制数:

k=int[(133-10)/2]=61

把它转化为二进制数为:000000111101。所以ρ(1)=133 的二进制基因编码为:000000111101。

解码过程就是把二进制基因编码变为十进制数k后用式(8.23)计算:

ρ(1)=10+61×2=132(Ω·m)

注意:基因编码并不是直接把电阻率值变为二进制。此外,133这个值在基因里不会出现,因为分辨率是2,所以表示为最接近的132。

对于[例1]问题来说,选分辨率为1,0~127用二进制编码需7位。

(2)产生初始模型种群。

生物繁殖进化需要一定数量的生物体种群,因此遗传算法开始时需要一定数量的初始模型。为保证基因的多样性,随机产生大量的初始模型作为初始种群,按照上面的编码方式进行编码。个体在模型空间中应分布均匀,最好是模型空间各代表区域均有成员。初始模型群体大,有利于搜索,但太大会增加计算量。

为保证算法收敛,在初始模型群体中,有时候应增加各位都为0和都为1的成员。遗传算法就是在这个初始模型种群的基础上进行繁殖,进化求解的。

对于[例1]问题来说,模型空间是0~127个数字,这样初始种群最多具有128个个体。为了简单,随机选择4个个体作为初始种群。初始种群的编码、目标函数值见表8.1。

表8.1 初始种群编码表

(3)模型选择。

为了生成新一代模型,需要选择较优的个体进行配对。生物进化按照自然选择、优胜劣汰的准则进行。对应地,遗传算法按照一定的准则来选择母本(两个),然后进行配对繁殖下一代模型,这个选择称为模型选择。模型配对最基本的方法是随机采样,用各模型的目标函数值对所有模型目标函数的平均值的比值定义繁殖概率,即

地球物理反演教程

其中:p(mi)为繁殖概率;φ(mi)为第i个模型的目标函数;φAVG为目标函数的平均值。对于极小化问题来说,规定目标函数值高于平均值的不传代;对于极大化问题来说,反之即可。

就[例1]来说,要求目标函数取极大值,所以规定目标函数小于平均值的模型不传代,大于它的可以传代。对第一代,为了防止基因丢失,可先不舍去繁殖概率小的模型,让它与概率大的模型配对。如:本例中70与56配对,101与15配对产生子代,见表8.2。

表8.2 基因交换表

(4)基因交换。

将配对的两个亲本模型的部分染色体相互交换,其中交换点可随机选择,形成两个新的子代(见表8.2)。两个染色体遗传基因的交换过程是遗传算法的“繁殖”过程,是母本的重组过程。

为了使染色体的基因交换比较彻底,Stoffa等人提出了一个交换概率px来控制选择操作的效果。如果px的值较小,那么交换点的位置就比较靠低位,这时的交换操作基本是低位交换,交换前后模型的染色体变化不是太大。如果px的值较大,那么交换点的位置就比较靠高位,此时的交换操作可以在较大的染色体空间进行,交换前后模型数值变化可以很大。

在[例1]中:15、101和56、70作为母本通过交换繁殖出子代5、6、111、120。所选择的基因交换位置见表8.2。有下划线的,是要交换的基因位置。

(5)更新。

母本模型和子本模型如何选择保留一定数量作为新的母本,就是模型更新。不同的策略会导致不同的结果。一般而言,若产生的新一代模型较好,则选择新一代模型而淘汰上一代模型。否则,则必须根据一定的更新概率pu来选择上一代模型来取代新一代中某些较劣的模型。

经过更新以后,繁殖时对子代再进行优胜劣汰的选择。对于极大值问题,大于目标函数平均值的子代可以繁殖,小于目标函数平均值的子代不能繁殖。由于新的种群能繁殖的个体数量减小了,所以要多繁殖几次,维持种群个体的数量保持平衡。

在[例1]中,子代较好,所以完全淘汰上一代模型,完全用子代作为新的母本。选择子代目标函数最大的两个模型进行繁殖,分别是111、120。

(6)基因变异。

在新的配对好的母本中,按一定比例随机选择模型进行变异,变异操作就是模拟自然界中的环境因素,就是按比较小的变异概率pm将染色体某位或某几位的基因发生突变(即将0变为1或将1变为0)。

变异操作的作用是使原来的模型发生某些变化,从而成为新的个体。这样可使群体增加多样性。变异操作在遗传算法中也起着至关重要的作用。实际上,由于搜索空间的性质和初始模型群体的优劣,遗传算法搜索过程中往往会出现所谓的“早熟收敛”现象,即在进化过程中早期陷入局部解而中止进化。采用合适的变异策略可提高群体中个体的多样性,从而防止这种现象的出现,有助于模型跳出局部极值。表8.3为[例1]的基因变异繁殖表。

表8.3 基因变异繁殖表

在[例1]中,用111、120分别繁殖两次,形成4个子代,维持种群数量平衡。随机选择120进行变异,变异的位数也是随机的。这里把它的第2位进行变异,即从1变为0,繁殖后形成子代为:70、110、121、127。可以看出新的子代比初始种群要好得多,其中甚至已经出现了最优解。如果对于地球物理的极小值问题,我们可以预先设置一个拟合精度,只要在种群中出现一个达到拟合精度的模型就可以终止反演了。

(7)收敛。

重复(3)~(6)的步骤,模型群体经多次选择、交换、更新、变异后,种群个体数量大小不变,模型目标函数平均值趋于稳定,最后聚集在模型空间中一个小范围内,则找到了全局极值对应的解,使目标函数最大或最小的模型就是全局最优模型。

对于具有多解性的地球物理反演问题来说,通过这一步有可能找到满足拟合精度的多个模型,对于实际反演解释、推断具有较高的指导意义。

遗传算法中的各种概率包括交换概率px、变异概率pm以及更新概率pu,这些参数的选择与设定目前尚无统一的理论指导,多数都视具体问题而定。Stoffa等(1991)的研究表明,适中的交换概率(px≈0.6)、较小的变异概率(pm≈0.01)和较大的更新概率(pu≈0.9),遗传算法的性能较优。

与模拟退火反算法相同,遗传算法与传统的线性反演方法相比,该方法具有:不依赖初始模型的选择、能寻找全局最小点而不陷入局部极小、在反演过程中不用计算雅克比偏导数矩阵等优点。另外,遗传算法具有并行性,随着并行计算和集群式计算机技术的发展,该算法将会得到越来越广泛的研究与应用。

但是遗传算法作为类蒙特卡洛算法同样需要进行大量的正演计算,种群个体数量越大,繁衍代数越多,则计算量越大。所以和前面的最小二乘法相比,速度不是它的优势。

‘贰’ 基因遗传算法的终止条件一般是适应度数值小于0.()

基因遗传算法的终止条件一般是适应度数值小于0。是对的。

遗传算法便基于达尔文的进化论,模拟了自然选择,物竞天择、适者生存,通过N代的遗传、变异、交叉、复制,进化出问题的最优解。

‘叁’ 遗传算法原理简介

遗传算法(Genetic Algorithm, GA)是一种进化计算(Evolutionary Computing)算法,属于人工智能技术的一部分。遗传算法最早是由John Holland和他的学生发明并改进的,源于对达芬奇物种进化理论的模仿。在物种进化过程中,为了适应环境,好的基因得到保留,不好的基因被淘汰,这样经过很多代基因的变化,物种的基因就是当前自然环境下适应度最好的基因。该算法被广泛应用于优化和搜索中,用于寻求最优解(或最优解的近似),其最主要的步骤包括交叉(crossover)和突变(mutation)。

所有的生物体都由细胞组成,每个细胞中都包含了同样的染色体(chromosome)。染色体由一串DNA组成,我们可以简单地把一个生物个体表示为一条染色体。每条染色体上都包含着基因,而基因又是由多个DNA组成的。每个基因都控制着个体某个性状的表达,例如眼睛的颜色、眼皮的单双等。在物种繁衍的过程中,首先发生交叉,来自于父母的染色体经过分裂和重组,形成后代的染色体。之后,后代有一定概率发生基因突变,即染色体上某个位置处的基因以一定概率发生变化。之后,对每一代都重复进行交叉和突变两个步骤。对于每一个后代,我们可以通过一定的方式测量其适应度。适应度越好的个体,在下一次交叉中被选中的概率越大,它的基因越容易传给下一代。这样,后代的适应度就会越来越好,直到收敛到一个稳定值。

在优化问题中,可行解总是有很多个,我们希望寻找一个最优解,它相对于其他可行解来说具有更好的适应度(即目标函数值更大或更小)。每个可行解就是一个“生物个体”,可以表示为状态空间中的一个点和适应度。每个解都是一个经过编码的序列,已二进制编码为例,每个解都是一个二进制序列。这样每个染色体就是一个二进制序列。遗传算法从从一组可行解开始,称为population,从population中随机选择染色体进行交叉产生下一代。这一做法的基于下一代的适应度会好于上一代。遗传算法的过程如下:

终止条件可以是达到了最大迭代次数,或者是前后连续几代的最优染色体的适应度差值小于一个阈值。以上算法描述也许还不够直观,我们举例说明。假设解可以用二进制编码表示,则每个染色体都是一个二进制序列。假设序列长度为16,则每个染色体都是一个16位的二进制序列:

首先,我们随机生成一个population,假设population size为20,则有20个长度为16的二进制序列。计算每个染色体的适应度,然后选取两个染色体进行交叉,如下图所示。下图在第6为上将染色体断开再重组,断开的位置是可以随机选择的。当然,断裂位置也可以不止一个。可以根据具体问题选择具体的交叉方式来提升算法性能。

之后,随机选取后代染色体上某个基因发生基因突变,突变的位置是随机选取的。并且,基因突变并不是在每个后代上都会发生,只是有一定的概率。对于二进制编码,基因突变的方式是按位取反:

上述例子是关于二进制编码的,像求解一元函数在某个区间内的最大最小值就可以使用二进制编码。例如,求解函数f(x)=x+sin(3x)+cos(3x)在区间[0,6]内的最小值。假设我们需要最小值点x保留4位小数,那么求解区间被离散成60000个数。因为2 {15}<60000<2 {16},所以,需要16位二进制数来表示这60000个可能的解。其中0x0000表示0,0x0001表示0.0001,以此类推。针对这个例子,文末给出了demo code.

然而,在排序问题中无法使用二进制编码,应该采用排列编码(permutation encoding)。例如有下面两个染色体:

交叉:随机选取一个交叉点,从该出将两个染色体断开。染色体A的前部分组成后代1的前部分,然后扫描染色体B,如果出现了后代1中不包含的基因,则将其顺序加入后代1中。同理,染色体B的前部分组成了后代2的前部分,扫描染色体A获得后代2的后部分。注意,交叉的方式多种多样,此处只是举出其中一种方式。

( 1 5 3 2 6 | 4 7 9 8) + ( 8 5 6 7 2 | 3 1 4 9) => ( 1 5 3 2 6 8 7 4 9) + ( 8 5 6 7 2 1 3 4 9)

突变:对于一个染色体,随机选中两个基因互换位置。例如第3个基因和倒数第2个基因互换:

(1 5 3 2 6 8 7 4 9) => (1 5 4 2 6 8 7 3 9)

此外还有值编码(value encoding)和树编码(tree encoding)等,具体例子可以参考这个链接: http://obitko.com/tutorials/genetic-algorithms/encoding.php

在实际的遗传算法中,往往会保留上一代中的少数几个精英(elite),即将上一代population中适应度最好的几个染色体加入到后代的poulation中,同时去除后代population中适应度最差的几个染色体。通过这个策略,如果在某次迭代中产生了最优解,则最优解能够一直保留到迭代结束。

用GA求函数最小值的demo code: https://github.com/JiaxYau/GA_test

参考资料

[1] Introction to Genetic Algorithm, http://obitko.com/tutorials/genetic-algorithms/index.php

[2] Holland J H. Adaption in natural and artificial systems

‘肆’ 遗传算法怎么判断何时为最优解

适应度越大,解越优。
判断是否已得到近似全局最优解的方法就是遗传算法的终止条件。 在最大迭代次数范围内可以选择下列条件之一作为终止条件:
1. 最大适应度值和平均适应度值变化不大、趋于稳定;
2. 相邻GAP代种群的距离小于可接受值,参考“蒋勇,李宏.改进NSGA—II终止判断准则[J].计算机仿真.2009. Vol.26 No.2”

‘伍’ 遗传算法怎么回事

遗传算法(Genetic Algorithm)是一类借鉴生物界的进化规律(适者生存,优胜劣汰遗传机制)演化而来的随机化搜索方法。它是由美国的J.Holland教授1975年首先提出,其主要特点是直接对结构对象进行操作,不存在求导和函数连续性的限定;具有内在的隐并行性和更好的全局寻优能力;采用概率化的寻优方法,能自动获取和指导优化的搜索空间,自适应地调整搜索方向,不需要确定的规则。遗传算法的这些性质,已被人们广泛地应用于组合优化、机器学习、信号处理、自适应控制和人工生命等领域。它是现代有关智能计算中的关键技术。对于一个求函数最大值的优化问题(求函数最小值也类同),一般可以描述为下列数学规划模型: 遗传算法式中为决策变量,为目标函数式,式2-2、2-3为约束条件,U是基本空间,R是U的子集。满足约束条件的解X称为可行解,集合R表示所有满足约束条件的解所组成的集合,称为可行解集合。遗传算法的基本运算过程如下:a)初始化:设置进化代数计数器t=0,设置最大进化代数T,随机生成M个个体作为初始群体P(0)。b)个体评价:计算群体P(t)中各个个体的适应度。c)选择运算:将选择算子作用于群体。选择的目的是把优化的个体直接遗传到下一代或通过配对交叉产生新的个体再遗传到下一代。选择操作是建立在群体中个体的适应度评估基础上的。d)交叉运算;将交叉算子作用于群体。所谓交叉是指把两个父代个体的部分结构加以替换重组而生成新个体的操作。遗传算法中起核心作用的就是交叉算子。e)变异运算:将变异算子作用于群体。即是对群体中的个体串的某些基因座上的基因值作变动。群体P(t)经过选择、交叉、变异运算之后得到下一代群体P(t 1)。f)终止条件判断:若tT,则以进化过程中所得到的具有最大适应度个体作为最优解输出,终止计算

‘陆’ 遗传算法

优化的算法有很多种,从最基本的梯度下降法到现在的一些启发式算法,如遗传算法(GA),差分演化算法(DE),粒子群算法(PSO)和人工蜂群算法(ABC)。

举一个例子,遗传算法和梯度下降:

梯度下降和遗传算法都是优化算法,而梯度下降只是其中最基础的那一个,它依靠梯度与方向导数的关系计算出最优值。遗传算法则是优化算法中的启发式算法中的一种,启发式算法的意思就是先需要提供至少一个初始可行解,然后在预定义的搜索空间高效搜索用以迭代地改进解,最后得到一个次优解或者满意解。遗传算法则是基于群体的启发式算法。

遗传算法和梯度下降的区别是:

1.梯度下降使用误差函数决定梯度下降的方向,遗传算法使用目标函数评估个体的适应度
2.梯度下降是有每一步都是基于学习率下降的并且大部分情况下都是朝着优化方向迭代更新,容易达到局部最优解出不来;而遗传算法是使用选择、交叉和变异因子迭代更新的,可以有效跳出局部最优解
3.遗传算法的值可以用二进制编码表示,也可以直接实数表示

遗传算法如何使用它的内在构造来算出 α 和 β :

主要讲一下选择、交叉和变异这一部分:
1.选择运算:将选择算子作用于群体。选择的目的是把优秀(适应值高)的个体直接遗传到下一代。选择操作是建立在群体中个体的适应度评估基础上的。

2.交叉运算:将交叉算子作用于群体。遗传算法中起核心作用的就是交叉算子。交叉算子是将种群中的个体两两分组,按一定概率和方式交换部分基因的操作。将交叉算子作用于群体。遗传算法中起核心作用的就是交叉算子。例如:(根据概率选取50个个体,两两配对,交换x,y,比如之前两个是(x1,y1),(x2,y2),之后变成了(x1,y2),(x2,y1))

3.变异运算:将变异算子作用于群体。即是对群体中的个体串的某些基因座上的基因值作变动。(x2可能变为x2+δ,y1变为y1+δ)
种群P(t)经过选择、交叉、变异运算之后得到下一代种群P(t+1)。

遗传算法就是通过对大量的数据个体使用选择、交叉和变异方式来进化,寻找适合问题的最优解或者满意解。

遗传算法参数的用处和设置:

1.编码选择:通常使用二进制编码和浮点数编码,二进制适合精度要求不高、特征较少的情况。浮点数适合精度高、特征多的情况
2.种群:种群由个体组成,个体中的每个数字都代表一个特征,种群个体数量通常设置在40-60之间;迭代次数通常看情况定若计算时间较长可以在100内,否则1000以内都可以。
3.选择因子:通常有轮盘赌选择和锦标赛选择,轮盘赌博的特点是收敛速度较快,但优势个体会迅速繁殖,导致种群缺乏多样性。锦标赛选择的特点是群多样性较为丰富,同时保证了被选个体较优。
4.交叉因子:交叉方法有单点交叉和两点交叉等等,通常用两点交叉。交叉概率则选择在0.7-0.9。概率越低收敛越慢时间越长。交叉操作能够组合出新的个体,在串空间进行有效搜索,同时降低对种群有效模式的破坏概率。
5.变异因子:变异也有变异的方法和概率。方法有均匀变异和高斯变异等等;概率也可以设置成0.1。变异操作可以改善遗传算法的局部搜索能力,丰富种群多样性。
6.终止条件:1、完成了预先给定的进化代数;2、种群中的最优个体在连续若干代没有改进或平均适应度在连续若干代基本没有改进;3、所求问题最优值小于给定的阈值.

‘柒’ 遗传算法的基本原理

遗传算法通常的实现方式,就是用程序来模拟生物种群进化的过程。对于一个求最优解的问题,我们可以把一定数量的候选解(称为个体)抽象地表示为染色体,使种群向更好的解来进化。大家知道,使用算法解决问题的时候,解通常都是用数据或者字符串等表示的,而这个数据或字符串对应到生物中就是某个个体的“染色体”。进化从完全随机个体的种群开始,之后一代一代发生。在每一代中评价其在整个种群的适应度,从当前种群中随机地选择多个个体(基于它们的适应度),通过自然选择和突变产生新的种群,该种群在算法的下一次迭代中成为当前种群。其具体的计算步骤如下:
编码:将问题空间转换为遗传空间;
生成初始种群:随机生成P个染色体;
种群适应度计算:按照确定的适应度函数,计算各个染色体的适应度;
选择:根据染色体适应度,按照选择算子进行染色体的选择;
交叉:按照交叉概率对被选择的染色体进行交叉操作,形成下一代种群;
突变:按照突变概率对下一代种群中的个体进行突变操作;
返回第3步继续迭代,直到满足终止条件。

‘捌’ 遗传算法的运算过程

遗传操作是模拟生物基因遗传的做法。在遗传算法中,通过编码组成初始群体后,遗传操作的任务就是对群体的个体按照它们对环境适应度(适应度评估)施加一定的操作,从而实现优胜劣汰的进化过程。从优化搜索的角度而言,遗传操作可使问题的解,一代又一代地优化,并逼近最优解。
遗传操作包括以下三个基本遗传算子(genetic operator):选择(selection);交叉(crossover);变异(mutation)。这三个遗传算子有如下特点:
个体遗传算子的操作都是在随机扰动情况下进行的。因此,群体中个体向最优解迁移的规则是随机的。需要强调的是,这种随机化操作和传统的随机搜索方法是有区别的。遗传操作进行的高效有向的搜索而不是如一般随机搜索方法所进行的无向搜索。
遗传操作的效果和上述三个遗传算子所取的操作概率,编码方法,群体大小,初始群体以及适应度函数的设定密切相关。 从群体中选择优胜的个体,淘汰劣质个体的操作叫选择。选择算子有时又称为再生算子(reproction operator)。选择的目的是把优化的个体(或解)直接遗传到下一代或通过配对交叉产生新的个体再遗传到下一代。选择操作是建立在群体中个体的适应度评估基础上的,目前常用的选择算子有以下几种:适应度比例方法、随机遍历抽样法、局部选择法。
其中轮盘赌选择法 (roulette wheel selection)是最简单也是最常用的选择方法。在该方法中,各个个体的选择概率和其适应度值成比例。设群体大小为n,其中个体i的适应度为,则i 被选择的概率,为遗传算法
显然,概率反映了个体i的适应度在整个群体的个体适应度总和中所占的比例。个体适应度越大。其被选择的概率就越高、反之亦然。计算出群体中各个个体的选择概率后,为了选择交配个体,需要进行多轮选择。每一轮产生一个[0,1]之间均匀随机数,将该随机数作为选择指针来确定被选个体。个体被选后,可随机地组成交配对,以供后面的交叉操作。 在自然界生物进化过程中起核心作用的是生物遗传基因的重组(加上变异)。同样,遗传算法中起核心作用的是遗传操作的交叉算子。所谓交叉是指把两个父代个体的部分结构加以替换重组而生成新个体的操作。通过交叉,遗传算法的搜索能力得以飞跃提高。
交叉算子根据交叉率将种群中的两个个体随机地交换某些基因,能够产生新的基因组合,期望将有益基因组合在一起。根据编码表示方法的不同,可以有以下的算法:
a)实值重组(real valued recombination)
1)离散重组(discrete recombination)
2)中间重组(intermediate recombination)
3)线性重组(linear recombination)
4)扩展线性重组(extended linear recombination)。
b)二进制交叉(binary valued crossover)
1)单点交叉(single-point crossover)
2)多点交叉(multiple-point crossover)
3)均匀交叉(uniform crossover)
4)洗牌交叉(shuffle crossover)
5)缩小代理交叉(crossover with reced surrogate)。
最常用的交叉算子为单点交叉(one-point crossover)。具体操作是:在个体串中随机设定一个交叉点,实行交叉时,该点前或后的两个个体的部分结构进行互换,并生成两个新个体。下面给出了单点交叉的一个例子:
个体A:1 0 0 1 ↑1 1 1 → 1 0 0 1 0 0 0 新个体
个体B:0 0 1 1 ↑0 0 0 → 0 0 1 1 1 1 1 新个体 变异算子的基本内容是对群体中的个体串的某些基因座上的基因值作变动。依据个体编码表示方法的不同,可以有以下的算法:
a)实值变异
b)二进制变异。
一般来说,变异算子操作的基本步骤如下:
a)对群中所有个体以事先设定的变异概率判断是否进行变异
b)对进行变异的个体随机选择变异位进行变异。
遗传算法引入变异的目的有两个:一是使遗传算法具有局部的随机搜索能力。当遗传算法通过交叉算子已接近最优解邻域时,利用变异算子的这种局部随机搜索能力可以加速向最优解收敛。显然,此种情况下的变异概率应取较小值,否则接近最优解的积木块会因变异而遭到破坏。二是使遗传算法可维持群体多样性,以防止出现未成熟收敛现象。此时收敛概率应取较大值。
遗传算法中,交叉算子因其全局搜索能力而作为主要算子,变异算子因其局部搜索能力而作为辅助算子。遗传算法通过交叉和变异这对相互配合又相互竞争的操作而使其具备兼顾全局和局部的均衡搜索能力。所谓相互配合.是指当群体在进化中陷于搜索空间中某个超平面而仅靠交叉不能摆脱时,通过变异操作可有助于这种摆脱。所谓相互竞争,是指当通过交叉已形成所期望的积木块时,变异操作有可能破坏这些积木块。如何有效地配合使用交叉和变异操作,是目前遗传算法的一个重要研究内容。
基本变异算子是指对群体中的个体码串随机挑选一个或多个基因座并对这些基因座的基因值做变动(以变异概率P.做变动),(0,1)二值码串中的基本变异操作如下:
基因位下方标有*号的基因发生变异。
变异率的选取一般受种群大小、染色体长度等因素的影响,通常选取很小的值,一般取0.001-0.1。 当最优个体的适应度达到给定的阈值,或者最优个体的适应度和群体适应度不再上升时,或者迭代次数达到预设的代数时,算法终止。预设的代数一般设置为100-500代。

‘玖’ 遗传算法-总结

最近在做遗传算法的项目,简单记录一下。
遗传算法是模拟自然界生物进化机制的一种算法,在寻优过程中有用的保留无用的去除。包括3个基本的遗传算子:选择(selection)、交叉(crossover)和变异(mutation)。遗传操作的效果与上述3个遗传算子所取的操作概率、编码方法、群体大小、初始群体,以及适应度函数的设定密切相关。
1、种群初始化
popsize 种群大小,一般为20-100,太小会降低群体的多样性,导致早熟;较大会影响运行效率;迭代次数一般100-500;交叉概率:0.4-0.99,太小会破坏群体的优良模式;变异概率:0.001-0.1,太大搜索趋于随机。编码包括实数编码和二进制编码,可以参考遗传算法的几个经典问题,TSP、背包问题、车间调度问题。
2、选择
目的是把优化个体直接遗传到下一代或通过配对交叉产生新的个体再遗传到下一代,我大部分采用了轮盘赌的方法。具体可参考 http://my.oschina.net/u/1412321/blog/192454 轮盘赌方法各个个体的选择概率和其适应值成比例,个体适应值越大,被选择的概率也越高,反之亦然。在实际问题中,经常需要最小值作为最优解,有以下几种方法进行转换
a、0-1之间的数据,可以用1-该数值,则最小值与最大值互换;
b、 求倒数;
c、求相反数;
以上几种方法均可以将最大值变为最小值,最小值变为最大值,便于利用轮盘赌选择最优个体,根据实际情况来确定。
3、交叉
交叉即将两个父代个体的部分结构加以替换重组而生成新个体的操作,通过交叉,遗传算法的搜索能力得以飞跃提高。根据编码方法的不同,可以有以下的算法:
a、实值重组
离散重组、中间重组、线性重组、扩展线性重组
b、二进制交叉
单点交叉、多点交叉、均匀交叉、洗牌交叉、缩小代理交叉
4、变异
基本步骤:对群中所有个体以事先设定的变异概率判断是否进行变异;对进行变异的个体随机选择变异位进行变异。根据编码表示方法的不同,有实值变异和二进制变异
变异的目的:
a、使遗传算法具有局部的随机搜索能力。当遗传算法通过交叉算子已接近最优解邻域时,利用变异算子的这种局部搜索能力可以加速向最优解收敛。显然该情况下变异概率应取较小值,否则接近最优解的积木块会因为变异遭到破坏。
b、使遗传算法可维持多样性,以防止未成熟收敛现象。此时收敛概率应取较大值。
变异概率一般取0.001-0.1。
5、终止条件
当最优个体的适应度达到给定的阈值,或者最优个体的适应度和群体适应度不再上升时,或者迭代次数达到预设的代数时,算法终止。预设代数一般为100-500。
6、其它
多变量:将多个变量依次连接
多目标:一种方法是转化为单目标,例如按大小进行排序,根据排序和进行选择,可以参考 https://blog.csdn.net/paulfeng20171114/article/details/82454310

阅读全文

与遗传算法如何提前终止相关的资料

热点内容
567除以98的简便算法 浏览:338
pdf手机如何解压 浏览:15
python描述器 浏览:60
战地联盟3解压密码 浏览:805
s型命令 浏览:25
php年薪5年 浏览:71
如何上网上设个人加密账户 浏览:44
linux打开ssh服务 浏览:78
微信位置可以加密吗 浏览:470
算法蛮力法 浏览:438
随机排练命令 浏览:147
python多进程并发 浏览:41
安卓软件安装如何躲避安全检测 浏览:647
奇幻潮翡翠台源码百度云盘 浏览:187
什么软件可以免费pdf转word 浏览:15
php正则表达式大全 浏览:394
androidntp时间 浏览:299
轮机长命令簿英文 浏览:148
oppo铃声设置被加密怎么处理 浏览:548
粤苗app图形验证码怎么填 浏览:899