




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
蚁群算法原理及其应用报告人:刘海军报告内容1ACO原理
2应用实例TSPMacroDorigo蚁群算法原理在自然界中,蚂蚁个体从洞穴出发寻找事物源,在找到事物之后返回蚁巢时,会在所经过的路径上留下一种称为“信息素”的物质。蚁群算法的信息交互主要是通过信息素来完成的。蚂蚁在运动的过程中,在没有“视觉”的情况下,能够感知这种物质的存在和强度。初始阶段,环境中没有信息素的遗留,蚂蚁寻找事物完全是随机选择路径,随后寻找该事物源的过程中就会受到先前蚂蚁所残留的信息素的影响,其表现为蚂蚁在选择路径时趋向于选择信息素浓度高的路径,同时信息素是一种挥发性化学物,会随着时间的推移慢慢的消逝。如果每只蚂蚁在单位距离留下的信息素相同,那对于较短路径上残留的信息素浓度就相对较高,这被后来的蚂蚁选择的概率就大,从而导致这条短路径上走的蚂蚁就越多,而经过的蚂蚁越来,该路径上残留的信息素也将更多,这样使得整个蚂蚁的集体行为构成了信息素的正反馈过程,从而找到比较短的路径。蚁群算法抽象模型蚂蚁在运动过程中根据各条路径上的信息量决定转移方向,用禁忌表来记录蚂蚁所走过的结点,其在选择过程中做动态调整。搜索过程中蚂蚁根据各条路径上的信息量和路径的启发信息来计算转移概率。为了避免残留信息素过多引起残留信息淹没启发信息,在每只蚂蚁走完一步或者完成一次搜索循环后要对残留信息进行更新成立,因此引入信息素挥发机制,模拟人脑的记忆,会随时间的推移而逐渐淡化甚至忘记。
信息素更新机制信息素根据下式进行更新其中状态转移规则一只位于节点r的蚂蚁通过应用下式给出的规则选择下一个将要移动到的城市s其中,S根据下列公式得到状态转移规则q是在[0,1]区间均匀分布的随机数q0的大小决定了利用先验知识与探索新路径之间的相对重要性。上述状态转移规则被称为伪随机比例规则特点:倾向于选择短的且有着大量信息素的边作为移动方向蚁群算法的应用:TSP问题TSP思路TSP思路代码(1):数据初始化m=31;C=[13042312;36391315;41772244;37121399;34881535;33261556;32381229;41961004;4312790;4386570;30071970;25621756;27881491;23811676;1332695;37151678;39182179;40612370;37802212;36762578;40292838;42632931;34291908;35072367;33942643;34393201;29353240;31403550;25452357;27782826;23702975];Nc_max=10;alpha=1;beta=5;rho=0.5;%0<rho<1,表示路径上信息素的衰减系数Q=100;%蚂蚁释放的信息素量代码(1):数据初始化n=size(C,1);%表示TSP问题的规模,亦即城市的数量D=ones(n,n);%记录城市之间的距离fori=1:nforj=1:nifi<jD(i,j)=sqrt((C(i,1)-C(j,1))^2+(C(i,2)-C(j,2))^2);endD(j,i)=D(i,j);endendeta=1./D;%启发式因子,这里设为城市之间距离的倒数pheromone=ones(n,n);%信息素矩阵,这里假设任何两个城市之间路径上的初始信息素都为1tabu_list=zeros(m,n);%禁忌表,记录蚂蚁已经走过的城市,蚂蚁在本次循环中不能再经过这些城市。%当本次循环结束后,禁忌表被用来计算蚂蚁当前所建立的解决方案,即经过的路径和路径的长度Nc=0;%循环次数计数器routh_best=zeros(Nc_max,n);%各次循环的最短路径length_best=ones(Nc_max,1);%各次循环最短路径的长度代码(2):形成初始解whileNc<Nc_max%将m只蚂蚁放在n个城市上
rand_position=[];%[]为空矩阵
fori=1:ceil(m/n)%ceil数值函数功能为朝向无穷大方向取整
rand_position=[rand_position,randperm(n)];%p=randperm(n)返回1:n的一个随机排列
endtabu_list(:,1)=(rand_position(1:m))';%将蚂蚁放在城市上之后的禁忌表.%m只蚂蚁按概率函数选择下一座城市,在本次循环中完成各自的周游
forj=2:nfori=1:mcity_visited=tabu_list(i,1:(j-1));%已访问的城市
city_remained=zeros(1,(n-j+1));%待访问的城市
probability=city_remained;%待访问城市的访问概率
cr=1;fork=1:n%for循环用于求待访问的城市。比如如果城市个数是5,而已访问的城市city_visited=[24],则经过此for循环后city_remanied=[135]iflength(find(city_visited==k))==0%find逻辑函数功能是找出非零元素的索引号
city_remained(cr)=k;cr=cr+1;endend
代码(2):形成初始解%状态转移规则****************************************
q0=0.5;ifrand>q0fork=1:length(city_remained)probability(k)=(pheromone(city_visited(end),city_remained(k)))^alpha*(eta(city_visited(end),city_remained(k)))^beta;%end函数终止代码块或为数组的最后一个元素的索引
position=find(probability==max(probability));to_visit=city_remained(position(1));endelsefork=1:length(city_remained)probability(k)=(pheromone(city_visited(end),city_remained(k)))^alpha*(eta(city_visited(end),city_remained(k)))^beta;endprobability=probability/sum(probability);pcum=cumsum(probability);%cumsum累积求和
select=find(pcum>=rand);to_visit=city_remained(select(1));endtabu_list(i,j)=to_visit;%**************************************************************endendifNc>0tabu_list(1,:)=routh_best(Nc,:);%将上一代的最优路径(最优解)保留下来,保证上一代中的最适应个体的信息不会丢失
end
代码(2):形成初始解%记录本次循环的最佳路线
total_length=zeros(m,1);%m只蚂蚁在本次循环中分别所走过的路径长度
fori=1:mr=tabu_list(i,:);%取出第i只蚂蚁在本次循环中所走的路径
forj=1:(n-1)total_length(i)=total_length(i)+D(r(j),r(j+1));%第i只蚂蚁本次循环中从起点城市到终点城市所走过的路径长度
endtotal_length(i)=total_length(i)+D(r(1),r(n));%最终得到第i只蚂蚁在本次循环中所走过的路径长度
endlength_best(Nc+1)=min(total_length);%把m只蚂蚁在本次循环中所走路径长度的最小值作为本次循环中最短路径的长度
position=find(total_length==length_best(Nc+1));%找到最短路径的位置,即最短路径是第几只蚂蚁或哪几只蚂蚁走出来的
routh_best(Nc+1,:)=tabu_list(position(1),:);%把第一个走出最短路径的蚂蚁在本次循环中所走的路径作为本次循环中的最优路径
Nc=Nc+1代码(3)更新信息素delta_pheromone=zeros(n,n);fori=1:mforj=1:(n-1)delta_pheromone(tabu_list(i,j),tabu_list(i,j+1))=delta_pheromone(tabu_list(i,j),tabu_list(i,j+1))+Q/total_length(i);%total_length(i)为第i只蚂蚁在本次循环中所走过的路径长度(蚁周系统区别于蚁密系统和蚁量系统的地方)
enddelta_pheromone(tabu_list(i,n),tabu_list(i,1))=delta_pheromone(tabu_list(i,n),tabu_list(i,1))+Q/total_length(i);%至此把第i只蚂蚁在本次循环中在所有路径上释放的信息素已经累加上去
end%至此把m只蚂蚁在本次循环中在所有路径上释放的信息素已经累加上去
pheromone=(1-rho).*pheromone+delta_pheromone;%本次循环后所有路径上的信息素
tabu_list=zeros(m,n);%禁忌表清零,准备下一次循环,蚂蚁在下一次循环中又可以自由地进行选择end代码(4)输出结果position=find(length_best==min(length_best));%min找出数组中的最小元素shortest_path=routh_best(position(1),:);shortest_length=length_best(position(1));代码(5)绘制图形%绘制最短路径figure(1)%figure图形窗口控制函数功能为建立图形在句柄图形对象函数中为建立图形窗口set(gcf,'Name','AntColonyOptimization——Figureofshortest_path','Color','r')%set句柄图形对象函数功能为设置对象N=length(shortest_path);%length求向量的长度scatter(C(:,1),C(:,2),50,'filled');%绘制散点图scat
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙大宁波理工学院《创业创新实训》2023-2024学年第二学期期末试卷
- 唐山师范学院《国际营销英语》2023-2024学年第一学期期末试卷
- 重庆水利电力职业技术学院《文化创意与传播》2023-2024学年第二学期期末试卷
- 浙江药科职业大学《多媒体影像创作》2023-2024学年第二学期期末试卷
- 浙江金华科贸职业技术学院《桃李物流管理实训》2023-2024学年第二学期期末试卷
- 石家庄铁路职业技术学院《非线性系统理论与设计》2023-2024学年第二学期期末试卷
- 承包师生食堂小卖部合同
- 房地产财务顾问服务合同
- 建筑安装工程施工劳务分包合同
- 手房房屋买卖转让合同
- 清罐合同范本
- 临床医生个人职业规划
- 肠穿孔护理疑难病例讨论
- 【字节跳动盈利模式和核心竞争力探析(论文)12000字】
- 区域地理课件教学课件
- 机器的征途:空天科技学习通超星期末考试答案章节答案2024年
- 北师大版(2024新版)七年级上册数学第四章《基本平面图形》测试卷(含答案解析)
- 教学设计初中英语课的口语情景演练与表达训练
- 宠物医院保洁合同
- 新解读《JTG 2112-2021城镇化地区公路工程技术标准》
- 2024年国家义务教育质量监测四年级英语模拟练习练习卷含答案
评论
0/150
提交评论