欢迎来到得力文库 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
得力文库 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2022年遗传算法解决TSP问题 .pdf

    • 资源ID:42649342       资源大小:118.15KB        全文页数:10页
    • 资源格式: PDF        下载积分:4.3金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要4.3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2022年遗传算法解决TSP问题 .pdf

    遗传算法解决 TSP问题(C+版)遗传算法流程:交叉,编译,计算适应度,保存最优个体。其中交叉过程是选择最优的两个染色体进行交叉操作,本文采用的是轮盘赌算法。#include#include#include usingnamespace std;#define population 200/种群数量#define pc 0.9/交叉的概率#define pm 0.1/变异的概率#define count 200/迭代的次数#define num 10/城市的数量int*city;/存放每个个体的访问顺序int path1010=/0,1,2,3,4,5,6,7,8,9 0,23,93,18,40,34,13,75,50,35,/0 23,0,75,4,72,74,36,57,36,22,/1 93,75,0,64,21,73,51,25,74,89,/2 18,4,64,0,55,52,8,10,67,1,/3 40,72,21,55,0,43,64,6,99,74,/4 34,74,73,52,43,0,43,66,52,39,/5 13,36,51,8,64,43,0,16,57,94,/6 75,57,25,10,6,66,16,0,23,11,/7 50,36,74,67,99,52,57,23,0,42,/8 35,22,89,1,74,39,94,11,42,0/9;int*dis;/存放每个个体的访问顺序下的路径长度double*fitness;/存放灭个个体的适应度intmin_dis=1000000;intmin_index=-1;名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 10 页 -int*min_path;/初始化种群voidinit()int*a=newint num;for(inti=0;i num;i+)ai=i;city=newint*population;for(inti=0;i population;i+)cityi=newint num;for(inti=0;i=0;j-)int n=rand()%(j+1);/产出的数是 0-j,保证交换的后面的数不会再被交换swap(aj,an);/保证 a里面全是 0-(num-1)的数,无重复的数,只是顺序颠倒cityij=aj;delete a;dis=newint population;fitness=newdouble population;min_path=newint num;/计算适应度void compute()/cout do compute now.endl;名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 10 页 -double total=0;for(inti=0;i population;i+)/计算每种情况下,路径的长度disi=0;int a=cityi0,b;for(int j=1;j num;j+)b=cityij;disi+=pathab;a=b;disi+=pathbcityi0;fitnessi=1.0/disi;/以距离的倒数作为适应度函数值total+=fitnessi;/选择适应度高的物种,采用轮盘赌算法int select()double total=0;for(inti=0;i population;i+)total+=fitnessi;double size=rand()/(double)RAND_MAX *total;/保证不产生0/cout size size endl;double sum=0;inti=0;while(sum=size&ipopulation)sum+=fitness+i;return -i;/返回被选中的个体名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 10 页 -intgetMinDis()int result=dis0;int index=0;for(inti=1;i disi)result=disi;index=i;return index;intgetMaxDis()int result=dis0;int index=0;for(inti=1;i population;i+)if(result disi)result=disi;index=i;return index;void save()intcurrent_min_index=getMinDis();intcurrent_max_index=getMaxDis();if(discurrent_min_index min_dis)名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 10 页 -min_dis=discurrent_min_index;for(inti=0;i num;i+)min_pathi=citycurrent_min_indexi;/cout current min dis is:min_disendl;else for(inti=0;i num;i+)citycurrent_max_indexi=min_pathi;discurrent_max_index=min_dis;fitnesscurrent_max_index=1.0/min_dis;/最优保存算法boolisExist(intvalue,int*array,intlen)for(inti=0;i len;i+)if(value =array i)returntrue;returnfalse;void convert(intp1,intp2,int*src,int*dst)intlen=p2-p1+1;int*temp=newint len;for(inti=p1;i=p2;i+)名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 10 页 -tempi-p1=srci;int j=(p2+1)%num;for(inti=1;i=num;i+)int index=(i+p2)%num;if(!isExist(dstindex,temp,len)dstj=dstindex;j=(j+1)%num;for(inti=p1;i=p2;i+)dsti=srci;delete temp;/交叉,采用次序交叉算法void cross()/cout do cross now.endl;for(int k=0;k population;k+=2)int a=select();int b=select();while (a=b)b=select();/保证被选中的个体不是一样的/cout same b endl;/cout choose popuilation a b endl;double p=rand()/double(RAND_MAX);/cout cross rate is p endl;int*a1=newint num;int*a2=newint num;名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 10 页 -int*b1=newint num;int*b2=newint num;for(inti=0;i num;i+)a1i=cityai;a2i=citybi;b1i=a2i;b2i=a1i;if(ppc)/满足交叉条件/选择交叉的两点,并保证p1p2)swap(p1,p2);/cout choose pos p1 p2 endl;/开始交叉convert(p1,p2,a1,b1);convert(p1,p2,a2,b2);for(inti=0;i num;i+)cityki=b1i;cityk+1i=b2i;else for(inti=0;i num;i+)名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 10 页 -cityki=a1i;cityk+1i=a2i;delete a1;delete a2;delete b1;delete b2;/变异,采用对换操作进行变异voidmorphis()/cout do morphis now.endl;for(inti=0;i population;i+)double p=rand()/double(RAND_MAX);/cout morphis rate is p endl;if(ppm)/执行变异 int a=-1,b=-1;while (a=b)a=rand()%num;b=rand()%num;swap(cityia,cityib);intgetdis()/compute();int result=dis0;int index=0;名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 10 页 -for(inti=1;i disi)result=disi;index=i;return result;/释放申请的数组的空间void dispose()for(inti=0;i population;i+)delete cityi;delete city;delete dis;delete fitness;int main()init();/初始化种群inti=0;srand(time(0);compute();while(icount)cross();/交叉morphis();/变异compute();/计算适应度save();/保存当前最优的个体/cout count i+endl;名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 10 页 -coutgetdis();/输出结果/coutmin_index ;if(+i%10=0)coutendl;compute();cout min distance is:min_disendl;for(inti=0;i num;i+)coutmin_pathi ;coutendl;dispose();/释放空间return 0;名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 10 页 -

    注意事项

    本文(2022年遗传算法解决TSP问题 .pdf)为本站会员(H****o)主动上传,得力文库 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知得力文库 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于得利文库 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

    © 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

    黑龙江省互联网违法和不良信息举报
    举报电话:0468-3380021 邮箱:hgswwxb@163.com  

    收起
    展开