System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及多目标点的图搜索,具体涉及一种基于图搜索技术的多目标点搜索方法。
技术介绍
1、图搜索技术应用广泛,通常用来解决从a点到b点的最优路径问题。常用的图搜索算法有a*算法、dijkstra算法等,在路径规划问题中,以a*算法为例,图搜索算法的基本流程为将搜索空间建模成图结构,创建一个容器来存储要访问的节点,一般用openlist表示;创建一个容器来存储访问过的节点,一般用closelist来表示;将起点加入openlist,然后开始循环:循环过程为从openlist中选取一个节点,获取该节点可以到达的节点,判断到达的节点是否在openlist和closelist中,如果该节点是一个新的节点即未在openlist和closelist中,则将该节点添加到openlist中;如果该节点已经存在于openlist或closelist中,则判断从起点到达该节点的路径的代价是否小于已存在的节点的代价,如果小于,则将该节点替换之前的节点并添加到openlist中,循环跳出的条件为判断是否到达终点或者openlist为空。基于此可得到一条从起点到终点的最优路径或次优路径。
2、然而现有的图搜索算法无法实现多目标点的搜索问题,在面临多目标点搜索时,如起点为s,目标点集为[a,b,c]时,往往是先搜索到s到a的路径,然后将a当做起点搜索到b的路径,如此反复,最终路径为s→a→b→c,该路径中相邻节点的路径为最优,但是无法保证获取一条到达所有目标点的路径或串联所有目标点的路径最优。通常解决这个问题的方法是人为指定目标点的先后顺序
技术实现思路
1、针对现有技术存在的上述问题,本专利技术提供了一种基于图搜索技术的多目标点搜索方法。
2、本专利技术采用以下的技术方案:
3、一种基于图搜索技术的多目标点搜索方法,包括以下步骤:
4、步骤1:创建图结构搜索空间,图结构搜索空间中的节点使用图节点结构体表示,确定可联通的图节点的边的代价;
5、步骤2:确定起点位置所属图节点s,确定所有的目标图节点;创建搜索节点s,设置搜索节点s中实际代价的值为0,搜索节点中图节点指针指向起点,搜索节点中的前序搜索节点指针设置为空;创建两个搜索节点容器openlist和closelist,openlist用来存放要访问的搜索节点,closelist用来存放已经访问过的搜索节点;将搜索节点s放入openlist中;
6、步骤3:判断openlist是否为空,如果为空则搜索失败退出,不为空则执行步骤4;
7、步骤4:从openlist中挑选cost的值最小的搜索节点,用best表示;
8、步骤5:判断搜索节点best是否完成搜索任务,完成搜索任务是指搜索节点best的回溯路径中包含所有的目标图节点,完成搜索任务则退出,最优路径为搜索节点best的回溯路径,未完成搜索任务则执行步骤6;
9、步骤6:获得搜索节点best指向的图节点能到达的所有图节点的集合subs;
10、步骤7:判断subs是否为空,为空则跳至步骤3,不为空执行步骤8;
11、步骤8:从subs中取得一个图节点sub,求经由搜索节点best到达图节点sub的实际代价值g;
12、步骤9:判断openlist和closelist中是否有搜索节点指向图节点sub,如没有,则跳至步骤10;如果有,则跳至步骤11;
13、步骤10:新建一个搜索节点n,搜索节点n的图节点指针指向图节点sub,n的前序搜索节点指针指向best,计算搜索节点n的cost的值,然后将搜索节点n插入到openlist中,跳至步骤7;
14、步骤11:将openlist和closelist中指向图节点sub的搜索节点集合记为searchnodeset;
15、步骤12:判断searchnodeset是否为空,为空则跳至步骤7,不为空执行步骤13;
16、步骤13:从searchnodeset中取得一个搜索节点search_node,判断搜索节点search_node的回溯路径和搜索节点best的回溯路径是否穿过了相同的目标图节点,如果是,则执行步骤14,如果不是执行步骤16;
17、步骤14:比较搜索节点search_node中记录的实际代价g(search_node)与步骤8中的实际代价值g的大小,如果g<g(search_node),则执行步骤15,否则跳至步骤12;
18、步骤15:如果搜索节点search_node存在于openlist中,更新搜索节点search_node的实际代价g(search_node)=g,将search_node的前序搜索节点指针指向搜索节点best,计算search_node的cost的值;如果搜索节点search_node存在于closelist中,更新搜索节点search_node的实际代价g(search_node)=g,将search_node的前序搜索节点指针指向best,计算search_node的cost的值,将搜索节点search_node添加到openlist中,从closelist中删除搜索节点search_node,跳至步骤12;
19、步骤16:新建一个搜索节点m,m的图节点指针指向图节点sub,m的前序搜索节点指针指向搜索节点best,计算搜索节点m的cost的值,将m节点插入到openlist中,跳至步骤12。
20、优选地,任一搜索节点x的cost的值为cost=g(x)+h(x),其中,g(x)表示从起点图节点s到达搜索节点x所指向的图节点的实际代价,即图节点s到x指向的图节点的距离;
21、h(x)定义为任务完成进度,h(x)=max-i/n*max+dis(x,nearest_goal),其中,max为预设的一个常量值,n为目标图节点的个数,i为从图节点s到搜索节点x所指向的图节点的路径中包含的目标图节点个数,dis(x,nearest_goal)为当前搜索节点x指向的图节点到最近的未经过的目标图节点的距离。
22、优选地,步骤8中,搜索节点best到达图节点sub的实际代价值g为:
23、g=g(best)+c(best.node,sub);
24、g(best)表示从起点图节点s到达搜索节点best所指向的图节点的实际代价,即图节点s到best指向的图节点的距离;c(best.node,sub)表示搜索节点best指向的图节点与图节点sub的边的值,即best指向的图节点与图节点sub的距离。
25、本专利技术具有的有益效果是:
26、相较于传统的图搜索方法只能在一次搜索过程中搜索一个目标点,本专利技术可在一次搜索过程中获取串联多个目标点的最优路径。本专利技术通过判断到达本文档来自技高网...
【技术保护点】
1.一种基于图搜索技术的多目标点搜索方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的一种基于图搜索技术的多目标点搜索方法,其特征在于,任一搜索节点X的cost的值为cost=g(X)+h(X),其中,g(X)表示从起点图节点s到达搜索节点X所指向的图节点的实际代价,即图节点s到X指向的图节点的距离;
3.根据权利要求1所述的一种基于图搜索技术的多目标点搜索方法,其特征在于,步骤8中,搜索节点Best到达图节点sub的实际代价值g为:
【技术特征摘要】
1.一种基于图搜索技术的多目标点搜索方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的一种基于图搜索技术的多目标点搜索方法,其特征在于,任一搜索节点x的cost的值为cost=g(x)+h(x),其中,g(x)表示从...
【专利技术属性】
技术研发人员:张锐,王琪,
申请(专利权)人:青岛钢铁侠科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。