首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >最优蚁群定位算法

最优蚁群定位算法
EN

Stack Overflow用户
提问于 2015-02-07 06:21:44
回答 2查看 577关注 0票数 12

假设有一个网格,包含两个墙(被阻塞的单元)以及放置在网格上任何位置的食物。

现在,假设我们试图确定在这个网格上放置蚁群的最佳位置,这样蚂蚁必须以最小的距离(向任何方向到达/从蚁群的起点)获得最大的食物量。

到目前为止,我想出的最佳方法如下:

代码语言:javascript
复制
for each square on the grid
    use a shortest path algorithm to find the distance to/from each food source from this square
    sum these distances to find a number and put the number in that square
select the square with the smallest number

这种做法是否可行呢?有没有更有效的解决方案?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-07 18:23:30

是的,您的算法可以工作,但您可以优化它的情况下,当食品包的数量,<<的方块数在网格中。例如:在上面的图表中。

代码语言:javascript
复制
distances = new int[ROWS][COLS];

for each food-packet on the grid
    use a shortest path algorithm to find the distance to/from each square from this food-packet
    accumulate the distances for each square in the 'distances' array

最后,距离数组将包含蚁群捕获网格上所有食物包所必须做的工作量。将蚁群放在最小值的广场上。

但是请注意,这种方法的渐近复杂性仍然与您在问题中给出的算法相同。

在评论中,taoufiq给出了对算法的另一个明显的优化。即。到目前为止,停止计算任何超过最短距离的最短路径之和。

希望这是有用的。

票数 2
EN

Stack Overflow用户

发布于 2015-02-07 19:07:41

一些基于蛮力方法的优化:

  • 跟踪最短距离,停止计算超出的任何sum of shortest paths
  • 如果曼哈顿距离(delta(x) + delta(y))比记录的短距离更长,停止计算
  • 与曼哈顿的距离优化相结合:从董事会或中心的中心开始,把食物包放在里面,然后从内部开始工作。最佳的位置更可能在中间的某个地方。
  • 将搜索域缩小到食物包之间的区域(即来自[1,1] to [6,7],而不是[0,0] to [7,7])
  • 尼库尼优化

此外,如果你的板真的很大,一个优化求解器可能会减少计算的数量。然而,你的问题似乎是一个非凸问题,许多求解者都有解决这些问题的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28379271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档