A* 算法的实际应用-路径规划(附Python实现代码)

A* 算法的理解,请看这里:

  A算法的示例程序请查看 paulQuei 。本文着重于将实际问题的数学化,并用A算法求解。源码我已经上传至Gitee,安装好git后可以直接Clone:

git clone https://gitee.com/ascloudwalker/algorithem.git

1 .问题描述:
  在一个矩形区域内,已知一关键路径点,实现起点到终点的自动路径规划。规则:只能移动到X方向,或者Y方向相邻的点,不能对角线移动。

在这里插入图片描述2.方法描述:
  面对这个问题,我首先想到了A Star算法,下图就是示例程序中A Star算法的路径寻找过程:首先构建了一个正方形(矩形)的map,每一个坐标点用一个小矩形表示,灰色表示障碍物,规划目标是从左下角到右上角。蓝色方块表示算法在寻找路径的过程,绿色方块表示找到的路径。
在这里插入图片描述

  本文中的问题与上述示例的差别在于:示例中的坐标是相邻的整数,数据本身就说明了各点之间的相邻关系,比如(1,2)和(2,2);而本文的问题中,坐标并不是一定相邻的,例如(1,2)和(2,4)是否能够直接连接(直接到达)需要建立新的相邻关系。于是我想到了图(graph),通过node(节点)和edge(边)来建立点的相邻关系。所以,在我的计算中,map不再是上图的矩形网格,而是下图所示的图(graph)。
在这里插入图片描述  除此以外:我自定义了Cost(指标)计算表达式、障碍点判断表达式。依然使用示例程序给出的A*算法结构流程,可以得到如下结果:(蓝色是算法的寻找路径过程,绿色为最终寻找的轨迹)
在这里插入图片描述
  更多点以及增加不可用障碍点后的效果:
在这里插入图片描述
附:动图生成方法
程序中将每一次生成的图保存为图片(如png),再使用ImageMagick 进程处理:

magick *.png image.gif #生成gif
magick images.gif -layers Optimize dest.gif #压缩衣gif

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值