【发布时间】:2015-04-07 09:24:50
【问题描述】:
假设有一个网格,其中包含两面墙(封闭的单元格)以及放置在网格上任何位置的食物。
现在假设我们正在尝试确定将蚁群放置在此网格上的最佳位置,这样蚂蚁必须行进最短的距离(在任何方向往返蚁群的起点)以获得最大距离食物量。
到目前为止,我想出的最佳方法如下:
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
这种方法是否可行?有没有更有效的解决方案?
【问题讨论】:
-
优化将是跟踪最短距离,并停止计算任何超过的
sum of shortest paths。 -
不清楚您要在这里优化什么功能。食物颗粒大小都一样吗?假设在 (0,0) 处有一个颗粒,在 (4,0) 处有另一个。将菌落放在 (0,0) 处(在一个颗粒顶部,距离另一个颗粒 4 个单位)更好,还是将菌落放在 (2,0) 处(两个颗粒之间)更好?如果您将颗粒视为 foodValue/distance,则第一个更好。如果您将颗粒视为 foodValue - 距离,则颗粒之间的所有位置都一样好。一只蚂蚁可以一次将整个颗粒带回蚁群吗?
-
@robmayoff 我认为“这样蚂蚁必须走的距离最短”很清楚——OP 试图最小化一个特定点与所有包含食物的细胞之间的距离总和。跨度>
-
真的不明显。如果你想优化某些东西,你真的需要一个数学表达式来处理。
标签: algorithm shortest-path path-finding