CN105956748B - 多搜救机器人系统任务分配方法 - Google Patents
多搜救机器人系统任务分配方法 Download PDFInfo
- Publication number
- CN105956748B CN105956748B CN201610257010.2A CN201610257010A CN105956748B CN 105956748 B CN105956748 B CN 105956748B CN 201610257010 A CN201610257010 A CN 201610257010A CN 105956748 B CN105956748 B CN 105956748B
- Authority
- CN
- China
- Prior art keywords
- message
- task
- search
- communication
- rescue robot
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
- G06Q10/063—Operations research, analysis or management
- G06Q10/0631—Resource planning, allocation, distributing or scheduling for enterprises or organisations
- G06Q10/06312—Adjustment or analysis of established resource schedule, e.g. resource or task levelling, or dynamic rescheduling
Landscapes
- Business, Economics & Management (AREA)
- Human Resources & Organizations (AREA)
- Engineering & Computer Science (AREA)
- Strategic Management (AREA)
- Entrepreneurship & Innovation (AREA)
- Economics (AREA)
- Operations Research (AREA)
- Game Theory and Decision Science (AREA)
- Development Economics (AREA)
- Marketing (AREA)
- Educational Administration (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Control Of Position, Course, Altitude, Or Attitude Of Moving Bodies (AREA)
- Numerical Control (AREA)
Abstract
本发明公开了一种多搜救机器人系统任务分配方法,目的是提供一种在可通信机器人数少于任务数的情况下仍能进行任务分配的方法。技术方案是先构建一个多搜救机器人系统并初始化,各个搜救机器人都有任务分配子系统;调整搜救机器人之间的通信关系,采用通信代理策略解决中心节点机器人可通信的机器人数少于任务数的问题;多搜救机器人系统计算执行任务的综合能力,中心节点机器人计算最佳任务分配方案,得到任务分配表;根据任务分配表将任务发送给负责执行的搜救机器人。采用本发明可解决负责任务分配的搜救机器人可通信机器人数少于任务数的问题;且本发明充分考虑机器人的综合能力对完成任务的效能的影响,提高了任务分配成功率。
Description
技术领域
本发明涉及在灾后救援、战场搜救等环境中多个分布式搜救机器人的任务分配方法,特别是在通信环境恶劣的大范围动态复杂环境中,为多机器人协同完成救援任务提供的一种任务分配方法。
背景技术
在执行灾后救援、大范围战场搜救、复杂地形救援和高危环境救援等行动中使用搜救机器人代替救援人员可以提高救援效率、降低对救援人员的威胁。但是由于单一机器人的能力有限往往需要多个机器人相互配合共同完成搜救任务。为了使不同的机器人能够相互配合自主完成救援任务,需要为机器人提供任务分配方法。
在通信对象受限制的大范围动态复杂环境中,多搜救机器人系统进行任务分配需要解决如下三个问题:
(1)负责任务分配的搜救机器人能够通信的机器人数量少于需要分配的任务数量;
(2)根据搜救机器人工作能力的差异性进行任务分配,提高任务分配的成功率;
(3)减少任务分配的时间消耗。
目前现有的任务分配方法主要集中于解决问题(2)和问题(3)。任务分配方法分为集中式和分布式两大类。集中式任务分配方法如智能优化算法、基于图论的算法等,具有任务分配时间短、通信代价低的优点。但是集中式任务分配方法对中心节点的运算性能要求高,对通信环境的适应性较差。分布式任务分配方法包括基于行为的方法、基于市场机制的方法、群智能方法等,目前的基于市场机制的任务分配方法具有环境适应性好、任务分配过程中考虑机器人工作性能差异和任务分配结果接近全局最优解等优点,但是已有的分布式任务算法中没有对问题(1)进行过多的考虑。目前的任务分配算法没有考虑下述情况:负责任务分配的机器人能够通信的机器人数量少于需要分配的任务数。
发明内容
本发明要解决的技术问题是:提供一种多搜救机器人系统任务分配方法,使得负责任务分配的搜救机器人能够在可通信机器人数少于任务数的情况下、基于搜救机器人的工作能力进行任务分配。本发明的技术方案如下:
第一步:构建一个多搜救机器人系统。系统由N个搜救机器人组成(N为正整数)。搜救机器人之间以无线方式进行通信。各个搜救机器人的工作能力具有差异性,但是都有相同的任务分配子系统。
搜救机器人Rf的任务分配子系统由四部分组成,1≤f≤N,f为整数:基础数据模块、通信模块、任务综合能力计算模块和任务分配模块;
基础数据模块保存通信表、基本能力表、基本能力权重表、潜在能力表、潜在能力权重表、候选表、任务表、已参加任务分配表、冲突表和最大等待时间。
通信表用于保存可以与Rf通信的搜救机器人的通信地址。该表是一个一维表,有s行,0≤s≤N-1,s为整数,每行记录与Rf通信的搜救机器人的通信地址。
任务表保存需要分配的任务以及完成任务需要的基本能力。该表是一个二维表,有M行,表示有M个任务参加分配,M≥1。每行有K个域,K表示多搜救机器人系统具有的基本能力的数量,K≥1。表中每个元素为一个三元组(tm,ck,tcmk),其中tm表示第m个任务,ck表示第k种基本能力,tcmk取值为0或1,0表示任务tm不需要能力ck,1表示任务tm需要能力ck,,1≤m≤M,1≤k≤K。
基本能力表保存Rf的各个基本能力(完成任务必须的能力)的大小。该表是一个二维表,有M'行,M'表示多搜救机器人系统能够完成的任务类型总数,每行有K个域,分别是完成不同任务的基本能力大小。
基本能力权重表保存Rf的各个基本能力的权重。该表是一个二维表,有K行,每行有两个域,一个是基本能力名,一个是该能力的权重。
潜在能力表保存Rf的各个潜在能力(只影响任务完成效果的能力)的大小。该表是一个二维表,有M'行,每行有K'个域,分别是完成不同任务的潜在能力大小,K'表示多搜救机器人系统具有的潜在能力的数量,K'≥1。
潜在能力权重表保存Rf的各个潜在能力的权重。该表是一个二维表,有K'行,每行有两个域,一个是潜在能力名,一个是该能力的权重。
候选表保存参加任务分配的搜救机器人的通信地址。该表是一个一维表,有s"行,0≤s"≤N-1,s"为整数,每行记录参加任务分配的搜救机器人的通信地址。
已参加任务分配表记录了Rf参加的任务分配,该表是一个一维表,记录了Rf参加的任务分配的总任务名。
最大等待时间T表示搜救机器人Rf发出任务分配请求消息后等待反馈消息的时间,T一般设置为10~40秒。
通信模块保存消息表和已通信表。
消息表保存Rf收到的消息。该表是一个一维表,每行记录R1收到的消息。消息由五部分内容组成:标识、消息发送者、消息接收者、消息类型和消息内容。标识由消息来源机器人通信地址、总任务名和消息顺序依次组合而成。消息发送者记录发送消息的机器人的通信地址。消息接收者记录接收消息的机器人的通信地址。消息类型有六种取值:Request、Accept、Refuse、Taskrequirement、Taskutility和Taskallocated。Request表示消息用于请求建立通信网络;Accept表示消息发送者同意参加任务分配;Refuse表示消息发送者拒绝参加任务分配;Taskrequirement表示消息内容是任务需求描述;Taskutility表示消息内容是消息发送者执行任务的效用;Taskallocated表示消息内容是任务分配方案。消息内容是以字符串的形式记录的消息的内容。
已通信表保存向Rf发送消息的搜救机器人的通信地址。该表是一个一维表,有s”'(s”'=1,2,3…N-1)行,每行记录向Rf发送消息的搜救机器人的通信地址。
如果通信模块从操作系统收到类型为Request的消息,通信模块修改消息表、已通信表、基础数据模块的通信表。如果通信模块从操作系统收到类型为Accept的消息,通信模块修改消息表、已通信表,并根据消息的发送者修改基础数据模块的候选表和通信表。如果通信模块从操作系统收到类型为Refuse的消息,通信模块修改消息表、已通信表,并根据消息的发送者修改基础数据模块的通信表。如果通信模块从操作系统收到类型为Taskrequirement的消息,通信模块修改消息表、已通信表,并修改基础数据模块的任务表。如果通信模块从操作系统收到类型为Taskutility的消息,通信模块修改消息表、已通信表,并修改任务综合能力计算模块的任务综合能力表。如果通信模块从操作系统收到类型为Taskallocated的消息,通信模块修改消息表、已通信表,并修改任务分配模块的任务分配表。如果通信模块从任务综合能力计算模块和任务分配模块收到消息,那么通信模块先修改消息表,然后通过操作系统将收到的消息发送出去。
任务综合能力计算模块保存有任务综合能力表。
任务综合能力表保存Rf完成不同任务的综合能力。该表是一个二维表,有s”行。每行有M域,是与任务名对应的完成任务的综合能力大小。
任务综合能力计算模块根据从基础数据模块中获得的任务表、基本能力表、基本能力权重表、潜在能力表、潜在能力权重表计算Rf执行任务的综合能力,将Rf执行任务的综合能力保存在任务综合能力表中。如果Rf被分配任务,那么Rf的任务综合能力计算模块生成类型为Taskutility的消息发送给通信模块。
任务分配模块保存有任务分配表。任务分配表是一个一维表,有M行,每行记录执行任务的机器人标识。
任务分配模块根据任务综合能力计算模块的任务综合能力表计算最佳的任务分配方案,生成任务分配表,并生成标识为Taskallocated的消息,并将该消息发送给通信模块。
虽然所有的搜救机器人的任务分配子系统是完全相同的,但是在任务分配过程中,搜救机器人所承担的角色是不同的,并且搜救机器人的角色是可以发生变化的。在一次任务分配过程中,发起任务分配的机器人被称为中心节点机器人,设为R1,系统中其他机器人为Ri(2≤i≤N)。中心节点机器人R1发起任务分配向Ri发送消息类型是Request的消息,Ri接收到Request类型的消息后对消息进行处理。
第二步,多搜救机器人系统初始化:
从用户提供的配置文件读入通信表、基本能力表、基本能力权重表、潜在能力表、潜在能力权重表和最大等待时间。
第三步:调整搜救机器人之间的通信关系,采用通信代理策略来解决中心节点机器人可通信的机器人数少于任务数的问题。
3.1 R1向R1的通信表中的搜救机器人发送类型为Request消息,消息内容为总任务名(总任务名是对所有待分配任务的代表)的任务分配请求消息,并将任务分配请求消息加入R1的消息表,然后R1开始等待反馈消息并计时;
3.2在R1等待反馈消息期间,R1每过1秒判断一次等待时间是否大于T,如果大于则转到3.13,否则转3.2,仍然等待。如果R1收到从Ri来的反馈消息,则转到3.10。同时,在R1等待期间,如果Ri收到从Rj来的消息,1≤j≤N,j≠i转到3.3;
3.3 Ri遍历Ri的消息表,判断Ri的消息表中是否有与Ri收到的消息具有相同标识的消息,如果有,则转到3.2,否则将Ri收到的消息加入Ri的消息表,并将消息发送者Rj(1≤j≤N,j≠i)的通信地址加入已通信表,转3.4;
3.4 Ri向Ri的通信表中的所有搜救机器人Ri发送收到的消息;
3.5 Ri判断消息的类型,如果类型是Request,则转3.6,否则转3.2;
3.6如果Ri的已参加任务分配表为空,则转到3.7;否则转到3.9;
3.7 Ri向Rj发送类型为Accept的消息,消息的内容是Ri的通信地址,Ri将总任务名填入Ri的已参加任务分配表;
3.8 Ri将Ri的任务综合能力表清空,并转3.2;3.9Ri向Rj发送类型为Refuse的消息,消息的内容是Ri的通信地址,并转3.2;
3.10 R1遍历R1的消息表,判断R1的消息表是否有与R1收到的反馈消息具有相同标识的消息,如果有,则转到3.2;否则,将R1收到的消息加入到R1的消息表,并将消息发送者的通信地址加入R1的已通信表,转3.11;
3.11如果R1收到的反馈消息的类型是Request,则转到3.2,否则转到3.12
3.12如果R1收到的反馈消息的类型是Accept,则将同意参加任务分配的搜救机器人通信地址加入R1的候选表,转3.2;否则转3.2;
3.13 R1用R1的已通信表替换R1的通信表,清空R1的已通信表和任务综合能力表。
3.14如果R1的已参加任务分配表为空,则将R1的通信地址加入R1的候选表,将总任务名,填入R1的已参加任务分配表,转第四步;否则直接转第四步;
第四步:多搜救机器人系统计算执行任务的综合能力,并将任务综合能力表发送给R1。
4.1 R1判断任务数是否大于R1的候选表的行数,如果任务数大于R1的候选表的行数,则转4.18,否则转到4.2;
4.2 R1向R1的通信表中的所有机器人发送类型为Taskrequirement、内容为任务表和总任务名的任务能力需求消息,并将任务能力需求消息加入R1的消息表;
4.3 R1开始等待Ri的反馈消息。在R1等待期间,如果Ri收到消息,转4.7。如果R1收到Ri的反馈消息,则转4.4;
4.4 R1遍历R1的消息表,判断R1的消息表中是否有与R1收到的消息具有相同标识的消息,有则转4.3,否则R1将消息中的Ri的任务综合能力值填入R1的任务综合能力表,并将R1收到的消息加入R1的消息表;
4.5判断R1的候选表中的所有搜救机器人是否都返回了消息类型是Taskutility的消息,如果是,转4.6,否则转4.3;
4.6 R1检查R1的已参加任务分配表,如果R1的已参加任务分配表中有当前的总任务名,则转4.12,否则转第五步;
4.7 Ri遍历Ri的消息表,判断Ri收到的消息是否与Ri的消息表中的消息具有相同的标识,如果有,则转4.3,否则将Ri收到的消息加入到Ri的消息表;
4.8 Ri向Ri的通信表中所有搜救机器人发送Ri的收到的消息;
4.9 Ri判断消息的类型,如果类型是Taskrequirement,则转到4.10,否则转到4.3;
4.10 Ri根据Ri的已参加任务分配表判断Ri是否参加任务分配,如果是,则转4.12,否则转4.3;
4.11 Ri向发送Taskrequirement类型消息的发送者Rj发送类型为Taskutility的消息,消息内容是任务综合能力表,转4.3;由于R1是Taskrequirement类型消息的最初发送者,所以最终所有类型为Taskutility的消息都会发送给R1。
4.12由于R1与Ri计算综合任务能力的算法是相同的,以Rh代表R1和Ri,1≤h≤N。Rh从类型为Taskrequirement的消息中获得任务表;
4.13 Rh遍历Rh的任务表,从表中取出第m个任务,1≤m≤M;
4.14 Rh根据公式(1)和(2)计算完成第m个任务的基本能力Kmh;
其中amh=1表示第h个搜救机器人能完成第m个任务,amh=0表示不能完成第m个任务;ecmhk表示第h个搜救机器人、完成第m个任务时具有的第k种基本能力的大小,ecmhk∈[0,1];ωhk表示第h个搜救机器人的第k种基本能力的权重,ωhk∈[0,1]。
4.15 Rh根据公式(3)计算完成第m个任务的潜在能力Gmh
ω′hk'表示第h个搜救机器人第k种潜在能力的权重,ω′hk'∈[0,1];egcmhk'表示第h个搜救机器人完成第m个任务具有的第k种潜在能力的大小,egcmhk'∈[0,1]
4.16Rh根据公式(4)计算完成第m个任务的综合能力Acapmh,并将计算结果存入Rh的任务综合能力表;
Acapmh=(ω"h1*Kmh+ω"h2*Gmh)*amh (4)
其中Acapmh表示第h个机器人完成第m个任务的综合能力,ω"h1表示第h个机器人的基本能力的权重,ω"h2表示第h个机器人的潜在能力的权重,ω"h1∈[0,1],ω"h2∈[0,1]。
4.17如果Rh代表R1,则转第五步;如果Rh代表Ri转4.11。
4.18 R1终止任务分配。
第五步:R1使用匈牙利算法(参见彭静.分配问题中匈牙利算法分析[J].科技信息,vol.36,2009)计算最佳任务分配方案,算法的输入是R1的任务综合能力表,算法输出是R1的任务分配表。
第六步:R1根据R1的任务分配表将任务发送给负责执行的搜救机器人。
6.1 R1向R1的通信表中的所有机器人发送类型为Taskallocated、内容为任务分配表的消息,并将R1发送的类型为Taskallocated的消息加入R1的消息表;
6.2 R1检查R1的任务分配表,如果R1被分配了任务,则执行分配的任务,否则转6.7,同时如果Ri(2≤i≤N)收到任务分配消息,则转到6.3:
6.3 Ri遍历Ri的消息表,判断Ri的消息表中是否有与Ri收到的消息具有相同标识的消息,如果有,则转6.8,否则将Ri收到的消息加入到Ri的消息表,转6.4;
6.4 Ri向Ri的通信表中所有搜救机器人(除消息的发送者)发送Ri的收到的消息;
6.5 Ri判断Ri收到的消息的类型,如果类型是Taskallocated,则转到6.6,否则转6.7;
6.6 Ri根据Ri的已参加任务分配表判断Ri是否参加任务分配,如果Ri参加任务分配,则从Ri收到的类型为Taskallocated的消息中读出任务分配表,并执行分配的任务;
6.7 R1退出任务分配子系统。
6.8 Ri不对收到的消息进行响应。
本发明提供了一种负责任务分配的搜救机器人可通信机器人数少于任务数的、基于搜救机器人工作能力的任务分配方法。采用本发明具有以下优点:
第一:为了解决负责任务分配的搜救机器人可通信机器人数少于任务数的问题,本发明第三步采用通信代理的方法调整多搜救机器人系统的通信网络,增加了参与任务分配的机器人数;
第二:本发明第四步采用基于搜救机器人综合能力的计算方法。在任务分配过程中,充分考虑机器人的综合能力对完成任务的效能的影响,提高了任务分配成功率。
说明书附图
为了更清楚的说明本发明实施例和现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍。
图1是本发明总体结构图;
图2为本发明多搜救机器人系统任务分配方法的软件部署图;
图3为本发明总体流程图;
具体实施方式
为了使其他技术人员能够更好的理解本发明,下面对本发明进行详细介绍。
第一步:构建一个如图1所示的多搜救机器人系统。假设系统中有4个搜救机器人(N=4),分别为R1、R2、R3和R4。
第二步:多搜救机器人系统初始化:
设R1负责发起任务分配过程,最大等待时间T=20s,总任务为TN;
R1的通信表如表所示:
表1
{R2} |
R2的通信表如表所示:
表2
R1 |
R3 |
R3的通信表如表所示:
表4
R2 |
R4 |
R4的通信表如表所示:
表4
R3 |
R1的基本能力表(假设所有任务的基本能力相同)如表所示:
表5
ec<sub>1</sub> | ec<sub>2</sub> | |
t<sub>1</sub> | 0 | 0 |
t<sub>2</sub> | 0 | 0 |
t<sub>3</sub> | 0 | 0 |
R2的基本能力表(假设所有任务的基本能力相同)如表6所示:
表6
ec<sub>1</sub> | ec<sub>2</sub> | |
t<sub>1</sub> | 0 | 1 |
t<sub>2</sub> | 0 | 1 |
t<sub>3</sub> | 0 | 1 |
R3的基本能力表(假设所有任务的基本能力相同)如表7所示:
表7
ec<sub>1</sub> | ec<sub>2</sub> | |
t<sub>1</sub> | 0.2 | 0.2 |
t<sub>2</sub> | 0.2 | 0.2 |
t<sub>3</sub> | 0.2 | 0.2 |
R4的基本能力表(假设所有任务的基本能力相同)如表8所示:
表8
R1的基本能力权重表如表所示:
表9
ec<sub>1</sub> | 0.5 |
ec<sub>2</sub> | 0.5 |
R2的基本能力权重表如表所示:
表10
ec<sub>1</sub> | 0.5 |
ec<sub>2</sub> | 0.5 |
R3的基本能力权重表如表所示:
表11
ec<sub>1</sub> | 0.5 |
ec<sub>2</sub> | 0.5 |
R4的基本能力权重表如表2所示:
表12
ec<sub>1</sub> | 0.5 |
ec<sub>2</sub> | 0.5 |
R1的潜在能力表(假设所有任务的潜在能力相同)如表所示:
表13
egc<sub>1</sub> | egc<sub>2</sub> | |
t<sub>1</sub> | 1 | 1 |
t<sub>2</sub> | 1 | 1 |
t<sub>3</sub> | 1 | 1 |
R2的潜在能力表(假设所有任务的潜在能力相同)如表所示:
表14
egc<sub>1</sub> | egc<sub>2</sub> | |
t<sub>1</sub> | 1 | 1 |
t<sub>2</sub> | 1 | 1 |
t<sub>3</sub> | 1 | 1 |
R3的潜在能力表(假设所有任务的潜在能力相同)如表所示:
表15
R4的潜在能力表(假设所有任务的潜在能力相同)如表所示:
表16
egc<sub>1</sub> | egc<sub>2</sub> | |
t<sub>1</sub> | 1 | 1 |
t<sub>2</sub> | 1 | 1 |
t<sub>3</sub> | 1 | 1 |
R1的潜在能力权重表如表所示:
表17
egc<sub>1</sub> | 0.5 |
egc<sub>2</sub> | 0.5 |
R2的潜在能力权重表如表所示:
表18
egc<sub>1</sub> | 0.5 |
egc<sub>2</sub> | 0.5 |
R3的潜在能力权重表如表所示:
表19
egc<sub>1</sub> | 0.5 |
egc<sub>2</sub> | 0.5 |
R4的潜在能力权重表如表所示:
表20
egc<sub>1</sub> | 0.5 |
egc<sub>2</sub> | 0.5 |
R1的任务表如表所示:
表21
ec<sub>1</sub> | ec<sub>2</sub> | |
t<sub>1</sub> | 1 | 1 |
t<sub>2</sub> | 0 | 1 |
t<sub>3</sub> | 1 | 0 |
第三步:调整搜救机器人之间的通信关系。具体步骤如下:
3.1 R1向R2发送任务分配请求消息,消息内容为总任务名,并将该任务分配请求消息加入消息表,然后R1开始等待反馈消息并计时;
3.2在R1等待反馈消息期间,R1每过1秒判断一次等待时间是否大于T,如果大于则转到3.16,否则仍然等待。如果R1收到反馈消息,则转到3.10。同时,在R1等待期间,Ri(i=1,2,3)对收到的消息进行处理,如果Ri收到消息,转到3.3
3.3 Ri遍历消息表,判断消息表是否有与收到的消息相同的消息,如果有,则转到3.2,否则将消息加入消息表,并将消息发送者Rj(1≤j≤4,j≠i)的通信地址加入已通信表,转3.4;
3.4 Ri向通信表中机器人发送收到的消息;
3.5 Ri判断消息的类型,如果类型是Request,则转到3.6,否则转3.2;
3.6 Ri判断是否参加任务分配,如果参加任务分配,则转到3.7;否则转到3.9;
3.7 Ri向Rj发送类型为Accept的消息,消息的内容是Ri的通信地址,将总任务名TN填入已参加任务分配表;
3.8 Ri将自身的任务综合能力表清空,并转3.2;
3.9 Ri向Rj发送类型为Refuse的消息,消息的内容是Ri的通信地址,并转3.2;
3.10 R1遍历消息表,判断消息表是否有与收到的消息相同的消息,如果有,则,转到3.2;否则,将消息加入到消息表,并将R2的通信地址加入已通信表,转到3.11;
3.11如果R1收到的消息的类型是Request,则转到3.2,否则转到3.12
3.12如果R1收到的消息的类型是Accept,则将同意参加任务分配的搜救机器人通信地址加入候选表,转到3.2;否则转到3.2;
3.13 R1用已通信表替换通信表,清空已通信表和任务综合能力表;
3.14 R1判断自身是否参加任务分配,如果参加任务分配,则将自己的通信地址加入候选表,将总任务名TN填入已参加任务分配表,转到第四步;否则转到第四步;
第四步:多搜救机器人系统计算执行任务的综合能力,并将任务综合能力表发送给R1
4.1 R1判断任务数是否大于候选表的行数,如果任务数大于候选表的行数,则转4.18,否则转到4.2;
4.2 R1向R2发送类型为Taskrequirement、内容为任务表和总任务名TN的任务能力需求消息,并将该消息加入消息表;
4.3 R1开始等待Ri的反馈消息。在R1等待期间,如果Ri收到消息,那么转到4.7。如果R1收到Ri的反馈消息,则转到4.4;
4.4 R1遍历消息表,判断消息表是否有相同的消息,如果有则转到4.3,否则R1将消息中的任务综合能力表填入R1的任务综合能力表,并将消息加入消息表;
4.5判断R1的候选表中的所有机器人R2、R3和R4都返回了消息类型是Taskutility的消息,如果是,则转到4.6,否则转到4.3;
4.6如果R1参加任务分配,则转4.12,否则转到第五步;
4.7 Ri遍历消息表,判断是否收到相同的消息,如果收到过相同的消息,则转到4.3,否则将消息加入到消息表;
4.8 Ri向通信表中所有机器人发送收到的消息;
4.9 Ri判断消息的类型,如果类型是Taskrequirement,则转到4.10,否则转到4.3;
4.10 Ri根据已参加任务分配表判断是否参加任务分配,如果参加,则转到4.12,否则转到4.3;
4.11 Ri向发送Taskrequirement类型消息的发送者Rj(1≤j≤N,j ≠i)发送类型为Taskutility的消息,消息内容是任务综合能力表,转到4.3;
4.12由于R1与Ri计算综合任务能力的算法是相同的,以Rh(1≤h≤N)代表R1和Ri。Ri从类型为Taskrequirement的消息中获得任务表;
4.13 Rh遍历Rh的任务表,从表中取出第m(1≤m≤3)个任务;
4.14 Rh计算完成第m个任务的基本能力Kmh;
4.15 Rh计算完成第m个任务的潜在能力Gmh;
4.16 Rh计算完成第m个任务的综合能力Acapmh,并将计算结果存入Rh的任务综合能力表;
4.17如果Rh是R1,则转第五步,如果Rh代表Ri转4.11。
4.18 R1终止任务分配。
R1最终获得的任务综合能力表的值如表22所示
表22
t<sub>1</sub> | t<sub>2</sub> | t<sub>3</sub> | |
R1 | 0 | 0 | 0 |
R2 | 0 | 0.75 | 0 |
R3 | 0.6 | 0.55 | 0.55 |
R4 | 0 | 0 | 0.75 |
第五步:R1计算最佳任务分配方案,输入是R1的任务综合能力表,输出是R1的任务分配表,如表23所示:
表23
任务 | 执行的机器人 |
t<sub>1</sub> | R3 |
t<sub>2</sub> | R2 |
t<sub>3</sub> | R4 |
第六步:R1根据任务分配表将任务发送给负责执行的搜救机器人。
6.1 R1向R2发送类型为Taskallocated、内容为任务分配表的消息,并将该消息加入消息表;
6.2如果R1被分配了任务,则执行分配的任务,否则转到6.7,同时如果Ri收到任务分配消息,则转到6.3:
6.3 Ri遍历消息表,判断是否收到相同的消息,如果收到过相同的消息,则不处理,否则将消息加入到消息表,转到6.4;
6.4 Ri向通信表中所有机器人(除消息的发送者)发送收到的消息;
6.5 Ri判断消息的类型,如果类型是Taskallocated,则转到6.6,否则转6.8;
6.6 Ri根据已参加任务分配表判断是否参加任务分配,如果参加任务分配,则从消息中读出任务分配表,并执行分配的任务;
6.7 R1退出任务分配子系统;
6.8 Ri不对收到的消息进行响应。
Claims (4)
1.一种多搜救机器人系统任务分配方法,其特征在于包括以下步骤:
第一步:构建一个多搜救机器人系统,多搜救机器人系统由N个搜救机器人组成,N为正整数;搜救机器人之间以无线方式进行通信,各个搜救机器人有相同的任务分配子系统;
搜救机器人Rf的任务分配子系统由四部分组成,1≤f≤N,f为整数:基础数据模块、通信模块、任务综合能力计算模块和任务分配模块;
基础数据模块保存通信表、基本能力表、基本能力权重表、潜在能力表、潜在能力权重表、候选表、任务表、已参加任务分配表、冲突表和最大等待时间;
通信表用于保存可以与Rf通信的搜救机器人的通信地址,该表是一个一维表,有s行,0≤s≤N-1,s为整数,每行记录与Rf通信的搜救机器人的通信地址;
任务表保存需要分配的任务以及完成任务需要的基本能力,该表是一个二维表,有M行,表示有M个任务参加分配,M≥1;每行有K个域,K表示多搜救机器人系统具有的基本能力的数量,K≥1;表中每个元素为一个三元组(tm,ck,tcmk),其中tm表示第m个任务,ck表示第k种基本能力,tcmk取值为0或1,0表示任务tm不需要能力ck,1表示任务tm需要能力ck,1≤m≤M,1≤k≤K;
基本能力表保存Rf的各个基本能力即完成任务必须的能力的大小,该表是一个二维表,有M'行,M'表示多搜救机器人系统能够完成的任务类型总数,每行有K个域,分别是完成不同任务的基本能力大小;
基本能力权重表保存Rf的各个基本能力的权重,该表是一个二维表,有K行,每行有两个域,一个是基本能力名,一个是该能力的权重;
潜在能力表保存Rf的各个潜在能力的大小,该表是一个二维表,有M'行,每行有K'个域,分别是完成不同任务的潜在能力大小,K'表示多搜救机器人系统具有的潜在能力的数量,K'≥1;
潜在能力权重表保存Rf的各个潜在能力的权重,该表是一个二维表,有K'行,每行有两个域,一个是潜在能力名,一个是该能力的权重;
候选表保存参加任务分配的搜救机器人的通信地址,该表是一个一维表,有s"行,0≤s"≤N-1,s"为整数,每行记录参加任务分配的搜救机器人的通信地址;
已参加任务分配表记录了Rf参加的任务分配,该表是一个一维表,记录了Rf参加的任务分配的总任务名;
最大等待时间T表示搜救机器人Rf发出任务分配请求消息后等待反馈消息的时间;
通信模块保存有消息表和已通信表;
消息表保存Rf收到的消息,该表是一个一维表,每行记录Rf收到的消息;消息由五部分内容组成:标识、消息发送者、消息接收者、消息类型和消息内容;标识由消息来源机器人通信地址、总任务名和消息顺序依次组合而成;消息发送者记录发送消息的机器人的通信地址;消息接收者记录接收消息的机器人的通信地址;消息类型有六种取值:Request、Accept、Refuse、Taskrequirement、Taskutility和Taskallocated,Request表示消息用于请求建立通信网络;Accept表示消息发送者同意参加任务分配;Refuse表示消息发送者拒绝参加任务分配;Taskrequirement表示消息内容是任务需求描述;Taskutility表示消息内容是消息发送者执行任务的效用;Taskallocated表示消息内容是任务分配方案;消息内容是以字符串的形式记录的消息的内容;
已通信表保存向Rf发送消息的搜救机器人的通信地址,该表是一个一维表,有s”'行,0≤s”'≤N-1,s”'为整数,每行记录向Rf发送消息的搜救机器人的通信地址;
如果通信模块从操作系统收到类型为Request的消息,通信模块修改消息表、已通信表、基础数据模块的通信表;如果通信模块从操作系统收到类型为Accept的消息,通信模块修改消息表、已通信表,并根据消息的发送者修改基础数据模块的候选表和通信表;如果通信模块从操作系统收到类型为Refuse的消息,通信模块修改消息表、已通信表,并根据消息的发送者修改基础数据模块的通信表;如果通信模块从操作系统收到类型为Taskrequirement的消息,通信模块修改消息表、已通信表,并修改基础数据模块的任务表;如果通信模块从操作系统收到类型为Taskutility的消息,通信模块修改消息表、已通信表,并修改任务综合能力计算模块的任务综合能力表;如果通信模块从操作系统收到类型为Taskallocated的消息,通信模块修改消息表、已通信表,并修改任务分配模块的任务分配表;如果通信模块从任务综合能力计算模块和任务分配模块收到消息,那么通信模块先修改消息表,然后通过操作系统将收到的消息发送出去;
任务综合能力计算模块保存有任务综合能力表;
任务综合能力表保存Rf完成不同任务的综合能力,该表是一个二维表,有s”行,每行有M域,是与任务名对应的完成任务的综合能力大小;
任务综合能力计算模块根据从基础数据模块中获得的任务表、基本能力表、基本能力权重表、潜在能力表、潜在能力权重表计算Rf执行任务的综合能力,将Rf执行任务的综合能力保存在任务综合能力表中;如果Rf被分配任务,那么Rf的任务综合能力计算模块生成类型为Taskutility的消息发送给通信模块;
任务分配模块保存有任务分配表,任务分配表是一个一维表,有M行,每行记录执行任务的机器人标识;
任务分配模块根据任务综合能力计算模块的任务综合能力表计算最佳的任务分配方案,生成任务分配表,并生成标识为Taskallocated的消息,并将该消息发送给通信模块;
在一次任务分配过程中,发起任务分配的机器人被称为中心节点机器人,设为R1,系统中其他机器人为Ri,2≤i≤N,中心节点机器人R1发起任务分配向Ri发送消息类型是Request的消息,Ri接收到Request类型的消息后对消息进行处理;
第二步,多搜救机器人系统初始化:
从用户提供的配置文件读入通信表、基本能力表、基本能力权重表、潜在能力表、潜在能力权重表和最大等待时间;
第三步:调整搜救机器人之间的通信关系,采用通信代理策略来解决中心节点机器人可通信的机器人数少于任务数的问题:
3.1 R1向R1的通信表中的搜救机器人发送类型为Request消息,消息内容为总任务名的任务分配请求消息,并将任务分配请求消息加入R1的消息表,然后R1开始等待反馈消息并计时,所述总任务名是对所有待分配任务的代表;
3.2在R1等待反馈消息期间,R1每过1秒判断一次等待时间是否大于T,如果大于则转到3.13,否则转3.2,仍然等待;如果R1收到从Ri来的反馈消息,则转到3.10;同时,在R1等待期间,如果Ri收到从Rj来的消息,1≤j≤N,j≠i,转到3.3;
3.3 Ri遍历Ri的消息表,判断Ri的消息表中是否有与Ri收到的消息具有相同标识的消息,如果有,则转到3.2,否则将Ri收到的消息加入Ri的消息表,并将消息发送者Rj的通信地址加入已通信表,转3.4;
3.4 Ri向Ri的通信表中的所有搜救机器人Ri发送收到的消息;
3.5 Ri判断消息的类型,如果类型是Request,则转3.6,否则转3.2;
3.6如果Ri的已参加任务分配表为空,则转到3.7;否则转到3.9;
3.7 Ri向Rj发送类型为Accept的消息,消息的内容是Ri的通信地址,Ri将总任务名填入Ri的已参加任务分配表;
3.8 Ri将Ri的任务综合能力表清空,并转3.2;
3.9 Ri向Rj发送类型为Refuse的消息,消息的内容是Ri的通信地址,并转3.2;
3.10 R1遍历R1的消息表,判断R1的消息表是否有与R1收到的反馈消息具有相同标识的消息,如果有,则转到3.2;否则,将R1收到的消息加入到R1的消息表,并将消息发送者的通信地址加入R1的已通信表,转3.11;
3.11如果R1收到的反馈消息的类型是Request,则转到3.2,否则转到3.12
3.12如果R1收到的反馈消息的类型是Accept,则将同意参加任务分配的搜救机器人通信地址加入R1的候选表,转3.2;否则直接转3.2;
3.13 R1用R1的已通信表替换R1的通信表,清空R1的已通信表和任务综合能力表;
3.14如果R1的已参加任务分配表为空,则将R1的通信地址加入R1的候选表,将总任务名填入R1的已参加任务分配表,转第四步;否则直接转第四步;
第四步:多搜救机器人系统计算执行任务的综合能力,并将任务综合能力表发送给R1:
4.1 R1判断任务数是否大于R1的候选表的行数,如果任务数大于R1的候选表的行数,则转4.18,否则转到4.2;
4.2 R1向R1的通信表中的所有机器人发送类型为Taskrequirement、内容为任务表和总任务名的任务能力需求消息,并将任务能力需求消息加入R1的消息表;
4.3 R1开始等待Ri的反馈消息,在R1等待期间,如果Ri收到消息,转4.7;如果R1收到Ri的反馈消息,则转4.4;
4.4 R1遍历R1的消息表,判断R1的消息表中是否有与R1收到的消息具有相同标识的消息,有则转4.3,否则R1将消息中的Ri的任务综合能力值填入R1的任务综合能力表,并将R1收到的消息加入R1的消息表;
4.5判断R1的候选表中的所有搜救机器人是否都返回了消息类型是Taskutility的消息,如果是,转4.6,否则转4.3;
4.6 R1检查R1的已参加任务分配表,如果R1的已参加任务分配表中有当前的总任务名,则转4.12,否则转第五步;
4.7 Ri遍历Ri的消息表,判断Ri收到的消息是否与Ri的消息表中的消息具有相同的标识,如果有,则转4.3,否则将Ri收到的消息加入到Ri的消息表;
4.8 Ri向Ri的通信表中所有搜救机器人发送Ri的收到的消息;
4.9 Ri判断消息的类型,如果类型是Taskrequirement,则转到4.10,否则转到4.3;
4.10 Ri根据Ri的已参加任务分配表判断Ri是否参加任务分配,如果是,则转4.12,否则转4.3;
4.11 Ri向发送Taskrequirement类型消息的发送者Rj发送类型为Taskutility的消息,消息内容是任务综合能力表,转4.3;
4.12由于R1与Ri计算综合任务能力的算法相同,以Rh代表R1和Ri,Rh从类型为Taskrequirement的消息中获得任务表,1≤h≤N;
4.13 Rh遍历Rh的任务表,从表中取出第m个任务,1≤m≤M;
4.14 Rh根据公式(1)和(2)计算完成第m个任务的基本能力Kmh;
其中amh=1表示第h个搜救机器人能完成第m个任务,amh=0表示不能完成第m个任务;ecmhk表示第h个搜救机器人、完成第m个任务时具有的第k种基本能力的大小;ωhk表示第h个搜救机器人的第k种基本能力的权重;
4.15 Rh根据公式(3)计算完成第m个任务的潜在能力Gmh
ω'hk'表示第h个搜救机器人第k种潜在能力的权重;egcmhk'表示第h个搜救机器人完成第m个任务具有的第k种潜在能力的大小;
4.16 Rh根据公式(4)计算完成第m个任务的综合能力Acapmh,并将计算结果存入Rh的任务综合能力表;
Acapmh=(ω"h1*Kmh+ω"h2*Gmh)*amh (4)
其中Acapmh表示第h个机器人完成第m个任务的综合能力,ω"h1表示第h个机器人的基本能力的权重,ω"h2表示第h个机器人的潜在能力的权重;
4.17如果Rh代表R1,则转第五步;如果Rh代表Ri转4.11;
4.18 R1终止任务分配;
第五步:R1计算最佳任务分配方案,算法的输入是R1的任务综合能力表,算法输出是R1的任务分配表;
第六步:R1根据R1的任务分配表将任务发送给负责执行的搜救机器人:
6.1 R1向R1的通信表中的所有机器人发送类型为Taskallocated、内容为任务分配表的消息,并将R1发送的类型为Taskallocated的消息加入R1的消息表;
6.2 R1检查R1的任务分配表,如果R1被分配了任务,则执行分配的任务,否则转6.7,同时如果Ri收到任务分配消息,则转到6.3;
6.3 Ri遍历Ri的消息表,判断Ri的消息表中是否有与Ri收到的消息具有相同标识的消息,如果有,则转6.8,否则将Ri收到的消息加入到Ri的消息表,转6.4;
6.4 Ri向Ri的通信表中所有搜救机器人发送Ri的收到的消息;
6.5 Ri判断Ri收到的消息的类型,如果类型是Taskallocated,则转到6.6,否则转6.7;
6.6 Ri根据Ri的已参加任务分配表判断Ri是否参加任务分配,如果Ri参加任务分配,则从Ri收到的类型为Taskallocated的消息中读出任务分配表,并执行分配的任务;
6.7 R1退出任务分配子系统;
6.8 Ri不对收到的消息进行响应。
2.如权利要求1所述的多搜救机器人系统任务分配方法,其特征在于所述第五步R1使用匈牙利算法计算最佳任务分配方案。
3.如权利要求1所述的多搜救机器人系统任务分配方法,其特征在于所述最大等待时间T设置为10~40秒。
4.如权利要求1所述的多搜救机器人系统任务分配方法,其特征在于所述ecmhk∈[0,1],ωhk∈[0,1],ω'hk'∈[0,1],egcmhk'∈[0,1],ω"h1∈[0,1],ω"h2∈[0,1]。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610257010.2A CN105956748B (zh) | 2016-04-22 | 2016-04-22 | 多搜救机器人系统任务分配方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610257010.2A CN105956748B (zh) | 2016-04-22 | 2016-04-22 | 多搜救机器人系统任务分配方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105956748A CN105956748A (zh) | 2016-09-21 |
CN105956748B true CN105956748B (zh) | 2019-09-13 |
Family
ID=56915589
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610257010.2A Active CN105956748B (zh) | 2016-04-22 | 2016-04-22 | 多搜救机器人系统任务分配方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105956748B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109426560A (zh) * | 2017-08-28 | 2019-03-05 | 杭州海康机器人技术有限公司 | 任务分配方法、装置及计算机可读存储介质 |
CN109765909B (zh) * | 2019-03-07 | 2022-03-08 | 北京主线科技有限公司 | V2x系统应用在港口的方法 |
CN110712206B (zh) * | 2019-10-16 | 2020-12-22 | 北京洛必德科技有限公司 | 智能机器人的多任务分配方法、装置、设备及存储介质 |
CN113524200B (zh) * | 2021-09-07 | 2021-12-14 | 季华实验室 | 机械臂调度系统、方法、替换方法、装置、设备及介质 |
CN118625817B (zh) * | 2024-08-14 | 2024-10-18 | 成都信息工程大学 | 一种工业环境下的多智能体任务分配与路径规划方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104965840A (zh) * | 2014-09-26 | 2015-10-07 | 浙江大华技术股份有限公司 | 一种数据节点的随机分配方法及系统 |
CN105429858A (zh) * | 2015-12-11 | 2016-03-23 | 中国人民解放军国防科学技术大学 | 一种多机器人间实时消息传递方法 |
-
2016
- 2016-04-22 CN CN201610257010.2A patent/CN105956748B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104965840A (zh) * | 2014-09-26 | 2015-10-07 | 浙江大华技术股份有限公司 | 一种数据节点的随机分配方法及系统 |
CN105429858A (zh) * | 2015-12-11 | 2016-03-23 | 中国人民解放军国防科学技术大学 | 一种多机器人间实时消息传递方法 |
Non-Patent Citations (3)
Title |
---|
On a Class of Multi-Robot Task Allocation Problems;Marius Kloetzer 等;《IFAC Proceedings Volumes》;20120525;第45卷(第6期);第841-846页 * |
多机器人系统任务分配及编队控制研究;柳林;《中国博士学位论文全文数据库信息科技辑》;20070515(第5期);全文 * |
多机器人系统任务分配研究;周菁 等;《西北大学学报自然科学版》;20140630;第44卷(第3期);第403-410页 * |
Also Published As
Publication number | Publication date |
---|---|
CN105956748A (zh) | 2016-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105956748B (zh) | 多搜救机器人系统任务分配方法 | |
Chen et al. | When UAV swarm meets edge-cloud computing: The QoS perspective | |
CN101973031B (zh) | 云机器人系统及实现方法 | |
CN102393747A (zh) | 无人机集群的协作交互方法及无人机的可视导航系统 | |
CN107222531A (zh) | 一种容器云资源调度方法 | |
CN102185936A (zh) | 一种基于linux操作系统的DNS服务系统和方法 | |
CN103338274A (zh) | 树形泛在网络中面向路由的地址分配方法 | |
CN106714222A (zh) | 无线可充电传感网络节点充电次序调度方法 | |
CN103914556A (zh) | 大规模图数据处理方法 | |
CN103713942A (zh) | 在集群中调度运行分布式计算框架的方法和系统 | |
CN113312177B (zh) | 一种基于联邦学习的无线边缘计算系统、优化方法 | |
CN106131141B (zh) | 一种分布式集群负载均衡并行调度系统及方法 | |
CN101299770B (zh) | 一种无线传感器网络协同信息处理方法 | |
KR20060045776A (ko) | 클러스터-트리 구조로 연결된 이후에 어드레스를 할당하는지그비 네트워크 디바이스, 그 어드레스 할당 방법, 및,라우팅 방법 | |
CN101859139A (zh) | 一种分布式控制系统的数据共享实现方法及装置 | |
CN106713164A (zh) | 一种交换机端口间流量均衡系统、方法及装置 | |
CN102207980A (zh) | 一种基于xml与db的数据交换方法及该数据适配器 | |
CN106209683B (zh) | 基于数据中心广域网的数据传输方法及系统 | |
CN106775984A (zh) | 一种管理线程池的方法和装置 | |
CN104123649A (zh) | 电子票券交换系统及方法 | |
CN103152428A (zh) | 云平台上节点间进行服务通信的方法 | |
CN105763617A (zh) | 一种负载均衡方法和系统 | |
Shah | Mobile edge cloud: Opportunities and challenges | |
Parker | Task allocation for multi-agent systems in dynamic environments | |
Li et al. | MABP: an optimal resource allocation approach in data center networks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |