CN110348693A - 基于多核计算的多机器人快速任务调度方法 - Google Patents

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

Info

Publication number
CN110348693A
CN110348693A CN201910511419.6A CN201910511419A CN110348693A CN 110348693 A CN110348693 A CN 110348693A CN 201910511419 A CN201910511419 A CN 201910511419A CN 110348693 A CN110348693 A CN 110348693A
Authority
CN
China
Prior art keywords
node
list
value
treap
transition
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.)
Granted
Application number
CN201910511419.6A
Other languages
English (en)
Other versions
CN110348693B (zh
Inventor
袁凤连
李兴宝
黄波
裴焱栋
霍一鸣
赵春霞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing Tech University
Original Assignee
Nanjing Tech University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nanjing Tech University filed Critical Nanjing Tech University
Priority to CN201910511419.6A priority Critical patent/CN110348693B/zh
Publication of CN110348693A publication Critical patent/CN110348693A/zh
Application granted granted Critical
Publication of CN110348693B publication Critical patent/CN110348693B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/04Forecasting or optimisation specially adapted for administrative or management purposes, e.g. linear programming or "cutting stock problem"
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0631Resource planning, allocation, distributing or scheduling for enterprises or organisations
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]

Landscapes

  • Business, Economics & Management (AREA)
  • Engineering & Computer Science (AREA)
  • Human Resources & Organizations (AREA)
  • Strategic Management (AREA)
  • Economics (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Marketing (AREA)
  • Game Theory and Decision Science (AREA)
  • Development Economics (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Educational Administration (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

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

Description

基于多核计算的多机器人快速任务调度方法
技术领域
本发明属于多机器人协作系统调度技术领域,特别是一种基于多核计算的多机器人快速任务调度方法。
背景技术
多机器人协作系统是一个拥有多个机器人和多个可用资源和多个任务的任务调度系统。多机器人系统任务调度问题是指指派一组任务给若干个机器人完成,每个机器人完成任务需要完成若干个操作,每个操作都有若干个可选操作,每个可选操作完成所需的时间是固定的,每个可选操作的完成都需要若干个资源,每个资源在同一时刻最多只能被一个机器人使用,目标是找到一种任务调度方案,使得所有任务在最短时间内被完成。高效的任务调度方法可以缩短任务完成时间,极大提高系统的效率和实用性,特别是在某些应用场景如军事场景下,其具有非常重要的意义。
为了获得多机器人系统任务调度方案,传统的方法是基于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(p,t)表示库所p到变迁t的连接权重,W(t,p)表示变迁t到库所p的连接权重。
进一步地,步骤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列表插入后继结点,任一线程在插入过程中都可能需要对Treap进行旋转操作而改变Treap的拓扑结构,使得众多旋转操作之间和旋转操作与其它操作之间难以同时并行进行。因此,所有线程向open列表插入后继结点时,延迟其中的旋转操作至每轮迭代的末期,之后统一串行进行,具体为:在每一轮迭代中,每当线程向open列表插入后继结点并使得需要对某个Treap结点进行旋转操作时,暂时不进行此旋转操作,而仅将此Treap结点记录在一个列表里,等到此轮迭代的末期,所有线程都已经不再向open列表插入后继结点时,才逐一对记录下来的待旋转Treap结点进行旋转操作;
(3)由于所有线程都可能需要读写Treap结点值,不同线程的这些操作又可能会同时进行,如果不对Treap结点值施加保护机制,其可能会被众多线程修改为一个错误的值而使程序出错。因此,所有Treap结点都配置一个互斥保护锁,加锁以实现阻止其它线程再进入该Treap结点;当线程要进入一个Treap结点执行写操作时,首先排队等待此结点的互斥保护锁被释放,然后对其加锁,再对此Treap结点进行读写访问,读写访问之后离开Treap结点时,释放互斥保护锁,以保证每个Treap结点值在同一时刻至多仅被一个线程执行写操作,从而保证了其值的正确性。
进一步地,步骤5中构建支持并发的二叉平衡树数据结构表示closed列表,具体为:
由于A*算法需频繁对closed列表进行查找相同标识的操作,此类操作占据了对closed列表操作总时间的绝大部分,而二叉平衡树搜索效率极高,因此可以很好满足closed列表高效查找需求。二叉平衡树数据结构是一种任意子树的左右子树高度差绝对值不超过1的二叉查找树,其原始数据项为一个value值;支持并发的二叉平衡树数据结构构建过程如下:在原始Treap数据结构的基础上,
(1)将往closed列表里插入的所有相同标识的A*结点构成的A*结点链表作为二叉平衡树数据结构的数据项,由A*结点链表里的任一结点的标识属性代替value属性;
(2)由于所有线程都可能需要读写二叉平衡树结点值,不同线程的这些操作又可能会同时进行,如果不对二叉平衡树结点值施加保护机制,其可能会被众多线程修改为一个错误的值而使程序出错。因此,所有二叉平衡树结点都配置一个互斥保护锁,加锁以实现阻止其它线程再进入该二叉平衡树结点;当线程要进入一个二叉平衡树结点执行写操作时,首先排队等待此结点的互斥保护锁被释放,然后对其加锁,再对此二叉平衡树结点进行读写访问,读写访问之后离开二叉平衡树结点时,释放互斥保护锁,以保证每个二叉平衡树结点值在同一时刻至多仅被一个线程执行写操作,从而保证了其值的正确性。
进一步地,步骤6中并行A*搜索算法具体为:
传统的A*搜索算法中,其不断扩展open列表里的f值最小的一个结点,直至待扩展结点为目标结点或open列表没有数据为止,扩展的过程为:①将待扩展结点n放入closed列表里;②产生结点n的所有后继结点;③对每一个新产生的后继结点s,删除所有open列表和closed列表里劣于s的结点,如果open列表和closed列表里不存在优于s或与s一样优的结点,则插入s至open列表;
在传统A*搜索算法的基础上:(1)将上述扩展过程中的②、③并行进行;(2)每轮迭代扩展open列表里最小的k个结点,其中k>1;由此获得并行A*搜索算法。
进一步地,步骤7具体为:
步骤7-1、创建open列表和closed列表并初始化为空,创建popList列表和succesorList列表并初始化为空,创建需调整结点列表needAdjustList存储TreapNode指针类型数据并初始化为空,构造初始结点nstart和目标结点ngoal,将初始结点nstart放入open列表;
其中,初始结点nstart的标识M为初始标识,初始结点nstart的剩余时间向量Mr为零向量,初始结点nstart的g值和h值全为0;目标结点ngoal的标识M为目标标识,目标结点ngoal的剩余时间向量Mr为零向量,目标结点ngoal的g值和h值全为0;结点n的剩余时间向量Mr是一个维数等于|P|的数值向量,其各分量分别代表在结点n下对应库所中的托肯变为可利用托肯需要的最少时间;
步骤7-2、判断open列表是否为空,若为空,则表示不存在一条变迁发射序列使初始结点演变为目标结点,返回寻路失败,算法终止;反之执行步骤7-3;
步骤7-3、从open列表中不断弹出f值最小的结点至popList列表,直至累计至k个节点或open列表为空或待弹出的结点为目标结点且其不为首次弹出结点;将所有弹出结点放入closed列表;
其中,结点n的f值为其g值和h值之和,即:
f(n)=g(n)+h(n)
式中,g(n)为结点n代表的路径的总代价,h(n)为结点n到目标结点ngoal的最小代价路径的代价的估计值;
步骤7-4、判断首次弹出结点n0是否为为目标结点ngoal,若是,则从n0一直回溯至初始结点nstart,得到nstart至ngoal的一条变迁发射序列,执行步骤8,算法终止;否则执行步骤7-5;
步骤7-5、将popList列表中的结点平均分配给p'个线程,每个线程对于其分配到的每个结点n,根据其标识M(n)确定其所有的使能变迁,针对每一使能变迁t,计算标识M经变迁t发射后产生的新标识M’,进而创建从结点n经变迁t后得到的后继结点ns,并计算Mr(ns)、g(ns)和h(ns),将ns放入succesorList列表,所有线程处理完其分配到的结点后执行步骤7-6;
其中,
1、计算标识M经变迁t发射后产生的新标识M’,具体过程为:
变迁t∈T在标识M下使能,当且仅当:·t表示变迁t的所有输入库所的集合,在标识M下使能的变迁t的发射将产生新标识M’:
2、计算Mr(ns)的具体过程为:
(1)置Mr(ns)为Mr(n);
(2)从Mr(ns)的每个分量中减去max{Mrn(·t)},将Mr(ns)的所有小于0的分量置为0;其中,max{Mrn(·t)}表示变迁t的所有输入库所在结点n处的剩余时间的最大值;
(3)向变迁t的每个输出库所对应Mr(ns)的分量加上其对应库所的操作时间;
3、计算g(ns)的公式为:
g(ns)=g(n)+max{Mrn(·t)}
式中,max{Mrn(·t)}表示变迁t的所有输入库所在结点n处的剩余时间的最大值;
4、计算h(ns)的公式为:
h(ns)=hH(ns)。
步骤7-6、将succesorList列表中的结点平均分配给p'个线程,每个线程对于其分配到的每个结点n,在closed列表里查找与n相同标识的结点nc,即M(nc)=M(n),若存在且(g(nc),Mr(nc))<=(g(n),Mr(n)),则舍弃结点n,否则删除closed列表里所有这样的结点nc
M(nc)=M(n)&&(g(nc),Mr(nc))>(g(n),Mr(n))
在open列表里查找与n相同标识的结点no,即M(no)=M(n),若存在且(g(no),Mr(no))<=(g(n),Mr(n)),则舍弃结点n,否则删除open列表里所有这样的结点no
M(no)=M(n)&&(g(no),Mr(no))>(g(n),Mr(n))
之后将未舍弃的结点n放入open列表,将open列表中存储结点n的TreapNode结点指针放入needAdjustList列表;所有线程处理完其分配到的结点后执行步骤7-7;上述结点比较方法为数值比较方法的向量化形式,即向量v=(v1,v2,…,vn)op(w1,w2,…,wn)=w当且仅当其中op为比较操作符<,>,=,<=,>=之一;
步骤7-7、针对needAdjustList列表中的所有元素对应的结点,在open列表里执行adjust调整操作,使得open列表满足所述并发的Treap数据结构的性质;Treap中对一个TreapNode结点tn进行adjust调整操作具体为:比较tn存储的结点与其父结点存储的结点的value值,若前者小于后者,则对tn进行左旋或右旋操作;重复前述过程,直至tn存储的结点value值不小于其父结点存储的结点value值或tn变为根节点;之后执行步骤7-2。
下面结合实施例对本发明做进一步详细说明。
实施例
本实施例基于多核计算的多机器人快速任务调度方法,包括以下内容:
1)采用自顶向下方法构建的Petri网模型如图2所示。
2)根据模型Petri网生成程序输入文件如下:
输入文件1:
-1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0
-1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0
0 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 -1
0 0 -1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 -1
0 0 0 -1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 1
0 0 0 0 -1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 -1 1 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0
0 0 0 0 0 0 0 -1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 -1 0 0 0
0 0 0 0 0 0 0 0 -1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 0 0 0 -1 1 0 0 0 0 0 0 0 0 -1 0 -1 0 0 0
0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 0 0 0 0 -1 0 -1 0 0
0 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 0 0 1 0 1 0 0 -1
0 0 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 0 0 0 0 0 1 0 1 0 -1
0 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 0 0 0 0 0 0 0 -1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 0 0 0 -1 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 -1 0 1 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 0 1 0 0 0 0
输入文件2:
x 0 0 0 0 0 x 0 0 0 x 0 0 0 0 0 x 0 0 0 1 1 1 1 1 1
0 4 6 5 2 0 0 5 4 0 0 3 5 4 4 0 0 3 7 0 0 0 0 0 0 0
0 0 0 0 0 x 0 0 0 x 0 0 0 0 0 x 0 0 0 x 1 1 1 1 1 1
其中x可取任一正整数,取不同的值,得到不同的测试用例,取得越大,测例规模也越大。
3)取定一个x值,在四核计算设备环境下分别运行使用排序链表的串行A*程序、使用Treap+二叉平衡树的串行A*程序和使用Treap+二叉平衡树的并行A*程序(k=2&&p=3),记录下各程序运行时间、获得结果的质量(makespan值)和总扩展结点数,对x取值不断加大,重复进行上述操作,获得测试记录表如下表1~表3所示(取值x的测例对应测例testcasexxxx):
表1使用Treap+二叉平衡树的串行A*程序测试记录表
测试用例 运行时间(ms) 扩展结点数 makespan
testcase1111 80 157 14
testcase2222 1830 3211 23
testcase3333 20560 34012 34
testcase4444 79150 107368 43
testcase5555 326100 397491 54
testcase6666 822470 910398 64
表2使用Treap+二叉平衡树的并行A*程序测试记录表
测试用例 运行时间(ms) 扩展结点数 makespan
testcase1111 80 156 14
testcase2222 1310 2857 23
testcase3333 10600 33487 34
testcase4444 33110 104503 43
testcase5555 136440 384823 54
testcase6666 339130 880282 64
表3使用排序链表的串行A*程序测试记录表
测试用例 运行时间(ms) 扩展结点数 makespan
testcase1111 230 114 14
testcase2222 33430 3125 23
testcase3333 >1hour
testcase4444 >1hour
testcase5555 >1hour
testcase6666 >1hour
由上述三个测试记录表可对比看出,不同A*搜索算法的效率从高到低为:使用Treap+二叉平衡树的并行A*程序>使用Treap+二叉平衡树的串行A*程序>使用排序链表的串行A*程序。使用Treap+二叉平衡树的串行A*程序效率要远远高于使用排序链表的串行A*程序,而使用Treap+二叉平衡树的并行A*程序的效率大概是使用Treap+二叉平衡树的串行A*程序效率的2倍。
本发明通过在Petri网建模的基础上使用并行A*搜索算法搜索从初始结点到目标结点的一条最优变迁发射序列,很好地解决了多机器人任务最优调度问题;实践也证明,本发明具有算法并行能力强、并行效率高、路径搜索效率快、所获任务调度方案质量高等优点。

Claims (10)

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)所有二叉平衡树结点都配置一个互斥保护锁,加锁以实现阻止其它线程再进入该二叉平衡树结点;当线程要进入一个二叉平衡树结点执行写操作时,首先排队等待此结点的互斥保护锁被释放,然后对其加锁,再对此二叉平衡树结点进行读写访问,读写访问之后离开二叉平衡树结点时,释放互斥保护锁,以保证每个二叉平衡树结点值在同一时刻至多仅被一个线程执行写操作,从而保证了其值的正确性。
7.根据权利要求1所述的基于多核计算的多机器人快速任务调度方法,其特征在于,步骤6所述并行A*搜索算法具体为:
传统的A*搜索算法中,其不断扩展open列表里的f值最小的一个结点,直至待扩展结点为目标结点或open列表没有数据为止,扩展的过程为:①将待扩展结点n放入closed列表里;②产生结点n的所有后继结点;③对每一个新产生的后继结点s,删除所有open列表和closed列表里劣于s的结点,如果open列表和closed列表里不存在优于s或与s一样优的结点,则插入s至open列表;
在传统A*搜索算法的基础上:(1)将上述扩展过程中的②、③并行进行;(2)每轮迭代扩展open列表里最小的k个结点,其中k>1;由此获得并行A*搜索算法。
8.根据权利要求1或7所述的基于多核计算的多机器人快速任务调度方法,其特征在于,步骤6所述最多能并行扩展结点数k和并行计算线程数量p',两者的值设置的越大,并行A*搜索算法的并行程度越高。
9.根据权利要求1所述的基于多核计算的多机器人快速任务调度方法,其特征在于,步骤7所述运行并行A*搜索算法,搜索从初始结点到目标结点的一条变迁发射序列,若搜索到序列,则执行步骤8,反之并行A*搜索算法终止,结束任务调度过程,具体为:
步骤7-1、创建open列表和closed列表并初始化为空,创建popList列表和succesorList列表并初始化为空,创建需调整结点列表needAdjustList存储TreapNode指针类型数据并初始化为空,构造初始结点nstart和目标结点ngoal,将初始结点nstart放入open列表;
其中,初始结点nstart的标识M为初始标识,初始结点nstart的剩余时间向量Mr为零向量,初始结点nstart的g值和h值全为0;目标结点ngoal的标识M为目标标识,目标结点ngoal的剩余时间向量Mr为零向量,目标结点ngoal的g值和h值全为0;结点n的剩余时间向量Mr是一个维数等于|P|的数值向量,其各分量分别代表在结点n下对应库所中的托肯变为可利用托肯需要的最少时间;
步骤7-2、判断open列表是否为空,若为空,则表示不存在一条变迁发射序列使初始结点演变为目标结点,返回寻路失败,算法终止;反之执行步骤7-3;
步骤7-3、从open列表中不断弹出f值最小的结点至popList列表,直至累计至k个节点或open列表为空或待弹出的结点为目标结点且其不为首次弹出结点;将所有弹出结点放入closed列表;
其中,结点n的f值为其g值和h值之和,即:
f(n)=g(n)+h(n)
式中,g(n)为结点n代表的路径的总代价,h(n)为结点n到目标结点ngoal的最小代价路径的代价的估计值;
步骤7-4、判断首次弹出结点n0是否为目标结点ngoal,若是,则从n0一直回溯至初始结点nstart,获得nstart至ngoal的一条变迁发射序列,执行步骤8,算法终止;否则执行步骤7-5;
步骤7-5、将popList列表中的结点平均分配给p'个线程,每个线程对于其分配到的每个结点n,根据其标识M(n)确定其所有的使能变迁,针对每一使能变迁t,计算标识M经变迁t发射后产生的新标识M’,进而创建从结点n经变迁t后得到的后继结点ns,并计算Mr(ns)、g(ns)和h(ns),将ns放入succesorList列表,所有线程处理完其分配到的结点后执行步骤7-6;
步骤7-6、将succesorList列表中的结点平均分配给p'个线程,每个线程对于其分配到的每个结点n,在closed列表里查找与n相同标识的结点nc,即M(nc)=M(n),若存在且(g(nc),Mr(nc))<=(g(n),Mr(n)),则舍弃结点n,否则删除closed列表里所有这样的结点nc
M(nc)=M(n)&&(g(nc),Mr(nc))>(g(n),Mr(n))
在open列表里查找与n相同标识的结点no,即M(no)=M(n),若存在且(g(no),Mr(no))<=(g(n),Mr(n)),则舍弃结点n,否则删除open列表里所有这样的结点no
M(no)=M(n)&&(g(no),Mr(no))>(g(n),Mr(n))
之后将未舍弃的结点n放入open列表,将open列表中存储结点n的TreapNode结点指针放入needAdjustList列表;所有线程处理完其分配到的结点后执行步骤7-7;上述结点比较方法为数值比较方法的向量化形式,即向量v=(v1,v2,···,vn)op(w1,w2,···,wn)=w当且仅当其中op为比较操作符<,>,=,<=,>=之一;
步骤7-7、针对needAdjustList列表中的所有元素对应的结点,在open列表里执行adjust调整操作,使得open列表满足所述并发的Treap数据结构的性质;Treap中对一个TreapNode结点tn进行adjust调整操作具体为:比较tn存储的结点与其父结点存储的结点的value值,若前者小于后者,则对tn进行左旋或右旋操作;重复前述过程,直至tn存储的结点value值不小于其父结点存储的结点value值或tn变为根节点;之后执行步骤7-2。
10.根据权利要求9所述的基于多核计算的多机器人快速任务调度方法,其特征在于,步骤7-5中:
1、所述计算标识M经变迁t发射后产生的新标识M’,具体过程为:
变迁t∈T在标识M下使能,当且仅当:·t表示变迁t的所有输入库所p的集合,在标识M下使能的变迁t的发射将产生新标识M’:
2、所述计算Mr(ns)的具体过程为:
(1)置Mr(ns)为Mr(n);
(2)从Mr(ns)的每个分量中减去max{Mrn(·t)},将Mr(ns)的所有小于0的分量置为0;其中,max{Mrn(·t)}表示变迁t的所有输入库所在结点n处的剩余时间的最大值;
(3)向变迁t的每个输出库所对应Mr(ns)的分量加上其对应库所的操作时间;
3、所述计算g(ns)的公式为:
g(ns)=g(n)+max{Mrn(·t)}
式中,max{Mrn(·t)}表示变迁t的所有输入库所在结点n处的剩余时间的最大值;
4、所述计算h(ns)的公式为:
h(ns)=hH(ns)。
CN201910511419.6A 2019-06-13 2019-06-13 基于多核计算的多机器人快速任务调度方法 Expired - Fee Related CN110348693B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910511419.6A CN110348693B (zh) 2019-06-13 2019-06-13 基于多核计算的多机器人快速任务调度方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910511419.6A CN110348693B (zh) 2019-06-13 2019-06-13 基于多核计算的多机器人快速任务调度方法

Publications (2)

Publication Number Publication Date
CN110348693A true CN110348693A (zh) 2019-10-18
CN110348693B CN110348693B (zh) 2022-09-09

Family

ID=68182003

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910511419.6A Expired - Fee Related CN110348693B (zh) 2019-06-13 2019-06-13 基于多核计算的多机器人快速任务调度方法

Country Status (1)

Country Link
CN (1) CN110348693B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111190711A (zh) * 2019-12-13 2020-05-22 南京理工大学 Bdd结合启发式a*搜索的多机器人任务分配方法
CN113986508A (zh) * 2021-11-01 2022-01-28 同济大学 基于pn机模型的业务流网分解方法、系统、设备及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105652833A (zh) * 2015-12-30 2016-06-08 南京理工大学 基于双向智能搜索的制造企业车间调度优化方法
US20180046503A1 (en) * 2016-08-09 2018-02-15 International Business Machines Corporation Data-locality-aware task scheduling on hyper-converged computing infrastructures
CN107808214A (zh) * 2017-10-22 2018-03-16 南京理工大学 车间制造系统的启发式二叉决策图变量序优化表示方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105652833A (zh) * 2015-12-30 2016-06-08 南京理工大学 基于双向智能搜索的制造企业车间调度优化方法
US20180046503A1 (en) * 2016-08-09 2018-02-15 International Business Machines Corporation Data-locality-aware task scheduling on hyper-converged computing infrastructures
CN107808214A (zh) * 2017-10-22 2018-03-16 南京理工大学 车间制造系统的启发式二叉决策图变量序优化表示方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111190711A (zh) * 2019-12-13 2020-05-22 南京理工大学 Bdd结合启发式a*搜索的多机器人任务分配方法
CN111190711B (zh) * 2019-12-13 2023-06-09 南京理工大学 Bdd结合启发式a*搜索的多机器人任务分配方法
CN113986508A (zh) * 2021-11-01 2022-01-28 同济大学 基于pn机模型的业务流网分解方法、系统、设备及介质

Also Published As

Publication number Publication date
CN110348693B (zh) 2022-09-09

Similar Documents

Publication Publication Date Title
Lee et al. On model parallelization and scheduling strategies for distributed machine learning
US10846278B2 (en) Dynamic updates to a semantic database using fine-grain locking
Koliopoulos et al. A parallel distributed weka framework for big data mining using spark
CN103765381B (zh) 对b+树的并行操作
Tanase et al. The STAPL parallel container framework
CN104952032B (zh) 图的处理方法、装置以及栅格化表示及存储方法
US20180300330A1 (en) Proactive spilling of probe records in hybrid hash join
CN113449153B (zh) 索引构建方法、装置、计算机设备和存储介质
CN110348693A (zh) 基于多核计算的多机器人快速任务调度方法
US20140282594A1 (en) Distributing processing of array block tasks
CN105190537A (zh) 修改将在多个执行环境中执行的操作流
Savi et al. Liveness and boundedness analysis for Petri nets with event graph modules
Iordache et al. Efficient design of Petri-net supervisors with disjunctive specifications
CN107315801B (zh) 并行离散事件仿真系统初始化数据存储方法
Stetsenko et al. Petri-object simulation: technique and software
Lohmann et al. High-performance prototyping of decomposition methods in GAMS
CN110851178B (zh) 一种基于分布式图可达计算的过程间程序静态分析方法
CN111240988B (zh) 一种面向非等值连接负载的数据生成方法及生成系统
CN111026776B (zh) 关系型数据库中的查询方法及装置
Alpert et al. Splitting an ordering into a partition to minimize diameter
CN109388638B (zh) 用于分布式大规模并行处理数据库的方法及系统
Nepomniaschaya Associative parallel algorithms for dynamic edge update of minimum spanning trees
Dimri et al. Algorithms: Design and Analysis
Li et al. Research on Petri net system parallel subnet partitioning completeness theory and algorithm
Luconi Completely functional asynchronous computational structures

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20220909