蚁群算法附带数据结果
《蚁群算法附带数据结果》由会员分享,可在线阅读,更多相关《蚁群算法附带数据结果(4页珍藏版)》请在装配图网上搜索。
1、%代码说明蚁群算法解决VRP问题算法说明首先实现一个ant蚂蚁类,用此蚂蚁类实现搜索。算法按照tsp问题去解决,但是在最后计算路径的时候有区别。1,3,5,9,4,10,2,6,8,7。比如有10个城市,城市1是配送站,蚂蚁搜索的得到的路径是计算路径的时候把城市依次放入派送线路中,每放入一个城市前,检查该城市放入后是否会超过车辆最大载重如果没有超过就放入如果超过,就重新开始一条派送路线直到最后一个城市放完就会得到多条派送路线这样处理比较简单可以把vrp问题转为tsp问题求解但是实际效果还需要验证。作者Wugsh2011.12.16wuguangshengguangsheng.wu%清除所有变量
2、和类的定义clear;clearclasses;%蚁群算法参数(全局变量)globalALPHA;%启发因子globalBETA;%期望因子globalANT_COUNT;%蚂蚁数量globalCITY_COUNT;%城市数量globalRHO;%信息素残留系数!globalIT_COUNT;%迭代次数globalDAry;%两两城市间距离globalTAry;%两两城市间信息素globalCITYWAry;%城市货物需求量globalVW;%车辆最大载重%=%设置参数变量值ALPHA=1.0;BETA=2.0;RHO=0.95;IT_COUNT=200;VW=100;%=%读取数据并根据读取
3、的数据设置其他参数loaddata.txt;%从文本文件加载数据city_xy_ary=data(:,2:3);%得到城市的坐标数据CITYWAry=data(:,4);%得到每个城市的货物需求量CITY_COUNT=length(CITYWAry);%得到城市数量(包括配送站在内)ANT_COUNT=round(CITY_COUNT*2/3)+1;%根据城市数量设置蚂蚁数量,一般设置为城市数量的2/3%MMAS信息素参数%计算最大信息素和最小信息素之间的比值PBest=0.05;%蚂蚁一次搜索找到最优解的概率temp=PBesL(1/CITY_C0UNT);TRate=(1-temp)/(C
4、ITY_COUNT/2-1)*temp);%最大信息素和最小信息素之间的比值%信息素的最大最小值开始的时候设置成多大无所谓%第一次搜索完成会生成一个最优解,然后用这个解会重新产生最大最小值Tmax=1;%信息素最大值Tmin=Tmax*TRate;%信息素最小值%计算两两城市间距离DAry=zeros(CITY_C0UNT);fori=1:CITY_C0UNTforj=1:CITY_C0UNTDAry(i,j)=sqrt(city_xy_ary(i,1)-city_xy_ary(j,1)A2+(city_xy_ary(i,2)-city_xy_ary(j,2)A2);endend%初始化城市间
5、信息素TAry=zeros(CITY_COUNT);TAry=TAry+Tmax;%=%初始化随机种子rand(state,sum(100*clock);%另一种方法%rand(twister,sum(100*clock)%定义蚂蚁mayi=ant();Best_Path_Length=10e9;%最佳路径长度,先设置成一个很大的值tm1=datenum(clock);%记录算法开始执行时的时间FoundBetter=0;%一次搜索是否有更优解产生%开始搜索fori=1:IT_COUNTfprintf(开始第%d次搜索,剩余%d次,i,IT_COUNT-i);FoundBetter=0;%搜索
6、前先置为没有更优解产生forj=1:ANT_COUNT%蚂蚁搜索一次mayi=Search(mayi);%得到蚂蚁搜索路径长度Length_Ary(j)=get(mayi,path_length);%得到蚂蚁搜索的路径Path_Aryj=get(mayi,path);%保存最优解if(Length_Ary(j)Tmax)TAry(m,n)=Tmax;endif(TAry(m,n)VW)%运送的货物超过限制fprintf(满载率:%.1f%)n1-%d,dbW*100/VW,n);dbW=CITYWAry(n);%运输的重量等于该城市的需求量else%没有超过限制fprintf(-%d,n);d
7、bW=dbW+CITYWAry(n);%运输的重量加上该城市的需求量endendfprintf(满载率:%.1f%),dbW*100/VW);fprintf(nn);%=程序结束=%对结果进行2-OPT优化functionf=opt2(Line)%数组长度size=length(Line);NewLine=Line;%返回结果先设置成原来路径Flag=1;while(Flag=1)Flag=0;fori=1:size-2a=Line(1,1:i);%路径前段b=fliplr(Line(1,i+1:size);%路径后段倒置c=cat(2,a,b);%新路径%新路径更好就替换优化成功!=);if
8、(PathLength(c)PathLength(NewLine)NewLine=c;Flag=1;fprintf(n=2-OPTendendend%返回结果f=NewLine;end114.513.00.0212.88.50.1318.43.40.4415.416.61.2518.915.21.5615.511.60.873.910.61.3810.67.61.798.68.40.61012.52.11.21113.85.20.4126.716.90.91314.82.61.3141.88.71.31517.111.01.9167.41.01.7170.22.81.11811.919.81.
9、51913.215.11.6206.45.61.7219.614.81.51 0003639131512417722441337121399143488153553332615564532381229224196100411431279011438657056300719704325621756242788149165238116763213326955637151678673918217967406123702237802212343676257856402928382442632931253429190826350723674633942643873439320133293532402231403550242545235756277828262423702975431304231212
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。