版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#include<iostream>#include<string.h>#include<stdio.h>#include<stdlib.h>#include<time.h>usingnamespacestd;constintcity_num=10;//城市数量constintunit_num=100;//群体规模intps=10;//变异概率constintgenmax=500;//最大迭代数//城市间距离映射最优解权值=10intlength_table[10][10]={{0,1,1272,2567,1653,2097,1425,1177,3947,1},{1,0,1,2511,1633,2077,1369,1157,3961,1518},{1272,1,0,1,380,1490,821,856,3660,385},{2567,2511,1,0,1,2335,1562,2165,3995,933},{1653,1633,380,1,0,1,1041,1135,3870,456},{2097,2077,1490,2335,1,0,1,920,2170,1920},{1425,1369,821,1562,1041,1,0,1,4290,626},{1177,1157,856,2165,1135,920,1,0,1,1290},{3947,3961,3660,3995,3870,2170,4290,1,0,1},{1,1518,385,993,456,1920,626,1290,1,0}};classUnit{public:intpath[city_num];//个体的路径信息intlength;//个体价值};classGroup{public:Unitgroup[unit_num];Unitbest;intbest_gen;Group(){best.length=0x3f3f3f3f;best_gen=0;for(inti=0;i<unit_num;i++){boolflag[city_num]={};for(intj=0;j<city_num;j++){intt_city=rand()%city_num;while(flag[t_city])t_city=rand()%city_num;flag[t_city]=true;group[i].path[j]=t_city;}}}//对每个个体进行评估voidassess(){for(intk=0;k<unit_num;k++){intrel=0;for(inti=1;i<city_num;i++)rel+=length_table[group[k].path[i-1]][group[k].path[i]];rel+=length_table[group[k].path[city_num-1]][group[k].path[0]];group[k].length=rel;}}//根据评估结果对个体进行排序voidunit_sort(){for(inti=0;i<unit_num;i++){for(intj=i+1;j<unit_num;j++){if(group[i].length>group[j].length){Unittemp;memcpy(&temp,&group[i],sizeof(Unit));memcpy(&group[i],&group[j],sizeof(Unit));memcpy(&group[j],&temp,sizeof(Unit));}}}}//交叉Unitcross(Unit&father,Unit&mother){intl=rand()%city_num;intr=rand()%city_num;if(l>r)swap(l,r);boolflag[city_num]={};for(inti=l;i<=r;i++)flag[father.path[i]]=true;Unitson;intpos=0;for(inti=0;i<l;i++){while(flag[mother.path[pos]])pos++;son.path[i]=mother.path[pos++];}for(inti=l;i<=r;i++)son.path[i]=father.path[i];for(inti=r+1;i<city_num;i++){while(flag[mother.path[pos]])pos++;son.path[i]=mother.path[pos++];}returnson;}//突变voidmutation(Unit&t){intproport=rand()%100;if(proport>ps)return;intone=rand()%city_num;inttwo=rand()%city_num;while(two!=one)two=rand()%city_num;swap(t.path[one],t.path[two]);}//输出信息voidprint(){for(inti=0;i<unit_num;i++){printf("第%d个个体,路径信息:",i);for(intj=0;j<city_num;j++)printf("%d",group[i].path[j]);printf(";总权值:%d;\n",group[i].length);}printf("最优个体,路径信息:");for(intj=0;j<city_num;j++)printf("%d",group[0].path[j]);printf(";总权值:%d;\n",group[0].length);}//种群进化voidwork(){for(inti=0;i<genmax;i++){//如果进化层数大于20,加大变异的概率if(i>20)ps*=3;assess();//评估unit_sort();//根据评估结果排序if(best.length>group[0].length){memcpy(&best,&group[0],sizeof(group[0]));best_gen=i;}for(intj=0;j+2<unit_num;j+=3)group[j+2]=cross(group[j],group[j+1]);for(intj=0;j<city_num;j++)//变异(从1开始,保留最优)mutation(group[j]);}}};Unitgroup[unit_num];//种群变量Unitbestone;//记录最短路径intgeneration_num;//记录当前达到了第几代intmain(){srand((int)time(0));for(inti=0;i<20;i++){
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年广东省湘教版高中物理选修九第四章原子物理课件
- 2026年大学物理表面物理基础课件
- 新教材高中地理 第2章 地表形态的塑造 第1节 塑造地表形态的力量教学设计 新人教版选择性必修第一册
- 宫颈环扎考试题目及答案解析
- 高一政治电子考卷及答案
- 2026食品行业经济状况与投资机会分析及供需研究与发展规划研究综合报告
- 2026Fast芯片组供应链生态与市场机会深度研究报告
- 学年七年级语文下册 感恩情怀 第13课《可贵的沉默》教学设计2 新疆教育版
- 2026生物传感器行业市场潜力分析及投资机会研究报告
- 新教材高中政治 6.2 在实践中追求和发展真理教学设计4 新人教版必修4
- 儿科护理中的安全管理与风险防范
- 2025年江苏省省属事业单位《综合知识和能力素质》真题及答案法律类
- 《危险货物港口作业重大事故隐患判定标准》深度解读
- 陕西省2026年重点学校小升初入学分班考试数学考试试题及答案
- 2026年职业教育产教融合新模式探索与实践
- 云南省省公务员考试真题及答案
- 淋巴瘤免疫治疗指南
- 2026江苏苏州漕湖投资控股有限公司下属子公司第一批次招聘8人笔试备考题库及答案解析
- (2026年)伤口愈合知识课件
- 肺功能检查质控标准课件
- 2026中国资源循环集团电池有限公司招聘4人笔试参考题库附带答案详解
评论
0/150
提交评论