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

个人主页: 研学社的博客
欢迎来到本博客 ❤️ ❤️


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


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

本文目录如下:
目录
1 概述
2 运行结果
3 参考文献
4 Python代码实现

1 概述

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

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

2 运行结果

【路径规划】基于A*算法和Dijkstra算法的路径规划(Python代码实现)_第1张图片
【路径规划】基于A*算法和Dijkstra算法的路径规划(Python代码实现)_第2张图片
【路径规划】基于A*算法和Dijkstra算法的路径规划(Python代码实现)_第3张图片
【路径规划】基于A*算法和Dijkstra算法的路径规划(Python代码实现)_第4张图片
【路径规划】基于A*算法和Dijkstra算法的路径规划(Python代码实现)_第5张图片
【路径规划】基于A*算法和Dijkstra算法的路径规划(Python代码实现)_第6张图片

A*:

【路径规划】基于A*算法和Dijkstra算法的路径规划(Python代码实现)_第7张图片
【路径规划】基于A*算法和Dijkstra算法的路径规划(Python代码实现)_第8张图片

D*:

【路径规划】基于A*算法和Dijkstra算法的路径规划(Python代码实现)_第9张图片
【路径规划】基于A*算法和Dijkstra算法的路径规划(Python代码实现)_第10张图片

部分代码:

# 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代码实现

你可能感兴趣的:(路径规划,算法,python,开发语言)