蚂蚁是如何更新信息素的?如何根据概率进行选择的?(编程实现)

对于二元蚁群算法,它的信息素更新策略,和tsp蚂蚁是有区别的——编程的时候就体现出来了。

最常用的:“轮盘法”,究竟如何描述的?

其次,在知道信息素的情况下,如何用“轮盘法”进行解的选择:0还是1,下一个城市究竟是0~144中的哪一个?

在书上的程序中,采用的选择方法在实验中效果不怎么好;从网上借鉴的一个程序,效果反倒不错。

 

对于tsp问题,首先计算每个城市的入选概率,由于并不是每个城市都是可选的(走过的城市,不能再遍历),所以,每次选择,都需要计算;然后,随机一个[0, 概率之和] 之间的数值,从第一个城市开始比较:找到第一个大于这个概率的数值,就选中这个城市。代码如下:

  1. int ant::ChooseNextCity()
  2. {
  3.  //Update the probability of path selection
  4.  //select a path from tabu[m_iCityCount-1] to next
  5.     
  6.     
  7.     int i;
  8.     int<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值