蚁群算法matlab程序代码

上传人:仙*** 文档编号:137100579 上传时间:2022-08-17 格式:DOC 页数:13 大小:58KB
返回 下载 相关 举报
蚁群算法matlab程序代码_第1页
第1页 / 共13页
蚁群算法matlab程序代码_第2页
第2页 / 共13页
蚁群算法matlab程序代码_第3页
第3页 / 共13页
点击查看更多>>
资源描述
先新建一个主程序M文件 ACATSP .m代码如下:function R_best,best,L_ave,Shortest_Route,Shortest_Length=ACATSP(C,NC_max,m,Alpha,Beta,Rho,Q)%=%主要符号说明% C n个城市的坐标,nX2的矩阵% NC_max蚁群算法MATLA程序最大迭代次数% m蚂蚁个数% Alpha表征信息素重要程度的参数% Beta表征启发式因子重要程度的参数% Rho信息素蒸发系数% Q表示蚁群算法MATLA程序信息素增加强度系数% R_best各代最佳路线% L_best各代最佳路线的长度%=%蚁群算法MATLA程序第一步:变量初始化n=size(C,1);% n表示问题的规模(城市个数)D=zeros( n,n );%D 表示完全图的赋权邻接矩阵for i=1: nfor j=1: nif i=jD(i,j)=(C(i,1)-C(j,1)A2+(C(i,2)-C(j,2)A2)A0.5;elseD(i,j)=eps;% i = j时不计算,应该为 0,但后面的启发因子要取倒数,用eps (浮点相对精度)表示%对称矩阵endD(j,i)=D(i,j);endendEta=1./D;%Eta为启发因子,这里设为距离的倒数Tau=on es( n,n);%Tau为信息素矩阵Tabu=zeros( m,n);%存储并记录路径的生成P=J;%待访问城市的选择概率分布NC=1;%迭代计数器,记录迭代次数R_best=zeros(NC_max ,n);%各代最佳路线%各代最佳路线的长度L_best=i nf.*o nes(NC_max,1);L_ave=zeros(NC_max,1);%各代路线的平均长度while NC=ra nd);%若计算的概率大于原来的就选择这条路线to_visit=J(Select(1);Tabu(i,j)=to_visit;endendif NC=2Tabu(1,:)=R_best(NC-1,:);end%蚁群算法MATLA程序第四步:记录本次迭代最佳路线L=zeros(m,1);%开始距离为0, m*1的列向量for i=1:mR=Tabu(i,:);for j=1:( n-1)endL(i)=L(i)+D(R(1),R( n);endL_best(NC)=mi n(L); pos=fi nd(L=L_best(NC);R_best(NC,:)=Tabu(pos(1),:);L_ave(NC)=mea n(L);NC=NC+1%一轮下来后走过的距离%最佳距离取最小%此轮迭代后的最佳路线%此轮迭代后的平均距离%迭代继续%蚁群算法MATLABS序第五步:更新信息素Delta_Tau=zeros(n,n);%开始时信息素为 n*n的0矩阵for i=1:mfor j=1:( n-1)Delta_Tau(Tabu(i,j),Tabu(i,j+1)=Delta_Tau(Tabu(i,j),Tabu(i,j+1)+Q/L(i);%此次循环在路径(i, j) 上的信息素增量endDelta_Tau(Tabu(i, n),Tabu(i,1)=Delta_Tau(Tabu(i, n),Tabu(i,1)+Q/L(i);%此次循环在整个路径上的信息素增量endTau=(1-Rho).*Tau+Delta_Tau;%考虑信息素挥发,更新后的信息素%蚁群算法MATLA程序第六步:禁忌表清零Tabu=zeros(m,n);%直到最大迭代次数end%蚁群算法 MATLABS序第七步:输出结果Pos=fi nd(L_best=mi n( L_best);Shortest_Route=R_best(Pos(1),:)Shortest_Le ngth=L_best(Pos(1)%找到最佳路径(非 0为真)%最大迭代次数后最佳路径%最大迭代次数后最短距离绘制第一个子图形subplot(1,2,1)%画路线图的子函数DrawRoute(C,Shortest_Route)%绘制第二个子图形subplot(1,2,2)plot(L_best)hold on%保持图形plot(L_ave,r)title(平均距离和最短距离)%标题建立一个子程序DrawRoute .m代码如下:fun ctio n DrawRoute(C,R)%=% DrawRoute.m%画路线图的子函数% C Coordinate 节点坐标,由一个 NX2的矩阵存储% R Route 路线%=N=le ngth(R);scatter(C(:,1),C(:,2);hold onplot(C(R(1),1),C(R(N),1),C(R(1),2),C(R(N),2),g)hold on for ii=2:Nplot(C(R(ii-1),1),C(R(ii),1),C(R(ii-1),2),C(R(ii),2),g)hold onendtitle(旅行商问题优化结果 )需要输入的参数数据有:C: n个城市的坐标,n x 2的矩阵NC_max:蚁群算法MATLAB程序最大迭代次数M:蚂蚁个数Alpha:表征信息素重要程度的参数Beta:表征启发式因子重要程度的参数Rho:信息素蒸发系数Q:表示蚁群算法MATLAB程序信息素 增加强度系数运行时打开ACATSP.m 点击运行或输入 ACATSP(C,NC_max,m,Alpha,Beta,Rho,Q)一个运行实例:m=31;Alpha=1;Beta=5;Rho=0.1;NC_max=200;Q=100;31都市坐标为:1304 23123639 13154177 22443712 13993488 15353326 15563238 12294196 10044312 790 4386 5703007 19702562 17562788 14912381 16761332 6953715 16783918 21794061 23703780 22123676 25784029 28384263 29313429 19083507 23673394 26433439 32012935 32403140 35502545 23572778 28262370 2975
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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