ImageVerifierCode 换一换
格式:DOCX , 页数:30 ,大小:32.58KB ,
资源ID:22893136      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22893136.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(遗传算法Word文档下载推荐.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

遗传算法Word文档下载推荐.docx

1、对这类复杂的问题,人们已经意识到应把主要精力放在寻求满意解上,而遗传算法是寻求这种满意解的最佳工具之一。实践证明,遗传算法对于组合优化中的NP问题非常有效。例如遗传算法已经在求解旅行商问题、 背包问题、装箱问题、图形划分问题等方面得到成功的应用。此外,GA也在生产调度问题、自动控制、机器人学、图象处理、人工生命、遗传编码和机器学习等方面获得了广泛的运用。遗传算法的现状 进入90年代,遗传算法迎来了兴盛发展时期,无论是理论研究还是应用研究都成了十分热门的课题。尤其是遗传算法的应用研究显得格外活跃,不但它的应用领域扩大,而且利用遗传算法进行优化和规则学习的能力也显著提高,同时产业应用方面的研究也在

2、摸索之中。此外一些新的理论和方法在应用研究中亦得到了迅速的发展,这些无疑均给遗传算法增添了新的活力。遗传算法的应用研究已从初期的组合优化求解扩展到了许多更新、更工程化的应用方面。随着应用领域的扩展,遗传算法的研究出现了几个引人注目的新动向:一是基于遗传算法的机器学习,这一新的研究课题把遗传算法从历来离散的搜索空间的优化搜索算法扩展到具有独特的规则生成功能的崭新的机器学习算法。这一新的学习机制对于解决人工智能中知识获取和知识优化精炼的瓶颈难题带来了希望。二是遗传算法正日益和神经网络、模糊推理以及混沌理论等其它智能计算方法相互渗透和结合,这对开拓21世纪中新的智能计算技术将具有重要的意义。三是并行

3、处理的遗传算法的研究十分活跃。这一研究不仅对遗传算法本身的发展,而且对于新一代智能计算机体系结构的研究都是十分重要的。四是遗传算法和另一个称为人工生命的崭新研究领域正不断渗透。所谓人工生命即是用计算机模拟自然界丰富多彩的生命现象,其中生物的自适应、进化和免疫等现象是人工生命的重要研究对象,而遗传算法在这方面将会发挥一定的作用,五是遗传算法和进化规划(Evolution Programming,EP)以及进化策略(Evolution Strategy,ES)等进化计算理论日益结合。EP和ES几乎是和遗传算法同时独立发展起来的,同遗传算法一样,它们也是模拟自然界生物进化机制的只能计算方法,即同遗传

4、算法具有相同之处,也有各自的特点。目前,这三者之间的比较研究和彼此结合的探讨正形成热点。1991年D.Whitey在他的论文中提出了基于领域交叉的交叉算子(Adjacency based crossover),这个算子是特别针对用序号表示基因的个体的交叉,并将其应用到了TSP问题中,通过实验对其进行了验证。D.H.Ackley等提出了随即迭代遗传爬山法(Stochastic Iterated Genetic Hill-climbing,SIGH)采用了一种复杂的概率选举机制,此机制中由m个“投票者”来共同决定新个体的值(m表示群体的大小)。实验结果表明,SIGH与单点交叉、均匀交叉的神经遗传算

5、法相比,所测试的六个函数中有四个表现出更好的性能,而且总体来讲,SIGH比现存的许多算法在求解速度方面更有竞争力。H.Bersini和G.Seront将遗传算法与单一方法(simplex method)结合起来,形成了一种叫单一操作的多亲交叉算子(simplex crossover),该算子在根据两个母体以及一个额外的个体产生新个体,事实上他的交叉结果与对三个个体用选举交叉产生的结果一致。同时,文献还将三者交叉算子与点交叉、均匀交叉做了比较,结果表明,三者交叉算子比其余两个有更好的性能。国内也有不少的专家和学者对遗传算法的交叉算子进行改进。2002年,戴晓明等应用多种群遗传并行进化的思想,对不

6、同种群基于不同的遗传策略,如变异概率,不同的变异算子等来搜索变量空间,并利用种群间迁移算子来进行遗传信息交流,以解决经典遗传算法的收敛到局部最优值问题2004年,赵宏立等针对简单遗传算法在较大规模组合优化问题上搜索效率不高的现象,提出了一种用基因块编码的并行遗传算法(Building-block Coded Parallel GA,BCPGA)。该方法以粗粒度并行遗传算法为基本框架,在染色体群体中识别出可能的基因块,然后用基因块作为新的基因单位对染色体重新编码,产生长度较短的染色体,在用重新编码的染色体群体作为下一轮以相同方式演化的初始群体。2005年,江雷等针对并行遗传算法求解TSP问题,探

7、讨了使用弹性策略来维持群体的多样性,使得算法跨过局部收敛的障碍,向全局最优解方向进化。遗传算法的一般算法 遗传算法是基于生物学的,理解或编程都不太难。下面是遗传算法的一般算法:创建一个随机的初始状态初始种群是从解中随机选择出来的,将这些解比喻为染色体或基因,该种群被称为第一代,这和符号人工智能系统的情况不一样,在那里问题的初始状态已经给定了。评估适应度对每一个解(染色体)指定一个适应度的值,根据问题求解的实际接近程度来指定(以便逼近求解问题的答案)。不要把这些“解”与问题的“答案”混为一谈,可以把它理解成为要得到答案,系统可能需要利用的那些特性。繁殖(包括子代突变)带有较高适应度值的那些染色体

8、更可能产生后代(后代产生后也将发生突变)。后代是父母的产物,他们由来自父母的基因结合而成,这个过程被称为“杂交”。下一代如果新的一代包含一个解,能产生一个充分接近或等于期望答案的输出,那么问题就已经解决了。如果情况并非如此,新的一代将重复他们父母所进行的繁衍过程,一代一代演化下去,直到达到期望的解为止。并行计算非常容易将遗传算法用到并行计算和群集环境中。一种方法是直接把每个节点当成一个并行的种群看待。然后有机体根据不同的繁殖方法从一个节点迁移到另一个节点。另一种方法是“农场主/劳工”体系结构,指定一个节点为“农场主”节点,负责选择有机体和分派适应度的值,另外的节点作为“劳工”节点,负责重新组合

9、、变异和适应度函数的评估。术语说明由于遗传算法是由进化论和遗传学机理而产生的搜索算法,所以在这个算法中会用到很多生物遗传学知识,下面是我们将会用来的一些术语说明:一、染色体(Chronmosome)染色体又可以叫做基因型个体(individuals),一定数量的个体组成了群体(population),群体中个体的数量叫做群体大小。二、基因(Gene)基因是串中的元素,基因用于表示个体的特征。例如有一个串S1011,则其中的1,0,1,1这4个元素分别称为基因。它们的值称为等位基因(Alletes)。三、基因地点(Locus)基因地点在算法中表示一个基因在串中的位置称为基因位置(Gene Pos

10、ition),有时也简称基因位。基因位置由串的左向右计算,例如在串 S1101 中,0的基因位置是3。四、基因特征值(Gene Feature)在用串表示整数时,基因的特征值与二进制数的权一致;例如在串 S=1011 中,基因位置3中的1,它的基因特征值为2;基因位置1中的1,它的基因特征值为8。五、适应度(Fitness)各个个体对环境的适应程度叫做适应度(fitness)。为了体现染色体的适应能力,引入了对问题中的每一个染色体都能进行度量的函数,叫适应度函数. 这个函数是计算个体在群体中被使用的概率。遗传算法实例 -来个例子,大家好理解-基于遗传算法的人工生命模拟 #includestdl

11、ib.hgraphics.hmath.htime.hstring.h#include graph.c/* 宏定义 */#define TL1 20 /* 植物性食物限制时间 */#define TL2 5 /* 动物性食物限制时间 */#define NEWFOODS 3 /* 植物性食物每代生成数目 */#define MUTATION 0.05 /* 变异概率 */#define G_LENGTH 32 /* 个体染色体长度 */#define MAX_POP 100 /* 个体总数的最大值 */#define MAX_FOOD 100 /* 食物总数的最大值 */#define MAX_

12、WX 60 /* 虚拟环境的长度最大值 */#define MAX_WY 32 /* 虚拟环境的宽度最大值 */#define SX1 330 /* 虚拟环境图左上角点x坐标 */#define SY1 40 /* 虚拟环境图左上角点y坐标 */#define GX 360 /* 个体数进化图形窗口的左上角点X坐标 */#define GY 257 /* 个体数进化图形窗口的左上角点Y坐标 */#define GXR 250 /* 个体数进化图形窗口的长度 */#define GYR 100 /* 个体数进化图形窗口的宽度 */#define GSTEP 2 /* 个体数进化图形窗口的X方向步

13、长 */#define R_LIFE 0.05 /* 初期产生生物数的环境比率 */#define R_FOOD 0.02 /* 初期产生食物数的环境比率 */#define SL_MIN 10 /* 个体寿命最小值 */* 全局变量 */unsigned char geneMAX_POPG_LENGTH; /* 遗传基因 */unsigned char iflgMAX_POP; /* 个体死活状态标志变量 */unsigned char fflgMAX_FOOD; /* 食物有无状态标志变量 */unsigned char worldMAX_WXMAX_WY; /* 虚拟环境的数据 */un

14、signed char /* 各中行为模式数据 */life155=0,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,0;unsigned charlife255=1,1,1,1,1,1,0,0,0,1,1,0,0,0,1,1,0,0,0,1,1,1,1,1,1;food155=0,0,0,1,0,0,0,1,1,0,0,1,0,1,0,0,0,1,1,0,0,0,0,1,0;food255=0,0,0,1,0,0,0,1,1,0,0,1,1,1,0,0,0,1,1,0,0,0,0,1,0;int pop_size; /* 个体总数 */int i

15、atrMAX_POP4; /* 个体属性 */* iatr0 个体当前位置x坐标 */* iatr1 个体当前位置y坐标 */* iatr2 内部能量 */* iatr3 年龄属性 */int food_size; /* 食物总数 */int fatrMAX_FOOD4; /* 食物属性 */* fatr0 食物当前位置x坐标 */* fatr1 食物当前位置y坐标 */* fatr2=0 : 植物性 =1:动物性 */* fatr3 新鲜程度 */int wx,wy; /* 虚拟环境的长宽度 */void uni_crossover(gene,g1,g2,g3,ratio1,g_length

16、) /* 均匀交叉 */unsigned char *gene;int g1,g2,g3; /* g1 g2 父个体编号 g3 子个体编号 */double ratio1; /* 父个体g1被选中的概率 */int g_length; /* 个体遗传基因的位长 */unsigned char *gene1; /* 父1遗传基因的指针 */unsigned char *gene2; /* 父2遗传基因的指针 */unsigned char *gene3; /* 子遗传基因的指针 */double rnd,r1;int i;gene1=gene+g_length*g1;gene2=gene+g_l

17、ength*g2;gene3=gene+g_length*g3;r1=(int)(10000.0*ratio1);for(i=0;ig_length;i+) rnd=random(10000);if(rnd=r1) *(gene3+i)=*(gene1+i);else *(gene3+i)=*(gene2+i);void g_disp_unit(x,y,n) /* 绘制虚拟环境的一个单元 */int x,y; /* x=0,1,2.,wx-1; y=0,1,2,.,wy-1 */int n; /* n=0: =1: 生物1 =2:生物2 =3:植物性食物 =4:障碍物 =5:动物性食物 */i

18、nt gx,gy,i,j;unsigned char col;gx=SX1+5*x;gy=SY1+5*y;5;for(j=0;jj+) switch(n) case 0: col=0; break;case 1: col=life1j i*2;case 2: col=life2j i*4;case 3: col=food1j i*6;case 4: col=7;case 5: col=food2j i*11;g_pset(gx+j,gy+i,col);void g_draw_world() /* 显示虚拟环境画面 */int i,j;wy;wx;g_disp_unit(j,i,worldj i

19、);void g_draw_frame(x1,y1,x2,y2,c1,c2,c3,c4,text)int x1,y1,x2,y2,c1,c2,c3,c4;char *text; int n,x3;g_rectangle(x1,y1,x2,y2,c1,1);g_rectangle(x1,y1,x2,y2,c2,0);g_rectangle(x1,y1,x2,y1+16,c3,1);g_rectangle(x1,y1,x2,y1+16,c2,0);n=strlen(text);x3=x1+(x2-x1-n*8)/2);disp_hz16(text,x3,y1,c4);void g_init_fra

20、mes() /* 初始化画面 */int i,j,cx,cy,x,y;char text17;g_draw_frame(0,0,639,399,15,0,4,15,基于遗传算法的人工生命模拟);g_draw_frame(0,16,320,170,7,0,8,15,设定参数y=48;setcolor(9);disp_hz16(植物食物限制时间,16,y,15);sprintf(text,%d,TL1);g_text(200,y+8,4,text);y=y+24;动物食物限制时间,TL2);植物食物每代生成个数,NEWFOODS);变异概率i=(int)(MUTATION*100.0);,i);g

21、_text(152,y+8,4,text);g_draw_frame(0,170,320,399,7,0,8,15,最佳基因型x=16;y=194;SP:物种号.,x,y,15);y=y+16;SL:寿命.VF:视野.TM:基本移动模式.CM:移动特点.LM:移动能耗.CA:行动特点.CR:善变性.SA:攻击速度.DA:防御能力.LA:攻击能耗.EF:食物吸取效率.g_draw_frame(320,16,639,207,7,0,8,15,虚拟世界g_draw_frame(320,207,639,399,7,0,8,15,世代个体数目变化void g_init_graph() /* 个体数进化图

22、初始化 */g_rectangle(GX,GY,GX+GXR,GY+GYR,0,1);g_rectangle(GX,GY,GX+GXR,GY+GYR,6,0);setcolor(1);disp_hz16( 生物 1,GX+5,GY-18,15);g_line(GX+90,GY-10,GX+110,GY-10,1);setcolor(4);生物 2,GX+120,GY-18,15);g_line(GX+205,GY-10,GX+225,GY-10,4);setcolor(0);世代数,GX+168,GY+GYR+10,15);g_text(GX-25,GY,0,100g_text(GX-14,GY+GYR,0,0void g_plot_population(gen_num,n1,n2,n1old,n2old)int gen_num,n1,n2,n1old,n2old;int x,y,gx,gy,x_old,y_old;char text8;if(gen_num%10=0)x=GX+(gen_num-1)*GSTEP;g_line(x,GY+1,x,GY+GYR-1,1);,gen_num);if(gen_num100|gen_num%20=0)g_text(x-8,GY+GYR+5,15,text);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1