




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精品文档人工智能实验三实验报告 班级: 姓名: 学号:一 实验题目TSP问题的遗传算法实现 旅行商问题(Traveling Salesman Problem, TSP),又译为旅行推销员问题、货担郎问题,简称为TSP问题,是最基本的路线问题。假设有n个可直达的城市,一销售商从其中的某一城市出发,不重复地走完其余n-1个城市并回到原出发点,在所有可能的路径中求出路径长度最短的一条。应用遗传算法求解30/10个节点的TSP(旅行商问题)问题,求问题的最优解。二 实验目的1 熟悉和掌握遗传算法的基本概念和基本思想;2 理解和掌握遗传算法的各个操作算子,能够用选定的编程语言设计简单的遗传优化系统;3 通过实验培养学生利用遗传算法进行问题求解的基本技能。三 实验要求 1 掌握遗传算法的基本原理、各个遗传操作和算法步骤;2 要求求出问题最优解,若得不出最优解,请分析原因;3 对实验中的几个算法控制参数进行仔细定义,并能通过实验选择参数的最佳值; 4 要求界面显示每次迭代求出的局部最优解和最终求出的全局最优解。四 数据结构请说明染色体个体和群体的定义方法。struct RanSeTi /染色体的个体的定义方法int citycities; /基因的排列(即城市的顺序,路径的组织)int adapt; /记录适应度double p; /记录其在种群中的幸存概率 RanSeTi num, RanSeTi tempnum; /用数组来存储染色体群体方法五 实验算法1 说明算法中对染色体的编码方法,适应度函数定义方法1) 染色体的编码方法:即为染色体个体定义过程中生成的基因排列(路径中城市的顺序)struct RanSeTi /染色体的个体的定义方法int citycities; /基因的排列(即城市的顺序,路径的组织)int adapt; /记录适应度double p; /记录其在种群中的幸存概率 RanSeTi num, RanSeTi tempnum; /用数组来存储染色体群体方法2) 适应度函数定义方法:评价函数即适应度函数,在遗传算法中用来计算一个染色体优劣的函数。在进行遗传操作和种群进化的时候,每个染色体的适应值是决定它是否进入下一轮种群进化的关键因素。适应值高的函数被选作新一代个体的可能性就会大。 TSP问题中适应度函数常取路径长度的倒数(或倒数的相关函数),如: 其中,N是个调节参数,根据实验情况进行确定。for(i=0;inum;i+)sumdistance=0;for(j=1;jcities;j+)n1= RanSeTi i.cityj-1;n2= RanSeTi i.cityj;sumdistance+=distancen1n2;RanSeTi i.adapt=sumdistance; /每条染色体的路径总和biggestsum+=sumdistance; /种群的总路径2 采用的选择、交叉、变异操作算子的具体操作1)选择操作我们定义f(xi)为第i(i=1,2,3.popsize)个染色体的适应度,则每个个体被选中的概率是: 本题中具体使用的是期望值方法/初始化梯度概率for(i=0;inum;i+)gradienti=0.0;xuanzei=0.0;gradient0=group0.p;for(i=1;inum;i+)gradienti=gradienti-1+groupi.p;srand(unsigned)time(NULL);/随机产生染色体的存活概率for(i=0;inum;i+)xuanzei=(rand()%100);xuanzei/=100;/选择能生存的染色体for(i=0;inum;i+)for(j=0;jnum;j+)if(xuanzeigradientj)xuani=j; /第i个位置存放第j个染色体break;/拷贝种群for(i=0;inum;i+)grouptempi.adapt=groupi.adapt;grouptempi.p=groupi.p;for(j=0;jcities;j+)grouptempi.cityj=groupi.cityj;/数据更新for(i=0;inum;i+)temp=xuani;groupi.adapt=grouptemptemp.adapt;groupi.p=grouptemptemp.p;for(j=0;jcities;j+)groupi.cityj=grouptemptemp.cityj;2)交叉操作:交叉算子就是把两个父代个体的部分结构加以替换重组而生成新个体的操作。部分匹配交叉、顺序交叉、改进的启发式顺序交叉/temp1号染色体和temp2染色体交配for(i=0;it/2;i+)point1=rand()%cities;point2=rand()%cities;for(j=temp1;jnum;j+)if(jiaopeiflagj=1)temp1=j;break;for(j=temp1+1;jpoint2) /保证point1=point2temp=point1;point1=point2;point2=temp; memset(map1,-1,sizeof(map1);memset(map2,-1,sizeof(map2);/断点之间的基因产生映射for(k=point1;k=point2;k+)map1grouptemp1.cityk=grouptemp2.cityk;map2grouptemp2.cityk=grouptemp1.cityk;/断点两边的基因互换for(k=0;kpoint1;k+)temp=grouptemp1.cityk;grouptemp1.cityk=grouptemp2.cityk;grouptemp2.cityk=temp;for(k=point2+1;kcities;k+)temp=grouptemp1.cityk;grouptemp1.cityk=grouptemp2.cityk;grouptemp2.cityk=temp;/处理产生的冲突基因for(k=0;kpoint1;k+)for(kk=point1;kk=point2;kk+)if(grouptemp1.cityk=grouptemp1.citykk)grouptemp1.cityk=map1grouptemp1.cityk;break;for(k=point2+1;kcities;k+)for(kk=point1;kk=point2;kk+)if(grouptemp1.cityk=grouptemp1.citykk)grouptemp1.cityk=map1grouptemp1.cityk;break;for(k=0;kpoint1;k+)for(kk=point1;kk=point2;kk+)if(grouptemp2.cityk=grouptemp2.citykk)grouptemp2.cityk=map2grouptemp2.cityk;break;for(k=point2+1;kcities;k+)for(kk=point1;kk=point2;kk+)if(grouptemp2.cityk=grouptemp2.citykk)grouptemp2.cityk=map2grouptemp2.cityk;break; temp1=temp2+1;3)变异操作TSP问题中,经常采取的变异操作主要有:位点变异、逆转变异、对换变异、插入变异。/随机产生变异概率srand(unsigned)time(NULL);for(i=0;inum;i+)bianyipi=(rand()%100);bianyipi/=100;/确定可以变异的染色体t=0;for(i=0;inum;i+)if(bianyipipm)bianyiflagi=1;t+;/变异操作,即交换染色体的两个节点srand(unsigned)time(NULL);for(i=0;inum;i+)if(bianyiflagi=1) temp1=rand()%10;temp2=rand()%10;point=groupi.citytemp1; groupi.citytemp1=groupi.citytemp2;groupi.citytemp2=point;3 实验中采用的算法参数的最佳选择值是多少#define cities 10/30 /城市的个数#define MAXX 150 /迭代次数#define pc 0.72 /交配概率#define pm 0.02 /变异概率#define num 20 /种群的大小六 实验结果1 要求有实验运行结果截图,以及必要的说明以上部分是每次迭代的步骤结果,通过染色体群体中个体的交配、变异,从而更改染色体的具体基因组成,通过不断进行适应度计算、存活率的计算,更新已有数值;以上部分为迭代之后的总结果,输出最终的种群评价,从染色体种群里面取出最佳的染色体,并进行输出。2 要求说明是否搜索到了最优解,如果没有,请分析原因本题中根据随机生成的cities个城市之间的相互距离、随机产生初试群,通过TSP算法,通过以下步骤:(1) 初始化群体; (2) 计算群体上每个个体的适应度值; (3) 按由个体适应度值所决定的某个规则选择将进入下一代的个体; (4) 按概率Pc进行交叉操作; (5) 按概率Pm进行变异操作; (6) 没有满足某种停止条件,则转第(2)步,否则进入(7);(7) 输出种群中适应度值最优的染色体作为问题的满意解或最优解。成功找到种群中适应度值最优的染色体作为问题的满意解或最优解。若失败,分析可得失败原因为:随机生成的cities个城市之间的相互距离、随机产生初试群有可能不存在适应度值最优的染色体七 实验总结及体会1. 同一问题可能有不同的几种算法相对应解决:对于此类旅行者问题,原在数据结构和算法课中学过迪杰斯特拉算法,也可以高效快速的解决给定好初值的最短路径问题;在本课中,有学到了新的算法:TSP算法,此算法从遗传学角度,开辟了一个新的视野。通过每次迭代求出的局部最优解和最终求出的全局最优解。两种不同的算法可以求解同一问题,但是角度完全不一样,从目前自己实验的结果而言,对于小数据量的输入均可以快速高效的完成题目。但是遗传算法可以考虑到的问题复杂度更高,更适合应用于实际。2. 学习时应当重视动手实践能力:课堂上讲解的遗传算法较
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度绿色建筑幕墙劳务分包工程合同范本
- 2025东航大客户航空安全培训服务合同
- 肩关节运动康复新策略-洞察及研究
- 2025年新型防盗门窗产品销售代理协议
- 2025年度第三方保密协议与数据传输安全规范模板
- 2025年度地暖垫层施工质量保证与售后服务承包合同范本
- 2025版蔬菜种植基地土地流转承包合同
- 2025版食品添加剂研发委托生产合作协议
- 2025年新能源设备采购合同补充协议范本
- 2025年度山地草场使用权流转合同
- 放射科质控汇报
- 眼科学教学课件:绪论
- GB/T 31091-2014煤场管理通用技术要求
- GB/T 24218.1-2009纺织品非织造布试验方法第1部分:单位面积质量的测定
- 万东GFS型高频高压发生装置维修手册
- 公寓de全人物攻略本为个人爱好而制成如需转载注明信息
- 企业经营沙盘模拟实训指导书
- 汉密尔顿抑郁量表17项
- 《现代物流管理》第一章-导论(课用)
- 智能制造生产线运营与维护课件完整版
- 树木清障专项施工方案
评论
0/150
提交评论