




免费预览已结束,剩余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年绿色能源运输船舶租赁与环保责任承诺合同
- 2025年高校后勤集团农产品直供与质量追溯服务合同
- 2025年新能源车贷续保服务合同范本
- 海尔冰箱安全知识培训课件
- 2025年绿色节能型办公设施销售与智能化维护综合服务合同
- 2025年大学图书馆自动化系统升级与维护服务合同
- 2025年高端冷链物流运输合同:生鲜冷链配送服务协议
- 2025年企业数字化转型IT服务合同终止与续约协议书
- 《西红柿移栽和管理》课件
- 《肺癌早期筛查与干预》课件
- 完整的离婚协议书打印电子版(2025年版)
- 自然科学类博物馆AI应用行业跨境出海战略研究报告
- 《小学科学课程标准》解读与教学设计
- 2025届高考新型题目“纠正错别字”新题模拟练习
- 2024年江苏省南京市中考数学试卷真题(含答案逐题解析)
- 儿童保健工作规范和技术规范
- 2025年区块链应用操作员职业技能竞赛理论参考试指导题库500题(含答案)
- 福建地区 绿色食品琯溪蜜柚生产操作规程
- 民办学校教职工学年度考核方案模版(3篇)
评论
0/150
提交评论