今天给各位分享遗传算法(遗传)的知识,其中也会对遗传算法(遗传)进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
遗传算法(遗传)的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于遗传算法(遗传)、遗传算法(遗传)的信息别忘了在本站进行查找喔。
本文导读目录:
2、遗传算法(遗传)
3、遗传算法
优化算法入门系列文章目录(更新中): 1. 模拟退火算法 2. 遗传算法 遗传算法 ( GA , Genetic Algorithm ) ,也称进化算法 。 遗传算法是受达尔文的进化论的启发,借鉴生物进化过程而提出的一种启发式搜索算法。因此在介绍遗传算法前有必要简单的介绍生物进化知识。 作为遗传算法生物背景的介绍,下面内容了解即可: 种群(Population):生物的进化以群体的形式进行,这样的一个群体称为种群。 个体:组成种群的单个生物。 基因 ( Gene ) :一个遗传因子。 染色体 ( Chromosome ) :包含一组的基因。 生存竞争,适者生存:对环境适应度高的、牛B的个体参与繁殖的机会比较多,后代就会越来越多。适应度低的个体参与繁殖的机会比较少,后代就会越来越少。 遗传与变异:新个体会遗传父母双方各一部分的基因,同时有一定的概率发生基因变异。 简单说来就是:繁殖过程,会发生基因交叉( Crossover ) ,基因突变 ( Mutation ) ,适应度( Fitness )低的个体会被逐步淘汰,而适应度高的个体会越来越多。那么经过N代的自然选择后,保存下来的个体都是适应度很高的,其中很可能包含史上产生的适应度最高的那个个体。 借鉴生物进化论,遗传算法将要解决的问题模拟成一个生物进化的过程,通过复制、交叉、突变等操作产生下一代的解,并逐步淘汰掉适应度函数值低的解,增加适应度函数值高的解。这样进化N代后就很有可能会进化出适应度函数值很高的个体。 举个例子,使用遗传算法解决“0-1背包问题”的思路:0-1背包的解可以编码为一串0-1字符串(0:不取,1:取) ;首先,随机产生M个0-1字符串,然后评价这些0-1字符串作为0-1背包问题的解的优劣;然后,随机选择一些字符串通过交叉、突变等操作产生下一代的M个字符串,而且较优的解被选中的概率要比较高。这样经过G代的进化后就可能会产生出0-1背包问题的一个“近似最优解”。 编码:需要将问题的解编码成字符串的形式才能使用遗传算法。最简单的一种编码方式是二进制编码,即将问题的解编码成二进制位数组的形式。例如,问题的解是整数,那么可以将其编码成二进制位数组的形式。将0-1字符串作为0-1背包问题的解就属于二进制编码。 遗传算法有3个最基本的操作:选择,交叉,变异。 选择:选择一些染色体来产生下一代。一种常用的选择策略是 “比例选择”,也就是个体被选中的概率与其适应度函数值成正比。假设群体的个体总数是M,那么那么一个体Xi被选中的概率为f(Xi)/( f(X1) + f(X2) + …….. + f(Xn) ) 。比例选择实现算法就是所谓的“轮盘赌算法”( Roulette Wheel Selection ) ,轮盘赌算法的一个简单的实现如下: 交叉(Crossover):2条染色体交换部分基因,来构造下一代的2条新的染色体。例如: 交叉前: 00000|011100000000|10000 11100|000001111110|00101 交叉后: 00000|000001111110|10000 11100|011100000000|00101 染色体交叉是以一定的概率发生的,这个概率记为Pc 。 变异(Mutation):在繁殖过程,新产生的染色体中的基因会以一定的概率出错,称为变异。变异发生的概率记为Pm 。例如: 变异前: 000001110000000010000 变异后: 000001110000100010000 适应度函数 ( Fitness Function ):用于评价某个染色体的适应度,用f(x)表示。有时需要区分染色体的适应度函数与问题的目标函数。例如:0-1背包问题的目标函数是所取得物品价值,但将物品价值作为染色体的适应度函数可能并不一定适合。适应度函数与目标函数是正相关的,可对目标函数作一些变形来得到适应度函数。 下面的方法可优化遗传算法的性能。 精英主义(Elitist Strategy)选择:是基本遗传算法的一种优化。为了防止进化过程中产生的最优解被交叉和变异所破坏,可以将每一代中的最优解原封不动的复制到下一代中。 插入操作:可在3个基本操作的基础上增加一个插入操作。插入操作将染色体中的某个随机的片段移位到另一个随机的位置。 AForge.NET是一个C#实现的面向人工智能、计算机视觉等领域的开源架构。AForge.NET中包含有一个遗传算法的类库。 AForge.NET主页:http://www.aforgenet.com/ AForge.NET代码下载:http://code.google.com/p/aforge/ 介绍一下AForge的遗传算法用法吧。AForge.Genetic的类结构如下: 图1. AForge.Genetic的类图 下面用AForge.Genetic写个解决TSP问题的最简单实例。测试数据集采用网上流传的中国31个省会城市的坐标: 操作过程: (1) 下载AForge.NET类库,网址:http://code.google.com/p/aforge/downloads/list (2) 创建C#空项目GenticTSP。然后在AForge目录下找到AForge.dll和AForge.Genetic.dll,将其拷贝到TestTSP项目的bin/Debug目录下。再通过“Add Reference...”将这两个DLL添加到工程。 (3) 将31个城市坐标数据保存为bin/Debug/Data.txt 。 (4) 添加TSPFitnessFunction.cs,加入如下代码: (5) 添加GenticTSP.cs,加入如下代码: 网上据称这组TSP数据的最好的结果是 15404 ,上面的程序我刚才试了几次最好一次算出了15402.341,但是最差的时候也跑出了大于16000的结果。 我这还有一个版本,设置种群规模为1000,迭代5000次可以算出15408.508这个结果。源代码在文章最后可以下载。 总结一下使用AForge.Genetic解决问题的一般步骤: (1) 定义适应函数类,需要实现IFitnessFunction接口 (2) 选定种群规模、使用的选择算法、染色体种类等参数,创建种群population (3)设定迭代的最大次数,使用RunEpoch开始计算 本文源代码下载 关于遗传算法,遗传这个很多人还不知道,今天菲菲来为大家解答以上的问题,现在让我们一起来看看吧! 1、“曹操寿终传遗命”出自《三国演义》第78回:治风疾神医身死,传遗命奸雄数终刘备得知关公被害,急于复仇,想要提兵征伐东吴,诸葛亮好不容易才劝住他。 2、曹操埋葬了关公之后,总是睡觉不安稳,感觉宫殿里好像有关公的灵魂骚扰他,于是就决定派人修建新的宫殿。 3、正好传说有一棵神树可以做宫殿大梁,于是曹操决定砍伐神树,谁知树神显灵,伤害了曹操的脑部,曹操头风复发,疼痛难忍。 4、华歆推荐华佗医治,华佗提出要用斧头打开头颅,取出病根,曹操以为华佗要加害自己,于是杀害了华佗。 5、曹操病情加重,临终前曹操厉声质问曹丕是否是杀死曹冲的凶手,曹丕死不承认。 6、曹操释然,终将大业传给曹丕。 7、不久,曹操病逝,曹丕继承魏王大业。 8、扩展资料:相关人物:曹操魏武帝(155-220年),谱名吉利,字孟德,小名阿瞒,沛国谯县(今安徽亳州)人。 9、东汉末年杰出的政治家、军事家、文学家、书法家 ,曹魏政权的奠基人,太尉曹嵩之子。 10、举孝廉出身,选为郎官,历任洛阳北部尉、顿丘令、议郎,拜骑都尉,镇压黄巾起义,迁济南相,政教大行,一郡清平,迁典军校尉。 11、组织关东诸侯联军讨伐董卓,迁东郡太守,拜为兖州牧。 12、迎接汉献帝,拜司隶校尉、录尚书事、司空,迁丞相,挟天子以令不臣。 13、对内消灭二袁、吕布、刘表、马超、韩遂等割据势力,对外降服南匈奴、乌桓、鲜卑等,基本统一中国北方地区。 14、2、曹丕魏文帝曹丕(187~226年),字子桓,沛国谯县 (今安徽亳州市)人。 15、三国时期政治家、文学家,曹魏开国皇帝(220—226年在位)。 16、魏武帝曹操嫡长子,母为武宣皇后卞夫人 。 17、自幼文武双全,博览经传。 18、通晓诸子学说,随父征战四方,拜为五官中郎将、副丞相,参与处理政事。 19、建安二十二年(217年),击败政敌曹植,成为魏国世子,平定魏讽之乱。 20、建安二十五年(220年),曹操逝世后,继任丞相,封为魏王。 21、逼迫汉献帝禅位,结束了汉朝四百多年的统治,建立魏国,年号黄初,定都于洛阳。 22、采纳吏部尚书陈群意见,制定九品官人制,奠定魏晋南北朝时期选官制度基础。 23、平定青徐地区割据势力,完成北方地区统一。 24、参考资料来源:百度百科——三国演义。 本文到此分享完毕,希望对大家有所帮助。 (重定向自基因算法) 遗传算法(Genetic Algorithm) 遗传算法是一类借鉴生物界的进化规律(适者生存,优胜劣汰遗传机制)演化而来的随机化搜索方法。它是由美国的J.Holland教授1975年首先提出,其主要特点是直接对结构对象进行操作,不存在求导和函数连续性的限定;具有内在的隐并行性和更好的全局寻优能力;采用概率化的寻优方法,能自动获取和指导优化的搜索空间,自适应地调整搜索方向,不需要确定的规则。遗传算法的这些性质,已被人们广泛地应用于组合优化、机器学习、信号处理、自适应控制和人工生命等领域。它是现代有关智能计算中的关键技术之一。 的自然选择学说是一种被人们广泛接受的生物进化学说。这种学说认为,生物要生存下去,就必须进行生存斗争。生存斗争包括种内斗争、种间斗争以及生物跟无机环境之间的斗争三个方面。在生存斗争中,具有有利变异的个体容易存活下来,并且有更多的机会将有利变异传给后代;具有不利变异的个体就容易被淘汰,产生后代的机会也少的多。因此,凡是在生存斗争中获胜的个体都是对环境适应性比较强的。达尔文把这种在生存斗争中适者生存,不适者淘汰的过程叫做自然选择。它表明,遗传和变异是决定生物进化的内在因素。自然界中的多种生物之所以能够适应环境而得以生存进化,是和遗传和变异生命现象分不开的。正是生物的这种遗传特性,使生物界的物种能够保持相对的稳定;而生物的变异特性,使生物个体产生新的性状,以致于形成新的物种,推动了生物的进化和发展。 遗传算法是模拟达尔文的遗传选择和自然淘汰的生物进化过程的计算模型。它的思想源于生物遗传学和适者生存的自然规律,是具有“生存+检测”的迭代过程的搜索算法。遗传算法以一种群体中的所有个体为对象,并利用随机化技术指导对一个被编码的参数空间进行高效搜索。其中,选择、交叉和变异构成了遗传算法的遗传操作;参数编码、初始群体的设定、适应度函数的设计、遗传操作设计、控制参数设定五个要素组成了遗传算法的核心内容。 作为一种新的全局优化搜索算法,遗传算法以其简单通用、鲁棒性强、适于并行处理以及高效、实用等显著特点,在各个领域得到了广泛应用,取得了良好效果,并逐渐成为重要的智能算法之一。 长度为L的n个二进制串bi(i=1,2,…,n)组成了遗传算法的初解群,也称为初始群体。在每个串中,每个二进制位就是个体染色体的基因。根据进化术语,对群体执行的操作有三种: 1.选择(Selection) 这是从群体中选择出较适应环境的个体。这些选中的个体用于繁殖下一代。故有时也称这一操作为再生(Reproduction)。由于在选择用于繁殖下一代的个体时,是根据个体对环境的适应度而决定其繁殖量的,故而有时也称为非均匀再生(differential reproduction)。 2.交叉(Crossover) 这是在选中用于繁殖下一代的个体中,对两个不同的个体的相同位置的基因进行交换,从而产生新的个体。 3.变异(Mutation) 这是在选中的个体中,对个体中的某些基因执行异向转化。在串bi中,如果某位基因为1,产生变异时就是把它变成0;反亦反之。 遗传算法的原理可以简要给出如下: choose an intial population determine the fitness of each individual perform selection repeat perform crossover perform mutation determine the fitness of each individual perform selection until some stopping criterion applies 这里所指的某种结束准则一般是指个体的适应度达到给定的阀值;或者个体的适应度的变化率为零。 1.初始化 选择一个群体,即选择一个串或个体的集合bi,i=1,2,...n。这个初始的群体也就是问题假设解的集合。一般取n=30-160。通常以随机方法产生串或个体的集合bi,i=1,2,...n。问题的最优解将通过这些初始假设解进化而求出。 2.选择 根据适者生存原则选择下一代的个体。在选择时,以适应度为选择原则。适应度准则体现了适者生存,不适应者淘汰的自然法则。 给出目标函数f,则f(bi)称为个体bi的适应度。以 (3-86) 为选中bi为下一代个体的次数。 显然.从式(3—86)可知: (1)适应度较高的个体,繁殖下一代的数目较多。 (2)适应度较小的个体,繁殖下一代的数目较少;甚至被淘汰。 这样,就产生了对环境适应能力较强的后代。对于问题求解角度来讲,就是选择出和最优解较接近的中间解。 3.交叉 对于选中用于繁殖下一代的个体,随机地选择两个个体的相同位置,按交叉概率P。在选中的位置实行交换。这个过程反映了随机信息交换;目的在于产生新的基因组合,也即产生新的个体。交叉时,可实行单点交叉或多点交叉。 例如有个体 S1=100101 S2=010111 选择它们的左边3位进行交叉操作,则有 S1=010101 S2=100111 一般而言,交叉幌宰P。取值为0.25—0.75。 4.变异 根据生物遗传中基因变异的原理,以变异概率Pm对某些个体的某些位执行变异。在变异时,对执行变异的串的对应位求反,即把1变为0,把0变为1。变异概率Pm与生物变异极小的情况一致,所以,Pm的取值较小,一般取0.01-0.2。 例如有个体S=101011。 对其的第1,4位置的基因进行变异,则有 S'=001111 单靠变异不能在求解中得到好处。但是,它能保证算法过程不会产生无法进化的单一群体。因为在所有的个体一样时,交叉是无法产生新的个体的,这时只能靠变异产生新的个体。也就是说,变异增加了全局优化的特质。 5.全局最优收敛(Convergence to the global optimum) 当最优个体的适应度达到给定的阀值,或者最优个体的适应度和群体适应度不再上升时,则算法的迭代过程收敛、算法结束。否则,用经过选择、交叉、变异所得到的新一代群体取代上一代群体,并返回到第2步即选择操作处继续循环执行。 图3—7中表示了遗传算法的执行过程 1.遗传算法从问题解的中集开始嫂索,而不是从单个解开始。 这是遗传算法与传统优化算法的极大区别。传统优化算法是从单个初始值迭代求最优解的;容易误入局部最优解。遗传算法从串集开始搜索,复盖面大,利于全局择优。 2.遗传算法求解时使用特定问题的信息极少,容易形成通用算法程序。 由于遗传算法使用适应值这一信息进行搜索,并不需要问题导数等与问题直接相关的信息。遗传算法只需适应值和串编码等通用信息,故几乎可处理任何问题。 3.遗传算法有极强的容错能力 遗传算法的初始串集本身就带有大量与最优解甚远的信息;通过选择、交叉、变异操作能迅速排除与最优解相差极大的串;这是一个强烈的滤波过程;并且是一个并行滤波机制。故而,遗传算法有很高的容错能力。 4.遗传算法中的选择、交叉和变异都是随机操作,而不是确定的精确规则。 这说明遗传算法是采用随机方法进行最优解搜索,选择体现了向最优解迫近,交叉体现了最优解的产生,变异体现了全局最优解的复盖。 5.遗传算法具有隐含的并行性 遗传算法在神经网络中的应用主要反映在3个方面:网络的学习,网络的结构设计,网络的分析。 1.遗传算法在网络学习中的应用 在神经网络中,遗传算法可用于网络的学习。这时,它在两个方面起作用 (1)学习规则的优化 用遗传算法对神经网络学习规则实现自动优化,从而提高学习速率。 (2)网络权系数的优化 用遗传算法的全局优化及隐含并行性的特点提高权系数优化速度。 2.遗传算法在网络设计中的应用 用遗传算法设计一个优秀的神经网络结构,首先是要解决网络结构的编码问题;然后才能以选择、交叉、变异操作得出最优结构。编码方法主要有下列3种: (1)直接编码法 这是把神经网络结构直接用二进制串表示,在遗传算法中,“染色体”实质上和神经网络是一种映射关系。通过对“染色体”的优化就实现了对网络的优化。 (2)参数化编码法 参数化编码采用的编码较为抽象,编码包括网络层数、每层神经元数、各层互连方式等信息。一般对进化后的优化“染色体”进行分析,然后产生网络的结构。 (3)繁衍生长法 这种方法不是在“染色体”中直接编码神经网络的结构,而是把一些简单的生长语法规则编码入“染色体”中;然后,由遗传算法对这些生长语法规则不断进行改变,最后生成适合所解的问题的神经网络。这种方法与自然界生物地生长进化相一致。 3.遗传算法在网络分析中的应用 遗传算法可用于分析神经网络。神经网络由于有分布存储等特点,一般难以从其拓扑结构直接理解其功能。遗传算法可对神经网络进行功能分析,性质分析,状态分析。 遗传算法虽然可以在多种领域都有实际应用,并且也展示了它潜力和宽广前景;但是,遗传算法还有大量的问题需要研究,目前也还有各种不足。首先,在变量多,取值范围大或无给定范围时,收敛速度下降;其次,可找到最优解附近,但无法精确确定最扰解位置;最后,遗传算法的参数选择尚未有定量方法。对遗传算法,还需要进一步研究其数学基础理论;还需要在理论上证明它与其它优化技术的优劣及原因;还需研究硬件化的遗传算法;以及遗传算法的通用编程和形式等。 一、一维装箱问题的描述 一维装箱问题引可描述如下: 要将11个物品装入许多箱子(最多n个箱子)。每个物品有重量()。每个箱子有重量限制()。问题是寻找最好的将物品分配到箱子的方案,使得在每个箱子中物品的总重量不超过其限制,并且使用的箱子数量最少。 该问题可表示为: 重量及限制表 其中重量和重量限制是正实数装箱问题的数学表示如下: 。 iin N=left{1,2,ldots,n ight}。 。 =0或1 =0或1 。 其中表示箱子i被放入物品,反之则表示箱子i空着;表示物品j放入箱子i,反之表示物品j未放入箱子i。 基于基本遗传算法的求解方案。 由于近似算法有时并不能产生出一个优秀的装箱方案,在这里采用遗传算法进行优化。 (一)染色体表示 对于一维装箱问题,由于其装箱费用依赖于箱子中物体的群体,故在此问题中染色体的表示需要包含两个部分,其一应该提供哪个物品属于哪个箱子(群体)的信息,另外对使用的箱子进行编码。故采用基于群体的表示方法,其中一个基因表示一个箱子。 设有六个物品,从1到6对其进行编码,染色体物品部分可以写作1 4 2 3 2 5。表示第一个物品放入箱子1,第二个物品放入箱子4,第三个和第五个物品放入箱子2,第四个物品放入箱子3,第六个物品放入箱子5。染色体的群体部分仅表示箱子。下面我们采用字母而不是整数来表示箱子(比如,上述染色体可表示为ADBCBE)。通过查询物品部分,可知群体的名字代表的含义,即A={1),B=(3,5),c={4),D=(2),E=(6)。 包含两部分的染色体的集成用图表示如下: (二)初始化种群 由于BFD算法对于很多数据均有较好的效果,所以本程序中把BFD算法作为一种方案放入初始的群体,这样就可能不失去一些优秀的解。 (三)选择算子 选择操作是建立在群体中个体的适应度的评估的基础上,在本算法中采用按正比与适应度的轮盘赌的方式进行随机选择,为了提高效率,选择轮盘时采用折半查找的方法,这样就能有效地减少比较次数,确保该过程的时间复杂度为0(log n)(n为种群大小)。 (四)杂交算子 因为染色体的表示包含两个部分:箱子和物品的群体。因此需要处理可变长度的染色体,故其杂交过程如下: 第一步:随机选择两个杂交位置,对每个父代选定杂交部分 第二步:将第一个父代杂交部分的内容插入到第二个父代第一个杂交位置之前。由于杂交对染色体的部分群体进行操作,这就意味着从第一个父代插入一些群体(箱子)到第二个父代中。 第三步:从产生的后代中原有的箱子中去掉所有重复出现的物品,使得这些物品原先的从属关系让位于“新”插入的箱子。因此产生的后代中的某些群体发生了改变。他们不再包含与先前相同的物品,原因是消除了一些物品。 第四步:改变两个父代的角色并重新应用第二步到第三步生成第2个子代。 杂交过程可用图表示: (五)变异算子 装箱问题的变异算子必须针对箱子进行操作,一般有两种策略:启用一个新箱子或消除一个已经使用的箱子。 (六)适应度函数 装箱问题的目标是:最小化使用的箱子数量同时尽量装满所使用的箱子。根据此要求,本文采用玄光南等所编教材《遗传算法与工程优化》中提到的适应度函数。具体定义如下: 。 其中,N是解中使用的箱子数量,是第i个箱子中所装有物品的重量之和,C是箱子的重量限制,k是常数(k>1)。常数k表示了对装得满的箱子的重视程度。k越大,装得满的箱子比一般填充的箱子受到的重视就越大。一般,k取值为2得到的结果较好。 二、求解步骤 (一)确定问题的解空间和个体的表现型 我们把染色体表示为含有物品和箱子两项信息的数据串。首先对待装物品进行编号1-n,对箱子进行编号1-k,按照物品编号顺序写出其所在箱子的编号序列即定义为染色体。具体含义在上节中介绍的比较详细,这里将不再赘述。 (二)建立优化模型,确定出目标函数 该问题表面上是要求得所用箱子的最小数目,其实是最大化利用资源的问题,故目标函数的类型应该是求最大值的。由此,我们采用的适应度函数为。 其中,N是解中使用的箱子数量,是第i个箱子中所装有物品的重量之和,C是箱子的重量限制,k取值为2。 (三)确定遗传算子 见上节中对选择、交叉、变异三种遗传算子的设定,这里不再赘述。 (四)确定运行参数 本文中,我们设定交叉概率,变异概率,代数gen=100,种群大小n=100。 三、计算举例与结果分析。 为了阐明利用该算法的计算过程与结果,程序选定下列一组特殊数据:假设现有一个由l5个物体组成的物体队列和足够多的单位箱子,其中物体的重量如下:1-9号物品的重量:0.310-l5号物品的重量:0.2假设箱子容量为1,按照BFD算法,我们可以得到下列装箱方案:。 (O.3,O.3,O.3),(0.3,0.3,0.3),(0.3,O.3,O.3),(O.2,0.2,0.2,0.2,0.2),(0.2)共用了5个箱子。 我们把上述利用BFD算法产生的装箱方案作为利用遗传算法进行求解的初始群体,同时,我们取交叉概率,变异概率,代数gen=100,种群大小n--100。得出结果为:(0.3,0.3,0.2,0.2),(0.3,0.3,0.2,0.2),(0.3,0.3,0.2,0.2),(0.3,0.3,0.3)共四个箱子,显然结果比较理想。遗传算法(遗传)的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于遗传算法(遗传)、遗传算法(遗传)的信息别忘了在本站进行查找喔。
未经允许不得转载! 作者:谁是谁的谁,转载或复制请以超链接形式并注明出处。
原文地址:http://www.longhang.org/post/11781.html发布于:2026-01-06



