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