遗传算法<sup>[1,]</sup> 什么叫遗传算法,遗传算法有什么用?希望通俗一点儿

   www.gaoxiao88.net

遗传算法,又称基因算法(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),遗传算法的性能较优。

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

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



用遗传算法工具箱求解一个多目标优化问题,现在需要一个matlab程序,求高人指点

用遗传算法工具箱求解一个多目标优化问题的步骤:
1、根据题意,建立自定义目标函数,ga_fun1(x)
2、在命令窗口中,输入
>> optimtool %调用遗传算法工具箱
3、在遗传算法工具箱界面中,分别对Fitness function框内输入@ga_fun1();A框内输入[1,1,1];b框内输入16;Aeq框内输入[];beq框内输入[];Lower框内输入[0,0,0];Upper框内输入[];
4、单击Start。得到x=4.508 y=2.513 z=1.912值。

首先有个很神奇的现象:人类以及动物的进化都是朝着好的方向发展,虽然有的往坏的方向发展了,但是总体肯定是往好的方向发展。这看似不奇怪,但是我们知道,人类的基因组合是随机的,没有上帝约束。这种随机过程的结果却是一致的!!!!!我们的遗传算法就是从这里得到启发!比如我要求y=x1+x2的最大值,两个变量,我不用传统的数学方法,就用幼儿园的方法,把所有可能取值带进去算,然后找出最大的就行了!但是,有时候取值是连续的,没关系!使其离散化,就像把模拟信号化成数字信号一样!还有个问题,如果取值太多咋办?这就是遗传算法的精髓!
首先,我不用取所有可能取值,我只取几十个或者几百个(自己定),然后进行处理,怎样处理呢?让我们回到刚开始的人类进化问题,虽然没有上帝的帮忙,但是我们知道,自然界遵循优胜劣汰的发贼,遵循交叉变异的法则,虽然不能数字化,但是这是个趋势!我们就是把这种法则数学化!所取的几十个值我要剩下哪些?要抛弃哪些?要处理哪些?这都要我们自己选择,肯定是选择最合适的取值留下,经过一系列的处理,就生成了新的群体,然后再处理,自己约定处理到第几次就可以了,取出现过的最大值
不用担心取到的是不是最大值,因为数学上已经有了证明,这种方法是收敛的,概率是1,所以尽管放心的做,具体的做法要参考相关书籍,不难的。
遗传算法的最大用处就是解决数学理论不能解决的问题!比如路径规划,调度问题……

相关参考:

能耗监测技术<sup>[]<\/sup>
根据现场具体情况,可适当增加计量设备、通信接口,先将计量数据采集到站控系统,再上传到控制中心。通过能耗基础数据的自动采集——量化分析——找出问题和差距——制定节能措施这一过程,形成有效的节能管理环节,实现管道运行能效数据采集、分析与评价的系统化与自动化。管道能耗管理的总体技术路线是,将现场...

传说横式算法是一题十解,是真的吗?
我们可以把3个小和尚与1个大和尚编为一组,这样每组4个和尚刚好分4个馒头,那么100个和尚总共分为100÷(3+1)=25组,因为每组有1个大和尚,所以有25个大和尚;又因为每组有3个小和尚,所以有25×3=75个小和尚这是《直指算法统宗》里的解法,原话是:"置僧一百为实,以三一并得四为法除之,得大僧二十五个。"...

1,2,3,4,5,6,7,8,9数字构成正方形,横竖斜行加起来相等
5)如果这个数所要放的格已经有数填入,处理方法同4)。只要是有规律的东西,计算机很容易就可以做到。下面我们把罗伯法翻译成计算机算法思路:定义一个n×n数组;把1放在第0行第n\2列;设当前格为(i�j),设一步长变量k(k=2->n�n)1) i减1,j加1;2) 如果i<0那么i=...

hinton发明了一种计算神经网络参数的快速算法
1. 简介 神经网络模型的优化一直是深度学习领域的热门话题。在过去,计算神经网络参数一直是一个耗时极大的问题。然而,Hinton发明了一种快速算法,有效地解决了这个问题,这项技术大大提高了深度神经网络的训练速度,进一步推动了深度学习的发展。2. Hinton快速算法原理 Hinton快速算法又被称为“反向传播算法...

用户A需要通过计算机网络安全的将一份机密文件传送给用户B,请问如何实现...
可以用单独为B客户生成一个数字证书,只有他有你的数字证书,才可以打开那个文件。同时在他打开的时候,做一个强制或者隐形确认,自动确认他硬件打开就可以了吧。

一般来说神经网络算法的第一步
一般来说,神经网络算法的第一步是学习。在这个过程中,神经网络需要不断 突触的数值,以便改进算法表现,更好地完成分配给它的任务。人工神经网络(Artificial Neural Networks,ANN)系统是 20 世纪 40 年代后出现的。它是由众多的神经元可调的连接权值连接而成;具有大规模并行处理、分布式信息存储、...

<高二>一道关于算法概念的题目
定义:算法是针对某一问题的一系列具有确定意义的 有限 步骤 特征:可执行性、确切性、无二义性 2X²+X-1=0无可执行性 如果是算法,那应该是给x赋值,看2X²+X-1=0,F→循环,T→输出

算法分析 备忘录方法的递归方式是自顶向下的,动态规划算法的递归方式...
若C[i-1,j-1]=-1(尚未计算出来),就递归调用LCS_L2(X,Y, i-1,j-1,C) 计算出C[i-1,j-1],然后再把C[i-1,j-1]+1赋给C[i,j] ,返回。若x[i] ¹ y[j],则要检查C[i-1,j]和C[i,j-1]。若两者均 > -1(已经计算出来),则把max{ C[i-1,j], C[i,j...

求Deep learning 【Yann LeCun 1,2 , Yoshua Bengio 3 & Geoffrey Hint...
很多深度学习的应用都是使用前馈式神经网络(如图1),该神经网络学习一个从固定大小输入(比如输入是一张图)到固定大小输出(例如,到不同类别的概率)的映射。从第一层到下一层,计算前一层神经元输入数据的权值的和,然后把这个和传给一个非线性激活函数。当前最流行的非线性激活函数是rectified linear unit(ReLU),...

设计一个算法求1⊃2;+2⊃2;+...+99⊃2;+100⊃2;的值,并画...
第一步,令S=O,i=1 第二步,计算S=S+i²第三步,i=i+1 第四步,若S≥100,则输出S,结束程序。否则,回到第二步 。

相关评论

  • 伯肿1809: 什么是遗传算法 -
    15686939822: 遗传算法(Genetic Algorithm)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法.遗传算法是从代表问题可能潜在的解集的一个种群(population)开始的,而一个...

  • 伯肿1809: 遗传算法是什么?? -
    15686939822: 遗传算法(Genetic Algorithm)是一类借鉴生物界的进化规律(适者生存,优胜劣汰遗传机制)演化而来的随机化搜索方法. 遗传算法(Genetic Algorithms简称GA)是由美国Michigan大学的John Holland教授于20世纪60年代末创建的.它来源...

  • 伯肿1809: 什么叫遗传算法,遗传算法有什么用 -
    15686939822: 遗传算法是计算数学中用于解决最佳化的搜索算法,是进化算法的一种.

  • 伯肿1809: 遗传算法的一般算法 -
    15686939822: 遗传算法是基于生物学的,理解或编程都不太难.下面是遗传算法的一般算法: 繁殖(包括子代突变) 带有较高适应度值的那些染色体更可能产生后代(后代产生后也将发生突变).后代是父母的产物,他们由来自父母的基因结合而成,这个过程被称为“杂交”. 各个个体对环境的适应程度叫做适应度(fitness).为了体现染色体的适应能力,引入了对问题中的每一个染色体都能进行度量的函数,叫适应度函数. 这个函数是计算个体在群体中被使用的概率.

  • 伯肿1809: 请问一下能通俗的介绍一下什么是遗传算法吗? -
    15686939822: 遗传算法(Genetic Algorithms or GAs)是基于自然选择和自然遗传机制的搜索算法,它是一种有效的解决最优化问题的方法.遗传算法最早是由美国Michigan大学的John Holland和他的同事及学生提出的.类似于自然界演化的基本法则,“适...

  • 相关话题

    ap在线精英在线最新简短笑话,好笑的段子,搞笑句子,男女朋友校园冷笑话,搞笑歌词对白台词,夫妻搞笑对话,手机流行笑话,逗人笑的动物经典笑话,最新幽默搞笑图文,好笑的视频分享给朋友
    若有事情,请联系电邮
    © <搞笑吧