对蚁群算法中轮盘赌选择城市的理解

蚁群算法中为了保证蚂蚁选择路径的随机性,在选择路径时概率大的路径被选择的概率大,但同时概率小的路径也有可能被选中,而不是直接选择概率大的路径,这样就不会所有的蚂蚁到这里都做出同样的选择,导致算法失去随机性。

为了避免算法失去随机性,在选择路径时使用轮盘赌的方法来选择。将每条路径的概率看作是轮盘的一个扇面,旋转轮盘,指针停在哪一个扇面上就选择对应概率的路径,通过使用一个[0,1]之间的随机数 rand 来模拟指针停止时指向的扇面。

假设路径A、B、C、D、E对应的概率分别为0.1、0.2、0.1、0.5、0.1,则0<rand<=0.1对应路径A扇面,0.1<rand<=0.3对应路径B扇面,0.3<rand<=0.4对应路径C扇面,0.4<rand<=0.9对应路径D扇面,0.9<rand<=1对应路径E扇面。

这样就可以保证概率大的路径被选择的概率大同时概率小的路径也有可能被选中。

分析Matlab程序

Pcum=cumsum(P);
Select=find(Pcum>=rand);
to_visit=J(Select(1));

P是选择各条路径的概率

Pcum中是路径概率的累加和,来模仿各条路径对应轮盘扇面大小

rand 是[0,1]之间的随机数,假设为0.7,位于 [0.4,0.7] 之间

find(Pcum>=rand) 返回所有大于 rand 的扇面,路径D和路径E都被选中

J(Select(1)) 选择第一个大于 rand 的扇面,选中路径D

 

参考博客:

1. https://blog.csdn.net/pymqq/article/details/51375522

2. http://blog.sina.com.cn/s/blog_9a43f8da01013jwv.html

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值