今天给各位分享遗传算法的简介与应用详细过程的知识,其中也会对遗传算法的简介与应用详细过程进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
遗传算法的简介与应用详细过程的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于遗传算法的简介与应用详细过程、遗传算法的简介与应用详细过程的信息别忘了在本站进行查找喔。
本文导读目录:
1、一文搞懂什么是遗传算法Genetic Algorithm【附应用举例】
python代码复现遗传算法下载链接放在文末! 本文参考了很多张军老师《计算智能》的第四章内容。 本文来源:https://blog.csdn.net/qq_44186838/article/details/109181453 遗传算法 1.1 遗传算法简介 1.1.1 基本原理 重温高中生物哈哈! 遗传算法(Genetic Algorithm,GA)是进化计算的一个分支,是一种模拟自然界生物进化过程的随机搜索算法。 GA思想源于自然界“自然选择”和“优胜劣汰”的进化规律,通过模拟生物进化中的自然选择和交配变异寻找问题的全局最优解。它最早由美国密歇根大学教授John H. Holland提出,现在已经广泛应用于各种工程领域的优化问题之中。 遗传算法通过比较适应值区分染色体的优劣,适应值越大的染色体越优秀。评估函数涌过来计算染色体对应的适应值。 选择算子按一定的规则对群体的染色体进行选择,得到父代种群。(一般的,越优秀的染色体被选中的次数越多。) 交配算子作用于每两个成功交配的染色体,染色体交换各自部分的基因,形成两个子代染色体。子代染色体取代父代进入新种群,而没有交配的染色体自动进入新的种群。 变异算子使得新种群进行小概率的变异。染色体发生变异的基因改变数值,经过变异的新种群替代原种群进入下一次进化。 下面我们再来了解几个概念。 Holland的模式定理提出,遗传算法的实质是通过选择、交配和变异算子对模式进行搜索,低阶、定义长度较小且平均适应值高于群体平均适应值的模式在群体中的比例将呈指数级增长。即随着进化的不断进行,较优染色体的个数将快速增加。 积木块假设 积木块:指低阶、定义长度较小且平均适应值高于群体平均适应值的模式 。 积木块假设认为在遗传算法运行过程中,积木块在遗传算子的影响下能够相互结合,产生新的更加优秀的积木块,最终接近全局最优解 。 1.1.2 研究进展 这个大致看下就可以了。 1.2 遗传算法的流程 (1) 染色体编码目前用于染色体编码的方法有格雷码编码、字母编码、多参数交叉编码等。这里仅给出两种常见的较为简单的编码方法:二进制编码方法和浮点数编码方法。 二进制编码方法 二进制编码操作简单,但当你的L较大时,计算难度会增大,难以解决精度要求高的问题,因此,我们需要寻求另外的编码方法。 (2) 群体的初始化 一般情况下,遗传算法在群体初始化阶段采用的是随机数初始化方法。采用生成随机数的方法,对染色体的每一维变量进行初始化赋值。初始化染色体时必须注意染色体是否满足优化问题对有效解的定义。 如果在进化开始时保证初始群体已经是一定程度上的优良群体的话,将能够有效提高算法找到全局最优解的能力。 (3) 适应值评价 评估函数用于评估各个染色体的适应值,进而区分优劣。评估函数常常根据问题的优化目标来确定,比如在求解函数优化问题时,问题定义的目标函数可以作为评估函数的原型。在遗传算法中,规定适应值越大的染色体越优。因此对于一些求解最大值的数值优化问题,我们可以直接套用问题定义的函数表达式。但是对于其他优化问题,问题定义的目标函数表达式必须经过一定的变换。 (4) 选择算子 轮盘赌选择法 按适应值大小切分区域大小,即适应值越大的染色体占比越大,越有可能被选中,同时由于是随机选取,也保证了适应值小的染色体也有被选中的可能。 (5) 交配算子在染色体交配阶段,每个染色体能否进行交配由交配概率Pc(一般取值为0.4到0.99之间)决定,其具体过程为:对于每个染色体,如果Random(0, 1)小于Pc则表示该染色体可进行交配操作(其中Random(0, 1)为[0, 1]间均匀分布的随机数),否则染色体不参与交配直接复制到新种群中。 每两个按照Pc交配概率选择出来的染色体进行交配,经过交换各自的部分基因,产生两个新的子代染色体。具体操作是随机产生一个有效的交配位置,染色体交换位于该交配位置后的所有基因。 注意:因为父代是两个染色体,生成的子代也是两个染色体,故种群染色体总数N值不会改变。 (6) 变异算子 染色体的变异作用于基因之上,对于交配后新种群中染色体的每一位基因,根据变异概率Pm判断该基因是否进行变异。 如果Random(0, 1)小于Pm,则改变该基因的取值(其中Random(0, 1)为[0, 1]间均匀分布的随机数)。否则该基因不发生变异,保持不变。 下面给出算法基本步骤 如果到这里有些困惑的话,没有关系,我们来看一个实例。 解题如下: 够简单理解吧。 **1.3 遗传算法的改进 ** 没有完美的算法,只有适合的算法。下文会贴出每种问题对应的多种研究,感兴趣的可以自行上网查看。 1.3.1 算子选择 1.3.2 参数设置 群体规模N 影响算法的搜索能力和运行效率。若N设置较大,一次进化所覆盖的模式较多,可以保证群体的多样性,从而提高算法的搜索能力,但是由于群体中染色体的个数较多,势必增加算法的计算量,降低了算法的运行效率。若N设置较小,虽然降低了计算量,但是同时降低了每次进化中群体包含更多较好染色体的能力。N的设置一般为20~100。 染色体长度L 影响算法的计算量和交配变异操作的效果。L的设置跟优化问题密切相关,一般由问题定义的解的形式和选择的编码方法决定。对于二进制编码方法,染色体的长度L根据解的取值范围和规定精度要求选择大小。对于浮点数编码方法,染色体的长度L 跟问题定义的解的维数D相同。除了染色体长度一定的编码方法,Goldberg等人还提出了一种变长度染色体遗传算法Messy GA,其染色体的长度并不是固定的。 基因取值范围R R视采用的染色体编码方案而定。对于二进制编码方法,R ={0,1},而对于浮点数编码方法,R与优化问题定义的解每一维变量的取值范围相同。 交配概率Pc 决定了进化过程种群参加交配的染色体平均数目。取值一般为0.4至0.99。也可采用自适应方法调整算法运行过程中的交配概率。 变异概率Pm 增加群体进化的多样性,决定了进化过程中群体发生变异的基因平均个数。Pm的值不宜过大。因为变异对已找到的较优解具有一定的破坏作用,如果Pm的值太大,可能会导致算法目前处于的较好的搜索状态倒退回原来较差的情况。Pm的取值一般为0.001至0.1之间。也可采用自适应方法调整算法运行过程中的Pm值。 适应值评价 影响算法对种群的选择,恰当的评估函数应该能够对染色体的优劣做出合适的区分,保证选择机制的有效性,从而提高群体的进化能力。评估函数的设置同优化问题的求解目标有关。评估函数应满足较优染色体的适应值较大的规定。为了更好地提高选择的效能,可以对评估函数做出一定的修正。目前主要的评估函数修正方法有:线性变换;乘幂变换;指数变换等。 终止条件 决定算法何时停止运行,输出找到的最优解,采用何种终止条件,跟具体问题的应用有关。可以使算法在达到最大进化代数时停止,最大进化代数一般可设置为100~1000,根据具体问题可对该建议值作相应的修改。也可以通过考察找到的当前最优解是否达到误差要求来控制算法的停止。或者是算法在持续很长的一段进化时间内所找到的最优解没有得到改善时,算法可以停止。 1.3.3 混合遗传算法 提出混合遗传算法的原因有两个,一是遗传算法存在局部搜索能力较弱的缺陷,二是当遗传算法应用到专门的领域时往往不是最佳的方法。 1.3.4 并行遗传算法 并行计算单指令流多数据流计算机多指令流多数据流计算机并行计算网络 串行计算单指令流单数据流处理器 并行遗传算法一般有两种表现形式:标准型并行方法和分解型并行方法。 一直在学习路上!感兴趣的朋友可以点击关注哦! 代码下载链接,有需要的请自行提取,不想hua前的朋友,可私聊同我说,我会回复你,但可能会比较慢。祝好! 遗传算法GeneticAlgorithm代码复现【Python】-机器学习文档类资源-CSDN文库 智能优化算法大礼包【Python】遗传算法、蚁群优化算法、粒子群算法、禁忌搜索算法-机器学习文档类资源-CSDN 遗传算法是通过大量备选解的 变换、迭代和变异,在解空间中并行动态地进行全局 搜索的最优化方法.由于遗传算法具有比较完备的 数学模型和理论,在解决很多NP—Hard问题上具有 良好的性能. 1.因为我也是刚学遗传算法,我觉得它只是一个工具,会用就行,也没有去专门看书学习。然后就是只是在网上查查资料,网上很多教程都很详细,但是一些程序有些小错误。然后我写了几个程序,进行仿真。 2.网上的程序要么是单变量编码,或是二变量未编码。而我要做的是需要实现多函数多变量。所以这一篇只是介绍下遗传算法,以及它的基本实现方式,知道了它的实现原理就行了。 3.如果后面有时间的话,就把实现有偏好的多目标函数多变量寻求最优解的过程写写。 4.遗传算法实质就是在给定的自变量范围内找到函数的最大值,即最优解,如果是求最小值,理解成求最大值的倒数就行了。 5.欢迎指正 遗传算法(Genetic Algorithm, GA)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。 其主要特点是直接对结构对象进行操作,不存在求导和函数连续性的限定;具有内在的隐并行性和更好的全局寻优能力;采用概率化的寻优方法,不需要确定的规则就能自动获取和指导优化的搜索空间,自适应地调整搜索方向。 遗传算法以一种群体中的所有个体为对象,并利用随机化技术指导对一个被编码的参数空间进行高效搜索。其中,选择、交叉和变异构成了遗传算法的遗传操作;参数编码、初始群体的设定、适应度函数的设计、遗传操作设计、控制参数设定五个要素组成了遗传算法的核心内容。 遗传算法能够自我迭代,让它本身系统内的东西进行优胜劣汰的自然选择,把好的保留下来,次一点的东西就排除掉。遗传算法的本质就是是优胜劣汰,选出最优秀的个体,一般用来寻找最优解。 一次迭代包括以下几个过程: 染色体变异。即改变某个染色体的值;染色体交叉。任意选择两个染色体交换部分基因;计算适应度。计算每个染色体在当前迭代下对应的适应度。优胜劣汰。选出下一代的染色体。 三、遗传算法的几个基本概念 既然是应用,我直接举个例子,我觉得更容易理解,比如我现在需要求z=f(x,y)在x,y取值范围为(0,20)时的最大值。简单的函数可以手动求,但是假如是下图这样的呢? Z =sin(X)+cos(Y)+0.1*X+0.1*Y Z =sin(X)+cos(Y)+0.1*X+0.1*Y的三维图 为了第一次易懂,我直接把专业术语通俗点讲,当然,是我个人理解,如果有错,还望指出,一起学习。 哈哈哈哈在旁边截了个图,然后随手编辑的,希望够形象,结合后面文字,应该可以很容易的理解了。 1)种群 首先,既然是遗传,寻找最优解,可以理解成找到最好的一个个体,那就得在一定的个体中去实现。这些所有的个体就构成了一个种群。在仿真中,自己规定种群的大小,比如z=f(x,y)的种群大小是N,也就是N个个体,它的意思就是在自变量的取值范围内随机取N个值,也就有N个函数值了。种群包含个体 2)个体 在一个种群中,有若干的个体,他们有着不同的特征。比如z1=f(x1,y1)就是一个个体,具体到自变量取了确定值后,这个个体也就所有信息都知道了。个体包含染色体和适应度 3) 染色体 一个个体对应一个染色体,染色体是个体基因的总称,比如z=f(x,y)中(x1,y1)就是其中的一个染色体。染色体包含基因 4) 基因 一个个体对应一个染色体,但是可以有多个基因。其实就是一个函数的多个自变量,比如z=f(x,y),则称该个体有2个基因。基因就是自变量 5) 适应度 一个个体在基因确定的情况下,它的适应度就确定了。比如z1=f(x1,y1),则z1的值就是该个体的适应度。适应度就是确定自变量后对应的函数值 6) 交叉 染色体的交叉:N个染色体中,任意两个可能会交换染色体的某一部分基因。以一定概率通过互换两个父代个体的部分染色体产生新个体的运算。交叉运算是遗传算法核心算法之一,该算法在遗传过程中使用的频率最高,其目的是基于优良父代基因的基础上进一步扩展有限个体的覆盖面积。种群的发展影响着环境,环境也在选择适合生存的个体。 7)变异 染色体的变异:在发展的过程中,染色体自身可能发生某种突变,这里仅仅考虑某个基因的随机改变。将某一父代个体基因链的某些基因座上的基因值以某一概率作变动,形成新个体的运算。变异运算同样是遗传算法核心算法之一,旨在跳出局部搜索范畴,体现全区搜索的思想。 8)选择 优胜劣汰,自然选择。 建立在群体中个体的适应度评估基础上,将适应度值高的个体直接遗传到下一代或者通过交叉算子和变异算子产生新个体后再遗传到下一代。 我试过两种方法: (1) 最常用的方法是轮盘赌法 原理是按照某个体的适应度在总适应度中的贡献来确定是否选择它,为技术的发展做出过贡献的老板,人们是不会忘记他的ヽ( ̄▽ ̄)ノ。 随便举个例子吧,假如算出的N个适应度分别是[1,3,5,9,7,6,8,2,8,7......8,7,3,8], 对其按升序排列,并依次求和,则所求的适应度之和也是升序排列。 假如总适应度是M(对所有适应度求和)并比喻作整个轮盘。 现在某种群发展协会召集所有个体来开一个会,干什么的呢? 选出对技术发展做出过突出贡献的人,并赋予它们交配权, 被我选中的人,你就可以拥有后代啦ヾ(゚∀゚ゞ)。 规则是什么呢? 按照你们N个个体的贡献度从小到大排好序, 你们每个人手里有一个数字,他是你及你以前所有个体的贡献度之和。 挨个上台抽签,盒子里装有N个数,分别是比适应度总和小的任意值, 个体上台之后从盒子里抽一个数,如果抽到的数比手里的数小的话,恭喜你,进入下一轮。 所以适应度大的染色体有更大的概率被选中, 这么说吧,假如某个个体的贡献度是8,适应度总和是10,那是不是只要抽到的数大于2的,这个个体就稳了呢。 那么如何实现轮盘赌法呢,具体参考程序。 (2)覆盖法 覆盖法就很粗暴了,直接用最优的覆盖掉交叉的,比如把适应度序列后面百分之20直接用最优的染色体覆盖。强者不但拥有交配权,还可以多生,多生,多生ヽ(°▽、°)ノ。 比较:我个人的理解是 选择轮盘赌法的原因是某个染色体这一代的适应度不好,但是有可能通过染色体变异和交叉后,下一代的适应度很好呢。所以采用概率的方式,不能一竿子把适应度差的全打倒。三十年河东,三十年河西,莫欺少年。。。。基因差? 5.另外一个概念就是编码 我使用的是二进制编码方式 实数编码:直接用实数表示基因,容易理解且不需要解码过程,但容易过早收敛,从而陷入局部最优 二进制编码:稳定性高,种群多样性大,但需要的存储空间大,需要解码且难以理解 编码、解码操作简单易行交叉、变异等遗传操作便于实现合最小字符集编码原则利用模式定理对算法进行理论分析。 变异、交叉容易理解 二进制编码的缺点是:对于一些连续函数的优化问题,由于其随机性使得其局部搜索能力较差,如对于一些高精度的问题(如上题),当解迫近于最优解后,由于其变异后表现型变化很大,不连续,所以会远离最优解,达不到稳定 编码(coding):DNA中遗传信息在一个长链上按一定的模式排列。遗传编码可看作从表现型到基因型的映射。 解码(decoding):基因型到表现型的映射。 大概概念也就这些,具体的还是结合程序看。 遗传算法并不保证你能获得问题的最优解,但是使用遗传算法的最大优点在于你不必去了解和操心如何去“找”最优解。而只要简单的“否定”一些表现不好的个体就行了。这就是遗传算法的精粹! 四、程序 最开始准备按照程序,一步一步的介绍,但是急着做其他的,就直接介绍附程序了。 程序的话是有多个函数,在一个文件夹里,不方便粘贴,有需要的直接留言,每天都在,看到了就发。 一共写了这几种,其实原理是一样的。 这是两个变量的仿真结果: 这是单变量的仿真结果: 最后,如果对你有所帮助,就点个赞呗。 ( ㄕཀ ʖ̯ ཀ) 遗传算法(GA)是一种基于生物界规律和自然遗传机制的并行搜索算法。1975 年,J. Holland 教授首次在书中提出“自然组合人工智能系统的适应性”。它是一种多参数,多组合同时优化方法,模拟自然进化过程中“自然选择,适者生存”的原则。其主要特征是群体间的搜索方法以及群体中个体信息的交换。GA 非常适合解决传统搜索方法难以解决的非线性问题[1]。与其他启发式算法相比,遗传算法具有以下特征: (1)遗传算法从多个初始点而不是单个初始点开始搜索,因此可以有效地跳出局部极值 ; (2)利用目标函数的评价信息而不是传统导数的目标函数,形式对目标函数没有要求,因而有良好的适应性和可规模化 ; (3)具有良好的寻找全局最优解的能力,能够在非连续,多峰和嘈杂的环境中以较大的概率收敛到全局最优或满意的解 ; (4)将每个过程划分作为决策变量,优化生产过程,解决最优作业调度问题 ; (5)具有天生的并行性,即在对群体进行运算的同时,对多个结果 进行信息搜索;它具有一定的概率,这增加了其搜索最优解决过程的灵活性。 GA 从种群的初始解决方案开始其搜索过程。群体中的每个个体被称为染色体。在迭代过程中染色体的不断更新称为遗传。GA 主要通过交叉、变异、选择算子来实现。染色体的优点和缺点通常通过适应性来评估。根据适合度值的大小,从父母和后代中选择一定比例的个体作为后代的群体,然后继续迭代计算直到它收敛到全局最佳染色体。适应度是遗传算法用来评价种群在进化的过程中所能达到的最优值的一个概念。为了证明染色体的适应性,引入了测量每条染色体的功能函数,称为适应度函数。 遗传算法的流程主要组成部分包括: (1)编码方式。遗传算法通常根据问题本身进行编码,并将问题的有效解决方案转化为遗传算法的搜索空间。工业中常用的编码方法包括实数编码,二进制编码,整数编码和数据结构编码。 (2)适应度函数。适应度函数,也称为目标函数,是对整个个体与其适应度之间的对应关系的描述。具有高适应性的个体中包含的高质量基因具有较高的传递给后代的概率,而具有低适应性的个体的遗传概率较低。 (3)遗传操作。基本的遗传操作包括:选择、交叉、变异。 a)选择。选择操作基于个体适应度评估,选择群体中具有较高适应度的个体,并且消除具有较低适应度的个体。当然不同的选择操作也会带来不同的结果,有效的选择操作可以显著的提高搜索的效率 和速度,减少无用的计算量。 常见的选择方法有:基于比例的适应度分配方法,期望值选择方法,基于排名的适应度分配方法,轮盘赌选择方法等。 b)交叉。在自然界生物进化过程中,两条染色体通过基因重组形成新的染色体,因此交叉操作是遗传算法的核心环节。交叉算子的设计需要根据具体的问题具体分析,编码操作和交叉操作互相辅助,交叉产生的新的个体必须满足染色体的编码规律。父代染色体的优良性状最大程度上的遗传给下一代染色体,在此期间也能能够产生一些较好的性状。 常见的交叉算子包括实质重组,中间重组,离散重组,线性重组,二进制交叉,单点交叉,均匀交叉,多点交叉和减少代理交叉。 c) 变异。通过随机选择的方法改变染色体上的遗传基因。变异本身可以被视为随机算法,严格来说,是用于生成新个体的辅助算法。 几个与浮点数编码和二进制编码个体匹配的交叉运算:单点交叉,均匀交叉,算术交叉,两点交叉和多点交叉。 算法终止条件。算法终止一般指适应度函数值的变化趋于稳定或者满足迭代终止的公式要求,也可以是迭代到指定代数后停止进化。 流程图: [1]李岩,袁弘宇,于佳乔,张更伟,刘克平.遗传算法在优化问题中的应用综述[J].山东工业技术,2019(12):242-243+180.遗传算法的简介与应用详细过程的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于遗传算法的简介与应用详细过程、遗传算法的简介与应用详细过程的信息别忘了在本站进行查找喔。
未经允许不得转载! 作者:谁是谁的谁,转载或复制请以超链接形式并注明出处。
原文地址:http://www.kpfe.org/post/12210.html发布于:2026-01-09


