带方向和权重的寻路算法

2024-06-26 13:52:58 发布

您现在位置:Python中文网/ 问答频道 /正文

假设你有两个数组,代表一个海域的波速和方向。速度是整数,方向是度。这些数组对应于一个经纬度区域(这并不重要)

然后,假设你想找到从A到B的最短(最快)的路径(假设直接驶入波浪会减慢你的速度,如果波速很大,速度会更慢)。你们都必须考虑到波速和波的方向

据我所见,迪克斯特拉和A*无法解决这类问题。有没有人曾经处理过类似的事情


Tags: 路径区域代表整数数组方向事情速度
1条回答
网友
1楼 · 发布于 2024-06-26 13:52:58

我目前正在为python开发一个寻路库。我编辑了A*来处理这种情况。然而,它处于非常早期的开发阶段,因此可能不起作用。 而且它没有医生。要使用它,只需创建一个集群witch,它是处理所有PathFinder的基本类

SIZE = 10
arr = np.ones((1, SIZE, SIZE),
               dtype=np.int)

clus = pypathing.nodeGraph.Cluster()
clus.build(arr, pypathing.directions.fullDiagonal)

其中pathfinding.directions.fullDiagonal表示允许所有对角线移动(在这种情况下我建议使用pypathing.directions.noDiagonal,但也可以使用pypathing.directions.noDiagonal不使用任何对角线移动)

然后,可以通过以下方式获得连接2个簇的边:

e = clus.getEdge(clus.getnode((0,0,0)), clus.getnode((0,0,1)))

然后,您可以使用此设置电流在clus.getnode((0,0,0))clus.getnode((0,0,1))方向上的速度

e.nodeMoves = 1

而不仅仅是通过以下方式获得路径:

clus.runAstar(start, end, speed=1)

其中start是起始节点,end是路径的结束节点,速度是船的速度

相关问题 更多 >