A*算法寻找最优路径python代码,从一点出发到达目标点的最优路径并展示,代码可运行。
该算法为使用A算法寻找起点到终点的最优路径,同时设置了一系列障碍点,寻找的路径需避开障碍点。
以淄博市某区域的栅格影像图为例,栅格像素值不同,代表的地物不同,根据地物设置每移动一步的代价也不同。
A算法是常用的静态环境路径规划算法之一,是Dijkstra算法与广度优先搜索算法结合的算法。
通过借助启发式函数,A算法能够更快的找到最优路径。
A算法与Dijkstra算法流程相似,但也存在以下两点不同:
(1)A算法使用启发函数来评估每个节点的“好坏”程度。
节点的评估函数 f(n)如式1,综合考虑了从起始节点到当前节点的实际代价g(n) 和从当前节点到目标节点的估计代价h(n),A算法选择具有最低评估值的节点进行探索,而Dijkstra算法只考虑从起始节点到当前节点的实际代价 ,并选择具有最低实际代价的节点进行探索。
f(n)=g(n) + h(n) (1)
(2)A*算法通常需要存储每个节点的实际代价 、估计代价 和总评估值 ,而Dijkstra算法只需存储每个节点的实际代价 。
具体步骤如下:
①遍历当前节点的四个相邻栅格(上、下、左、右)。
②对于每个相邻栅格,检查它是否在栅格地图内,且不是障碍物点。
③如果相邻栅格在栅格地图内,且不是障碍物点,计算从起始位置到该邻居栅格的路径总成本:路径总成本=该邻居栅格到目标点的距离 + 每步的成本(在栅格地图中,每步的成本根据相邻栅格的像素值即地物类型确定)。
④选择当前位置和各相邻节点中对应路径总成本最小的点作为下一步路径的方向,使得总成本最小。
这样,算法在不断地选择最优路径,逐步接近目标位置,最终找到起点到目标点的最短路径。
ID:596
详询客服 微信shujuqudong1 或shujuqudong6 或 qq68823886 或 27699885
图文详情请查看: http://matup.cn/771747455817.html