我正在尝试构建一个简单的蚁群模拟。世界是方格;它们中的每一个都可以由某种程度的信息素和任意数量的蚂蚁组成。有两种类型的信息素:食物信息素和巢信息素。蚂蚁对环境一无所知,但返回巢穴的蚂蚁会跟随巢穴信息素(从某种意义上说,它们几乎总是选择移动到所有附近细胞中信息素水平最高的细胞)并留下食物信息素,反之亦然。
蚂蚁有时会随机移动,而不是朝着信息素最大的方向移动。模拟的每一刻蚂蚁都会检查附近 8 个单元格中的信息素水平,如果当前单元格中的信息素水平低于附近所有单元格中的最大信息素水平,它会添加一些信息素。
当前的模拟效果很好,但找到的路径不是最佳路径。我有两个问题我不知道如何解决:
- 我如何模拟对角线移动比非对角线移动更长的事实(上,左下或右)?
- 我应该如何模拟信息素的扩散?现在,信息素会随着时间的推移而蒸发,但没有扩散。我试图将一些信息素从每个细胞、模拟的每个滴答声转移到附近的 8 个细胞,但结果是一团糟——整个环境都充满了信息素——我认为这是因为机制蚂蚁用来调节信息素水平。