如何在蚁群系统中应用信息素规则?

时间:2016-03-28 12:07:10

标签: algorithm ant-colony

我正在审查关于蚁群系统(ACS)的Dorigo & Gambardella (1997)的论文。有两个信息素更新规则:本地更新和全局更新。但是,我并不清楚应该如何应用它们。

本地更新

据我所知,有3种选择:

  1. 更新为蚂蚁构建游览,即移动到新城市后。 (如第56页的文字所示)
  2. 在下一只蚂蚁开始之前,蚂蚁建立了一个游览后更新。 (如第55页的图3所示)
  3. 所有蚂蚁建成游览后更新。 (如附录A中所述,将使算法成为其声称的最可并行的算法)。
  4. 哪个选项是预期的?

    全局更新

    从文本(方程式4,第56页)和附录中也不清楚更新规则的信息素蒸发部分是否适用于所有边缘或仅适用于全球最佳旅游中的信息。

    在全局更新规则下,所有边缘都会受到蒸发影响吗?

    修改

    此后我发现这个GitHub repository似乎包含了Dorigo的原始代码,其中出现了以下规则:

    1. 当每只蚂蚁过渡到新城市时进行本地更新(蒸发+存款)(即上面的选项1)。
    2. 所有边缘的全球蒸发(如果设置了某些标志,则只有关闭的城市)。
    3. 全球最佳旅游全球更新(蒸发+存款)。
    4. 这更令人困惑,因为它表明正在发生双重(甚至三重)蒸发。

2 个答案:

答案 0 :(得分:1)

全局更新规则下是否所有边缘都受到蒸发影响?

是。

这个想法是,更多蚂蚁(短路径)采取的路径会有更多的信息素,因此更多的蚂蚁会采取这种方式,最终每只蚂蚁都会采取这种方式。因此,一段时间后,信息素会蒸发(就像在自然过程中一样),所以你必须通过减少信息素含量来模拟蒸发。

答案 1 :(得分:1)

针对旅行推销员的蚁群系统的实施Clever Algorithms book (by Jason Brownlee)中提出的问题基于Dorigo(1997)的论文。根据包含的代码,信息素更新过程如下:

  • 在Ant构建解决方案后触发本地信息素更新过程。该过程具有特定的信息素蒸发比,并且不依赖于溶液质量。
  • 全局信息素更新过程位于迭代结束时,殖民地的所有蚂蚁都已构建解决方案。该阶段使用不同的蒸发比,并且取决于解决方案的质量。

在此实现中,信息素更新过程发生在所有蚂蚁及其所有解决方案组件(以及相应的信息素矩阵单元)上。 I ported the algorithm to Java我得到了接近最优的解决方案,因此建议的程序似乎有效。