【发布时间】:2013-01-31 07:13:38
【问题描述】:
我正在尝试构建一个简单的蚁群模拟。世界是方格;它们中的每一个都可以由某种程度的信息素和任意数量的蚂蚁组成。有两种类型的信息素:食物信息素和巢信息素。蚂蚁对环境一无所知,但返回巢穴的蚂蚁会跟随巢穴信息素(从某种意义上说,它们几乎总是选择移动到所有附近细胞中信息素水平最高的细胞)并留下食物信息素,反之亦然。
蚂蚁有时会随机移动,而不是朝着信息素最大的方向移动。蚂蚁在模拟的每一刻都会检查附近 8 个单元格中的信息素水平,如果当前单元格中的信息素水平低于所有附近单元格中的最大信息素水平,它会添加一些信息素。
当前的模拟运行良好,但找到的路径不是最佳路径。我有 2 个问题我不知道如何解决:
- 如何模拟对角线移动比非对角线移动更长的事实(上、左下或右)?
- 我应该如何模拟信息素的扩散?现在,信息素会随着时间的推移而蒸发,但没有扩散。我试图将一些信息素从每个细胞、模拟的每个滴答声转移到附近的 8 个细胞,但结果是一团糟——整个环境都充满了信息素——我认为这是因为机制蚂蚁用来调节信息素水平。
【问题讨论】:
-
为什么对角线比非对角线长?什么意思?
-
在我当前的模拟中,蚂蚁可以以相同的“速度”移动到 8 个相邻单元之一。在这种情况下,蚂蚁可以直线或曲折路径从巢穴移动到食物,并且距离(=它通过的细胞数,因此从巢穴到食物的每个周期的周期)将是相同的。当然,在现实中,曲折路径(东北、西北、东南、西南)比直线路径(北、南、东和西)更长。我添加了一个插图。
-
在循环通过 8 个相邻单元时,您是否尝试过对角添加一些惩罚?这将防止在相等的情况下选择对角线移动。您可以尝试调整惩罚值。
标签: python simulation ant-colony artificial-life