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

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

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

假设路径A、B、C、D、E对应的概率分别为0.1、0.2、0.1、0.5、0.1,则0

对蚁群算法中轮盘赌选择城市的理解_第1张图片

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

分析Matlab程序

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

P是选择各条路径的概率

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

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

对蚁群算法中轮盘赌选择城市的理解_第2张图片

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

对蚁群算法中轮盘赌选择城市的理解_第3张图片

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

 

参考博客:

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

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

 

你可能感兴趣的:(对蚁群算法中轮盘赌选择城市的理解)