蚁群算法


13

我是一名学生,正在为课程项目开发蚁群模拟器。它的算法(显然)是蚁群算法。我知道算法的形式多种多样,但是所有这些对于我们来说在数学上都过于详细,因此我们采用了一种方法:

  • 一只蚂蚁出生在一个殖民地,必须从源头收集食物以维持这个殖民地。
  • 所有的蚂蚁都是相似的。
  • 蚂蚁移动的区域是1000x1000的网格,因此每个网格点都可作为蚂蚁占据的有效点。现在,我遇到的所有算法都涉及分别处理顶点和边缘,但是由于我们将蚂蚁的移动限制在四个方向(上,下,左,右),所以我认为将信息素放在何处都没有关系。
  • 上述网格点存储信息素。
  • 蚂蚁仅在携带食物时才会滴下信息素。
  • 对于处于位置(i,j)的蚂蚁,它通过简单的概率公式考虑到其四个相邻节点上的信息素量来决定下一步移动的位置,即,通过(特定相邻节点的信息素数量)/(4个相邻节点的信息素数量之和)。
  • 一只蚂蚁不能回到原来的位置。它只有在有食物的地方或在其殖民地时才能这样做。

现在,我担心的是(以及程序中实际发生的事情)是,当一只蚂蚁FIRST到达有食物并捡起它的位置时,通过我们的算法起作用,它可以移动到任何地方!这是因为它只会留下一条信息素踪迹,一旦它有了食物而不是之前,并且因为它是第一只蚂蚁,就不存在信息踪迹了。

如果蚂蚁可以移动到任何地方,到达食物源后的蚂蚁也往往会跟随它前进。即使它没有移回殖民地,也是如此。这违反了整个算法的目的。

所以我的问题是

  • 上述关注有效吗?如果没有,那为什么呢?如果是,那该如何处理呢?
  • 我们是否需要对算法的基本理解进行一些更改才能使其真正起作用?
  • 在这种情况下,像我这样的新手可能还会错过其他一些微妙但重要的事情吗?

1
如果要建立一个蚁群,我将有两种信息素标记:“常规”(总是留在蚂蚁旅行的地方)和“食物”(只有携带食物的蚂蚁留下的)。如果蚂蚁携带食物,则其朝向“常规”信息素的更高浓度移动,否则朝向“食物”标记。我还要让蚂蚁“饿”和“饱”。饥饿的蚂蚁向“食物”标记行进,但远离“常规”标记,以寻找新的食物来源。(我也将网格设置为六角形,但这不是重点。)
9000

尽管有很多变体,但我认为大多数蚁群算法都假设蚂蚁可以记住它回家的路。IOW,它知道它已经访问过的节点。信息素对随机旅行的蚂蚁起作用。
Dunk 2015年

曾经玩过Simant吗?

“我知道算法的形式多种多样,但是所有这些对于我们来说在数学上都太详细了,所以我们采用了一种我们拥有的方法……”如果您不能做到,您确定您实际上是在进行分配吗?不懂算法吗?
2015年

@ Doval:我们只需要做一个我们选择的项目。我们没有以任何方式受限于某个领域。该课程是C ++的入门课程。我们的讲师只是希望我们在软件开发方面有经验。
晶体管

Answers:


6

这不是ACO的工作方式。蚂蚁在网格中的所有点上移动后,ACO才会丢弃信息素。然后,您评估某些内容(也许是总的旅行时间),然后丢弃信息素以获得好的蚂蚁,然后重复一次。

尽管您可以针对实现的特定性对其进行自定义,但是它们通常不会两次移动到相同的顶点。

信息素并不是每次移动都会掉落,而是在移动到任何地方后都会掉落,并进行评估以确定哪些蚂蚁更好。更好的蚂蚁会掉落爱犬(也许是性能最好的25%的蚂蚁)。


我不同意- ACO 可以通过删除pheremone每一步工作,特别是当目标是模拟蚁群(ACO算法解决问题的其他比“这是一群蚂蚁并”采取措施,使算法更有效,但不一定像真正的蚂蚁。
Logan Pickup

1

我从别人那里看到的实现以及我为自己写的实现,总是让蚂蚁在到达食物后沿着行进的路径释放信息素。也就是说,蚂蚁在随机行走后从其殖民地进军食物。只有在蚂蚁成功到达食物用信息素标记蚂蚁从菌落到食物的路径。没有明确模拟回程。通常,在为当前迭代存放任何信息素之前,多个蚂蚁会先行一步。然后将信息素部署到成功的路径,然后开始新的回合。

通常,蚂蚁步入给定节点的几率由信息素的数量乘以某种程度的“好”来加权。例如,优度度量可能类似于蚂蚁和食物之间的距离的倒数,这将使蚂蚁试图向食物移动,而与先前的信息素沉积无关。可以进一步加权优势以考虑其他因素,例如,某些节点可能比其他节点更容易通过。而且正如enderland所指出的,一旦所有蚂蚁都成功地完成了自己的课程,通常会有某种形式的“选择”路径,其中只有部分“最佳”路径被选择用于信息素沉积。但是,即使没有选择,您仍然应该获得合理的路径,

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.