免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#include#include#include#include#include #include#include using namespace std; #define POPULATION 1000#defineMUTATION_RATE0.5#defineCROSSOVER_RATE0.7#define MAXCITYNUM 100#define ELITISMNUMBER 20int DistanceDataMAXCITYNUMMAXCITYNUM;/最多计算100城市int CityNum;/实际计算的城市数int Longest;/当代的最长路径int Shortest;/当代的最短路径int RandInt(int x,int y) return rand()%(y-x+1)+x;void readData(char *filename)/读入城市距离矩阵FILE *p;p=fopen(filename,r);fscanf(p,%d,&CityNum);for(int i=1;i=CityNum;i+)for(int j=1;j=CityNum;j+)fscanf(p,%d,&DistanceDataij);class route/一个个体public:int RouterNodeMAXCITYNUM;int TotalDistance;int FitNess;bool operator = (const route& lhs)for(int i=0;iMAXCITYNUM;i+)if(RouterNodei!=lhs.RouterNodei)return false;return true;route OneGenerationPOPULATION;/一代route TmpGenerationPOPULATION;/中间一代void CountRouteDistance(route &r)/计算每个个体的路径长度r.TotalDistance=0;for(int i=0;iCityNum-1;i+)r.TotalDistance+=DistanceDatar.RouterNodeir.RouterNodei+1;r.TotalDistance+=DistanceDatar.RouterNodeCityNum-1r.RouterNode0;void mySwap(int &t1,int &t2)int tmp;tmp=t1;t1=t2;t2=tmp;void grabPermutation(route &r)/产生一个随机排列int i=0;for(i=0;iCityNum;i+)r.RouterNodei=i+1;for(i=0;iCityNum;i+)int tmp=RandInt(i,CityNum-1);mySwap(r.RouterNodei,r.RouterNodetmp);void initializeFirstGun()/初始化第一代int i;for(i=0;iPOPULATION;i+)grabPermutation(OneGenerationi);void calculateFitness()/计算一代的适应性int i;for(i=0;iLongest)Longest=OneGenerationi.TotalDistance;if(OneGenerationi.TotalDistanceShortest)Shortest=OneGenerationi.TotalDistance;for(i=0;iPOPULATION;i+)OneGenerationi.FitNess=Longest-OneGenerationi.TotalDistance;void elitism(int DangQianDaiShu)/每一代最优秀的前几个保留/冒泡排序int i,j;route tmp;for(i=1;iPOPULATION;i+)for(j=0;j=POPULATION-1-i;j+)if(OneGenerationj.FitNessOneGenerationj+1.FitNess)tmp=OneGenerationj;OneGenerationj=OneGenerationj+1;OneGenerationj+1=tmp;for(i=0;iELITISMNUMBER;i+)TmpGenerationi=OneGenerationi;printf(第%d代;路径长度%d;路径:,DangQianDaiShu,OneGeneration0.TotalDistance);for(i=0;iCityNum;i+)printf(%d ,OneGeneration0.RouterNodei);printf(n);route selection()int BestFitness=0;int Position;int RandShu;int i;for(i=0;iBestFitness)Position=RandShu;BestFitness=OneGenerationRandShu.FitNess;return OneGenerationPosition;float RandFloat() return (rand()/(RAND_MAX+1.0);void crossover(route mather,route father,route &baby1,route &baby2)baby1=mather;baby2=father;if ( (RandFloat() CROSSOVER_RATE)| (mather= father) return;/first we choose a section of the chromosomeint beg = RandInt(0, CityNum-2);int end = beg;/find an endwhile (end = beg)end = RandInt(0, CityNum-1);for (int pos = beg; pos end+1; +pos)/these are the genes we want to swapint gene1 =mather.RouterNodepos;int gene2 =father.RouterNodepos;/find and swap them in baby1int tmp1;int tmp2;int i;for(i=0;iCityNum;i+)if(baby1.RouterNodei=gene1)tmp1=i;for(i=0;iCityNum;i+)if(baby1.RouterNodei=gene2)tmp2=i;mySwap(baby1.RouterNodetmp1,baby1.RouterNodetmp2);/find and swap them in baby2for(i=0;iCityNum;i+)if(baby2.RouterNodei=gene1)tmp1=i;for(i=0;i MUTATION_RATE) return;if(RandFloat()0.5)int tmp1;int tmp2;/for(int i=1;itmp2)mySwap(tmp1,tmp2);int i;for(i=tmp1;i=tmp2;i+)baby.RouterNodei=temp.RouterNodetmp1+tmp2-i;/mySwap(baby.RouterNodetmp1,baby.RouterNodetmp2);/elsefor(int i=0;i2000)break;Dijidai+;/选择&杂交&变异int NowGunNum=ELITISMNUMBER;while(1)route mather=selection();route father=selection();route baby1;route baby2;crossover(mather,father,baby1,baby2);mutate(baby1);mutate(baby2);if(NowGunNumPOPULATION)T
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年宠物食品科技创新报告
- 2025年激光切割和薄钢板拼焊成套设备项目合作计划书
- 2025年高压整体式多路阀项目合作计划书
- 围护结构施工与支撑方案
- HPK1-IN-62-生命科学试剂-MCE
- 2026-2031年中国野鸭行业市场发展趋势与前景展望战略研究报告
- 2025年护理述职报告题目及答案
- 人防工程地下空间利用方案
- 2025年热压硫化锌(ZNS)晶体合作协议书
- 2026年中国笔记本整机项目经营分析报告
- 2025年居间服务费合同范本与签订流程
- 2025内蒙古巴彦淖尔市临河区招聘社区工作者80人考试笔试模拟试题及答案解析
- 2025中国华电集团有限公司校园招聘笔试历年参考题库附带答案详解
- 2025年全国低压电工作业证(复审)考试练习题库(900题)附答案
- 2025-2026学年外研版(三起)(2024)小学英语三年级上册期中检测试卷及答案
- 制氧机项目可行性报告
- 肿瘤科简答试题及答案
- 公司货运调度员技能操作考核试卷及答案
- 医务人员专利知识培训课件
- 头疗手法专业知识培训课件
- HALAL清真知识培训内容
评论
0/150
提交评论