ARA* 算法的基本原理

几个概念

  • S:路径规划的起点
  • G:路径规划的终点
  • g(s):从起点S到点s的代价
  • h(s):从点s到终点G的预估代价
  • c(s,s):从点s移动到点s的代价
  • e:膨胀系数
  • 产生(generate):对一个节点进行分析当降低g(s)的值时这个节点就被产生
  • 扩展(expand):每次从已经排好的OPEN列表中提取表头对应的节点叫做被扩展
  • 非均衡性(inconsistency):当一个节点的g(s)值降低了而并没有对该节点进行扩展那么该节点具有非均衡性
  • CLOSED列表:存储已扩展节点的表格
  • OPEN列表: 当一个不属于CLOSED的节点被产生后,将被放入OPEN列表中
  • INCONS列表:当一个属于CLOSED表的节点被产生后,就放入INCONS列表
  • 非均衡列表:由OPEN和INCONS组成

e膨胀系数

Dijkstras_progress_animation
Astar_progress_animation
Weighted_A_star_with_eps_5

在介绍ARA* 算法之前,有必要介绍一下weighted A* 算法,在最初的A* 算法中,f(s)的计算方法为:

F=G+H

可以看出f(s)是由个g(s)和h(s)两项构成的,其中g(s)是一个后验值,而h(s)是一个先验值,这样一种启发式的搜索方式本身为算法本身节省了很多资源,去除了一些不必要点的搜索,所以A* 算法的可靠性和时效性都很好,weighted A* 算法是对A* 算法的一个改进,为了使搜索方向更好的指向终点,在原来算法的基础上引入了一个膨胀系数e(epsilon)来给h(s)进行加权,e是一个大于1的值,这样以来算法可以快速的搜索到终点,相对于原来的A* 算法而言,weighted A* 算法更加节省资源,具有更高的时效性,但是它规划出的路径是一条"次优"的,这是在时效性和最优性之间做出折中的一个结果.

F=G+e*H

ARA* 算法的基本流程

在原来weighted A* 算法的基础上,ARA* 算法做了这样的处理:

  1. 选取一个比较大的e快速的规划出一条次优的路径
  2. 在上一步规划的过程中会得到一个OPEN列表和INCONS列表,将二者合并为一个非均衡列表
  3. 将e降低一个层级,在非均衡列表中进行搜索,规划出一个相对更优的路径
  4. 重复第2 3步,直到路径收敛(总的代价没有明显变化)或者e降低为1为止
  5. 看是否规划出一条路径,返回成功/失败
开始
e=2.5运行WeightedAStar得到一条路径
将OPEN和INCONS进行合并组成非均衡列表限定搜索范围
e=e-0.5运行WeightedAStar得到一条路径
e==1或路径收敛?
是否得到合适路径
返回路径
返回失败
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值