基于多核计算的多机器人快速任务调度方法技术

技术编号:22330961 阅读:35 留言:0更新日期:2019-10-19 12:26
本发明专利技术公开了一种基于多核计算的多机器人快速任务调度方法,步骤为:采用Petri网建模方法对多机器人系统建模;按照自定义的文件格式将Petri网模型转化为程序输入文件;求取Petri网的WOT和WRT矩阵,以实现A*搜索算法所需的启发函数;根据输入文件构造Petri网系统的初始标识、目标标识、库所操作时间向量、前置关联矩阵和后置关联矩阵;构建支持并发的Treap数据结构表示open列表和支持并发的二叉平衡树数据结构表示closed列表;设置并行A*算法的每轮迭代最多并行扩展结点数k和并行计算线程数量p;运行并行A*算法并行搜索从初始结点到目标结点的一条发射变迁序列即为任务调度方案。本发明专利技术具有算法并行能力强、并行效率高、路径搜索效率快、所获任务调度方案质量高等优点。

【技术实现步骤摘要】
基于多核计算的多机器人快速任务调度方法
本专利技术属于多机器人协作系统调度
,特别是一种基于多核计算的多机器人快速任务调度方法。
技术介绍
多机器人协作系统是一个拥有多个机器人和多个可用资源和多个任务的任务调度系统。多机器人系统任务调度问题是指指派一组任务给若干个机器人完成,每个机器人完成任务需要完成若干个操作,每个操作都有若干个可选操作,每个可选操作完成所需的时间是固定的,每个可选操作的完成都需要若干个资源,每个资源在同一时刻最多只能被一个机器人使用,目标是找到一种任务调度方案,使得所有任务在最短时间内被完成。高效的任务调度方法可以缩短任务完成时间,极大提高系统的效率和实用性,特别是在某些应用场景如军事场景下,其具有非常重要的意义。为了获得多机器人系统任务调度方案,传统的方法是基于A*搜索算法的调度优化策略,首先,其表示open列表时使用的数据结构是排序链表,表示closed列表时使用的数据结构是链表或者集合,因此当要在open列表或closed列表里查询相同标识结点时必须遍历整个表,导致时间复杂度较高,算法实现效率较低;其次,尽管A*算法是一种静态路网中求解最短路径最有效的直接搜索方法,但随着Petri网规模增大或是初始标识托肯数量的增加,其可达图结点数量往往会呈现指数级暴增,这时使用A*算法寻找最优调度方案仍然需要耗费大量时间。
技术实现思路
本专利技术的目的在于提供一种高效的、高并发度的多机器人系统并行任务调度优化方法。实现本专利技术的目的技术解决方案为:基于多核计算的多机器人快速任务调度方法,包括以下步骤:步骤1、采用Petri网建模方法对多机器人系统进行建模,获得其Petri网模型;步骤2、根据自定义的程序输入文件格式,将步骤1构建的Petri网模型转换为相应格式的输入文件;步骤3、求取Petri网的WOT矩阵和WRT矩阵,以实现A*搜索算法所需的启发函数;步骤4、读取步骤2的输入文件,构建初始标识、目标标识、库所操作时间向量、Petri网模型的前置关联矩阵和后置关联矩阵;步骤5、构建支持并发的Treap数据结构表示open列表,构建支持并发的二叉平衡树数据结构表示closed列表,open列表和closed列表分别用于存放A*搜索过程中待扩展节点和已考察节点;步骤6、自定义设置并行A*搜索算法每轮迭代最多能并行扩展结点数k和并行计算线程数量p';步骤7、运行并行A*搜索算法,并行搜索从初始结点到目标结点的一条变迁发射序列,若搜索到序列,则执行步骤8,反之并行A*搜索算法终止,结束任务调度过程;步骤8、输出变迁发射序列和此变迁序列发射所需时间makespan。本专利技术与现有技术相比,其显著优点为:1)搜索算法采用A*智能搜索算法,其本身在搜索速度上比传统的广度优先算法扩展的节点少且计算速度更快,并且在其实现中,open列表和closed列表分别采用高效的数据结构Treap和二叉平衡树来表示,与传统使用链表作为数据结构相比,前者算法时间复杂度远低于后者,效率也远高于后者;2)采用并行计算技术,相比使用串行A*算法,前者效率要高于后者约p倍,p为程序并行程度,且设计的并行A*算法并行程度较高,意味着可通过适当增加并行核数来进一步缩短算法运行时间;3)采用的并行A*算法互斥粒度小,这是每一个并行程序所追求的重要目标之一,互斥粒度越小,并行效率越高;4)采用的并行A*算法可自定义指定每轮迭代并行扩展节点数k和使用的计算线程数量p',灵活性更好。附图说明图1为本专利技术基于多核计算的多机器人快速任务调度方法的流程图。图2为本专利技术实施例中多机器人系统对应的Petri网模型示意图。具体实施方式结合图1,本专利技术基于多核计算的多机器人快速任务调度方法,包括以下步骤:步骤1、采用Petri网建模方法对多机器人系统进行建模,获得其Petri网模型;步骤2、根据自定义的程序输入文件格式,将步骤1构建的Petri网模型转换为相应格式的输入文件;步骤3、求取Petri网的WOT矩阵和WRT矩阵,以实现A*搜索算法所需的启发函数;步骤4、读取步骤2的输入文件,构建初始标识、目标标识、库所操作时间向量、Petri网模型的前置关联矩阵和后置关联矩阵;步骤5、构建支持并发的Treap数据结构表示open列表,构建支持并发的二叉平衡树数据结构表示closed列表,open列表和closed列表分别用于存放A*搜索过程中待扩展节点和已考察节点;步骤6、自定义设置并行A*搜索算法每轮迭代最多能并行扩展结点数k和并行计算线程数量p';两者的值设置的越大,并行A*搜索算法的并行程度越高;步骤7、运行并行A*搜索算法,并行搜索从初始结点到目标结点的一条变迁发射序列,若搜索到序列,则执行步骤8,反之并行A*搜索算法终止,结束任务调度过程;步骤8、输出变迁发射序列和此变迁序列发射所需时间makespan。进一步地,步骤2中输入文件包括第一输入文件、第二输入文件:第一输入文件的格式为整数矩阵形式,同一行内相邻元素以一空格分隔,行间以换行符分隔,共|P|行,每行有|T|个元素,其中P表示Petri网所有库所构成的集合,T为Petri网所有变迁构成的集合,记此矩阵为N,其第i行第j列元素Nij若大于0,表示变迁tj到库所pi的连接权重,若小于0,则其绝对值表示库所pi到变迁tj的连接权重,若等于0,则表示变迁tj到库所pi的连接权重和库所pi到变迁tj的连接权重都为0;第二输入文件的格式总共包括三行内容,第一行表示初始标识,为一系列非负整数,以空格隔开;第二行表示各库所操作时间,为一系列非负整数,以空格隔开,各库所操作时间表示托肯进入各个库所后变为可利用托肯所需的最少时间,非活动库所的操作时间恒为0;第三行表示目标标识,为一系列非负整数,以空格隔开。进一步地,步骤3中WOT矩阵定义在Petri网的活动库所上,是一个|PO|×|PR|阶矩阵,其中,PO表示Petri网所有活动库所构成的集合,PR为Petri网所有资源库所构成的集合,WOT(pi,r)为WOT矩阵中的元素,表示活动库所pi在所有资源r都能被需要资源r的操作最大限量地并发使用的情况下所需资源r的带权操作时间,其计算公式为:式中,D(pi)表示活动库所pi的操作时间,Upi(r)表示活动库所pi需要资源r的数量,M0表示初始标识;则实现A*算法的启发函数hH(S)为:式中,P为Petri网所有的库所构成的集合,P\PR为P与PR的差集,即Petri网所有的非资源库所构成的集合,WRT(pi,r)表示当库所pi有一个托肯时,此托肯到达作业结束库所至少需要资源r的带权操作时间,M(pi)表示在状态S下,标识向量M在pi处的分量,即在状态S下库所pi所持有的托肯数量。此启发函数是当前结点到目标结点的最小代价路径的代价的下界,因此其是可采纳的,即,使用此启发函数能够保证算法获得的路径(变迁发射序列)是最优的。进一步地,步骤4中前置关联矩阵L+和后置关联矩阵L-具体为:L+=(l+ij)|P|×|T|,l+ij=W(tj,pi)L-=(l-ij)|P|×|T|,l-ij=W(pi,tj)式中,1≤i≤|P|,1≤j≤|T|,P为Petri网所有库所构成的集合,T为Petri网所有变迁构成的集合,W(本文档来自技高网...

【技术保护点】
1.一种基于多核计算的多机器人快速任务调度方法,其特征在于,包括以下步骤:步骤1、采用Petri网建模方法对多机器人系统进行建模,获得其Petri网模型;步骤2、根据自定义的程序输入文件格式,将步骤1构建的Petri网模型转换为相应格式的输入文件;步骤3、求取Petri网的WOT矩阵和WRT矩阵,以实现A*搜索算法所需的启发函数;步骤4、读取步骤2的输入文件,构建初始标识、目标标识、库所操作时间向量、Petri网模型的前置关联矩阵和后置关联矩阵;步骤5、构建支持并发的Treap数据结构表示open列表,构建支持并发的二叉平衡树数据结构表示closed列表,open列表和closed列表分别用于存放A*搜索过程中待扩展节点和已考察节点;步骤6、自定义设置并行A*搜索算法每轮迭代最多能并行扩展结点数k和并行计算线程数量p';步骤7、运行并行A*搜索算法,并行搜索从初始结点到目标结点的一条变迁发射序列,若搜索到序列,则执行步骤8,反之并行A*搜索算法终止,结束任务调度过程;步骤8、输出变迁发射序列即任务调度方案和此变迁序列发射所需时间makespan。

【技术特征摘要】
1.一种基于多核计算的多机器人快速任务调度方法,其特征在于,包括以下步骤:步骤1、采用Petri网建模方法对多机器人系统进行建模,获得其Petri网模型;步骤2、根据自定义的程序输入文件格式,将步骤1构建的Petri网模型转换为相应格式的输入文件;步骤3、求取Petri网的WOT矩阵和WRT矩阵,以实现A*搜索算法所需的启发函数;步骤4、读取步骤2的输入文件,构建初始标识、目标标识、库所操作时间向量、Petri网模型的前置关联矩阵和后置关联矩阵;步骤5、构建支持并发的Treap数据结构表示open列表,构建支持并发的二叉平衡树数据结构表示closed列表,open列表和closed列表分别用于存放A*搜索过程中待扩展节点和已考察节点;步骤6、自定义设置并行A*搜索算法每轮迭代最多能并行扩展结点数k和并行计算线程数量p';步骤7、运行并行A*搜索算法,并行搜索从初始结点到目标结点的一条变迁发射序列,若搜索到序列,则执行步骤8,反之并行A*搜索算法终止,结束任务调度过程;步骤8、输出变迁发射序列即任务调度方案和此变迁序列发射所需时间makespan。2.根据权利要求1所述的基于多核计算的多机器人快速任务调度方法,其特征在于,步骤2所述输入文件包括第一输入文件、第二输入文件:第一输入文件的格式为整数矩阵形式,同一行内相邻元素以一空格分隔,行间以换行符分隔,共|P|行,每行有|T|个元素,其中P表示Petri网所有库所构成的集合,T为Petri网所有变迁构成的集合,记此矩阵为N,其第i行第j列元素Nij若大于0,表示变迁tj到库所pi的连接权重,若小于0,则其绝对值表示库所pi到变迁tj的连接权重,若等于0,则表示变迁tj到库所pi的连接权重和库所pi到变迁tj的连接权重都为0;第二输入文件的格式总共包括三行内容,第一行表示初始标识,为一系列非负整数,以空格隔开;第二行表示各库所操作时间,为一系列非负整数,以空格隔开,各库所操作时间表示托肯进入各个库所后变为可利用托肯所需的最少时间,非活动库所的操作时间恒为0;第三行表示目标标识,为一系列非负整数,以空格隔开。3.根据权利要求1或2所述的基于多核计算的多机器人快速任务调度方法,其特征在于,步骤3所述的WOT矩阵定义在Petri网的活动库所上,是一个|PO|×|PR|阶矩阵,其中,PO表示Petri网所有活动库所构成的集合,PR为Petri网所有资源库所构成的集合,WOT(pi,r)为WOT矩阵中的元素,表示活动库所pi在所有资源r都能被需要资源r的操作最大限量地并发使用的情况下所需资源r的带权操作时间,其计算公式为:式中,D(pi)表示活动库所pi的操作时间,Upi(r)表示活动库所pi需要资源r的数量,M0表示初始标识;则实现A*算法的启发函数hH(S)为:式中,P为Petri网所有的库所构成的集合,P\PR为P与PR的差集,即Petri网所有的非资源库所构成的集合,WRT(pi,r)表示当库所pi有一个托肯时,此托肯到达作业结束库所至少需要资源r的带权操作时间,M(pi)表示在状态S下,标识向量M在pi处的分量,即在状态S下库所pi所持有的托肯数量。4.根据权利要求1所述的基于多核计算的多机器人快速任务调度方法,其特征在于,步骤4中所述前置关联矩阵L+和后置关联矩阵L-具体为:L+=(l+ij)|P|×|T|,l+ij=W(tj,pi)L-=(l-ij)|P|×|T|,l-ij=W(pi,tj)式中,1≤i≤|P|,1≤j≤|T|,P为Petri网所有库所构成的集合,T为Petri网所有变迁构成的集合,W(p,t)表示库所p到变迁t的连接权重,W(t,p)表示变迁t到库所p的连接权重。5.根据权利要求1所述的基于多核计算的多机器人快速任务调度方法,其特征在于,步骤5所述的构建支持并发的Treap数据结构表示open列表,具体为:Treap数据结构的数据项原始为键值对(key,value),仅考察key,则Treap是一棵二叉查找树,仅考察value,则Treap是一个最小堆;支持并发的Treap数据结构的构建过程如下:在原始Treap数据结构的基础上,(1)将往open列表里插入的所有相同标识的A*结点构成的A*结点链表作为Treap数据结构的数据项,由A*结点链表里的任一结点的标识属性代替key属性,由A*结点链表里的f值最小结点对应的f值属性代替value属性;在Treap中根据key值查找结点时,采用二叉查找树算法;在Treap中访问树根节点即为最小value结点;(2)所有线程向open列表插入后继结点时,延迟其中的旋转操作至每轮迭代的末期,之后统一串行进行,具体为:在每一轮迭代中,每当线程向open列表插入后继结点并使得需要对某个Treap结点进行旋转操作时,暂时不进行此旋转操作,而仅将此Treap结点记录在一个列表里,等到此轮迭代的末期,所有线程都已经不再向open列表插入后继结点时,才逐一对记录下来的待旋转Treap结点进行旋转操作;(3)所有Treap结点都配置一个互斥保护锁,加锁以实现阻止其它线程再进入该Treap结点;当线程要进入一个Treap结点执行写操作时,首先排队等待此结点的互斥保护锁被释放,然后对其加锁,再对此Treap结点进行读写访问,读写访问之后离开Treap结点时,释放互斥保护锁,以保证每个Treap结点值在同一时刻至多仅被一个线程执行写操作,从而保证了其值的正确性。6.根据权利要求1或5所述的基于多核计算的多机器人快速任务调度方法,其特征在于,步骤5所述构建支持并发的二叉平衡树数据结构表示closed列表,具体为:二叉平衡树数据结构的原始数据项为一个value值;支持并发的二叉平衡树数据结构构建过程如下:在原始二叉平衡树数据结构的基础上,(1)将往closed列表里插入的所有相同标识的A*结点构成的A*结点链表作为二叉平衡树数据结构的数据项,由A*结点链表里的任一结点的标识属性代替value属性;(2)所有二叉平衡树结点都配置一个互斥保护锁,加锁以实现阻止其它线程再进入该二叉平衡树结点;当线程要进入一个二叉平衡树结点执行写操作时,首先排队等待此结点的互斥保护锁被释放,然后对其加锁,再对此二叉平衡树结点进行读写访问,读写访问之后离开二叉平衡树结点时,释放互斥保护锁,以保证每个二叉...

【专利技术属性】
技术研发人员:袁凤连李兴宝黄波裴焱栋霍一鸣赵春霞
申请(专利权)人:南京理工大学
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1