我正在尝试实现一个随机蚁群优化算法,但我无法确定如何根据概率实现运动选择。
到目前为止,我已经实现的标准(贪婪)版本是,在图的顶点处的蚂蚁是m
边集,将根据以下标准选择下一个顶点:i
G = (V,E)
E
(i, j)
j
j = argmax(<fitness function for j>)
such that j is connected to i
我遇到的问题是尝试实现它的随机版本,因此现在选择新顶点的标准j
是:
P(j) = <fitness function for j>/sum(<fitness function for J>)
where P(j) is the probability of choosing vertex j,
such j is connected to i,
and J is the set of all vertices connected to i
我了解它背后的数学原理,我只是无法弄清楚我应该如何实际实现它。
如果说,我有 3 个顶点连接到i
,每个顶点的概率为 0.2、0.3、0.5 - 进行选择的最佳方法是什么?我应该只是随机选择一个顶点,然后在 (0,1) 范围内j
生成一个随机数,如果,选择顶点?或者,还有更好的方法?r
r >= P(j)
j