CN101833699A - 一种用于船舶航线设计的启发式航段寻径方法 - Google Patents
一种用于船舶航线设计的启发式航段寻径方法 Download PDFInfo
- Publication number
- CN101833699A CN101833699A CN200910119402A CN200910119402A CN101833699A CN 101833699 A CN101833699 A CN 101833699A CN 200910119402 A CN200910119402 A CN 200910119402A CN 200910119402 A CN200910119402 A CN 200910119402A CN 101833699 A CN101833699 A CN 101833699A
- Authority
- CN
- China
- Prior art keywords
- point
- shipping
- search
- node
- algorithm
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种用于船舶航线设计的启发式航段寻径方法,所述方法包括启发式搜索,启发式最短航段寻径算法分析方法,A*算法启发式原理和改进的最短路径算法。启发式航段寻径算法,该算法基于两点间可航渡线算法,结合A*算法启发式原理,提出了建立可航渡路径树的方法以减少无谓路径的搜索时间。通过分析基于矢量图的航段寻径算法在船舶航线设计的特殊性,根据分析结果对航段寻径算法进行改进,提高生成的航段路径的准确性及进一步提高寻径效率。世界地图的陆地、岛屿及其他障碍物在矢量图中由多边形表示,航段寻径即为在多边形外两点间生成不穿越多边形的连通路径,最终找到最优航段。
Description
技术领域
本发明涉及航海技术领域,尤其涉及一种用于船舶航线设计的启发式航段寻径方法。
背景技术
在航运中,航线设计的优劣对提高航运经济效益有重大的影响。为此,设计出一条理想的航线是至关重要的。航线设计是一项比较复杂和细致的工作,涉及知识面广,选择性和多变性强。船舶在海上航行,与陆地上汽车和火车沿固定路线行驶是大不一样的。由于海区广、活动余地大、气象条件多变,各种船舶情况差异不同,选择航线也变得非常复杂。由于航线设计中航段库是基础,由航段库建立起来世界海运航线交通网络框架。所以航段寻径就成为航线设计的重点,在海上两点间搜索最短可航渡连通路径,这是航线设计中的地图寻径问题。
在人工智能领域,航段寻径的过程表示为:由初始数据库(状态)为起始点,不断应用寻径规则于当前数据库(状态),改变数据库(状态)直至包含目标点的搜索过程。在世界地图海域中进行航段寻径,是在隐式图中搜索,搜索空间的大小很大程度上影响着寻径效率。目前世界航海航线设计是基于世界地图的航线设计,地图精细度大并且图形复杂,如果采用栅格地图将面临如下问题:1、地图栅格化问题,相同比例的栅格化时,比例大,不能表达运河、航道等狭窄流域的连通;比例小,栅格化后的网络巨大,严重影响搜索速度。为了精细表示狭窄地形同时不使栅格网络过于庞大,需要在不同海域采用不同的栅格化比例,这样增加了数据结构及算法复杂度。2、连通性预处理,栅格搜索时需要判断栅格的可通性,需要考虑各种可通情形。为了不影响寻径算法运行时的效率,需要进行栅格可通性预处理。但是,在动态地图中,栅格的可通性需要更新。3、表示精度,栅格地图的表示精度由栅格化比例决定,一般在网络游戏中一块瓷砖为最小单元。因此,如果要让游戏中物体行进路线不是直来直去,就需要进行路径平滑处理。
发明内容
本发明所要解决的技术问题是分析了栅格地图在航线设计中存在的弊端,提出基于矢量图进行航线设计能够避免这些不足。本发明主要设计启发式航段寻径算法,该算法基于两点间可航渡线算法,结合A*算法启发式原理,提出了建立可航渡路径树的方法以减少无谓路径的搜索时间。然后,分析了基于矢量图的航段寻径算法在船舶航线设计的特殊性。根据分析结果对航段寻径算法进行改进,提高了生成的航段路径的准确性及进一步提高了寻径效率。世界地图的陆地、岛屿及其他障碍物在矢量图中由多边形表示,航段寻径即为在多边形外两点间生成不穿越多边形的连通路径,最终找到最优航段。
所述方法包括启发式搜索,通过选择最有希望的节点加以扩展,提高搜索效率,通过检测来确定合理的顺序。
所述方法包括启发式最短航段寻径算法分析方法,搜索P1为起点P2为终点间的最短路径,创建可航渡路径树。
所述方法包括A*算法启发式原理,A*算法是一种有序搜索算法,其特点在于对评价函数的定义上,算法基于两点间可航渡线算法,结合A*算法启发式原理,建立可航渡路径树的方法。
所述方法包括改进的最短路径算法,P1为起点、P2为终点间改进的最短路径算法。
附图说明
图1是本发明采用搜索算法之间的关系示意图;
图2是本发明算法一致性条件示意图;
图3是本发明单个物体寻径算法示例图;
图4是本发明环绕障碍物路线的生成算法示例图;
图5是本发明两点间可航渡线示意图;
图6是本发明可航渡树示意图;
图7是本发明目标点被陆地包围示意图;
图8是本发明围绕障碍物路线选择示意图;
图9是本发明可航渡路径树类图。
具体实施方式
为了使本技术领域的人员更好地理解本发明实施的方案,下面结合附图和实施方式对本发明实施作进一步的详细说明。
首先,参照图1是本发明采用搜索算法之间的关系示意图:
深度优先搜索和宽度优先搜索都没有用到问题本身及搜索过程中的信息,搜索完全是盲目的按照固定顺序进行。盲目搜索的效率低,耗费过多的计算空间与时间。如果能够找到一种方法用于排列待扩展节点的顺序,即选择最有希望的节点加以扩展,那么,搜索效率将会大大提高。在许多情况下,能够通过检测来确定合理的顺序,称这类搜索为启发搜索(Heuristically Search)或有信息搜索(Informed Search)。
启发式搜索是利用问题拥有的启发信息来引导搜索,达到减少搜索范围,降低问题复杂度的目的,这种利用启发信息的搜索过程都称为启发式搜索方法。
启发式搜索过程中,要对OPEN表进行排序,这就需要有一种方法来计算待扩展节点有希望通向目标节点的不同程度,总是希望能找到最有希望通向目标节点的待扩展节点优先扩展。一种最常用法是定义一个评价函数f(Evaluation Function)对各个节点进行计算,其目的就是用来估算出“有希望”的节点来。定义一个评价函数通常参考的原则有:一个节点处在最佳路径上的概率;求出任意一个节点与目标节点集之间的距离度量或差异度量;根据格局(博弈问题)或状态的特点来打分。即根据问题的启发信息,从概率角度、差异角度或记分法给出计算评价函数的方法。
评价函数的任务就是估计待搜索节点的重要程度,给它们排定次序。评价函数f(n)可以是任意一种函数,如定义它是节点n处于最佳路径上的概率,或是n节点和目标节点之间的距离,或是n格局的得分等等。一般来说,评价一个节点的价值,必须综合考虑两方面的因素:已付出的代价和将要付出的代价。在此,我们把评价函数f(n)定义为从初始节点经过n节点到达目标节点的最小代价路径的代价估计值。它的一般形式是:
f(n)=g(n)+h(n)
其中g(n)是从初始节点到n节点的实际代价,h(n)是从n节点到目标节点的最佳路径的估计代价,主要是h(n)体现了搜索的启发信息。因为实际代价g(n)可以根据生成的搜索树实际计算出来,而估计代价h(n)却依赖于某种经验估计,它来源于我们对问题的解的某些特性的认识,这些特性可以帮助我们更快地找到问题的解。
评价函数中,g和h相对比例可通过选择f=g+w*h中w的大小加以控制。w是一个正数,很大的w值则会过分的强调启发分量,而过小的w值则突出宽度优先的特征。经验证明使w值随搜索树中节点深度成反比变化,可提高搜索效率。即在深度浅的地方,搜索主要依赖启发分量;而较深的地方,搜索逐渐变成宽度优先,以保证到达目标的某一条路径最终被找到。
有序搜索算法,用评价函数f来排列GRAPHSEARCH步骤h)中OPEN表上的节点。根据习惯,OPEN表上的节点按照它们f函数值的递增顺序排列。根据推测,某个具有低的估价值的节点较有可能处在最佳路径上。应用某个算法(如等代价算法)选择OPEN表上具有最小f值的节点作为下一个要扩展的节点。这种搜索方法叫做有序搜索或最佳优先搜索,而其算法叫做有序搜索算法或最佳优先算法。可见它总是选择最有希望的节点作为下一个要扩展的节点。
有序搜索(Ordered Search)又称为最好优先搜索(Best-First Search)。
有序状态空间搜索算法如下:
a)把起始节点S放到OPEN表中,计算f(S)并把其值与节点S联系起来。
b)如果OPEN是个空表,则失败退出,无解。
c)从OPEN表中选择一个f值最小的节点i。结果有几个节点合格,当其中有一个为目标节点时,则选择此目标节点,否则就选择其中任一个节点作为节点i。
d)把节点i从OPEN表中移出,并把它放入CLOSED的扩展节点表中。
e)如果i是个目标节点,则成功退出,求得一个解。
f)扩展节点i,生成其全部后继节点。对于i的每一个后继节点j:
i)计算f(j)。
ii)如果j既不在OPEN表中,又不在CLOSED表中,则用评价函数f把它添入OPEN表。从j加一指向其父辈节点i的指针,以便一旦找到目标节点时记住一个解答路径。
iii)如果j已在OPEN表上或CLOSED表上,则比较刚刚对j计算过的f值和前面计算过的该节点在表中的f值。如果新的f值较小,则:
①以此新值取代旧值。
②从j指向i,而不是指向它的父辈节点。
③如果节点j在CLOSED表中,则把它移回OPEN表。
g)转向步骤b)。
宽度优先搜索、等代价搜索和深度优先搜索统统是有序搜索技术的特例。对于宽度优先搜索,f(i)是节点i的深度。对于等代价搜索,f(i)是从起始节点至节点i这段路径的代价。
有序搜索的有效性直接取决于f的选择,如果选择的f不合适,有序搜索就可能失去一个最好的解甚至全部的解。如果没有适用的准确的希望量度,那么f的选择将涉及两个方面的内容:一方面是一个时间和空间之间的折衷方案;另一方面是保证有一个最优的解或任意解。
A*算法是一项古老的技术,最初它被用来解决各类数学问题。在人工智能研究的早期它被用来解决寻路问题。目前常用寻路算法是A*方式,原理是通过不断搜索逼近目的地的节点来获得。A*搜寻法是是一种最佳化的搜寻方法,是当前用的最多也是最先进的算法,在比较简单的地图上它的速度非常快,能很快找到最短路径,而且使用*A算法可以很方便地控制搜索规模以防止程序堵塞。
√A*算法的评价函数
用最优搜索算法详细说明图搜索(GRAPHSEARCH)。最优搜索算法根据函数的增加值,(在图搜索步骤h中)重排OPEN中的节点,如八数码问题。把GRAPHSEARCH的这种算法称为A*算法。定义使A*执行广度搜索或相同代价搜索的函数是可行的。为了确定要用的函数族,必须先介绍一些其它符号。
设h(n)=节点n和目标节点(遍历所有可能的目标节点以及从n到它们的所有可能路径)之间的最小代价路径的实际代价。
设g(n)=从开始节点s到节点n的一个最小代价路径的代价。
那么f(n)=g(n)+h(n)就是从s到目标节点并且经过节点n的最小代价路径的代价。
对每个节点n,设h*(n)(启发因子)是h(n)的某个估计,g*(n)(深度因子)是由A*发现的到节点n的最小代价路径的代价。在算法A*中,评价函数f*是f的一个估计,此估计可由下式给出:
f*(n)=g*(n)+h*(n) 式(2-3)
对于g(n)来说,一个明显的选择就是搜索树中从s到n这段路径的代价,这一代价可以由从n到s寻找指针时,把所遇到的各段弧线的代价加起来给出(这条路径就是到目前为止用搜索算法找到的从s到n的最小代价路径)。这个定义包含了g*(n)≥g(n)。对于h(n)的估计h*(n),它依赖于有关问题的领域的启发信息,称h*为评价函数。
A*算法是一种有序搜索算法,其特点在于对评价函数的定义上。对于一般的有序搜索,总是选择f值最小的节点作为扩展节点。因此,f是根据需要找到一条最小代价路径的观点来估算节点的,所以,可考虑每个节点n的评价函数值为两个分量:从起始节点到节点n的代价以及从节点n到达目标节点的代价。
√A*算法
A*算法:
a)生成一个只包含开始节点s,的搜索图G,把s放在一个叫OPEN的列表上。
b)生成一个列表CLOSED,它的初始化为空。
c)如果OPEN为空,则失败退出。
d)选择OPEN的第一个节点,把它从OPEN中移入CLOSED,称该节点为n0。
e)如果n是目标节点,顺着G中,从n到s的指针找到一条路径,获得解决方案,成功退出(该指针定义了一个搜索树,在步骤g建立)。
f)扩展节点n,生成其后继节点集M,在G中,n的祖先不能在M中。在G中安置的成员,使它们成为n的后继。
g)从M的每一个不在G中的成员建立一个指向n的指针(例如,既不在OPEN中,也不在CLOSED中)。把M的这些成员加到OPEN中。对M的每一个已在OPEN中或CLOSED中的成员m,如果到目前为止找到的到达m的最好路径通过n,就把它的指针指向n.对已在CLOSED中的M的每一个成员,重定向它在G中的每一个后继,以使它们顺着到目前为止发现的最好路径指向它们的祖先。
h)按递增f*值,重排OPEN(相同最小f*值可根据搜索树中的最深节点来解决)。
i)返回步c)。
在步骤g)中,如果搜索过程发现一条路径到达一个节点的代价比现存的路径代价低,就要重定向指向该节点的指针。已经在CLOSED中的节点子孙的重定向保存了后面的搜索结果,但是可能需要指数级的计算代价。因此,在步骤g)中常常不会实现。随着搜索的向前推进,其中有些指针最终将会被重定向。
A*算法本身表述起来很简单,关键是在代码优化上,基本的思路一般都是以空间(即内存的占用)换取时间(搜索速度),另外还有诸如多级地图精度等一些地图预处理的技术。
√A*的可接纳性
对图和h*施加一些条件可以保证应用到图的A*算法总能找到最小代价路径。图的条件是:
●图中每个节点如果有后继节点,且个数是有限的;
●图中所有弧的代价都大于某个正数。
h*的条件是:
对搜索图中的所有节点n,h*(n)≤h(n),h*不会超过实际值h的估计,这样的h*函数被称为优化概算机。
用这三个约束条件,只要存在到达目标的路径,A*算法就可以保证找到一条到达目标的最佳路径。
如果A*的两个版本A1 *和A2 *,其差别在于对所有的非目标节点,h1<h2,那么就说A1 *比A2 *更灵通(informed)。
概括了上述已经讨论过的一些搜索算法的关系。当对所有的节点h*≡0时,得到的是相同代价算法(搜索顺着相同代价的边沿向外扩展)。当f*(n)=g*(n)=深度(n)时,得到的是宽度优先搜索算法,它顺着相同深度的边沿向外扩展。相同代价和宽度优先算法都是A*(h*≡0)的特殊情况,故它们也都是可接纳的。
参照图2是本发明算法一致性条件示意图:
考虑一对节点(ni,nj),nj是ni的一个后继。如果在搜索图中所有的这种节点对都满足下述条件:
h*(ni)-h*(nj)≤C(ni,nj),其中。C(ni,nj)动是从ni到nj的代价。
上式也写作:h*(ni)≤C(ni,nj)+h*(nj)和h*(nj)≥h*(ni)-C(ni,nj)
就说h服从一致性条件。这个条件陈述了顺着搜索图中的任何路径,到达目标的最优代价的估价的减少不会大于该路径弧代价。也就是说,在考虑了一个弧的已知代价后,启发式函数在局部是一致的。一致性函数暗示了当搜索树中节点的值远离开始节点时,它是单调非递减的。设ni和nj是由A*在搜索树上产生的两个节点,nj是ni的后继。如果满足一致性条件,就有f(nj)≥f(ni)。为了证明这个事实,可从一致性条件开始:
h*(nj)≥h*(ni)-C(ni,nj) 式(2-4)
给上式两边都加上g*(nj)有:
h*(nj)+g*(nj)≥h*(ni)+g*(nj)-C(ni,nj) 式(2-5)
但是g*(nj)=g*(ni)+C(ni,nj) 式(2-6)
因此,f*(nj)≥f*(ni) 式(2-7)
由于这个原因,一致性条件(对h*)常被称为单调条件(对f*)。
一致性条件是很重要的,因为当它被满足时,A*不再需要重定向指针,搜索一个图和搜索树就没有什么差别。
很多启发式函数满足一致性条件。例如,八数码问题中的“不在正确位置的数码个数”函数就是一个例子。当一个启发式函数不满足一致性条件,但其它方面是可以接受的条件时,那么在搜索期间调整该函数使它满足一致性条件。假如,在A*的每一步,检查刚刚扩展的节点n的后继的h*值。任何h值小于h*(n)值的节点减去从n到这个节点的弧代价就会得到它们调整后的h*值,这样它们就刚好等于h*(n)值减去那段弧代价的所得值。
参照图3是是本发明单个物体寻径算法示例图:
单个物体寻径算法中需要解决的最基本问题是避开障碍物,最容易实现的方法是:
a)从起点到终点拉一条直线A。
b)沿着线A朝终点行进,一遇到障碍物便按顺时针方向绕着障碍物行走,直至碰到直线A。
c)重复步骤b),便一定能最终到达目的地。
d)该算法计算出来的路径并不是最短的,有时候还会走出奇怪的路线,但速度很快,能在较低档次的PC机上满足游戏中实时的要求,游戏“红警”中的寻径算法便是以此为基础的。可以对上述算法作几点改进,使可移动物体的行走路线更趋合理。
可移动物体是沿逆时针方向绕障碍物行走,而不该按顺时针方向去绕弯子。于是,当遇到障碍物时,首先要判断环绕方向。如果比起顺时针方向,逆时针方向行走能以更短的路径碰到直线A,那么选取逆时针方向绕着障碍物行走,反之亦然。
尽量走直线路径,减少绕行路程。先按上述算法计算出行走路线B,然后当可移动物体在路线B上绕着障碍物行进时,每走一步便从当前位置向终点拉一条直线C,如果沿着直线C前进能与目前还未经过的行走路线B的某段相遇,就终止绕行,直接按直线C行至路线B,从而缩短了路径。
当终点处于障碍物包围之中,可移动物体永远不可能到达终点,无论是按顺时针方向还是逆时针方向绕行都只能回到原地,无法行进。对于这种情况的处理方式就是绕障碍物一周,选择离终点距离最近的地方作为终点。
单个物体寻径算法在具体实现中主要涉及到直线和环绕障碍物路线的生成技术。直线的光栅化生成可以参考计算机图形学教材,这儿不再赘述。下面给出环绕障碍物路线的生成算法(以顺时针方向为例):
a)当环绕障碍物行走时,先要判断当前障碍物相对于可移动物体的方向,标记为整数i。例如:障碍物在可移动物体的正右方,就记作方向5。
b)接着可移动物体依次查看方向j=(i+n)mod8,(n=1...7),直至发现方向j处无障碍物为止。若障碍物位于正上方7,可移动物体首先看左上方向0=(7+1)mod8能否通过,如果不通就接着试左边方向1=(7+2)mod8,还不行再依次按图上所示箭头试探其余几个方向,直至找到出口,并往该方向行走一步。若障碍物位于左下方2,则依次按下方3、右下方4、右方5、右上方6、上方7、左上方0、左方1等七个方向查看是否有通路。至于障碍物相对于可移动物体的其它位置的处理,照此类推。
c)重复步骤a)、b),便能完成顺时针环绕障碍物行走。
参照图5是本发明两点间可航渡线示意图:
按照如下步骤建立P1、P2两点间的可航渡线,P1为起点S,P2为终点E,Path[]为航段路径中转向点数组:
(1)连接点S、E,线SE为航渡测试线;
(2)如果线SE不与任何多边形相交(即不穿越陆地、障碍物等),则线SE为两点间的可航渡线,到第(5)步;否则,P1P2与多边形相交,到第(3)步;
(3)计算起点S到与测试线相交且距起点最近的多边形的切点(两个,称为可航渡点)A1、A2;
(4)以A1点为新终点,转到步骤(1)搜索起点S到A1为终点E的可航渡线;
(5)将E加入Path[]。当E=P2,找到P1到P2的一条可航渡线,Path[]为航段路径的转向点序列;当E≠P2,转到步骤(1)搜索E为起点S,P2为终点E的可航渡线。
按照以上可航渡线搜索方法,搜索P1、P2间的一条可航渡线。
2)两点间最短航段寻径算法
最简单的,在搜索两点间可航渡线基础上,在遇到障碍物时,记住可航渡点,从可航渡点分别搜索可航渡线,这样搜索出所有可航渡路径,路径(1)、(2)、(3),即可获得两点问最短路径,(2)为最短路径。
以上方法将遍历所有可行路径,采用深度优先策略,效率低下。下面分析并设计启发式最短航段寻径算法。
启发式最短航段寻径算法分析:
以两点间可航渡线算法为基础,确定路径搜索方向,减少盲目搜索路线,缩小搜索空间,提高搜索速度。
在选择下一个可航渡点时,采用评价函数控制策略。根据评价函数选择最优的当前航渡点开始下一步可航渡点搜索。
可航渡点n的启发评价函数:
f(n)=g(n)+h(n)
其中,g(n)为从起点到可航渡点n的距离,h(n)为可航渡点n到目标点的直线距离。
可航渡路径树
每条航段都可能存在多条可航渡线,最终只选择一条最优的航渡线。为了节省搜索时间,尽早地停止搜索非最优路径显得十分必要。采用可航渡路径树(相当于图搜索策略中的CLOSED表)的方法,在航段路径搜索过程中建立起点到目标点搜索路径树,可航渡点为树中节点。如果搜索到可航渡线,记录当前最短路径PathLen。每次搜索到新的可航渡点n比较g(n)和PathLen的关系,如果g(n)≥PathLen则标记停止从n进一步进行搜索。
P1为起点、P2为终点E间最短路径算法如下:
初始最短路径长度PathLen为∞;OPEN表为路径树中当前可航渡点节点(标记停止搜索的除外)指针根据评价函数值升序排列列表;n为当前可航渡点。
(1)P1为可航渡路径树根节点Root,Root为当前Parent节点,令n=P1;
(2)计算f(n),将n节点指针顺序***OPEN表;
(3)从OPEN表首端移出p,p对应可航渡点为起点S;
(4)连接S、E,线SE为航渡测试线;
(5)如果线SE不与任何多边形相交(即不穿越陆地、障碍物等),则线SE为两点间的可航渡线,到第(8)步;否则,到第(6)步;
(6)计算起点S到与测试线相交且距起点最近的多边形的切点(两个,即可航渡点)TP1、TP2;
(7)以第一个可航渡点TP1为新终点,转到步骤(4)搜索起点S到TP1为终点E的可航渡线;以第二个可航渡点TP2为新终点,转到步骤(4)搜索起点S到TP2为终点E的可航渡线;
(8)参照图6是本发明可航渡树示意图:
当E==P2,找到P1到P2的一条可航渡线。
a)以P2创建叶子节点,作当前父节点Parent的子节点;
b)计算新路径距离为currPathLen;
c)更新当前树中最短路径长度(PathLen=(PathLen==∞)currPathLen:Min(PathLen,currPathLen))。
当E≠P2,
a)以E创建新节点,添加到当前父节点Parent下作为其子节点;
b)计算当前节点评价函数f(E);
c)如果f(E)≥PathLen,标记停止从当前节点搜索,转步骤(3);
d)当前节点指针根据f(E)顺序***OPEN表;
e)新节点作为为当前父节点Parent;
f)转到步骤(4)搜索E为起点S,P2为终点E的可航渡线。
(9)最短路径长度PathLen对应的叶子节点的路径(叶子节点回溯到根节点的反向路径)即为两点间的最短航段路径。
采用以上算法,搜索P1到P2间的最短路径,创建可航渡路径树。其中路径(3)由于f(d)超过了最短路径而在d处停止搜索。
基于矢量图的航段寻径是寻径算法在航海领域的特殊应用,具有其特殊性,参照图7是本发明目标点被陆地包围示意图,来分析了航段寻径算法中的特殊情况:
1)航渡测试线选取问题
在选取两点间的航渡测试线时,直接连接两点。地球是个连续的球面,因此,在航线设计中这种方式选取的不是最优测试线。
我们改变航渡测试线选取方法,采用两点间的大圆线为航渡测试线,在平面上我们用折线表示来表示圆弧,这样航渡测试线由直线段串(一组首尾相接的非闭合线段)表示。
2)航线路径偏离目标问题
在生成两点间可航渡线时,当目标点被陆地包围时,从P1开始搜索路径将偏离P2,而无法找到可航渡线。
从P1开始出发,当往(1)方向搜索时已经偏离目标;当往(2)方向搜索时,经过可航渡点A后,A到P2仍不可直航,于是从A点找下一个可航渡点,计算A点相对于多边形的切点。其中C点是往(1)方向的,存在重复(1)路径问题;另外一个可航渡点B,这个点已经偏离目标P2,应为永远无法找到P1到P2的可航渡线。
为了解决当点被多边形半包围时,搜索路径偏离目标的问题,我们提出点到多边形的局部切点的计算方法选取可航渡点的策略。当下一个可航渡点偏离目标时,改变计算可航渡点策略。按照这种方法,经过A点后,搜索路径改为(3),最终找到了P1到P2的可航渡线。
3)重复搜索路径问题
参照图8是本发明围绕障碍物路线选择示意图,在2)中已经指出搜索可航渡线时,存在路径重复搜索问题。存在这个问题原因是,搜索可航渡点时,没有沿着某个固定方向进行,而是每次找到两个可航渡时,其中一点的方向便“回顾”已经搜索过的路径。
为了解决重复路径问题,在搜索可航渡点时,按照固定的方向搜索(顺时针或逆时针方向),避免“回顾”搜索。同时注意,这种方法是在绕同一多边形搜索时按照固定方向,这个方向由开始绕当前多边形搜索的可航渡点决定。因此,当从某多边形跳转到另外一个多边形搜索可航渡线时,这个方向可能改变。从P1沿顺时针方向搜索经过A点,需要跳转到另外一个多边形,存在两个可航渡点B和C,当经过B继续搜索可航渡线时沿着顺时针方向(1)搜索;当经过C继续搜索可航渡线时沿着逆时针方向(2)搜索。
通过改用大圆航线作为可航渡线算法中的测试线,适应航线设计针对球面计算最短路径的特殊性;在可航渡线搜索过程中增加搜索方向因子,以保证绕同一障碍物搜索时保持搜索方向,防止“回顾”搜索;搜索下一个可航渡点时,进行偏离目标检测,防止无法到达目标点。
1)改进的可航渡线算法
航渡测试线采用大圆线对原可航渡线搜索算法进行改进。建立P1、P2两点间的可航渡线,P1为起点S,P2为终点E,Path[]为航段路径中可航渡大圆线的数组,初始搜索方向为顺时针和逆时针两个方向:
(1)S、E间大圆线SE是顺序线段集合Array[],Array[]作为航渡测试线;
(2)顺序遍历Array[]判断线段是否与多边形相交,如果大圆线SE不与任何多边形相交(即不穿越陆地、障碍物等),则大圆线SE为两点间的可航渡线,到第(5)步;否则,到第(3)步;
(3)按照搜索方向,采用点到多边形切点策略,计算起点S到与测试线相交且距起点最近的多边形的可航渡点。
a)双向,分别朝顺时针、逆时针方向各搜索一个可航渡点;
b)顺时针,朝顺时针方向搜索一个可航渡点;
c)逆时针,朝逆时针方向搜索一个可航渡点。
判断每个可航渡点是否偏离目标。如果偏离目标,按照该可航渡点方向,采用点到多边形局部切点策略,计算并替换当前可航渡点的代替可航渡点。
(4)以可航渡点为新终点E,转到步骤(1)搜索起点S到终点E的可航渡线;
(5)将大圆线SE线段串Array[]加入Path[]。当E=P2,找到P1到P2的一条可航渡线,Path[]中线段串端点顺序序列为航段路径的转向点序列;当E≠P2,转到步骤(1)搜索E为起点S,P2为终点E的可航渡线。
2)改进的最短路径算法
根据可航渡测试线的改进,可航渡点n的启发评价函数修改如下:
f(n)=g(n)+h(n)
其中,g(n)为从起点到可航渡点n的距离,h(n)为可航渡点n到目标点的大圆线距离。
P1为起点、P2为终点E间改进的最短路径算法如下:
初始最短路径长度PathLen为∞;OPEN表为路径树中当前可航渡节点(标记停止搜索的除外)指针根据评价函数值升序排列列表;n为当前可航渡节点。
(1)以P1为可航渡路径树根节点Root,Root为当前Parent节点,初始搜索方向为双向,令n=P1;
(2)计算f(n),将n节点指针顺序***OPEN表;
(3)从OPEN表首端移出p,p对应可航渡点为起点S;
(4)连接S、E间大圆线SE是顺序线段集合Array[],Array[]作为航渡测试线;
(5)顺序遍历Array[]判断线段是否与多边形相交,如果大圆线SE不与任何多边形相交(即不穿越陆地、障碍物等),则大圆线SE为两点间的可航渡线,到第(8)步;否则,到第(6)步;
(6)按照搜索方向,采用点到多边形切点策略,计算起点S到与测试线相交且距起点最近的多边形的可航渡点,并记录对应搜索方向。
d)双向,分别朝顺时针、逆时针方向各搜索一个可航渡点;
e)顺时针,朝顺时针方向搜索一个可航渡点;
f)逆时针,朝逆时针方向搜索一个可航渡点。
判断每个可航渡点是否偏离目标。如果偏离目标,按照该可航渡点方向,采用点到多边形局部切点策略,计算并替换当前可航渡点的代替可航渡点。
(7)分别以可航渡点TP为新终点,按照(2)、(3)、(4)、(5)递归计算起点S到TP为终点E的可航渡线,搜索方向为TP对应搜索方向;
(8)以Array[]创建新节点,添加到当前父节点Parent下作为其子节点。
当E==P2,找到P1到P2的一条可航渡线,
a)以P2创建叶子节点,作为新节点的子节点;
b)计算新路径距离为currPathLen;
c)更新当前树中最短路径长度(PathLen=(PathLen==∞)
currPathLen:Min(PathLen,currPathLen))。
当E≠P2,
a)计算当前节点评价函数f(E);
b)如果f(E)≥PathLen,标记停止从当前节点搜索,转步骤(3);
c)当前节点指针根据f(E)顺序***OPEN表;
d)新节点为当前父节点Parent;
e)转步骤(4)搜索E为起点S,P2为终点E的可航渡线,搜索方向为E对应方向。
(9)最短路径长度PathLen对应的叶子节点的路径(叶子节点回溯到根节点的反向路径)即为两点间的最短航段路径。
参照图9是本发明可航渡路径树类图:
根节点为航段起点,叶子节点为航段终点,树节点图元数据nodeData为IShape2D类型集合,每个节点由NodeDataIdx索引图元数据。航段计算过程既是构建航段路径树的过程,当树创建完成后访问所有叶子节点,叶子节点的RouteMap索引的图元顺序连接便为航段路径。
航段计算接口:
public void CalculateRoute(LineString2D testline,RouteTree tree,RouteTreeNodeparent,Polygon2D.TANGENTPOINT_SEARCH_DIRECT factor);//计算测试线testline的航段路径,构建路径树tree,当前测试线的前段路仅节点为parent,当前寻找方向为factor。
以上对本发明实施进行了详细介绍,本文中应用了具体实施方式对本发明进行了阐述,以上实施的说明只是用于帮助理解本发明的方法;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (9)
1.一种用于船舶航线设计的启发式航段寻径方法,其特征在于,所述方法包括:启发式搜索,启发式最短航段寻径算法分析方法,A*算法启发式原理,解决重复搜索路径问题的方法,改进的可航渡线算法和改进的最短路径算法。
2.根据权利要求1所述的方法,其特征在于,所述启发式搜索,通过选择最有希望的节点加以扩展,提高搜索效率,通过检测来确定合理的顺序。
3.根据权利要求1所述的方法,其特征在于,所述启发式最短航段寻径算法分析方法,搜索P1为起点P2为终点间的最短路径,创建可航渡路径树。
4.根据权利要求1所述的方法,其特征在于,所述A*算法启发式原理,A*算法是一种有序搜索算法,其特点在于对评价函数的定义上,算法基于两点间可航渡线算法,建立可航渡路径树的方法。
5.根据权利要求1所述的方法,其特征在于,所述解决重复搜索路径问题的方法,通过改用大圆航线作为可航渡线算法中的测试线,适应航线设计针对球面计算最短路径的特殊性,在可航渡线搜索过程中增加搜索方向因子,以保证绕同一障碍物搜索时保持搜索方向,防止“回顾”搜索,搜索下一个可航渡点时,进行偏离目标检测,防止无法到达目标点。
6.根据权利要求1所述的方法,其特征在于,所述改进的可航渡线算法,航渡测试线采用大圆线对原可航渡线搜索算法进行改进。
7.根据权利要求1所述的方法,其特征在于,所述改进的最短路径算法,P1为起点、P2为终点E间改进的最短路径算法包括:
初始最短路径长度PathLen为∞;OPEN表为路径树中当前可航渡节点(标记停止搜索的除外)指针根据评价函数值升序排列列表;n为当前可航渡节点。
(1)以P1为可航渡路径树根节点Root,Root为当前Parent节点,初始搜索方向为双向,令n=P1;
(2)计算f(n),将n节点指针顺序***OPEN表;
(3)从OPEN表首端移出p,p对应可航渡点为起点S;
(4)连接S、E间大圆线SE是顺序线段集合Array[],Array[]作为航渡测试线;
(5)顺序遍历Array[]判断线段是否与多边形相交,如果大圆线SE不与任何多边形相交(即不穿越陆地、障碍物等),则大圆线SE为两点间的可航渡线,到第(8)步;否则,到第(6)步;
(6)按照搜索方向,采用点到多边形切点策略,计算起点S到与测试线相交且距起点最近的多边形的可航渡点,并记录对应搜索方向。
a)双向,分别朝顺时针、逆时针方向各搜索一个可航渡点;
b)顺时针,朝顺时针方向搜索一个可航渡点;
c)逆时针,朝逆时针方向搜索一个可航渡点。
判断每个可航渡点是否偏离目标。如果偏离目标,按照该可航渡点方向,采用点到多边形局部切点策略,计算并替换当前可航渡点的代替可航渡点。
(7)分别以可航渡点TP为新终点,按照(2)、(3)、(4)、(5)递归计算起点S到TP为终点E的可航渡线,搜索方向为TP对应搜索方向;
(8)以Array[]创建新节点,添加到当前父节点Parent下作为其子节点。
当E==P2,找到P1到P2的一条可航渡线,
a)以P2创建叶子节点,作为新节点的子节点;
b)计算新路径距离为currPathLen;
c)更新当前树中最短路径长度(PathLen=(PathLen==∞)currPathLen:Min(PathLen,currPathLen))。
当E≠P2,
a)计算当前节点评价函数f(E);
b)如果f(E)≥PathLen,标记停止从当前节点搜索,转步骤(3);
c)当前节点指针根据f(E)顺序***OPEN表;
d)新节点为当前父节点Parent;
e)转步骤(4)搜索E为起点S,P2为终点E的可航渡线,搜索方向为E对应方向。
(9)最短路径长度PathLen对应的叶子节点的路径(叶子节点回溯到根节点的反向路径)即为两点间的最短航段路径。
8.根据权利要求1所述的方法,其特征在于,所述方法通过分析基于矢量图的航段寻径算法在船舶航线设计的特殊性,对航段寻径算法进行改进。
9.根据权利要求1所述的方法,其特征在于,所述方法在世界地图的陆地、岛屿及其他障碍物在矢量图中由多边形表示,航段寻径即为在多边形外两点间生成不穿越多边形的连通路径,最终找到最优航段。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910119402A CN101833699A (zh) | 2009-03-12 | 2009-03-12 | 一种用于船舶航线设计的启发式航段寻径方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910119402A CN101833699A (zh) | 2009-03-12 | 2009-03-12 | 一种用于船舶航线设计的启发式航段寻径方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101833699A true CN101833699A (zh) | 2010-09-15 |
Family
ID=42717762
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910119402A Pending CN101833699A (zh) | 2009-03-12 | 2009-03-12 | 一种用于船舶航线设计的启发式航段寻径方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101833699A (zh) |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102271156A (zh) * | 2011-07-20 | 2011-12-07 | 武汉爱迪智能工程有限公司 | 基于物联网的数据共享服务*** |
CN103530694A (zh) * | 2013-04-22 | 2014-01-22 | 北京交通大学 | 基于时空网络构建的城市地铁动态客流分配方法 |
CN103971008A (zh) * | 2014-05-19 | 2014-08-06 | 浪潮电子信息产业股份有限公司 | 改进的启发式a*算法 |
CN104537431A (zh) * | 2014-12-16 | 2015-04-22 | 南京航空航天大学 | 一种基于冲突检测的滑行道路径优化方法 |
CN104897168A (zh) * | 2015-06-24 | 2015-09-09 | 清华大学 | 基于道路危险评估的智能车路径搜索方法及*** |
CN106202744A (zh) * | 2016-07-12 | 2016-12-07 | 中国能源建设集团广东省电力设计研究院有限公司 | 海上风电场集电***避障路径优化方法和*** |
CN106546244A (zh) * | 2016-10-26 | 2017-03-29 | 吉林大学 | 一种针对凸形障航物确定船舶航行局部最优路径的方法 |
CN106779251A (zh) * | 2017-01-23 | 2017-05-31 | 东南大学 | 一种基于位置学习效应的最短路径问题的启发式搜索方法 |
CN107248009A (zh) * | 2017-06-05 | 2017-10-13 | 亿海蓝(北京)数据技术股份公司 | 一种基于轨迹语言识别的启发式航线生成方法及装置 |
CN107478231A (zh) * | 2017-08-10 | 2017-12-15 | 千寻位置网络有限公司 | 基于多边形障碍检测的无人机路线规划算法 |
CN108334080A (zh) * | 2018-01-18 | 2018-07-27 | 大连理工大学 | 一种针对机器人导航的虚拟墙自动生成方法 |
CN109445463A (zh) * | 2018-12-21 | 2019-03-08 | 山东理工大学 | 一种无人机动态航线规划方法 |
CN110070239A (zh) * | 2019-03-29 | 2019-07-30 | 北京航空航天大学 | 一种基于a星搜索和深度学习的个性化路线推荐方法 |
CN110595473A (zh) * | 2019-08-14 | 2019-12-20 | 青岛科技大学 | 一种最短时气象航线的获取方法及其*** |
CN110826761A (zh) * | 2019-09-19 | 2020-02-21 | 中山大学 | 一种基于会面点的最优组次序路径查询方法 |
CN111272187A (zh) * | 2020-03-24 | 2020-06-12 | 山东师范大学 | 基于改进的a*算法的最优行驶路径规划方法及*** |
CN111861045A (zh) * | 2020-08-06 | 2020-10-30 | 中国科学院地理科学与资源研究所 | 面向海量数字水深模型数据体海上最短航线快速生成方法 |
CN112651106A (zh) * | 2020-12-04 | 2021-04-13 | 中国航空工业集团公司沈阳飞机设计研究所 | 一种等间距大圆航线确定方法及装置 |
CN113496547A (zh) * | 2021-06-22 | 2021-10-12 | 华南理工大学 | 实物保护***的最薄弱路径识别方法、装置、设备和介质 |
CN113589808A (zh) * | 2021-07-23 | 2021-11-02 | 浙江工业大学 | 一种基于岛桥模型的全局路径规划方法 |
-
2009
- 2009-03-12 CN CN200910119402A patent/CN101833699A/zh active Pending
Cited By (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102271156A (zh) * | 2011-07-20 | 2011-12-07 | 武汉爱迪智能工程有限公司 | 基于物联网的数据共享服务*** |
CN103530694A (zh) * | 2013-04-22 | 2014-01-22 | 北京交通大学 | 基于时空网络构建的城市地铁动态客流分配方法 |
CN103530694B (zh) * | 2013-04-22 | 2016-08-10 | 北京交通大学 | 基于时空网络构建的城市地铁动态客流分配方法 |
CN103971008A (zh) * | 2014-05-19 | 2014-08-06 | 浪潮电子信息产业股份有限公司 | 改进的启发式a*算法 |
CN104537431A (zh) * | 2014-12-16 | 2015-04-22 | 南京航空航天大学 | 一种基于冲突检测的滑行道路径优化方法 |
CN104897168B (zh) * | 2015-06-24 | 2018-01-12 | 清华大学 | 基于道路危险评估的智能车路径搜索方法及*** |
CN104897168A (zh) * | 2015-06-24 | 2015-09-09 | 清华大学 | 基于道路危险评估的智能车路径搜索方法及*** |
CN106202744A (zh) * | 2016-07-12 | 2016-12-07 | 中国能源建设集团广东省电力设计研究院有限公司 | 海上风电场集电***避障路径优化方法和*** |
CN106202744B (zh) * | 2016-07-12 | 2019-09-13 | 中国能源建设集团广东省电力设计研究院有限公司 | 海上风电场集电***避障路径优化方法和*** |
CN106546244A (zh) * | 2016-10-26 | 2017-03-29 | 吉林大学 | 一种针对凸形障航物确定船舶航行局部最优路径的方法 |
CN106779251A (zh) * | 2017-01-23 | 2017-05-31 | 东南大学 | 一种基于位置学习效应的最短路径问题的启发式搜索方法 |
CN107248009A (zh) * | 2017-06-05 | 2017-10-13 | 亿海蓝(北京)数据技术股份公司 | 一种基于轨迹语言识别的启发式航线生成方法及装置 |
CN107248009B (zh) * | 2017-06-05 | 2020-06-30 | 亿海蓝(北京)数据技术股份公司 | 一种基于轨迹语言识别的启发式航线生成方法及装置 |
CN107478231A (zh) * | 2017-08-10 | 2017-12-15 | 千寻位置网络有限公司 | 基于多边形障碍检测的无人机路线规划算法 |
CN108334080A (zh) * | 2018-01-18 | 2018-07-27 | 大连理工大学 | 一种针对机器人导航的虚拟墙自动生成方法 |
CN109445463A (zh) * | 2018-12-21 | 2019-03-08 | 山东理工大学 | 一种无人机动态航线规划方法 |
CN109445463B (zh) * | 2018-12-21 | 2021-07-27 | 山东理工大学 | 一种无人机动态航线规划方法 |
CN110070239A (zh) * | 2019-03-29 | 2019-07-30 | 北京航空航天大学 | 一种基于a星搜索和深度学习的个性化路线推荐方法 |
CN110070239B (zh) * | 2019-03-29 | 2021-05-11 | 北京航空航天大学 | 一种基于a星搜索和深度学习的个性化路线推荐方法 |
CN110595473A (zh) * | 2019-08-14 | 2019-12-20 | 青岛科技大学 | 一种最短时气象航线的获取方法及其*** |
CN110826761B (zh) * | 2019-09-19 | 2023-04-07 | 中山大学 | 一种基于会面点的最优组次序路径查询方法 |
CN110826761A (zh) * | 2019-09-19 | 2020-02-21 | 中山大学 | 一种基于会面点的最优组次序路径查询方法 |
CN111272187A (zh) * | 2020-03-24 | 2020-06-12 | 山东师范大学 | 基于改进的a*算法的最优行驶路径规划方法及*** |
CN111272187B (zh) * | 2020-03-24 | 2021-10-19 | 山东师范大学 | 基于改进的a*算法的最优行驶路径规划方法及*** |
CN111861045A (zh) * | 2020-08-06 | 2020-10-30 | 中国科学院地理科学与资源研究所 | 面向海量数字水深模型数据体海上最短航线快速生成方法 |
CN111861045B (zh) * | 2020-08-06 | 2024-04-09 | 中国科学院地理科学与资源研究所 | 面向海量数字水深模型数据体海上最短航线快速生成方法 |
CN112651106A (zh) * | 2020-12-04 | 2021-04-13 | 中国航空工业集团公司沈阳飞机设计研究所 | 一种等间距大圆航线确定方法及装置 |
CN112651106B (zh) * | 2020-12-04 | 2023-10-27 | 中国航空工业集团公司沈阳飞机设计研究所 | 一种等间距大圆航线确定方法及装置 |
CN113496547A (zh) * | 2021-06-22 | 2021-10-12 | 华南理工大学 | 实物保护***的最薄弱路径识别方法、装置、设备和介质 |
CN113589808A (zh) * | 2021-07-23 | 2021-11-02 | 浙江工业大学 | 一种基于岛桥模型的全局路径规划方法 |
CN113589808B (zh) * | 2021-07-23 | 2024-05-03 | 浙江工业大学 | 一种基于岛桥模型的全局路径规划方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101833699A (zh) | 一种用于船舶航线设计的启发式航段寻径方法 | |
CN107462243B (zh) | 一种基于高精度地图的云控自动驾驶任务生成方法 | |
CN106104656B (zh) | 地图信息生成***、方法及程序 | |
CN109405839B (zh) | 一种基于多路径的交通网络离线地图匹配算法 | |
CN104819724B (zh) | 一种基于gis的无人地面车辆自主行驶辅助*** | |
CN110954122B (zh) | 高速场景下的自动驾驶轨迹生成方法 | |
CN106444835A (zh) | 基于Lazy Theta星和粒子群混合算法的水下潜器三维路径规划方法 | |
CN111375205B (zh) | 游戏中寻路路径的处理方法、装置、电子设备及存储介质 | |
CN110908386B (zh) | 一种无人车分层路径规划方法 | |
CN104965519A (zh) | 一种基于贝塞尔曲线的带落角约束的末制导方法 | |
CN101806596A (zh) | 基于电子海图的最短距离航线自动生成方法 | |
CN111026116B (zh) | 船舶操纵控制方法、装置及电子设备 | |
CN108827311A (zh) | 一种制造车间无人搬运***路径规划方法 | |
JP2012043066A (ja) | 交通インフラ改善計画作成装置およびその方法 | |
CN115713856A (zh) | 一种基于交通流预测与实际路况的车辆路径规划方法 | |
Meng et al. | Trajectory prediction for automated vehicles on roads with lanes partially covered by ice or snow | |
Neumann | Method of path selection in the graph-case study | |
CN111176281A (zh) | 基于象限法的多水面无人艇覆盖式协同搜索方法及*** | |
Zhang et al. | A method for ship route planning fusing the ant colony algorithm and the A* search algorithm | |
WO2023137938A1 (zh) | 虚拟角色的路径规划方法及装置、电子设备、存储介质 | |
CN113525626B (zh) | 一种基于海陆约束的船舶预测轨迹修正方法 | |
CN114019967B (zh) | 一种适用于狭长航道的无人艇航线规划方法 | |
CN117007066A (zh) | 多规划算法集成的无人驾驶轨迹规划方法及相关装置 | |
CN116430856A (zh) | 一种基于变前视距离los算法的船舶航迹控制方法 | |
CN114136322B (zh) | 一种基于经验航法的大型无人艇自动航线规划 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20100915 |