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

How are the pheromone rules applied in the ant colony system?

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

本地更新

据我所知,有 3 个选项:

  1. 随着蚂蚁建立游览而更新,即在搬到新城市后。 (如第 56 页正文中所建议)
  2. 在一只蚂蚁完成游览后,在下一只蚂蚁开始之前更新。 (如第 55 页图 3 所示)
  3. 所有蚂蚁都建好游览后更新。 (如附录 A 中所述,将使该算法成为它声称的最可并行化的算法)。

哪个选项是预期的?

全局更新

从正文(方程式 4,第 56 页)和附录中也不清楚更新规则的信息素蒸发部分是适用于所有边还是仅适用于全局最佳巡回赛中的边。

在全局更新规则下是否所有边都蒸发了?

编辑

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

  1. 随着每只蚂蚁过渡到新城市(即上面的选项 1),本地更新(蒸发 + 沉积)。
  2. 所有边缘的全球蒸发(或者如果设置了某些标志则仅关闭城市)。
  3. 全局更新(蒸发+沉积)只沿全局最佳路径

这更令人困惑,因为它表明正在发生双重(甚至三重)蒸发。

全局更新规则下是否所有边都蒸发了?

是的。

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

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

  • 本地信息素更新过程在 Ant 完成构建解决方案后触发。此过程具有特定的信息素蒸发率,并且与溶液质量无关。
  • 全局信息素更新过程位于迭代的末尾,此时蚁群中的所有蚂蚁都建立了一个解。此阶段使用不同的蒸发率,它取决于溶液的质量。

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