zl程序教程

您现在的位置是:首页 >  后端

当前栏目

【路径规划】基于A*算法和Dijkstra算法的路径规划(Python代码实现)

Python规划算法代码 实现 基于 路径 Dijkstra
2023-09-14 09:05:20 时间

 👨‍🎓个人主页:研学社的博客 

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Python代码实现


💥1 概述

Dijkstra算法是Edsger Wybe Dijkstra在1956年提出的一种用来寻找图形中结点之间最短路径的算法。Dijkstra算法的基本思想是贪心思想,主要特点是以起始点为中心向外层层扩展,直到扩展到目标点为止。

A*算法发表于1968年,A*算法是将Dijkstra算法与广度优先搜索算法(BFS)二者结合而成,通过借助启发式函数的作用,能够使该算法能够更快的找到最优路径。A算法是静态路网中求解最短路径最有效的直接搜索方法。

📚2 运行结果

 

 

 A*:

 D*:

部分代码:

# show graph
if show_animation:  # pragma: no cover
    plt.plot(self.calc_grid_position(current.x, self.min_x),
             self.calc_grid_position(current.y, self.min_y), "xc")
    # for stopping simulation with the esc key.
    plt.gcf().canvas.mpl_connect('key_release_event',
                                 lambda event: [exit(
                                     0) if event.key == 'escape' else None])
    if len(closed_set.keys()) % 10 == 0:
        plt.pause(0.001)
# show graph
if show_animation:  # pragma: no cover
    plt.plot(self.calc_grid_position(current.x, self.min_x),
             self.calc_grid_position(current.y, self.min_y), "xc")
    # for stopping simulation with the esc key.
    plt.gcf().canvas.mpl_connect('key_release_event',
                                 lambda event: [exit(
                                     0) if event.key == 'escape' else None])
    if len(closed_set.keys()) % 10 == 0:
        plt.pause(0.001)

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]张希闻,肖本贤.改进D~*算法的移动机器人路径规划[J].传感器与微系统,2018,37(12):52-54+58.DOI:10.13873/J.1000-9787(2018)12-0052-03.

[2]张宇航,陈志军,吴超仲,钱闯,熊盛光. 基于改进A~*算法的电动汽车节能路径规划[C]//.第十七届中国智能交通年会科技论文集.,2022:64-65.DOI:10.26914/c.cnkihy.2022.053514.

[3]致谢:Atsushi Sakai(@Atsushi_twi)

🌈4 Python代码实现