我开发了蚁群优化的软件实现来解决旅行商问题,但由于 ACO 的随机性,每次执行 ACO 算法都会产生不同的接近最优解。有没有办法让 ACO 更具确定性?我知道它永远不会是 100% 确定性的,但我需要它能够在同一个问题空间上运行多次,并且至少在大多数情况下都能提出类似的解决方案。我已经尝试调整 α、β、ρ 和迭代次数,但此时我只是在黑暗中拍摄。
问问题
515 次
1 回答
1
正如迈克尔已经在评论中所说:使用种子伪随机数生成器(PRNG)并在整个实现中重用相同的。
在 Java 中,执行以下操作:
Random workingRandom = new Random(0L);
// Never use Math.random(), always use workingRandom.next*() instead
您可能还需要禁用其他一些东西(尤其是在多线程实现中)才能获得 100% 的可重复性,其中一些我在我的实现文档第4.4.3.4 节中讨论。REPRODUCIBLE(例如在需要时替换HashMap
)LinkedHashMap
。
于 2014-02-12T15:09:09.577 回答