人工智能TSP旅行商问题实验报告(共8页).doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《人工智能TSP旅行商问题实验报告(共8页).doc》由会员分享,可在线阅读,更多相关《人工智能TSP旅行商问题实验报告(共8页).doc(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上人工智能实验三实验报告 班级: 姓名: 学号:一 实验题目TSP问题的遗传算法实现 旅行商问题(Traveling Salesman Problem, TSP),又译为旅行推销员问题、货担郎问题,简称为TSP问题,是最基本的路线问题。假设有n个可直达的城市,一销售商从其中的某一城市出发,不重复地走完其余n-1个城市并回到原出发点,在所有可能的路径中求出路径长度最短的一条。应用遗传算法求解30/10个节点的TSP(旅行商问题)问题,求问题的最优解。二 实验目的1 熟悉和掌握遗传算法的基本概念和基本思想;2 理解和掌握遗传算法的各个操作算子,能够用选定的编程语言设计简单的
2、遗传优化系统;3 通过实验培养学生利用遗传算法进行问题求解的基本技能。三 实验要求 1 掌握遗传算法的基本原理、各个遗传操作和算法步骤;2 要求求出问题最优解,若得不出最优解,请分析原因;3 对实验中的几个算法控制参数进行仔细定义,并能通过实验选择参数的最佳值; 4 要求界面显示每次迭代求出的局部最优解和最终求出的全局最优解。四 数据结构请说明染色体个体和群体的定义方法。struct RanSeTi /染色体的个体的定义方法int citycities; /基因的排列(即城市的顺序,路径的组织)int adapt; /记录适应度double p; /记录其在种群中的幸存概率 RanSeTi n
3、um, RanSeTi tempnum; /用数组来存储染色体群体方法五 实验算法1 说明算法中对染色体的编码方法,适应度函数定义方法1) 染色体的编码方法:即为染色体个体定义过程中生成的基因排列(路径中城市的顺序)struct RanSeTi /染色体的个体的定义方法int citycities; /基因的排列(即城市的顺序,路径的组织)int adapt; /记录适应度double p; /记录其在种群中的幸存概率 RanSeTi num, RanSeTi tempnum; /用数组来存储染色体群体方法2) 适应度函数定义方法:评价函数即适应度函数,在遗传算法中用来计算一个染色体优劣的函数
4、。在进行遗传操作和种群进化的时候,每个染色体的适应值是决定它是否进入下一轮种群进化的关键因素。适应值高的函数被选作新一代个体的可能性就会大。 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+=sumd
5、istance; /种群的总路径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
6、);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.
7、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=poi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 人工智能 TSP 旅行 问题 实验 报告
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内