对于二元蚁群算法,它的信息素更新策略,和tsp蚂蚁是有区别的——编程的时候就体现出来了。
最常用的:“轮盘法”,究竟如何描述的?
其次,在知道信息素的情况下,如何用“轮盘法”进行解的选择:0还是1,下一个城市究竟是0~144中的哪一个?
在书上的程序中,采用的选择方法在实验中效果不怎么好;从网上借鉴的一个程序,效果反倒不错。
对于tsp问题,首先计算每个城市的入选概率,由于并不是每个城市都是可选的(走过的城市,不能再遍历),所以,每次选择,都需要计算;然后,随机一个[0, 概率之和] 之间的数值,从第一个城市开始比较:找到第一个大于这个概率的数值,就选中这个城市。代码如下:
- int ant::ChooseNextCity()
- {
- //Update the probability of path selection
- //select a path from tabu[m_iCityCount-1] to next
- int i;
- int<