2

我正在尝试构建一个简单的蚁群模拟。世界是方格;它们中的每一个都可以由某种程度的信息素和任意数量的蚂蚁组成。有两种类型的信息素:食物信息素和巢信息素。蚂蚁对环境一无所知,但返回巢穴的蚂蚁会跟随巢穴信息素(从某种意义上说,它们几乎总是选择移动到所有附近细胞中信息素水平最高的细胞)并留下食物信息素,反之亦然。

蚂蚁有时会随机移动,而不是朝着信息素最大的方向移动。模拟的每一刻蚂蚁都会检查附近 8 个单元格中的信息素水平,如果当前单元格中的信息素水平低于附近所有单元格中的最大信息素水平,它会添加一些信息素。

当前的模拟效果很好,但找到的路径不是最佳路径。我有两个问题我不知道如何解决:

  1. 我如何模拟对角线移动比非对角线移动更长的事实(上,左下或右)?

在当前情况下,黑色路径和蓝色路径的长度相等。 然而,实际上,蓝色路径更短。

  1. 我应该如何模拟信息素的扩散?现在,信息素会随着时间的推移而蒸发,但没有扩散。我试图将一些信息素从每个细胞、模拟的每个滴答声转移到附近的 8 个细胞,但结果是一团糟——整个环境都充满了信息素——我认为这是因为机制蚂蚁用来调节信息素水平。
4

1 回答 1

2

在方形网格上,可能很难模拟对角线移动比水平和垂直移动更长,假设蚂蚁总是每刻移动一格(或不移动)。由于对角线距离更长,蚂蚁实际上必须比水平/垂直移动“跑得更快”。这可能不是你想要的。

因此,您可能需要考虑一个网格或节点网络,而不是方形网格,所有节点的距离都相等,即六边形网格。这也会改变相邻单元格的数量,但这就是重点。

关于扩散:这是正确设置参数的问题。听起来每滴答声的扩散太高了。此外,它应该与蚂蚁产生的信息素成正确的比例。请注意,网格的类型也会影响扩散。

于 2013-01-31T11:01:00.190 回答