基于A星算法的车位导航方法与流程

文档序号:17845471发布日期:2019-06-11 21:40阅读:704来源:国知局
基于A星算法的车位导航方法与流程

本发明涉及车位导航方法,属于停车位管理技术领域。



背景技术:

车位导航目前已经开始应用于停车场的管理,现在的停车场多而大,当用户开车行驶进入停车场时,想要寻找车位时,如果视野当中没有空闲的可停车位时,用户只能漫无目的的在停车场中寻找。如果停车场剩余的位置不多,对于用户而言如果没有提示,剩余的几个位置要更难寻找。若停车场中已经没有了车位,那么这次的行为就是浪费且多余的。随着拥有车辆的用户增多,车位有限,车辆乱停乱放的问题逐渐严重,交通秩序受到了极大的影响,而车位导航的应用功能可以让用户高效的利用这些车位,让司机用户更容易找到车位,减少车辆违停的现象,维护交通秩序。

而车位导航中最需要解决的问题是如何规划从起点至目标车位的路线。车位导航本质其实就是在已知起点和终点的情况下进行路径搜索,所谓路径搜索就是在既定的地图中搜索出从起点到目的点的可行路径,绕行路径中的障碍,而且路径的搜索结果往往不止一条路径,有的路径长,有的路径短;因此如何尽可能快速的准确搜索出两点间的最短路径是车位导航技术的关键。

传统的车位导航技术通常使用宽度优先搜索算法、深度优先搜索算法以及dijkstra算法(e.w.dijkstra于1959年提出,又叫迪杰斯特拉算法),宽度优先搜索算法和深度优先搜索算法这两种方式在选择下一个顶点时并没有把连接两个顶点的边的权值考虑进去,也就是路线的成本没有考虑在计算范围内,所以搜索到的结果存在一定误差,通常将这种盲目地选择顶点的方式的算法归纳为盲目型算法。采用dijkstra算法的车位导航技术虽然将路线的成本考虑在计算范围内,算法简明,不存在负权值的边时能得到最短路径,但是缺点也很明显:效率低、运算中占用空间大。



技术实现要素:

本发明为解决现有车位导航不能快速有效找到最短路径的问题,提供了基于a星算法的车位导航方法。

本发明所述基于a星算法的车位导航方法,通过以下技术方案实现:

步骤一、将停车场划分为网格,每一个网格视为一个顶点,分别确定障碍物、起点vs、终点vg所在的网格;除障碍物之外的顶点数目为n;

步骤二、将起点vs放入集合a中,并将集合b置空;

步骤三、将集合a中的各个顶点按照代价值由小到大排列,并将第一个顶点vi放入集合b中;

步骤四、判断步骤三放入集合b中的顶点vi是否为终点vg,如果是,路径搜索成功,导航结束;如果不是,扩展vi的子顶点vj,j=1,...,n;j≠i,以顶点间路径距离作为代价,并计算vj的代价值;

步骤五、判断vj是否在集合a或集合b中;

如果两个集合中都没有顶点vj,那么将顶点vj放置到集合a中并将指针指向它的父级顶点vi;

如果集合a中存在vj,则更新集合a中vj的代价值,并将指针指向它的父级顶点vi;

如果集合b中存在vj,则该顶点不需考虑;

返回步骤三。

本发明最为突出的特点和显著的有益效果是:

本发明所涉及的基于a星算法的车位导航方法,在选择下一个顶点时会把连接两个顶点的边的权值考虑进去,对集合a进行升序排序,使得被移入集合b、构成最终路径的顶点是代价最小的顶点。因此本发明方法相比采用盲目型搜索算法的车位导航技术在搜索结果上更具智能性,比采用dijkstra算法的为导航技术在搜索过程中更具方向性,因此本发明方法导航计算复杂度较低、导航快速、结果有效准确;实施例中车位导航速度在1秒能完成。

附图说明

图1为本发明流程图;

图2为本发明中代价值计算原理图;

图3为实施例中停车场划分为网格后的示意图;

图4为实施例中起点的子顶点代价值信息图;

图5为实施例中顶点代价值信息图;

图6为实施例中车位导航功能静态类图;其中point表示顶点类,addpoint表示扩充顶点类;updatepoint表示更新顶点类;astarview表示视图类;refreshpoint表示刷新节点类;updateobject表示更新目标类;int表示整数类型;rect为构造函数;double表示双精度数据类型;list表示列表;random为随机函数;

图7为实施例中车位导航功能序列图;

图8为实施例中app上车位导航界面示意图

图9为实施例中车位导航结果在app上的显示示意图。

具体实施方式

具体实施方式一:结合图1对本实施方式进行说明,本实施方式给出的基于a星算法的车位导航方法,具体包括以下步骤:

步骤一、将停车场划分为网格,每一个网格视为一个顶点,分别确定障碍物、起点vs、终点vg所在的网格;除障碍物之外的顶点数目为n;起点vs和终点vg属于特殊的顶点;

步骤二、将起点vs放入集合a中,并将集合b置空;

步骤三、将集合a中的各个顶点按照代价值由小到大排列,并将第一个顶点vi放入集合b中;

步骤四、判断步骤三放入集合b中的顶点vi是否为终点vg,如果是,路径搜索成功,导航结束;如果不是,扩展vi的子顶点vj,j=1,...,n;j≠i,以顶点间路径距离作为代价,并计算vj的代价值;

步骤五、判断vj是否在集合a或集合b中;

如果两个集合中都没有顶点vj,那么将顶点vj放置到集合a中并将指针指向它的父级顶点vi,返回步骤三;

如果集合a中存在vj,则更新集合a中vj的代价值(用步骤四中算得的相对更小的vj的代价值替换集合a中原来相对更大的vj的代价值),并将指针指向它的父级顶点vi;返回步骤三;

如果集合b中存在vj,则该顶点不需考虑,进入下一步;返回步骤三。

本发明方法会对集合a进行升序排序,使得被移入集合b、构成最终路径的顶点是代价最小的顶点。这是a星算法比盲目型搜索算法在搜索结果上更具智能性,比dijkstra算法在搜索过程中更具方向性进而更具智能性的原因。从而保证了导航的快速、准确。

具体实施方式二:本实施方式与具体实施方式一不同的是,所述基于a星算法的车位导航方法还包括以下起始点验证操作:

在步骤二之后判断集合a是否为空集,如果集合a为空集则将起点存放失败,路径搜索失败,导航结束;如果集合a不为空,进入步骤三的操作。这样可以防止出现误操作或者排除系统出现某些故障的情形,比方说选择非法的起点等。

其他步骤及参数与具体实施方式一相同。

具体实施方式三:本实施方式与具体实施方式二不同的是,步骤四中所述vi的子顶点指的是与顶点vi相邻的顶点(点vi周围的顶点),障碍物所在网格除外。因此,每个顶点可能有1~8个子顶点,如图4中起点vs有6个子顶点。

其他步骤及参数与具体实施方式一或二相同。

具体实施方式四:本实施方式与具体实施方式三不同的是,所述vj的代价值具体的计算式为:

f(vj)=g(vj)+h(vj)

其中,f(vj)是经过顶点vj到达终点vg所要付出的代价值;g(vj)是自起点至顶点vj已付出的代价的实际值;h(vj)是自顶点vj至终点vg所要付出的代价的估算值。

代价值越小,表示经过该顶点到达终点所要付出的代价越小(距离越短),则该点的重要性越强。

如图2所示,起点为i(1,4);终点为e(8,1);则经过点j(5,4)到达终点e所要付出的代价值:

而经过点c(1,1)到达终点e所要付出的代价值:

f(c)=g(c)+h(c)=|4-1|+|8-1|=10

可知,通过当顶点j到达终点e所付出的代价更小,即路径i→j→e比路径i→c→e更短。

其他步骤及参数与具体实施方式一、二或三相同。

具体实施方式五:本实施方式与具体实施方式四不同的是,表示起点vs与顶点vj之间的网格距离,表示顶点vj与终点vg之间的网格距离。

其他步骤及参数与具体实施方式一、二、三或四相同。

实施例

采用以下实施例验证本发明的有益效果:

(1)将本发明方法应用在移动终端app上,以a星算法为基础,在app中自定义以寻找最优路径为目的的控件,该自定义控件需要应用android组件绘制图模型,并支持选择起点与终点,且最终显示路径规划的动画效果。设计车位导航功能静态类图如图6所示;车位导航功能序列图如下图7所示。

(2)停车场设置传感器识别车位是否有车辆停放,以及图像识别系统识别停放的车辆车牌号是否为预订该车位的车辆,一旦不一致应给予提示。如果该车位已经被预订,或已有车位占用,应将这些信息上传至服务端,供app进行处理将结果返还给用户,以防出现秩序混乱或错误的信息提示。

在app中点击车位导航按钮,进入车位导航界面,设定起点终点,如图8所示。

(3)而车位导航中最需要解决的问题是如何规划从起点至目标车位的路线;

如图3是某停车场划分为网格后的示意图,虚线方块表示可通行的道路,每一块道路以坐标的形式表示,而黑色方块表示图中的障碍物不可通行。道路的顶点v(x,y);x,y分别为表示顶点v(x,y)的x轴坐标和y轴坐标,起始顶点为vs,目标顶点为vg;顶点v(x,y)水平、竖直移动一格的代价是10,斜移一格的代价是目标顶点vg的坐标值为(7,5)。依据以上信息,可选的启发函数为:

f(v(x,y))=g(v(x,y))+h(v(x,y))

具体计算的时候根据实际情况选择计算复杂度较低的进行运算。

基于a星算法的车位导航过程如下。

1.将起始顶点vs移入集合a,将集合b置空;

2.如图4所示,因为障碍物顶点不能通行,所以不被搜索,即不能作为子顶点。将vs的子顶点移入集合a,vs移入集合b;

3.计算集合a中各顶点的代价值并进行升序排序;

4.将集合a中的第一个顶点移入集合b;

5.选择将最先加入集合a且代价值最小的顶点移入集合b;

顶点vs到顶点v(4,4)的行驶路线是vs→v(4,4),而不是vs→v(4,5)→v(4,4),因为后一种路线其行驶方案会使g(v(4,4))由原来的14变为20,致使f(v(4,4))由原来的54变为60;除非新的代价值更小,否则保持原代价值不变;新的代价值60大于原有的代价值54,所以f(v(4,4))的估算代价仍保持54不变;

6.如图4,顶点v(4,4)的子顶点为vs、v(4,5)、v(3,4)、v(3,3)、v(4,3),忽略已经移入集合a的顶点vs、v(4,5)和己存在于集合a的顶点v(3,4),所以选择将顶点v(3,3)、v(4,3)添加入集合a。

7.计算集合a中各顶点的代价值并进行升序排序;

8.将集合a中的第一个顶点移入集合b;

此时顶点vs到顶点v(4,6)的行驶路线是vs→v(4,6),而不是vs→v(4,4)→v(4,5)→v(4,6),原理与步骤5一样。

继续执行上述步骤,直到目标顶点vg被移入集合b为止,最终的代价值信息如图5所示,最终路径是vs→v(4,6)→v(5,7)→v(6,6)→vg。

(4)上述车位导航过程瞬间(1秒内)能完成,并将生成的最优路径在app中以路径的形式标识出来;如图9所示。

本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,本领域技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1