资源预览内容
第1页 / 共13页
第2页 / 共13页
第3页 / 共13页
第4页 / 共13页
第5页 / 共13页
第6页 / 共13页
第7页 / 共13页
第8页 / 共13页
第9页 / 共13页
第10页 / 共13页
亲,该文档总共13页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
基本遗传算法及其在函数优化中的应用摘要遗传算法(enet Algorithm)是一类借鉴生物界的进化规律(适者生存,优胜劣汰遗传机制)演化而来的随机化搜索措施。遗传算法是一种是模拟生物遗传学和自然选择机理,通过人工方式构造的一类优化搜索算法,其编码技术和遗传操作比较简朴,优化不受限制条件的约束,不需要有先验条件。其搜索过程是从问题解的一种随机产生的集合开始的,而不是从单个个体开始的,具有隐含并行搜索特性,也就大大减少可陷入局部极小值的也许。因而,遗传算法在求解函数优化问题中有着良好的应用,同步,遗传算法在解决也许在求解过程中产生组合爆炸的问题时会产生较好的效果。 核心字:遗传算法 函数优化 人工智能前言这是一种有关遗传算法的问题,而本文的重要目的就是运用语言编写程序实现运用遗传算法中的编码,变异,交叉,复制来求解函数最大值的问题。一、 遗传算法概述遗传算法(Genet lgorith)是一类借鉴生物界的进化规律(适者生存,优胜劣汰遗传机制)演化而来的随机化搜索措施。是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的措施。它是由美国的.Holland专家1975年一方面提出,其重要特点是直接对构造对象进行操作,不存在求导和函数持续性的限定;具有内在的隐并行性和更好的全局寻优能力;采用概率化的寻优措施,能自动获取和指引优化的搜索空间,自适应地调节搜索方向,不需要拟定的规则。遗传算法的这些性质,已被人们广泛地应用于组合优化、机器学习、信号解决、自适应控制和人工生命等领域。它是现代有关智能计算中的核心技术二、 遗传算法基本机理遗传算法是模拟生物遗传学和自然选择机理,通过人工方式构造的一类优化搜索算法,是对生物进化过程进行的一种数学仿真,是进化计算的一种重要形式。遗传算法与老式数学模型截然不同,它为那些难以找到老式数学模型的难题找出了一种解决措施。同步,遗传算法借鉴了生物科学中的某些知识,从而体现了人工智能的这一交叉学科的特点。遗传算法基本机理重要分为如下三方面:1、 编码与解码将问题构造变换为位串形式编码表达的过程叫做编码;相反的,将位串形式编码表达变换为原问题构造的过程叫做解码或者译码。把位串形式编码表达叫做染色体,有时也叫做个体。2、 适应度函数为了体现染色体的适应能力,引入了对问题中的每一种染色体都进行度量的函数,叫做适应度函数(itness functin)。通过适应度函数来决定染色体的优劣限度,它体现了自然界进化中的优胜劣汰原则。对于优化问题,适应度函数就是目的函数。3、 遗传操作简朴的遗传算法操作重要有三种:选择(ctio)、交叉(rossoer)、变异(utatin)。改善的遗传算法大量扩大了遗传操作,以达到更高的效率。选择操作也叫做复制操作(eproducton)操作,根据个体的适应度函数值所度量的优劣限度决定它在下一代是被裁减还是被遗传。交叉操作的简朴方式是将被选择出的两个个体P1和P作为父母个体,将两者的部分码值进行互换。变异操作的简朴方式是变化数码串的某个位置上的数码。4、 遗传算法基本环节1、初始化种群;2、计算种群上每个个体的适应度值;3、按由个体适应度值所决定的某个规则选择将进入下一代的个体、按概率PC进行交叉操作5、按概率C进行变异操作6、若没有满足某种停止条件,则转环节2),否则进入下一步;7、输入种群中适应度值最优的染色体作为问题的满足解或最优解5、 基本遗传算法框图基本遗传算法框图开始GEN:=0产生初始种群计算每个个体的适应值i:=0依概率选择遗传操作选择两个个体i:=i+1执行杂交将两个后裔插入新种群与否满足停止准则i:=M?选择一种个体执行复制复制到新种群选择一种个体tiytiyu 体执行变异插入到新种群GEN:=GEN+1执行成果结束I=i+1复制交叉变异是是否I=i+1是否是 否复制变异 交叉6、 遗传算法求解举例运用遗传算法求解函数:f(x)=x*sin(10*x)+1.0的最大值,其中,-1,2。7、 编程实现cost it MX 4194304;const it MI =0;#nude otreaminludechromooe=chroosom; Individual oa =(Indivdality c) hs-chromsome = c.chomsoe;retur *his; ol oeat =(Indiviualty) trn hscomsme = .crosome; flo eslve() /通过染色体获得的值. etrn 1.0 + (lat)chomosom* 0/(MX - ); lat eaute() 求() retur rsv()*(flot)sin(10*pi*esolve()+ 1; vid pri() cut = ;j-) /如下循环是在以二进制串的形式打印染色体 if((1j) chrmosom) co 1; els cout 0; ou ttx = eov() tf(x) ealuate() endl; /如下是对目前个体进行变异的操作 Inividality ariae() nti = rad() % 1 + 1; th-choosoe =1i; returthis; /如下是两个个体进行交叉,并且返回两个新个体的操作 voi risscrss(ndividulty pnt, Indiduaity t2, ndvduaiy&ci, Indiiduality&hild2) inti rand() % 2 ; it temp1 = prnt1chrooome; n temp2 rn2.chrosome; it tp 0; for(; 22;i+) mp += 1i; temp1 =temp; ep2 = ep; prt1.chromosoe &= tm; prnt.chroosome temp; pnt1chmsme |=tep; prnt2.chrmsom |= te1; chld1 prnt1; chid pnt2; ;cnstOPIZE= 200; /建立一种种群的类,并且有固定的大小每次遗传,选出f()的排名在前50%的个体进行遗传(排名通过希尔排序实现),都会有约1%的个体变异,0%的个体发生交叉遗传,其他的直接遗传。每次遗传都记录下本次f(x)为最大的个体ax。遗传150次,如果过程中发现已有30代的Max始终不变了,阐明已达到最优,基本不需要再遗传了,因此提前跳出循环。lass Popuatoprivat: Individaliy nOP_IZE;publi: ulton() or(nti= 0; 0;ga = ) for(i gap; i=0 &dj.evauate() ind+ga.vlte(); -= gap) temp = idj; indj = inj; indj+gap tem; void nhei() Populao:hellSot(); csti NT = PP_SIZE / 2; n = (rnd()% (POP_SIZ/1) + (_SZ/4)) / 2; int nv =and()% (POP_IZE/100+1) (PP_SIZE100); it i,1, n2; Individuality tempNT; fr( i=0; T;i+) tmpi = ndi; (i = 0; i nv; i+) 1 =rd() %NT; id = tmp
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号