蚁群算法的Matlab程序_第1页
蚁群算法的Matlab程序_第2页
蚁群算法的Matlab程序_第3页
蚁群算法的Matlab程序_第4页
蚁群算法的Matlab程序_第5页
全文预览已结束

下载本文档

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

文档简介

1、#include#include#include#include#definecitynumber5#defineQ100#definep0.5#defineNM21000#defineA1#defineB5intccdi=-l;全局变量,用在myrand()中floatmyrand()产生0-1随机数,100个,每调用一次,结果不同srand(time(0);floatmy100;ccdi+;if(ccdi=100)ccdi=0;for(intmi=0;mi100;mi+)floatfav=rand()%10000;mymi=fav/10000;returnmyccdi;ncitynumbe

2、rcitynumber,intdoublefpkij(doubleTcitynumbercitynumber,doubletabucitynumbercitynumber,intk,ints,inti,intj)定义函数用于计算Pij/doubleA=0.5,B=0.5;doublesumup,pkij,sumdown;sumdown=0;for(intaTi=0;aTicitynumber;aTi+)for(intaTj=0;aTjcitynumber;aTj+)aTaTiaTj=pow(TaTiaTj,A);for(intbni=0;bnicitynumber;bni+)for(intbn

3、j=0;bnjcitynumber;bnj+)bnbnibnj=pow(nbnibnj,B);for(intcan=0;canvcitynumber;can+)判断,除掉已经走过的城市if(can=tabukci)aTican=0;bnican=0;sumup=aTij*bnij;for(inttj=0;tjcitynumber;tj+)sumdown=aTitj*bnitj+sumdown;pkij=sumup/sumdown;returnpkij;voidmain()doublecitycitynumber2=0,1,0,2,2,2,2,4,1,3/*,3,4,4,7,2,8,3,9,1,

4、10,1,0,2,1,3,0,4,9,5,2,6,2,7,1,8,6,9,0,10,3*/;/*城市坐标*/doubledcitynumbercitynumber;Ljk是城市jtok距离for(intj=0;jcitynumber;j+)djk=sqrt(cityj0-cityk0)*(cityj0-cityk0)+(cityj1-cityk1)*(cityj1-cityk1);/coutdjk;/coutn;/*计算距离,从j城市到k城市*/*for(intcj=0;cj10;cj+)floatc=myrand();coutvvcvvvvn;*/输出随机数doublencitynumber

5、citynumber;for(intni=0;nicitynumber;ni+)for(intj=0;jcitynumber;j+)/coutn;/*初始化visibilitynij*/doubleLcitynumber;intshortestcitynumber;doubleTcitynumbercitynumber;for(intti=0;ticitynumber;ti+)for(intj=0;jcitynumber;j+)/coutTtij;/coutn;/*初始化t*/doublechangTcitynumbercitynumber;/step2:for(intNC=0;NCNM2;N

6、C+)for(intcti=0;cticitynumber;cti+)for(intj=0;jcitynumber;j+)changTctij=0;/coutchangTctij;/coutn;/*初始化changT*/inttabucitynumbercitynumber;/tabuks表示第k只蚂蚁,第s次循环所在的城市for(inti=0;icitynumber;i+)tabutaii=0;for(inttabui1=0;tabui1citynumber;tabui1+)tabutabui10=tabui1;/*for(tai=0;taicitynumber;tai+)for(inti=

7、0;icitynumber;i+)couttabutaii;coutn;*/初始化tabufor(intkk=0;kkcitynumber;kk+)Lkk=0;/第三步开始for(ints=0;scitynumber-1;s+)for(intk=0;kcitynumber;)intci,can;floatsumpk=0;floatpkij;hq2:can+;if(can=citynumber)can=0;for(ci=0;ci=s;ci+)if(can=tabukci)gotohq2;pkij=fpkij(T,n,tabu,k,s,tabuks,can);sumpk=sumpk+pkij;el

8、segotohq2;tabuks+1=can;k+;/第三步完成/*for(tai=0;taicitynumber;tai+)for(inti=0;icitynumber;i+)*/输出一个循环后的tabu/第四步开始for(intk4=0;k4citynumber;k4+)s44=s4+1;if(s44=citynumber)s44=0;Lk4+=dtabuk4s4tabuk4s44;/coutLk4;/计算Lkfloatshortestl=0;intshort2=0;最短距离for(ii=1;shorticitber;shi+)shortestl=L0;if(Lshorti=shortes

9、tl)shortestl=Lshorti;short2=shorti;/coutLsort2n;coutshort2n;for(intshoi=0;shoictynumber;shoi+)shortestshoi=tabushort2shoi;/coutshestshoi;/coutn;for(intk41=0;k41citynumber;k41+)for(ints41=0,ss=0;s41citynumber;s41+)ss=s41+1;if(ss=citynumber)ss=0;changTtabuk41s41tabuk41ss+=Q/Lk41;changTtabuk41sstabuk41s41=changTtabuk41s41tabuk41ss;/*for(intcti4=0;cti4citynumber;cti4+)for(intj=0;jcitynumber;j+)coutchangTcti4j;coutn;*/第四步完/第五步开始for(in

温馨提示

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

评论

0/150

提交评论