蚁群算法的应用实例及matlab代码,蚁群算法matlab程序实例整理.doc

253b171540df25e1b84436cbe50dfc72.gif蚁群算法matlab程序实例整理.doc

function y,valQACS tic load att48 att48; MAXIT300; 最大循环次数 NC48; 城市个数 taoones48,48; 初始时刻各边上的信息最为1 rho0.2; 挥发系数 alpha1; beta2; Q100; mant20; 蚂蚁数量 iter0; 记录迭代次数 for i1NC 计算各城市间的距离 for j1NC distancei,jsqrtatt48i,2-att48j,22att48i,3-att48j,32; end end bestroutezeros1,48; 用来记录最优路径 routelengthinf; 用来记录当前找到的最优路径长度 for i1mant 确定各蚂蚁初始的位置 end for ite1MAXIT for ka1mant 考查第K只蚂蚁 deltataozeros48,48; 第K只蚂蚁移动前各边上的信息增量为零 routek,lengthktraveldistance,tao,alpha,beta; if lengthkroutelength 找到一条更好的路径 routelengthlengthk; bestrouteroutek; end for i1NC-1 第K只蚂蚁在路径上释放的信息量 deltataorouteki,routeki1deltataorouteki,routeki1Q/lengthk; end deltataoroutek48,1deltataoroutek48,1Q/lengthk; end for i1NC-1 for ji1NC if deltataoi,j0 deltataoi,jdeltataoj,i; ybestroute;end valroutelength;end toc end tao1-rho.*taodeltatao; end ybestroute; valroutelength; toc function y,valtraveldistance,tao,alpha,beta 某只蚂蚁找到的某条路径 m,nsizedistance; pfixm*rand1; fix取整函数val0; 初始路径长度设为 0 tabukp; 假设该蚂蚁都是从第 p 个城市出发的 for i1m-1 nptabuklengthtabuk; 蚂蚁当前所在的城市号 p_sum0; for j1m if isinj,tabuk continue; else ada1/distancenp,j; p_sump_sumtaonp,jalpha*adabeta; end end cpzeros1,m; 转移概率 for j1m if isinj,tabuk continue; else ada1/distancenp,j; cpjtaonp,jalpha*adabeta/p_sum; end end NextCitypchoicecp; tabuktabuk,NextCity; valvaldistancenp,NextCity; end ytabuk; function yisinx,A 判断数 x 是否在向量 A 中,如在返回 1 ,否则返回 0 y0; for i1lengthA if Aix y1; break; end end function ypchoiceA arand; tempAzeros1,lengthA1; for i1lengthA tempAi1tempAiAi; end for i2lengthtempA if atempAi yi-1; break; end end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值