A* 算法 Python 代码

版本说明:
V1.0版本为只有固定上下左右四个方向进行规划路线。
V2.0版本对V1.0做出了提升,现在可以填入任意方向(至多8个方向)进行路线规划。
V3.0版本删除了sub和index的互相转换,减少了算法复杂度。优化了代码,增加可重复使用性。发现并改正了total_costs计算错误。

V3.0使用方法:
(1)
from 文件名 import A_star
a_star = A_star(matrix=[], step=1000, way=[“R”, “L”, “D”, “U”, “RU”, “RD”, “LU”, “LD”], wall=0)
road = a_star.run(start_point=[],end_point=[]) #可重复使用

或者直接
from 文件名 import A_star
road = A_star(matrix=[], step=1000, way=[“R”, “L”, “D”, “U”, “RU”, “RD”, “LU”, “LD”], wall=0).run(start_point=[],end_point=[])

输出为二位点坐标数组eg:[[10, 10], [9, 9], [8, 8], [7, 7], [6, 6], [5, 5], [4, 4], [3, 3], [2, 2], [1, 1], [0, 0]]

(2)参数说明:
start_point 为起始坐标.
end_point为终点坐标.
matrix为地图/迷宫地图,bool类型.
wall为matrix里True/False哪个为墙,False为墙写0,True为墙写1.
weight为权值(不用特别调整).
Corner_amend为拐角优化,1开启,0关闭.
step表示运行一定循环后退出程序,防止因为地图过大无限运行。代码默认无限循环即step=float(“inf”),推荐加入限制条件,减少特定程序时间.
way表示可以走的方向,eg:[“R”, “L”, “D”, “U”, “RU”, “RD”, “LU”, “LD”]。需要大写(因为没写upper操作).

说明:
该代码为matlab改编成的python代码并经过我的相关优化,有一定参考性,在pycharm debug调试中你可以测试该算法逻辑,希望对你有帮助。

待更新:

如果代码有错误请和我联系,我会及时改正。

V3.0版本代码

A*算法可视化参考代码

下面为历史版本代码:

Read More

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

浙ICP备2021019730-1    浙公网安备 33010902002953号
Copyright © 2024 PanCake