python - 具有方向和权重的寻路算法
问题描述
假设您有两个阵列,分别代表海上某个区域的波速和方向。速度是整数,方向是度数。这些数组对应于经纬度区域(无关紧要)。
然后,假设您想找到从 A 到 B 的最短(最快)路径(假设直接驶入波浪会减慢您的速度,如果波浪速度很大,它会使您减慢更多)。你们都必须考虑波速和波的方向。
据我所见,Dijkstra 和 A* 无法解决这类问题。有没有人处理过类似的事情?
解决方案
我目前正在为 python 开发一个寻路库。我已经编辑了 A* 以便能够处理这种情况。但是它处于非常早期的开发阶段,因此它可能无法正常工作。而且它没有文档。使用它只需创建一个集群,女巫是处理所有探路者的基本类。
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
女巫不会使用任何对角线移动)。
你可以通过以下方式让 Edge 连接 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
是路径的结束节点,速度是船的速度。
推荐阅读
- json - 从 ION 转换为 JSON 时保留类型注释
- java - Spring/Hibernate:实体未映射
- python - 从代码插入新行时使用数据库默认值
- android-studio - android studio windows 10中的zsh自动建议
- python - 如何迭代命名元组列表,按键值过滤和分组,然后处理输出
- flutter - 未能从 http.post [http: 499] 得到响应
- c# - 如何在 Unity 中保存玩家数据?
- javascript - 如何在 console.log 中打印 props 值?
- html - 我们可以通过选择父元素向子元素添加属性吗
- composer-php - 如何定位 TYPO3 二进制 (typo3)