Python 蚁群模拟-路径优化

Python 蚁群模拟-路径优化,python,simulation,ant-colony,artificial-life,Python,Simulation,Ant Colony,Artificial Life,我试图建立一个简单的蚁群模拟。世界是方格网;它们中的每一种都可以由一定程度的信息素和任意数量的蚂蚁组成。有两种类型的信息素:食物信息素和巢穴信息素。蚂蚁对环境一无所知,但返回巢穴的蚂蚁会跟随巢穴信息素(从某种意义上说,它们几乎总是选择移动到附近所有细胞中信息素水平最高的细胞)并留下食物信息素,反之亦然 蚂蚁不时地做出随机的移动,而不是朝着最大信息素的方向移动。在模拟的每一次滴答声中,蚂蚁都会检查附近8个细胞中的信息素水平,如果当前细胞中的信息素水平小于所有附近细胞中信息素水平的最大值,它会添加一

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

蚂蚁不时地做出随机的移动,而不是朝着最大信息素的方向移动。在模拟的每一次滴答声中,蚂蚁都会检查附近8个细胞中的信息素水平,如果当前细胞中的信息素水平小于所有附近细胞中信息素水平的最大值,它会添加一些信息素

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

  • 如何模拟对角线移动比非对角线移动(向上、向下、向左或向右)长的事实
  • 我应该如何模拟信息素的扩散?现在,信息素会随着时间蒸发,但不会扩散。我试着从每个细胞,模拟的每个滴答声,向附近的8个细胞转移一定量的信息素,但结果是一团混乱——整个环境充满了信息素——我认为这是因为蚂蚁用来调节信息素水平的机制

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

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


    关于扩散:这是一个获得正确参数的问题。听起来每个蜱虫的扩散率太高了。此外,它应该是在适当的比例相对信息素生产的蚂蚁。请注意网格类型也会影响扩散。

    为什么对角线移动比非对角线移动长?你是什么意思?在我目前的模拟中,蚂蚁可以以相同的“速度”移动到8个相邻细胞中的任何一个。在这种情况下,蚂蚁可以以直线或之字形的路径从巢穴移动到食物,距离(=它经过的细胞数量,因此从巢穴到食物的每个周期)是相同的。当然,在房地产中,之字形路径(东北、西北、东南、西南)比直线路径(北、南、东、西)长。我添加了一个示例。当循环通过8个相邻单元时,您是否尝试过在对角点上添加一些惩罚?这将防止在相等的情况下选择对角线移动。您可以尝试调整惩罚值。