一种预分配结合匈牙利算法的多机器人任务分配方法与流程

文档序号:17375481发布日期:2019-04-12 23:15阅读:1206来源:国知局
一种预分配结合匈牙利算法的多机器人任务分配方法与流程

本发明属于多机器人协作控制技术领域,特别是一种预分配结合匈牙利算法的多机器人任务分配方法。



背景技术:

多机器人任务分配,即指派机器人执行任务,由于机器人的构造不同,对不同任务的完成度不一样,执行任务的花费也不一样。因此,如何合理地指派不同的机器人执行不同的任务、如何指派多个机器人完成同一个任务成为多机器人系统研究中的关键问题之一。

现有的多机器人任务分配方法大多是针对具体的应用提出来的,只能用于特定环境,比如匈牙利算法,机器人和任务数量相等且每个任务只需要一个机器人来完成,这是非常理想化的情境。如谢哲学.基于匈牙利法的引航员任务指派研究[d].2017.[1],就应用了匈牙利算法指派任务和机器人数量相等的情况。若当任务数量和机器人数量不相等,或当每个任务需要一个以上机器人来完成的时候,这种分配方式就无法使用。

现阶段实验过程中,在构建机器人与完成任务间的关系时,多数只单一考虑到机器人在完成任务过程中的时间因素或完成任务所需代价。但在实际应用时,多机器人在合作完成目标任务的过程中,仅单一以时间因素或完成代价来衡量机器人对于任务的完成度是非常片面的。



技术实现要素:

本发明所解决的技术问题在于提供一种预分配结合匈牙利算法的多机器人任务分配方法。

实现本发明目的的技术解决方案为:一种预分配结合匈牙利算法的多机器人任务分配方法,包括以下步骤:

步骤1、基于角色协作的模型对多机器人系统建模;

步骤2、建立所有机器人承担不同任务的效益值矩阵q;

步骤3、通过判断机器人是否满足分配条件优化多机器人系统;

步骤4、对所述效益值矩阵进行简化;

步骤5、根据每个任务所需机器人的数量对效益值矩阵进行变形;

步骤6、对任务进行预分配,获得初始分配矩阵t,并进一步简化效益值矩阵;

步骤7、利用匈牙利算法处理步骤6简化后的效益值矩阵进行任务分配,获得最终的分配矩阵t,完成任务分配。

本发明与现有技术相比,其显著优点为:1)本发明通过引入效益值作为衡量机器人完成任务好坏的参数,完善机器人完成任务过程中的效用评价机制,可有效体现异构机器人完成不同任务的优劣,能够同时兼顾时耗和能耗,增加效益值这样一个任务分配结果优劣的量化评估指标,提高了任务分配结果的科学性与合理性;2)本发明通过对效益值矩阵进行调整变形,实现了复杂情况下如任务数量和机器人数量不相等或当每个任务需要一个以上机器人来完成时的任务分配;3)本发明通过使用预分配,缓解了在效益矩阵复杂时运用单一匈牙利算法可能造成的时间消耗过大、甚至算法无限循环的问题,具有加快模型分析速度的优点;4)本发明通过删除与本分配方式无关的变量,简化了建模步骤,简化了模型的表示方式,获得了更简单更适合本系统的模型。

附图说明

图1是本发明预分配结合匈牙利算法的多机器人任务分配方法的流程图。

图2是本发明优化多机器人系统以及对效益值矩阵进行初次简化的流程图。

图3是本发明利用匈牙利算法处理简化后的效益值矩阵进行任务分配的流程图。

具体实施方式

结合图1,本发明一种预分配结合匈牙利算法的多机器人任务分配方法,包括以下步骤:

步骤1、基于角色协作的模型对多机器人系统建模;

步骤2、建立所有机器人承担不同任务的效益值矩阵q;

步骤3、通过判断机器人是否满足分配条件优化多机器人系统;

步骤4、对效益值矩阵进行简化;

步骤5、根据每个任务所需机器人的数量对效益值矩阵进行变形;

步骤6、对任务进行预分配,获得初始分配矩阵t,并进一步简化效益值矩阵;

步骤7、利用匈牙利算法处理步骤6简化后的效益值矩阵进行任务分配,获得最终的分配矩阵t,完成任务分配。

进一步地,步骤1中角色协作的模型具体采用e-cargo模型,根据e-cargo模型,一个多机器人系统∑可以被表示成一个九元组∑::=<c,o,a,s,r,e,g,s0,h>,其中,c是一组类的集合;o是一组对象的集合;a是一组agent的集合;s是一组服务的集合;r是一组角色的集合;e是一组环境的集合;g是一组工作组的集合;s0是协作系统的初始状态;h是一组成员的集合。

进一步地,步骤1基于e-cargo模型对多机器人系统建模,具体为:

对e-cargo模型进行简化:

∑::=<a,r,e>

式中,a为机器人集合,采用m表示机器人数量;r为任务集合,采用n表示任务数量;采用向量l表示环境e中任务范围向量,l=[l1,l2,…,ln]。

进一步地,步骤2中效益值矩阵q的维度为m×n,矩阵q中的每个效益值xij为:

xij=1-(w1×sij1+w2×sij2)

其中,xij即q[i,j]为第i个机器人完成第j个任务的效益值,sij1为第i个机器人完成第j个任务的时耗,w1为sij1对应的权值,sij2为第i个机器人完成第j个任务的能耗,w2为sij2对应的权值,w1、w2根据实际情况自由取值;其中0≤i<m,0≤j<n。

进一步地,步骤3通过判断机器人是否满足分配条件优化多机器人系统,具体为:

步骤3-1、检测机器人数量是否满足分配条件,若不满足,增加机器人数量直至满足分配条件;其中,分配条件为l[j]为完成任务j所需的机器人数量;

步骤3-2、设定n个任务中每个任务的资格阈值分别为p0、p1、…、pn-1,并检测完成每个任务的机器人数量是否满足需求条件;若不满足,调整完成每个任务的机器人数量直至满足需求条件;

其中,令ni=q[i,j]-pj,若|q[i,j]-pj|≥0,则ni=1,反之ni=0;

则需求条件为

进一步地,步骤3-2中p0、p1、…、pn-1的取值为p0=p1=…=pn-1。

进一步地,步骤4对效益值矩阵进行简化,具体为:

比较每个机器人完成每个任务的效益值与该任务的资格阈值,将小于资格阈值的效益值置为0,从而完成效益值矩阵的简化。具体算法如下:

进一步地,步骤5根据每个任务所需机器人的数量对效益值矩阵进行变形具体为:

步骤5-1、根据任务向量l中lj的值,复制该lj对应的任务所在效益值矩阵q中的列lj次,以此遍历n个任务,获得新的效益值矩阵q';

步骤5-2、判断新的效益值矩阵q'的列数p是否小于行数q,若小于,则在原有效益值矩阵q'的列项末尾上添加q-p列0,生成新的效益值矩阵q”;

步骤5-3、根据1-q”获得变形后的效益值矩阵m。具体算法如下:

进一步地,步骤6对任务进行预分配,获得初始分配矩阵t,并进一步简化效益值矩阵具体为:

设定优选界限μ,建立空的分配矩阵t,其维度为m×n,对于任意0≤a<m,0≤b<n且a为偶数或奇数,遍历效益值矩阵m的所有值:

步骤6-1、当机器人a执行任务b的效益值m[a,b]<μ时,比较m[a,b]和任意m[a,j],若m[a,b]不大于任意m[a,j],继续比较m[a,b]和任意m[i,b],若m[a,b]也不大于任意m[i,b],则将任务b分配给机器人a,令t[a,b]=1;反之继续遍历效益值矩阵m剩余的值,重复本步骤,获得初始分配矩阵t;其中,0≤j<n且j≠b,0≤i<m且i≠a;

步骤6-2、对于已分配给机器人a的任务b,将其在效益值矩阵m中对应的行与列均删除,由此获得简化后新的效益值矩阵m'。

经过步骤6预分配以及化简得到新矩阵,传入匈牙利算法进行分配的矩阵维度明显小于未经预分配的旧矩阵,有效减少了算法的运行时间,加快了模型的分析速度。具体算法如下:

进一步地,步骤7利用匈牙利算法处理步骤6简化后的效益值矩阵进行任务分配,获得最终的分配矩阵t,完成任务分配具体为:

步骤7-1、进行行、列规约,具体为针对简化后的效益值矩阵m',将其每行的每个数值减去该行中数值最小的数,每列的每个数值减去该列中数值最小的数,由此获得新的效益值矩阵i;

步骤7-2、进行试指派,寻找效益值矩阵i中所有的独立0元素,具体为:

步骤7-2-1、针对效益值矩阵i中仅含单个0元素的行或列,给0加圈,记作◎,意为独立0元素;将◎所在行和列的其他0元素记为重复执行该步骤,直到处理完所有仅含单个0元素的行或列;

步骤7-2-2、将所在行和列0元素总数最少的0元素选为独立0元素,将该独立0元素所在行和列的其他0元素记为重复执行该步骤,直到处理完所有0元素;

步骤7-3、判断独立0元素的个数和矩阵i的维度是否相等,若相等,将分配矩阵t中独立零元素对应位置的值置为1,由此更新分配矩阵t,否则执行步骤7-4;

步骤7-4、作盖0线,以最少的直线覆盖所有0元素,具体为:

①对没有独立0元素◎的行打√;

②对已打√的行中所在列打√;

③对已打√的列中所在行打√;

④重复步骤①②③,直至无要打√的行和列为止;

⑤对没有打√的行划线,对打√的列划线,得到覆盖所有0的最少直线数l';若l'与矩阵i的维度相等,则转步骤7-2重新指派;若l'小于矩阵i的维度,继续执行步骤7-5;

步骤7-5、找出未被盖0线覆盖的元素中的最小值,对未划线的行中的每个数值减去该最小值,对划线的列中的每个数值加上该最小值,重复步骤7-2。具体算法如下:

下面结合实施例对本发明作进一步详细的描述。

实施例

现有20个机器人,各机器人有能力执行通讯、定位、搬运、加工,4种任务中的一种或多种,现假定这20个机器人是异构机器人,执行各任务的能力是有差异的,根据其扮演各角色的效益值合理分配各机器人执行各任务。

任务是确定的四种,t1,t2,t3,t4,该任务需4种角色,将任务分解后,各角色所需要的机器人数量也是固定的,分别为(7,3,5,4)。

需要解决的问题:如何从数量众多的机器人中分配指派合适的机器人来承担合适的角色,来协作完成任务,使各机器人扮演角色总的效益最大化。

第一步、对表1所示的机器人任务分配系统进行建模,可知,机器人数量m=20,任务数量n=4,其任务范围向量l=[7,3,5,4]。

异构机器人执行不同任务的效益值矩阵q如下表1所示:

表1效益值矩阵q

第二步、检查满足资格阈值要求的机器人数是否满足分配条件,机器人数设定本任务资格阈值为0.2,各任务中满足资格阈值要求的机器人数分别为[15,17,19,17]均大于任务范围向量l=[7,3,5,4],满足继续分配的条件,对不满足资格阈值要求的效益值改为0,意为完全不可承担此任务。

简化后的效益值矩阵如下表2所示:

表2简化后的效益值矩阵q

第三步、对效益矩阵进行变形,变形后的新的效益值矩阵m如下表3所示:

表3变形后的效益值矩阵m

第四步、设定优选界值μ=0.1,得到预分配的结果:

t(1,14)=1t(2,20)=1t(3,8)=1t(3,1)=1t(3,18)=1t(4,19)=1

进一步简化后的效益值矩阵如下表4所示:

表4进一步简化后的效益值矩阵m'

经过第四步预分配与矩阵化简,将效益矩阵的维度由20降为14,显著减少了进入算法的数据量,同时,如直接对旧矩阵应用匈牙利算法,在匈牙利算法的化简矩阵步骤进入死循环,无法得到分配结果。因此可知,本发明采用的预分配结合匈牙利算法分配有效加快了模型的分析速度,避免了死循环无解情况。

第五步、应用匈牙利算法进行分配,获得分配矩阵t如下表5所示:

表5分配矩阵t

最终得到的分配结果如下表6所示:

表6分配结果

意为机器人r4r5r7r9r10r14r15执行任务t1;r2r3r20执行任务t2;r1r8r11r12r18执行任务t3;r13r16r17r19执行任务t4。

由上可知,本发明采用的预分配结合匈牙利算法进行的任务分配,清除了建模过程中的无关变量,有效地简化了模型表示方式。此外,由于引入预分配步骤,进入匈牙利算法的矩阵维度显著变小,既加快了模型的分析速度,又可以避免效益矩阵复杂时运用单一匈牙利算法可能造成的时间消耗过大、甚至进入无限循环的问题,比匈牙利算法更高效、更适应实际需要。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1