我正在做蚁群优化算法。我有几个问题。我试图搜索 throw ant-colony,但一无所获。
1 — 算法的结果是什么?
我有一些图表,我需要找到从起点到目标点的最佳路径,对吗?该算法不像 dijkstra 算法(找到一条最短路径)那样工作。其中有一个概率因素。在 10 个循环和 5000 只蚂蚁之后,可以选择最差路径,尽管如此,更好路径上的信息素将增加 1000 倍。我的意思是第 5000 个可以选择路径1 -> 3 -> 5
(平均概率为 1%),尽管有 4999 只蚂蚁选择了路径(概率为1 -> 2 -> 5
99%)。这只是一个例子。所以问题是如何检测最优化(最好,在某些参数上最好?)路径,我应该检测它还是1 -> 2 -> 5
在我的例子中是正确的结果(发生......)并且我必须输出最后选择的路径?
2 - 如何输出结果
那么这个答案可能取决于第一个答案。怎么样?我假设,我必须输出每个周期的工作算法和协议的总摘要。
汇总数据将是:
Path found: Yes/no
Path: path/message, that best path is not found
Iteration: N
协议将是:
Start data for iteration 3
Pheromone level for this iteration
Path found on this level or not (?)
Path on this iteration (?)
End data for iteration 3
Start data for iteration 2
Pheromone level for this iteration
Path found on this level or not (?)
Path on this iteration (?)
End data for iteration 2
Start data for iteration 1
Pheromone level for this iteration
Path found on this level or not (?)
Path on this iteration (?)
End data for iteration 1
有什么建议么?请帮我处理每次迭代的输出数据。
3 — 信息素水平达到一定值时停止增长
为什么会这样?例如(500 只蚂蚁),最佳路径上的信息素水平增长到大约 10 步搜索(循环),之后变得稳定。这是良好的行为还是意味着我的算法中有一些错误?如果没有错误,为什么会出现这种行为?
4 — 我的程序架构
我认为好的方法是创建onclick
处理程序,它调用算法的 NEXT STEP(下一个循环)。我看到了一些例子,它有一段时间循环了(不记得链接,不能给你看:'(现在)。我的方法是可以接受的还是完全错误的?