基于贪心蚁群算法的无人水面艇全局路径规划

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于贪心蚁群算法的无人水面艇全局路径规划
作者:贺嘉肖英杰
来源:《上海海事大学学报》2021年第01期
摘要:
为解决无人水面艇(unmanned surface vessel, USV)在地型較复杂小型水域内的全局路径规划问题,提出一种以贪心算法、蚁群算法、栅格法建模为基础,通过加入双向搜索算法来解决传统贪心算法搜索时易陷入局部最优解等问题的贪心蚁群算法。

该算法利用贪心算法规划基础路线,利用蚁群算法的信息素机制摆脱局部收敛状态,并通过双向搜索算法降低局部收敛概率。

仿真结果表明:该算法搜索时间较传统蚁群算法减少70%以上,迭代次数较传统蚁群算法减少约85%;该算法在处理USV的全局路径规划问题中具有一定的有效性、合理性。

关键词:
无人水面艇(USV); 路径规划; 蚁群算法; 贪心算法
中图分类号: U675.79; TP273+.5
文献标志码: A
收稿日期: 2020-04-05
修回日期: 2020-11-06
基金项目:国家自然科学基金(51909155)
作者简介:
贺嘉(1997—),男,湖南衡阳人,硕士研究生,研究方向为海上智能交通,(E-mail)****************;
肖英杰(1959—),男,广东潮州人,教授,船长,博士,研究方向为载运工具应用工程、通航安全保障,(E-mail)****************.cn
Global path planning for unmanned surface vessels
based on greedy ant colony algorithm
HE Jia, XIAO Yingjie
(Merchant Marine College, Shanghai Maritime University, Shanghai 201306, China)
Abstract:
In order to solve the global path planning problem for unmanned surface vessels (USVs) in small waters with complex terrain, a greedy ant colony algorithm is proposed, where the greedy algorithm, the ant colony algorithm and the grid method modeling are based on, and the two-way search algorithm is added to solve the problem that the traditional greedy algorithm is easy to fall into the local optimal solution when searching. In the algorithm, the greedy algorithm is used to plan the basic route, the pheromone mechanism of the ant colony algorithm is used to get out of the local convergence state, and the two-way search algorithm is used to reduce the local convergence probability. The simulation results show that, the search time of the algorithm is reduced by more than 70% compared with the traditional ant colony algorithm, the number of iterations is reduced by about 85% compared with the traditional ant colony algorithm, and the algorithm is effective and reasonable in dealing with the USV global path planning problem.
Key words:
unmanned surface vessel (USV); path planning; ant colony algorithm; greedy algorithm
0 引言
近年来,随着计算机科学、传感器、无线网络等技术的快速发展,无人运输设备的研究日新月异。

无人水面艇(unmanned surface vessel, USV)技术得到了世界范围内的关注和深入研究。

熊勇等[1]对USV的研究现状进行了总结,针对国内外USV研究普遍存在的问题,提出USV研究的根本目标是研发出稳定性强、通用性高、简单好用的控制算法。

王石等[2]分析了USV在军事活动中的应用,得出USV在现代战争中有非常重大战略意义的结论。

无论是军用USV还是民用USV,在复杂多变的水域内自主规划出一条航程较短的、安全的路径,是保证USV顺利完成任务的基础。

截至目前,国内外许多优秀学者提出了无人运输设备路径规划方案。

范云生等[3]通过融合电子海图与雷达图像对空间动态环境进行建模,并利用改进人工势场法对USV路径进行规划。

陶重犇等[4]用栅格法对搬运机器人工作环境进行简化建模,并采用改进的模拟退火算法对模型进行求解。

孙功武等[5]将改进的蚁群算法用于USV路径规划,通过在蚂蚁发生不同死锁时采取不同策略,大幅度提高了算法搜索过程中有效蚂蚁的数量,加快了算法的收敛速度。

DANANCIER等[6]在对无人机进行路径规划时发现,在障碍物随机分布的情况下路径点生成算法的收敛速度明显比Dijkstra算法的快。

张毅等[7]在对移动机器人进行路径规划时将独狼视场机制引入精英蚁群算法中,改进了蚁群的寻径能力并提高了算法的全局搜索能力。

张岳星等[8]利用电子海图建立静态的三维环境模型,并使用改进的粒子群优化算法对模型进行求解,该方法基本可满足自主式水下潜器在复杂海域航行的全局路径规划需求。

路径规划主要分为静态路径规划和动态路径规划[9-10]。

当前,无人运输设备常用的路径规划算法有Dijkstra算法、貪心算法、蚁群算法
[5,7,11-12]、A*算法[11,13]、遗传算法[14-17]等。

其中贪心算法计算量小、算法简单,且其第一个解通常是最优解,十分适合应用于复杂度较陆地来说偏低的水域,因此本文利用贪心算法解决USV的全局路径规划问题。

为弥补贪心算法易陷入局部最优解的缺陷,引入蚁群算法。

通过贪心算法规划USV基础路线,通过双向搜索算法降低算法局部收敛的概率,利用蚁群算法的信息素机制使算法摆脱局部收敛状态。

1 基于栅格法的水域模型建立
本文运用栅格法对水域进行建模。

栅格法建模是采用一系列同样大小的栅格对水域进行建模的方
法。

用栅格法建立10×10的水域模型,见图1。

图1中:白色栅格为可行栅格,代表可行水域;黑色栅格为不可行栅格,代表不可行水域,即该水域有碍航物,USV无法安全通过;左下角黑色圆点表示USV当前所处位置;右上角方块表示USV需要到达的位置。

栅格坐标由栅格的序号表示,如第一行第一列的栅格坐标为(0,0),第一行第二列栅格坐标为(0,1)。


USV处在模型中除模型边缘外的任意栅格时,其周围都应存在8个栅格,此时USV可以向周围任意一个可行栅格移动。

用栅格法建立水域模型后,USV较为复杂的工作环境被转化为简单的环境,USV的路径规划问题问题也被转化为在两个栅格点之间寻找最优路径的问题。

2 改进贪心算法
2.1 传统贪心算法
贪心算法是一种在每一步都作出当前状态下的最佳选择,以期得到的最终结果也是整体最优的算法。

比如在背包问题中,每次都选择单位价值最高的一样物品装入背包,就是一种贪心算法。

如果一个问题可以使用贪心算法解决,那么在一般情况下,贪心算法会是解决这个问题的最好办法。

由于贪心算法具有高效性,且运算所得到的结果比较接近最优结果,因此贪心算法也常被用作辅助算法或者直接被用于解决一些简单问题。

如图2所示,USV处于栅格0中。

若USV周围的8个栅格均为可行栅格,则这8个栅格均为USV下一步可以到达的位置;若8个栅格中存在不可行栅格,
则必须
在下一步计算前除去这些栅格。

找到所有下一步可以到达的栅格后,计算栅格i与目标栅格end之间的距离:
Di=(xend-xi)2+(yend-yi)2,
i=0,1,2,…,n
式中:xend和yend分别表示栅格end的横、纵坐标;
xi和yi分别表示栅格i的横、纵坐标。

D0表示栅格0(USV所处位置)与栅格end之间的距离。

从所有可行栅格中选出距离栅格end最近的栅格,即选取满足条件min{D1,D2,…,Dn}<D0的栅格,就是USV下一步
到达的栅格。

若找不到满足这一条件的栅格,则算法陷入局部收敛状态,无法继续进行搜索。

若存在两个栅格a和b(a,b=0,1,2,…,n;a≠b)满足Da=Db,
即USV在路线选择时碰到“分岔路口”时,一般随机作出选择进行下一步计算并对该路线的总路程进行记录。

最终进行多次迭代,保留最短的路径。

传统的贪心算法收敛快、计算量小,但一旦该算法陷入局部收敛状态,就无法自行脱出。

因此,即使进行多次实验也不一定能找到起始点与终点之间的最佳路径。

2.2 贪心算法的改进
当USV在路径搜索过程中移动到某个不是终点的栅格,找不出满足条件的下一个栅格时,算法就无法继续进行,此类问题即局部收敛问题。

图3所示为
最常见的局部收敛问题:当USV由栅格7向目标点移动时,由贪心算法计算可得向栅格0移动是最优方案;而当USV移动到栅格0后,通过计算发现无法从集合{D1,D5,D6,D7,D8}中找出小于D0的元素,即USV到达栅格0后,找不到能进行下一步计算的最优解,路径搜索陷入停滞,局部收敛问题出现。

实际上,在利用贪心算法进行路径搜索的过程中,只要USV前进方向上存在凹型障碍区域,算法陷入局部收敛状态的可能性就很大。

解决该类问题的方案多为将此时USV所处的栅格加入禁忌表,即将图3中的栅格0由可行栅格转换为不可行栅格,以免USV再次进入该栅格。

添加禁忌表的方法虽然有效,但将可行栅格转换为不可行栅格后,路径搜索必须从原点重新开始,会加大运算量,降低算法求得最终解的速度。

针对该类局部收敛问题,本文结合贪心算法的特点引入双向搜索算法。

双向搜索算法,即在算法运行时同时进行两个方向的搜索:一个是从起始点向目标点进行正向搜索,另一个是从目标点向起始点进行反向搜索。

当两个方向的搜索得到的路径在中间交会或发生部分重叠时,搜索即可停止。

传统贪心算法的路径搜索是从起始点向目标点进行的正向搜索。

双向搜索算法在正向搜索的基础上,增加了一个从目标点向起始点的反向搜索。

搜索停止后,将正向搜索路径与反向搜索路径结合便可得出USV的最终路径规划结果。

采用该方法对随机生成的一张10×10水域模型进行路径搜索,结果见图4。

图4a为采用传统贪心算法计算的结果。

由图4a可知,当USV移动到坐标为(4,6)的栅格时,其周围不存在满足“与目标栅格之间的距离<坐标为(4,6)的栅格与目标栅格之间的距离”的可行栅格,USV的运动陷入停滞,算法被迫中断。

图4b为在传统贪心算法中引入双向搜索算法后的计算结果。

双向搜索算法的正向搜索结果与传统贪心算法的搜索结果相同,反向搜索得到的路径与正向搜索得到的路径交会于坐标为(5,4)的栅格。

将正向与反向搜索得到的路径相结合,便可得到最终路径规划结果。

路径规划主要分为静态路径规划和动态路径规划[9-10]。

当前,无人运输设备常用的路径规划算法有Dijkstra算法、贪心算法、蚁群算法
[5,7,11-12]、A*算法[11,13]、遗传算法[14-17]等。

其中贪心算法计算量小、算法简单,且其第一个解通常是最优解,十分适合应用于复杂度较陆地来说偏低的水域,因此本文利用贪心算法解决USV的全局路径规划问题。

为弥补贪心算法易陷入局部最优解的缺陷,引入蚁群算法。

通过贪心算法规划USV基础路线,通过双向搜索算法降低算法局部收敛的概率,利用蚁群算法的信息素机制使算法摆脱局部收敛状态。

1 基于栅格法的水域模型建立
本文运用栅格法对水域进行建模。

栅格法建模是采用一系列同样大小的栅格对水域进行建模的方
法。

用栅格法建立10×10的水域模型,见图1。

图1中:白色栅格为可行栅格,代表可行水域;黑色栅格为不可行栅格,代表不可行水域,即该水域有碍航物,USV无法安全通过;左下角黑色圆点表示USV当前所处位置;右上角方块表示USV需要到达的位置。

栅格坐标由栅格的序号表示,如第一行第一列的栅格坐标为(0,0),第一行第二列栅格坐标为(0,1)。

当USV处在模型中除模型边缘外的任意栅格时,其周围都应存在8个栅格,此时USV可以向周围任意一个可行栅格移动。

用栅格法建立水域模型后,USV较为复杂的工作环境被转化为简单的环境,USV的路径规划问题问题也被转化为在两个栅格点之间寻找最优路径的问题。

2 改进贪心算法
2.1 传统贪心算法
贪心算法是一种在每一步都作出当前状态下的最佳选择,以期得到的最终结果也是整体最优的算法。

比如在背包问题中,每次都选择单位价值最高的一样物品装入背包,就是一种贪心算法。

如果一个问题可以使用贪心算法解决,那么在一般情况下,贪心算法会是解决这个问题
的最好办法。

由于贪心算法具有高效性,且运算所得到的结果比较接近最优结果,因此贪心算法也常被用作辅助算法或者直接被用于解决一些简单问题。

如图2所示,USV处于栅格0中。

若USV周围的8个栅格均为可行栅格,则这8个栅格均为USV下一步可以到达的位置;若8个栅格中存在不可行栅格,
则必须
在下一步计算前除去这些栅格。

找到所有下一步可以到达的栅格后,计算栅格i与目标栅格end之间的距离:
Di=(xend-xi)2+(yend-yi)2,
i=0,1,2,…,n
式中:xend和yend分别表示栅格end的横、纵坐标;
xi和yi分别表示栅格i的横、纵坐标。

D0表示栅格0(USV所处位置)与栅格end之间的距离。

从所有可行栅格中选出距离栅格end最近的栅格,即选取满足条件min{D1,D2,…,Dn}<D0的栅格,就是USV下一步
到达的栅格。

若找不到满足这一条件的栅格,则算法陷入局部收敛状态,无法继续进行搜索。

若存在两个栅格a和b(a,b=0,1,2,…,n;a≠b)满足Da=Db,
即USV在路线选择时碰到“分岔路口”时,一般随机作出选择进行下一步计算并对该路线的总路程进行记录。

最终进行多次迭代,保留最短的路径。

传统的贪心算法收敛快、计算量小,但一旦该算法陷入局部收敛状态,就无法自行脱出。

因此,即使进行多次实验也不一定能找到起始点与终点之间的最佳路径。

2.2 贪心算法的改进
当USV在路径搜索过程中移动到某个不是终点的栅格,找不出满足条件的下一个栅格时,算法就无法继续进行,此类问题即局部收敛问题。

图3所示为
最常见的局部收敛问题:当USV由栅格7向目标点移动时,由贪心算法计算可得向栅格0移动是最优方案;而当USV移动到栅格0后,通过计算发现无法从集合{D1,D5,D6,D7,D8}中找出小于D0的元素,即USV到达栅格0后,找不到能进行下一步计算的最优解,路径搜索陷入停滞,局部收敛问题出现。

实际上,在利用贪心算法进行路径搜索的过程中,只要USV前进方向上存在凹型障碍区域,算法陷入局部收敛状态的可能性就很大。

解决该类问题的方案多为将此时USV所处的栅格加入禁忌表,即将图3中的栅格0由可行栅格转换为不可行栅格,以免USV再次进入该栅格。

添加禁忌表的方法虽然有效,但将可行栅格转换为不可行柵格后,路径搜索必须从原点重新开始,会加大运算量,降低算法求得最终解的速度。

针对该类局部收敛问题,本文结合贪心算法的特点引入双向搜索算法。

双向搜索算法,即在算法运行时同时进行两个方向的搜索:一个是从起始点向目标点进行正向搜索,另一个是从目标点向起始点进行反向搜索。

当两个方向的搜索得到的路径在中间交会或发生部分重叠时,搜索即可停止。

传统贪心算法的路径搜索是从起始点向目标点进行的正向搜索。

双向搜索算法在正向搜索的基础上,增加了一个从目标点向起始点的反向搜索。

搜索停止后,将正向搜索路径与反向搜索路径结合便可得出USV的最终路径规划结果。

采用该方法对随机生成的一张10×10水域模型进行路径搜索,结果见图4。

图4a为采用传统贪心算法计算的结果。

由图4a可知,当USV移动到坐标为(4,6)的栅格时,其周围不存在满足“与目标栅格之间的距离<坐标为(4,6)的栅格与目标栅格之间的距离”的可行栅格,USV的运动陷入停滞,算法被迫中断。

图4b为在传统贪心算法中引入双向搜索算法后的计算结果。

双向搜索算法的正向搜索结果与传统贪心算法的搜索结果相同,反向搜索得到的路径与正向搜索得到的路径交会于坐标为(5,4)的栅格。

将正向与反向搜索得到的路径相结合,便可得到最终路径规划结果。

路径规划主要分为静态路径规划和动态路径规划[9-10]。

当前,无人运输设备常用的路径规划算法有Dijkstra算法、贪心算法、蚁群算法
[5,7,11-12]、A*算法[11,13]、遗传算法[14-17]等。

其中贪心算法计算量小、算法简单,且其第一个解通常是最优解,十分适合应用于复杂度较陆地来说偏低的水域,因此本文利用贪心算法解决USV的全局路径规划问题。

为弥补贪心算法易陷入局部最优解的缺陷,引入蚁群算法。

通过贪心算法规划USV基础路线,通过双向搜索算法降低算法局部收敛的概率,利用蚁群算法的信息素机制使算法摆脱局部收敛状态。

1 基于栅格法的水域模型建立
本文运用栅格法对水域进行建模。

栅格法建模是采用一系列同样大小的栅格对水域进行建模的方
法。

用栅格法建立10×10的水域模型,见图1。

图1中:白色栅格为可行栅格,代表可行水域;黑色柵格为不可行栅格,代表不可行水域,即该水域有碍航物,USV无法安全通过;左下角黑色圆点表示USV当前所处位置;右上角方块表示USV需要到达的位置。

栅格坐标由栅格的序号表示,如第一行第一列的栅格坐标为(0,0),第一行第二列栅格坐标为(0,1)。

当USV处在模型中除模型边缘外的任意栅格时,其周围都应存在8个栅格,此时USV可以向周围任意一个可行栅格移动。

用栅格法建立水域模型后,USV较为复杂的工作环境被转化为简单的环境,USV的路径规划问题问题也被转化为在两个栅格点之间寻找最优路径的问题。

2 改进贪心算法
2.1 传统贪心算法
贪心算法是一种在每一步都作出当前状态下的最佳选择,以期得到的最终结果也是整体最优的算法。

比如在背包问题中,每次都选择单位价值最高的一样物品装入背包,就是一种贪心算法。

如果一个问题可以使用贪心算法解决,那么在一般情况下,贪心算法会是解决这个问题的最好办法。

由于贪心算法具有高效性,且运算所得到的结果比较接近最优结果,因此贪心算法也常被用作辅助算法或者直接被用于解决一些简单问题。

如图2所示,USV处于栅格0中。

若USV周围的8个栅格均为可行栅格,则这8个栅格均为USV下一步可以到达的位置;若8个栅格中存在不可行栅格,
则必须
在下一步计算前除去这些栅格。

找到所有下一步可以到达的栅格后,计算栅格i与目标栅格end之间的距离:
Di=(xend-xi)2+(yend-yi)2,
i=0,1,2,…,n
式中:xend和yend分别表示栅格end的横、纵坐标;
xi和yi分别表示栅格i的横、纵坐标。

D0表示栅格0(USV所处位置)与栅格end之间的距离。

从所有可行栅格中选出距离栅格end最近的栅格,即选取满足条件min{D1,D2,…,Dn}<D0的栅格,就是USV下一步
到达的栅格。

若找不到满足这一条件的栅格,则算法陷入局部收敛状态,无法继续进行搜索。

若存在两个栅格a和b(a,b=0,1,2,…,n;a≠b)满足Da=Db,
即USV在路线选择时碰到“分岔路口”时,一般随机作出选择进行下一步计算并对该路线的总路程进行记录。

最终进行多次迭代,保留最短的路径。

传统的贪心算法收敛快、计算量小,但一旦该算法陷入局部收敛状态,就无法自行脱出。

因此,即使进行多次实验也不一定能找到起始点与终点之间的最佳路径。

2.2 贪心算法的改进
当USV在路径搜索过程中移动到某个不是终点的栅格,找不出满足条件的下一个栅格时,算法就无法继续进行,此类问题即局部收敛问题。

图3所示为
最常见的局部收敛问题:当USV由栅格7向目标点移动时,由贪心算法计算可得向栅格0移动是最优方案;而当USV移动到栅格0后,通过计算发现无法从集合{D1,D5,D6,D7,D8}中找出小于D0的元素,即USV到达栅格0后,找不到能进行下一步计算的最优解,路径搜索陷入停滞,局部收敛问题出现。

实际上,在利用贪心算法进行路径搜索的过程中,只要USV前进方向上存在凹型障碍区域,算法陷入局部收敛状态的可能性就很大。

解决该类问题的方案多为将此时USV所处的栅格加入禁忌表,即将图3中的栅格0由可行栅格转换为不可行栅格,以免USV再次进入该栅格。

添加禁忌表的方法虽然有效,但将可行栅格转换为不可行栅格后,路径搜索必须从原点重新开始,会加大运算量,降低算法求得最终解的速度。

针对该类局部收敛问题,本文结合贪心算法的特点引入双向搜索算法。

双向搜索算法,即在算法运行时同时进行两个方向的搜索:一个是从起始点向目标点进行正向搜索,另一个是从目标点向起始点进行反向搜索。

当两个方向的搜索得到的路径在中间交会或发生部分重叠时,搜索即可停止。

传统贪心算法的路径搜索是从起始点向目标点进行的正向搜索。

双向搜索算法在正向搜索的基础上,增加了一个从目标点向起始点的反向搜索。

搜索停止后,将正向搜索路径与反向搜索路径结合便可得出USV的最终路径规划结果。

采用该方法对随机生成的一张10×10水域模型进行路径搜索,结果见图4。

图4a为采用传统贪心算法计算的结果。

由图4a可知,当USV移动到坐标为(4,6)的栅格时,其周围不存在满足“与目标栅格之间的距离<坐标为(4,6)的栅格与目标栅格之间的距离”的可行栅格,USV的运动陷入停滞,算法被迫中断。

图4b为在传统贪心算法中引入双向搜索算法后的计算结果。

双向搜索算法的正向搜索结果与传统贪心算法的搜索结果相同,反向搜索得到的路径与正向搜索得到的路径交会于坐标为(5,4)的栅格。

将正向与反向搜索得到的路径相结合,便可得到最终路径规划结果。

相关文档
最新文档