【发布时间】:2015-10-09 04:54:30
【问题描述】:
我正在尝试实现一个随机蚁群优化算法,但我无法确定如何根据概率实现移动选择。
到目前为止,我实现的标准(贪婪)版本是,蚂蚁m 在图G = (V,E) 上的顶点i,其中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 - 进行选择的最佳方法是什么?我应该只是随机选择一个顶点j,然后在(0,1)范围内生成一个随机数r,如果r >= P(j),选择顶点j?还是有更好的方法?
【问题讨论】:
-
如果我理解得很好,你必须选择一个 j,因为 sum(pij) = 1。每个 j 都有它的概率。为了实现它,在您给出的示例中,从 [0,1] 中统一选择 r:如果 r
-
如果您同意这个想法,如果您有兴趣,我可以为一般情况编写一些 C 伪代码:)
-
这是有道理的。我最初想到了类似的东西,但后来认为它行不通,但进一步思考,因为概率必须加起来为 1,它会......我在想一个例子,我们有 0.8 和 0.9,所以 0.9只会选择 0.2 次。但这当然是违法的!感谢您的澄清..
标签: algorithm probability stochastic ant-colony