遗传算法求解TSP问题报告_第1页
遗传算法求解TSP问题报告_第2页
遗传算法求解TSP问题报告_第3页
遗传算法求解TSP问题报告_第4页
遗传算法求解TSP问题报告_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、遗传算法求解TSP问题实验报告一、实验要求:以旅行商问题(TSP)为例做模拟进化搜索技术实验,并提交实验研究报告。二、实验思路:boolfnCreateRandomGene();/产生随机基因boolfnGeneAberrance();/基因变异boolfnGeneMix();/基因交叉产生新的个体测试并淘汰适应度低的个体boolfnEvalAll();/测试所有基因的适应度intfnEvalOne(T&Gene);/测试某一个基因的适应度voidCrossover(intnFatherA,intnFatherB);voidfnDispProbability();/显示每个个体的权值Cross

2、over。两染色体的交叉实现输入参数:1、nFatherA父染色体A2、nFatherB父染色体B3、nMode交叉方式返回值:空注:现有交叉方式1、常规交叉方式,该方式比现代计算方法(邢文训等编著)p178给出的“非常规码的常规交配法”稍复杂些。书中只随机选择一个交配位,两个后代交配位之前的基因分别继承双亲的交配位之前的基因。本程序中,是随机选择两个不相同的交配位,后代在这两个交配位之间继承双亲在这两个交配位之间的基因如父A123I4567I8910父B478I3259I1610子A832I4567I9110子B146I3259I78102、贪心交叉方式(GreedyCrossover),具

3、体算法可参见谢胜利,等求解TSP问题的一种改进的遗传算法J.计算机工程与应用2002(8):58245.三、实验代码:#include#include#include#include#include#include#include#includedef.h#includeTSP.hvoidmain()ifstreaminput_file;ofstreamoutput_file;time_ttime1,time2;int_GENERATION_AMOUNT;inttimes;int_CITY_AMOUNT=-1;intii,j,k;std:vectorx;std:vectory;charread

4、file50;constchar*writefile=tsp.txt;doubletempx10000,tempy10000;coutvv打开城市坐标文件:;cinreadfile;input_file.open(readfile);if(!input_file)coutvv打开错误!;return;coutvv读入城市坐标vvendl;while(1)if(!input_fileeof()_CITY_AMOUNT+;input_filetempx_CITY_AMOUNTtempy_CITY_AMOUNT;if(tempx_CITY_AMOUNTv0|tempy_CITY_AMOUNTv0)c

5、outvv文件格式有误!;return;elsebreak;if(_CITY_AMOUNT=-1)coutvv文件格式有误!;return;input_file.close();_CITY_AMOUNT=_CITY_AMOUNT+1;x.reserve(_CITY_AMOUNT);y.reserve(_CITY_AMOUNT);lpCityDistance.reserve(_CITY_AMOUNT*_CITY_AMOUNT);for(k=0;kv_CITY_AMOUNT;k+)xk=tempxk;yk=tempyk;coutvv已存入的城市信息为:vvendl;for(ii=0;iiv_CIT

6、Y_AMOUNT;ii+)coutvv第vvii+1vv个城市vv(vvxiivv,vvyiivv)vvendl;lpCityDistance.clear();for(k=0;kv_CITY_AMOUNT;k+)lpCityDistancek*_CITY_AMOUNT+k=0;for(j=k+1;jv_CITY_AMOUNT;j+)lpCityDistancek*_CITY_AMOUNT+j=lpCityDistancej*_CITY_AMOUNT+k=sqrt(xk-xj)*(xk-xj)+(yk-yj)*(yk-yj);coutvv输入进化代数:vvendl;cintimes;coutvv

7、输入种群大小:(大于城市个数小于10O00)vvendl;cin_GENERATION_AMOUNT;while(_GENERATION_AMOUNT=1OOOO|_GENERATION_AMOUNTv_CITY_AMOUNT)coutvv种群数输入错误!请重新输入(大于城市个数小于10000)vvendl;cin_GENERATION_AMOUNT;Csgav_CONTAINER,_CONTAINER_PCUnit(times,_GENERATION_AMOUNT,_CITY_AMOUNT);/初始化time1=time(NULL);/开始遗传算法if(!CUnit.fnCreateRand

8、omGene()/产生随机基因/产生随机的基因exit(0);/循环基因编译,杂交,淘汰过程CUnit.fnEvalAll();/测试所有基因的适应度for(inti=0;itimes;+i)/CUnitinDispProbabilityO;/显示每个个体的权值CUnit.fnGeneAberrance();/基因变异/基因变异/CUnitinDispProbabilityO;/显示每个个体的权值CUnit.fnGeneMix();/交叉产生新的个体测试并淘汰适应度低的个体/基因杂交CUnit.fnEvalAll();/测试所有基因的适应度/每隔_DISP_INTERVAL显示一次结果if(i

9、+1)%_DISP_INTERVAL=0IIi=0)cout第i+1代endl;CUnit.fnDispProbability();CUnit.fnDispHistoryMin();CUnit.fnDispHistoryMin();time2=time(NULL);coutnn计算用时为:vvdifftime(time2,time1)vvsvvendl;四、实验结果:IX親斗邨生肆甘“78SmH*滴41蛊甘“269067爵喩甘“4|5|6|7|8|9IX|2|0|3|4獭765床*41蟲甘“305236mH*滴41蛊甘“269067爵喩甘“4|5|6|7|8|9IX|2|0|3|4M770才*兮斗型甘

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论