我正在尝试构建一个简单的蚁群模拟。世界是正方形的网格;它们中的每一个都可以由某种程度的信息素和任何数量的蚂蚁组成。有两种类型的信息素:食物信息素和巢信息素。蚂蚁对环境一无所知,但返回巢穴的蚂蚁遵循巢信息素(在某种意义上,它们几乎总是选择移动到具有最大信息素水平的细胞,在所有附近的细胞中)并留下食物信息素,反之亦然。
蚂蚁不时随机移动而不是最大信息素的方向。模拟的每个滴答声都会检查附近8个细胞中信息素的水平,如果当前细胞中的信息素水平低于所有附近细胞中信息素水平的最大值,则会增加一些信息素。
当前的模拟工作得很好,但找到的路径不是最佳的。我有两个问题,我不知道如何解决:
答案 0 :(得分:2)
在正方形网格上,假设蚂蚁总是每个刻度移动一个方格(或没有),可能很难模拟对角移动比水平和垂直移动更长。由于对角线距离较长,蚂蚁实际上必须比水平/垂直移动“跑得更快”。这可能不是你想要的。
您可能因此想要考虑所有具有相等距离的节点的网格或网络,而不是方形网格,即六边形网格。这也将改变相邻单元格的数量,但这就是重点。
关于扩散:这是获得正确参数的问题。听起来每个蜱的扩散太高了。它也应该与蚂蚁生产的信息素相对应。请注意,网格类型也会影响扩散。