问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

蚁群算法中tau = ones(N,K) * c是什么意思?

发布网友 发布时间:2022-10-03 06:07

我来回答

1个回答

热心网友 时间:2023-10-31 14:12

这个例子其实是当初数模比赛时用来完成碎片拼接的,但其所用到原理还是求解最短路径的原理。但这里的最短路径和数据结构中最短路径有一定的区别。在数据结构中,对于最短路径的求解常用的一般有Dijkstra算法与Floyd算法,但对于要求出一条经过所有的点的并且要求路径最短,这些算法还是有一定的局限性的。而蚁群算法则很好地满足了这些条件。话说回来,很想吐槽一下网络流传的一些蚁群算法的例子,当初学习这个时候,身边也没有相关的书籍,只好到网上找例子。网上关于这个算法源代码的常见的有2个版本,都是出自博客,但是在例子都代码是不完整的,缺失了一部分,但就是这样的例子,居然流传甚广,我很好奇那些转载这些源码的人是否真的有去学习过这些,去调试过。当然,我下面的例子也是无法直接编译通过的,因为涉及到图像读取处理等方面的东西,所以就只贴算法代码部分。但是对于这个问题蚁群算法有一个比较大的缺点,就是收敛很慢,不过对于数量小的路径,效果还是很好的。function bestqueue =aco1(nt,nc_max,m ,st, sd ,Alpha ,Beta ,Rho ,Q,gethead,getend)%参数解释:%nt 路径所经过的点的个数;%nc_max 迭代的次数;%m 蚂蚁的个数;%st 起点序号;%sd 终点序号;%Alpha 信息素系数;�ta 启发因子系数;%Rho 蒸发系数;% Q 信息量;%gethead getend 是用来求距离矩阵的,可根据实际情况修改
% nt = 209;%碎片个数full = zeros(nt,nt);tic;%初始化距离矩阵for i =1:nt for t = 1:nt if i ~= t full(i,t) = sum(abs(getend(:,i) - gethead(:,t))); else full(i,t) = inf; end endend% a =full(156,187)eta = 1./full;%启发因子,取距离的倒数% eta% e = eta(4,2)tau = ones(nt,nt);%信息素矩阵% tabu = zeros(nt,nt);%禁忌矩阵,取蚂蚁数量和碎片数量一致,以减少迭代次数nc =1;%初始化迭代次数;rbest=zeros(nc_max,nt);%各代最佳路线rbest(:,1) = (linspace(st,st,nc_max))';rbest(:,nt) =(linspace(sd,sd,nc_max))'; lbest=zeros(nc_max,1);%各代最佳路线的长度pathlen = 0;%临时记录每代最佳路线长度stime = 1;%记录代数进度for i = 1:nc_max % 代数循环 delta_tau=zeros(nt,nt);%初始化改变量 stime for t = 1:m % 对蚂蚁群体的循环, tabu=zeros(1,nt);%禁忌向量,标记已访问的碎片,初试值设为0,访问之后则变为1; viseted = zeros(1,nt);%记录已访问的元素的位置 tabu(st) = 1;%st为起点,在此表示为碎片矩阵的编号,因为已经将蚁群放在起点,故也应将禁忌向量和位置向量的状态进行修改 tabu(sd) =1;%同上 visited(nt) = sd ;%同上; visited(1) = st;%同上; ht = 0; for r = 2:nt-1 %记录了还没访问的图片编号 vp = 1;%visited指示量 pp = [];%置空的概率向量 jc = 0; %获取尚未访问的位置的向量。 wv = zeros( nt -2 - ht ); for k =1 : nt if tabu(k) == 0 jc = jc +1; wv(jc) = k; end end% a =(tau(visited(end),ju(3))^Alpha)*(eta(visited(end),ju(3))^Beta)% visited(end) %计算选择的概率 for k=1:length(wv) pp(k)=(tau(visited(vp),wv(k))^Alpha)*(eta(visited(vp),wv(k))^Beta);%下一张碎片的选择概率计算,p =(信息素^信息素系数)*(启发因子^启发因子系数) end pp=pp./(sum(pp));%归一化 pcum =cumsum(pp); psl = find(pcum >= rand);%轮盘赌法 to_visit= wv(psl(1)) ;%完成选点 tabu(to_visit) =1; visited(r) = to_visit; ht =ht +1;%已访问碎片个数变化 vp =vp+1; end %路径变化信息 %对单个蚂蚁的路径进行统计 sum1 =0; for pr = 1:nt -1 x = visited(pr); y = visited(pr+1) ; sum1 =sum1 + full(x,y); end% vcell{t} =visited;%元胞记录每个蚂蚁的路径,即碎片顺序;% msum(t) = sum1; %信息素变化; for ww=1:(nt-1) delta_tau(visited(ww),visited(ww+1))=delta_tau(visited(ww),visited(ww+1)) + Q/sum1; end% delta_tau(visited(end),visited(1))=delta_tau(visited(end),visited(1))+Q/(sum1/100);% if t == m & i == nc_max % bestqueue = visited% end if t == m bestqueue = visited end end tau=(1-Rho).*tau+delta_tau; %完成信息素的更新,找出现有的最新的最佳路径,即信息素最多的路径; stime =stime +1;end toc;
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
新买的电脑怎么没声音 《单身男女》里面古天乐给高圆圆买房的时候放的音乐是什么名字? 进新西兰留学名校有哪些途径? 申请仲裁需要多长时间领到工资 内蒙古呼伦贝尔满洲里考小三门、流程是什么 呼伦贝尔的最佳旅游时间是什么时候? 内蒙古呼伦贝尔市第一次会计从业考试在2013年10月26,26举行 我是2010年6月在呼伦贝尔考的驾证,怎么查询驾驶员何时发证? 2016年内蒙古呼伦贝尔导游证考试,口试景点都是哪些。有导游词吗_百度知... 你好,你是去年考的导游证吗,是在呼伦贝尔本地吗?我是呼伦贝尔学院的,也... 移动机器人路径规划算法研究综述(一) 谁有改进蚁群算法用于二维路径规划最短路径问题的matlab程序 汽车钣金喷漆后漆裂痕怎么回事 遗传算法求得结果作为蚁群算法初始信息素该如何分布? 财神最青睐的家居风水有哪些 财神最青睐的家居风水是什么 我下载了最新版的安卓QQ,可是为什么在手机上登Q后都找不到打开邮箱的地方? 蚁群算法实际应用中参数是怎么选择的? 什么是 三魂七魄 手机壳品牌F 加盟圆通快递都需要什么条件 怎么关闭微信朋友圈视频播放 教你一招 加盟圆通需要怎么做? 草字头的男孩名字姓雷氏叫雷蕾可以吗? 圆通快递公司怎么去加盟 凉菜要做麻辣味!要什么调料 60台电脑的网吧做无盘用什么服务器好?具体点谢谢哈! 溪边的诗句是什么意思 羊肉的保存方法 销售员英文 平板屏幕摔碎了如何修复 关于蚁群算法应用的英文翻译 求翻译关于于蚁群算法,英文原文如下: 鼎字有哪些意思 qq资料怎么不显示星座 qq资料不显示星座的方法 红枣怎么存放 保存的红枣的方法 女生送男生打火机代表什么意思 淘气值600分怎么购买88vip,淘气值700多怎么开通88会员 打开多张excel表就不会自动更新数值了 小学教师资格证和中学教师资格证,哪一种更难考呢? 客厅手绘透视图怎么画 如何知道自己是否患有郁抑症? 0.5的黄金珠子除了配石榴石还能配什么 一个人两个手机号,怎样注册两个? 双卡手机怎么用两个? 客厅放百合花好吗风水 客厅放百合花好不好 欧阳山苦斗简介? 气车喷漆为什么不干 古典舞分类有哪些种类 天津哪家茶馆听相声比较好呢? 列位,天津有那些听书的茶馆,那些地方适合旅游游玩,有那些特色的小吃。承蒙指点,谢谢