Matlab Astar算法简单对比分析

(一) 任务描述: 在随机的二维栅格地图中,地图中存在随机给定的静态障碍物,给定路径起点和路径终点,利用 Astar 算法生成最优路径。
(二)算法分析与具体实现Astar 算法是建立 Dijkstra 算法的思想上的,它们在进行图的拓展的时候,每次都选择了具备某种最优性的节点进行拓展,最终,当图结构拓展到目标节点时,对应的路径往往能够满足最优性的要求。而 Astar 算法与Dijkstra 算法的不同之处在于 Astar 算法在累计代价函数 g(n) 的基础上,进一步引入了启发函数 h(n),节点排序以 g(n)+h(n) 为参照,当选取了合适的 h(n) 时,节点图往往能够迅速地向目标节点方向拓展,同时保证结果的最优秀,其伪代码如 Algorithm 1 所示:
(三)仿真实验及结果分析
在仿真实验过程中,主要考虑了两方面的影响因素:启发函数 h(n) 与节点拓展形式 expand(n)。启发函数选择了三种距离函数:对角距离、曼哈顿距离以及欧氏距离;节点拓展形式考虑了四叉树和八叉树两种。而在代价函数方面,使用的是对角距离函数,由于无论是四叉树还是八叉树,拓展节点与当前节点均为相邻节点,在此情形下,对角距离与欧氏距离是相等的。在二维平面下三种距离函数的定义如下:
为了使得实验结果根据可信性,令随机地图生成过程中的障碍物生成阈值为 0.1( 0.25 时容易出现无解的情况),而后令随机数种子从 1 取到 1000,生成约 1000 张地图(不排除多个随机数种子对应一张地图的情形),
在八叉树拓展形式下进行算法测试,最终主要出现了三类对比结果:
( 1)存在可行路径,而且三类方法寻得的最优路径是相同的,实际上,这也是绝大多数地图测试的结果,这说明,在绝大多数情况下,三种算法的最优路径和实际的最短路径是相同的,结果如图 1(a) 所示。
( 2)不存在可行路径。这是比较少见的,实际上,这是在障碍物生成阈值为 0.25,随机数种子为 9 时生成的地图。如图 1(b),此情形下主要原因在于存在一个由障碍物和场地边界线构成的封闭曲线,使得起始点和目标点分别在封闭曲线的内外部,不存在从起始点到目标点穿越该封闭曲线而无碰撞的可行路径。
( 3)存在可行路径,但是曼哈顿距离所寻得的最优路径与其他两种距离所寻得的最优路径不同。实际上,这是由于八叉树拓展形势下,对角距离是从当前点到目标点的真实距离,而 manh_dis ≥ diag_dis ≥ eucl_dis,因此,引用曼哈顿距离函数作为启发函数时不一定能够找到真正的最段路径,如图 1© 和图 1(d) 所示。
图 1: (a) 随机种子为 1,障碍物生成阈值为 0.1,三种距离函数均寻到最优路径; (b) 随机种子为 9,障碍物生成阈值为 0.25,不存在可行路径 © 随机种子为 266,障碍物生成阈值为 0.1,距离函数为对角距离和欧氏距离,两种距离函数均寻到最优路径,路径长度为 11.8995; (d) 随机种子为 266,障碍物生成阈值为 0.1,距离函数为曼哈顿距离,未能寻到最优路径,路径总长度为 12.4853.
为了验证启发函数对最优路径寻取结果的影响,将节点拓展形式改为四叉树拓展形式,此时,各个节点到目标节点的最优距离为曼哈顿距离,从 1000 张地图的寻得路径长度的统计结果来看,在存在可行路径的情况下,三种算法寻得的最优路径是相同的。在这里插入图片描述 从表 1 中可以看出,在八叉树拓展形式下,曼哈顿距离寻得的路径确实不是最优的,而在四叉树拓展形势下,三种启发函数寻得的路径长度是相同的。
此外,算法运行时间同样至关重要,因此,在 10000 张地图下,对算法运行时间进行统计,此时障碍物生成阈值为 0.1,八叉树拓展形式下仅随机数种子为 276 时不存在可行路径,四叉树拓展形式下,有 8 张地图不存在可行路径,最终得到运行时间统计数据如下:
在这里插入图片描述
从表 2 中可以看出,曼哈顿距离函数对应的平均时间和运行时间标准差优于其他两种距离函数,而欧氏距离函数对应的平均时间与对角距离函数对应的平均运行时间大致相同和标准差大致相同。算法运行时间与距离函数的选取存在一定的关联性,可能是由于距离函数导致节点拓展形式存在差异,但是也并不能排除由于本身距离函数计算复杂度不同而导致这一现象发生的可能性。
csdn链接:https://download.csdn.net/download/qq_31813825/11940280

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值