一种基于改进蚁群算法的紧耦合任务分配方法与流程

文档序号:24131266发布日期:2021-03-02 18:04阅读:95来源:国知局
一种基于改进蚁群算法的紧耦合任务分配方法与流程

[0001]
本发明属于机器人任务分配技术领域,具体涉及一种基于改进蚁群算法的紧耦合任务分配方法。


背景技术:

[0002]
进入21世纪以来,随着科学技术的快速发展,机器人可以在不同的复杂或不确定的环境中工作,并已广泛用于执行各种军事任务,包括监视、侦察、攻击和损害评估等。但是由于资源等某些限制,这使得单个机器人难以单独完成复杂的多目标大规模任务。因此,多机器人系统逐渐引起了研究者的注意。与单机器人相比,多机器人系统具有优越的分布特征,包括时间、空间、功能、资源以及信息等领域。此外,多机器人系统的绝佳优势还体现在经济性,适用性,最优性以及任务执行的可扩展性等方面。它在工业生产以及军事防御和社会服务领域具有良好的应用前景。但是几个机器人的简单叠加不仅不能实现多机器人系统的优势,而且由于它们的并行性和行为突然性等原因,几个机器人之间将会产生冲突。正如人类社会生产关系可以促进生产力的发展,合理的任务共享机制可以充分利用多机器人系统的优势并提高任务分配的有效性。因此,有必要研究系统中每个机器人的策略,应该采取什么措施,以及保证多机器人系统合作需要执行哪些任务,这些都是研究多机器人系统的基本问题,也是其任务分配问题(多机器人任务分配,mrta)。基于此问题,大量学者已经研究了相关问题的求解方法以及适用的模型。下面对本文有关的当前的研究成果进行综述分析。
[0003]
当前,多机器人研究的任务分配方法主要基于行为、市场机制、群体智能和线性规划这四个方向进行研究。目前来讲任务分配算法大多借鉴仿生学原理,即模仿社会生物的群体合作,实现机器人有效的任务分配。其经典性的研究方法包括蚁群算法和阈值法。传统阈值模型在不确定环境中应用没有不良反应,反而具有良好的动态特征。但国内对于阈值法的研究少之又少,其缺点也十分明显,应用条件太过于苛刻,在实际应用中无法处理大量复杂任务的分配,且阈值的设定方法是影响系统效率的难点。蚁群算法原本是为了解决旅行商问题才诞生的,后来因为其具有良好的仿生原理和效果,所以逐渐延伸到更多的领域,例如路径规划和任务分配,但是传统的蚁群算法存在迭代次数过多,收敛较慢等不足。
[0004]
总结现有研究成果发现,目前基于蚁群算法的机器人任务分配存在以下几个问题需要解决:
[0005]
(1)在蚁群算法中,初始解一般不能随机产生,需要蚂蚁从起点出发,经过大量蚂蚁探寻行为到达终点。往往会导致蚂蚁的初始解不具备优越性,所以会导致搜索的时间偏长。
[0006]
(2)在多机器人任务分配中,建立问题求解的合理模型较为困难,将实际问题映射到个体蚂蚁的活动中时往往会导致增加蚂蚁搜索的时间,导致在解决问题时收敛速度较慢。


技术实现要素:

[0007]
本发明的目的在于提供能够有效实现多机器人的任务分配,并且较好的避免了传统蚁群算法收敛慢、易陷入局部最优等缺点的一种基于改进蚁群算法的紧耦合任务分配方法。
[0008]
本发明的目的通过如下技术方案来实现:包括以下步骤:
[0009]
步骤1:初始化机器人与任务的各项参数,设定最大循环次数;
[0010]
获取机器人集合r={r1,r2,...,r
m
}中各机器人的能力维度和位置坐标,m为机器人的总数;t时刻机器人r
i
所具有的能力为c=<c1,c2,...c
n
>为基本能力因子,表示机器人r
i
在t时刻所拥有的能力c
k
的大小程度,表明机器人r
i
不具备能力c
k

[0011]
获取任务集合w={w1,w2,...,w
n
}中各任务所需能力维度,n为任务的总数;任务w
j
在t时刻的能力需求为对应于任务w
j
对能力c
k
的需求程度,如果任务w
j
不需要能力c
k
就可以正常执行,则
[0012]
步骤2:将n
×
l只蚂蚁均匀的放置到任务上,根据信息素随机选择机器人加入联盟解中直到该联盟解可以完成任务,根据随机搜索算法按比例筛选出每个任务对应的较优参考集;
[0013]
步骤3:获取每个任务对应的联盟参考集中联盟解的最优适应度,并与较优参考集对比;如果最优适应度大于较优参考集中联盟解的最低适应度,则将最优适应度对应的联盟解按顺序插入到较优参考集中;
[0014]
步骤4:通过随机组合的方式生成随机参考集,并根据适应度大小进行排序;将较优参考集以及随机参考集组合到一起作为每个任务的新的联盟参考集;
[0015]
步骤5:更新路径上的信息素;
[0016]
信息素更新公式为:
[0017][0018]
其中,ρ是信息素挥发系数,表示第k个蚂蚁在本次迭代中对于任务w
j
与机器人r
i
的增量步长;当第k个蚂蚁所属的联盟解g对应于任务w
j
的适应度值大于或等于较优参考集中联盟解的最小适应度值时,否则,其中,f
mj
表示较优参考集中联盟解m对应于任务w
j
的适应度值;m
g
为较优参考集中联盟解的数量;
[0019]
步骤6:如果较优参考集的前百分之五十经历多次迭代无变动或者已达到最大循环次数,则输出每个任务的较优参考集中对应适应度值最大的联盟解,完成对所有机器人的任务分配;否则,返回步骤2。
[0020]
本发明还可以包括:
[0021]
所述的步骤2中将n
×
l只蚂蚁均匀的放置到任务上,根据信息素随机选择机器人
加入联盟解中直到该联盟解可以完成任务,根据随机搜索算法按比例筛选出每个任务对应的较优参考集的具体方法为:
[0022]
步骤2.1:选择n
×
l只蚂蚁来进行随机寻优,将每一组蚂蚁分放在不同的任务上,保证每只蚂蚁均匀的分布在每个任务上,组内的蚂蚁之间共享机器人占用信息,不同组别的蚁群寻找机器人相互无影响;l为蚁群的数量,且l为整数,每只蚂蚁s从任务w
j
出发来选择适合的机器人r
i
的概率为:
[0023][0024]
其中,j
ls
为第l组内蚂蚁s下一步可选择的机器人集合;τ
ij
(t)为t时刻任务w
j
与机器人r
i
路径之间的信息素大小;d
ij
是任务w
j
到机器人r
i
的距离;α是表征信息素的重要程度的参数;β是表征距离的倒数的重要程度的参数;
[0025]
步骤2.2:通过随机排列组合方式生成所有任务的二元组联盟解集步骤2.2:通过随机排列组合方式生成所有任务的二元组联盟解集表示任务w
j
对应的二元组联盟参考集,若任务w
j
对应的二元组联盟参考集中所有二元组联盟解均无法满足任务w
j
在t时刻的能力需求时,执行步骤2.3;否则,执行步骤2.4;
[0026]
步骤2.3:更新每个任务对应的联盟参考集,获取所有任务的高元组联盟解集;
[0027]
步骤2.4:将每个任务对应的联盟参考集中可行的联盟解加入到该任务的较优参考集中;
[0028]
步骤2.5:通过随机组合的方式生成随机参考集,并根据适应度大小进行排序;将较优参考集以及随机参考集组合到一起作为每个任务的新的联盟参考集;
[0029]
步骤2.6:判断生成的联盟参考集中是否存在满足任务需求的联盟解;若满足,则输出所有任务的联盟参考集的集合cs
f
;若不满足,则返回至步骤2.4。
[0030]
所述的步骤2.3中更新每个任务对应的联盟参考集方法具体为:
[0031]
步骤2.3.1:将任务w
j
对应的二元组联盟参考集中各二元组联盟解按适应度值进行排序,对应于任务w
j
适应度值较大的二元组联盟解优先选择其他机器人组成三维联盟解,从而得到任务w
j
对应的三元组联盟参考集四元组解集以及更高元组的解集也依照此方法计算,但是会控制参考集元素数量,避免爆炸式的增长。
[0032]
联盟解g对应于任务w
j
的适应度f
gj
计算公式为:
[0033][0034]
其中,m
g
为联盟解g中机器人数量,二元组联盟解中m
g
=2;λ和δ分别是权重系数;v
gj
表示联盟解g与任务w
j
的能力匹配值,即联盟解g中每个机器人对任务w
j
的能力匹配值的总和,如果联盟解g无法完成任务w
j
,则v
gj
=0;1/f表示联盟解g中与任务w
j
需求差距最大的机器人对应该任务需求差值的倒数,当某能力分量大于任务需求分量时,该分量差值记为0,即当最小能力的机器人与任务差距越大,联盟总体与任务的匹配度就越低;
[0035]
步骤2.3.2:若任务w
j
对应的三元组联盟参考集中所有三组联盟解均无法满足任务w
j
在t时刻的能力需求则执行步骤2.3.3;否则,输出带有能满足任务w
j
在t时刻的能力需求的联盟解的联盟参考集,即三元组联盟参考集
[0036]
步骤2.3.3:将任务w
j
对应的低元组联盟解集中各低元组联盟解按适应度值进行排序,对应于任务w
j
适应度值较大的低元组联盟解优先选择其他机器人组成高元组联盟解,从而得到任务w
j
对应的高元组联盟参考集;若任务w
j
对应的高元组联盟参考集中所有联盟解均无法满足任务w
j
在t时刻的能力需求则重复执行步骤2.3.3直到得到带有能满足任务w
j
在t时刻的能力需求的联盟解的联盟参考集。
[0037]
本发明的有益效果在于:
[0038]
本发明针对现阶段蚁群算法在多机器人任务分配领域存在的问题,采用蚂蚁从任务出发寻找机器人的策略并结合随机搜索算法,为蚁群算法信息素的更新提供参考集,从而加速收敛速度并提高任务分配求解的准确性。本发明通过将随机搜索算法引入进传统蚁群算法提高了传统蚁群算法前期的收敛速度,优化了传统蚁群算法易陷入局部最优的情况,不仅有效的实现了多机器人任务分配,并且较好的避免了传统蚁群算法收敛慢、易陷入局部最优等缺点。
附图说明
[0039]
图1为本发明的总流程图。
[0040]
图2为随机搜索算法的流程图。
[0041]
图3多机器人能力参数初始化所需参数示意表。
[0042]
图4任务初始化所需参数示意表。
具体实施方式
[0043]
下面结合附图对本发明做进一步描述。
[0044]
目前蚁群算法在任务分配领域有两种方法,分别是将蚁群从机器人出发通过信息素寻找同伴组成联盟去执行任务和从任务出发去寻找机器人从而生成联盟解。本发明针对现阶段蚁群算法在多机器人任务分配领域存在的问题,采用蚂蚁从任务出发寻找机器人的策略并结合随机搜索算法,提出了一种基于改进蚁群算法的紧耦合任务分配方法,这种方法不仅有效的实现了多机器人任务分配,并且较好的避免了传统蚁群算法收敛慢、易陷入局部最优等缺点。本发明所提出的基于改进蚁群算法的紧耦合任务分配方法通过将随机搜索算法引入进传统蚁群算法主要解决两个问题:其一,提高了传统蚁群算法前期的收敛速
度;其二,优化传统蚁群算法易陷入局部最优的情况。本发明主要包括:将传统蚁群算法与随机搜索算法相结合,为蚁群算法信息素的更新提供参考集,从而加速收敛速度并提高任务分配求解的准确性。本发明的总流程图如图1,具体包括以下步骤:
[0045]
步骤1:初始化机器人与任务的各项参数,设定最大循环次数;
[0046]
获取机器人集合r={r1,r2,...,r
m
}中各机器人的能力维度和位置坐标,m为机器人的总数;t时刻机器人r
i
所具有的能力为c=<c1,c2,...c
n
>为基本能力因子,表示机器人r
i
在t时刻所拥有的能力c
k
的大小程度,表明机器人r
i
不具备能力c
k

[0047]
获取任务集合w={w1,w2,...,w
n
}中各任务所需能力维度,n为任务的总数;任务w
j
在t时刻的能力需求为对应于任务w
j
对能力c
k
的需求程度,如果任务w
j
不需要能力c
k
就可以正常执行,则
[0048]
步骤2:将n
×
l只蚂蚁均匀的放置到任务上,根据信息素随机选择机器人加入联盟解中直到该联盟解可以完成任务,根据随机搜索算法按比例筛选出每个任务对应的较优参考集;
[0049]
步骤2.1:选择n
×
l只蚂蚁来进行随机寻优,将每一组蚂蚁分放在不同的任务上,保证每只蚂蚁均匀的分布在每个任务上,组内的蚂蚁之间共享机器人占用信息,不同组别的蚁群寻找机器人相互无影响;l为蚁群的数量,且l为整数,每只蚂蚁s从任务w
j
出发来选择适合的机器人r
i
的概率为:
[0050][0051]
其中,j
ls
为第l组内蚂蚁s下一步可选择的机器人集合;τ
ij
(t)为t时刻任务w
j
与机器人r
i
路径之间的信息素大小;d
ij
是任务w
j
到机器人r
i
的距离;α是表征信息素的重要程度的参数;β是表征距离的倒数的重要程度的参数;
[0052]
步骤2.2:通过随机排列组合方式生成所有任务的二元组联盟解集步骤2.2:通过随机排列组合方式生成所有任务的二元组联盟解集表示任务w
j
对应的二元组联盟参考集,若任务w
j
对应的二元组联盟参考集中所有二元组联盟解均无法满足任务w
j
在t时刻的能力需求时,执行步骤2.3;否则,执行步骤2.4;
[0053]
步骤2.3:更新每个任务对应的联盟参考集,获取所有任务的高元组联盟解集;
[0054]
所述的更新每个任务对应的联盟参考集方法具体为:
[0055]
步骤2.3.1:将任务w
j
对应的二元组联盟参考集中各二元组联盟解按适应度值进行排序,对应于任务w
j
适应度值较大的二元组联盟解优先选择其他机器人组成三维联盟解,从而得到任务w
j
对应的三元组联盟参考集四元组解集以及更高元组的解集也依照此方法计算,但是会控制参考集元素数量,避免爆炸式的增长。
[0056]
联盟解g对应于任务w
j
的适应度f
gj
计算公式为:
[0057][0058]
其中,m
g
为联盟解g中机器人数量,二元组联盟解中m
g
=2;λ和δ分别是权重系数;v
gj
表示联盟解g与任务w
j
的能力匹配值,即联盟解g中每个机器人对任务w
j
的能力匹配值的总和,如果联盟解g无法完成任务w
j
,则v
gj
=0;1/f表示联盟解g中与任务w
j
需求差距最大的机器人对应该任务需求差值的倒数,当某能力分量大于任务需求分量时,该分量差值记为0,即当最小能力的机器人与任务差距越大,联盟总体与任务的匹配度就越低;
[0059]
步骤2.3.2:若任务w
j
对应的三元组联盟参考集中所有三组联盟解均无法满足任务w
j
在t时刻的能力需求则执行步骤2.3.3;否则,输出带有能满足任务w
j
在t时刻的能力需求的联盟解的联盟参考集,即三元组联盟参考集
[0060]
步骤2.3.3:将任务w
j
对应的低元组联盟解集中各低元组联盟解按适应度值进行排序,对应于任务w
j
适应度值较大的低元组联盟解优先选择其他机器人组成高元组联盟解,从而得到任务w
j
对应的高元组联盟参考集;若任务w
j
对应的高元组联盟参考集中所有联盟解均无法满足任务w
j
在t时刻的能力需求则重复执行步骤2.3.3直到得到带有能满足任务w
j
在t时刻的能力需求的联盟解的联盟参考集;
[0061]
步骤2.4:将每个任务对应的联盟参考集中可行的联盟解加入到该任务的较优参考集中;
[0062]
步骤2.5:通过随机组合的方式生成随机参考集,并根据适应度大小进行排序;将较优参考集以及随机参考集组合到一起作为每个任务的新的联盟参考集;
[0063]
步骤2.6:判断生成的联盟参考集中是否存在满足任务需求的联盟解;若满足,则输出所有任务的联盟参考集的集合cs
f
;若不满足,则返回至步骤2.4;
[0064]
步骤3:获取每个任务对应的联盟参考集中联盟解的最优适应度,并与较优参考集对比;如果最优适应度大于较优参考集中联盟解的最低适应度,则将最优适应度对应的联盟解按顺序插入到较优参考集中;
[0065]
步骤4:通过随机组合的方式生成随机参考集,并根据适应度大小进行排序;将较优参考集以及随机参考集组合到一起作为每个任务的新的联盟参考集;
[0066]
步骤5:更新路径上的信息素;
[0067]
信息素更新公式为:
[0068]
[0069]
其中,ρ是信息素挥发系数,表示第k个蚂蚁在本次迭代中对于任务w
j
与机器人r
i
的增量步长;当第k个蚂蚁所属的联盟解g对应于任务w
j
的适应度值大于或等于较优参考集中联盟解的最小适应度值时,否则,其中,f
mj
表示较优参考集中联盟解m对应于任务w
j
的适应度值;m
g
为较优参考集中联盟解的数量;
[0070]
步骤6:如果较优参考集的前百分之五十经历多次迭代无变动或者已达到最大循环次数,则输出每个任务的较优参考集中对应适应度值最大的联盟解,完成对所有机器人的任务分配;否则,返回步骤2。
[0071]
实施例1:
[0072]
紧耦合任务指的是需要多个机器人协作才能完成的任务,任务之间没有时序和捆绑关系,而协作就需要机器人联盟。目前在紧耦合任务分配中,最重要的是选择合适的机器人联盟运用排列组合再加上算法筛选的方式生成联盟解,并通过一定策略找出最优解。联盟解的生成主要考虑两个因素:第一是该机器人联盟是否可以成功执行任务并且和任务匹配。
[0073]
在实际研究多机器人系统时,每个机器人都是异构的,因此每个机器人对应的能力不同,所以要将机器人能力数学化的表示出来。在环境中,机器人能力的种类一定是有限的,把这些存在的能力称为基本能力,agent的能力可以由下述数学向量表示:c=<c1,c2,...c
n
>为基本能力因子,α
ij
(t)≥0表示agent在t时刻所拥有的能力大小。r={r1,r2,...,r
m
}为agent集合。由此给出以下两种定义:
[0074]
定义1agent的能力,表示t时刻agent r
i
所具有的能力,对应于agent r
i
能力c
k
的大小程度。表明agent r
i
不具备能力c
k

[0075]
对应于机器人的能力,每一个任务也有相应的能力需求,agent的能力只有满足该需求,才能成功完成这些任务。在一个环境中,任务需求能力的种类个数是有限的,把这些存在的能力称为基本能力。任务需求能力具体表示如下:设c=<c1,c2,...c
n
>为环境中基本的能力因子,β
ij
(t)≥0表示agent在t时刻任务所需要的能力大小。任务集合为w={w1,w2,...,w
n
}。
[0076]
定义2任务需求,即成功执行任务所需要的能力,表示任务w
j
在t时刻的能力需求,对应于任务w
j
对能力c
k
的需求程度,如果任务w
j
不需要能力c
k
就可以正常执行,则
[0077]
第二是联盟内的机器人是否占据了较多的重要资源从而使其他任务的执行无法获得资源。目前计算联盟解主要有群体智能以及组合优化两种方法。群体智能方法具有简单规则涌现的特点,所以算法灵活性高、分布式能力强,通信代价小,但是容易陷入到局部最优解,其典型的方法有蚁群算法、阈值法、遗传算法等。简单组合优化方法通过排列组合方式生成联盟,一般会找到符合任务需求的较优联盟解,但由于机器人联盟内的机器人数量是不确定的,所以要搜索任务对应的各种数量的机器人联盟以后,才会找到最适合的联盟。因此会有计算量较大、效率较低以及搜索范围过大的缺点。
[0078]
传统的蚁群算法多数都是从机器人出发,通过信息素大小去寻找联盟同伴,该方法首先会将m只蚂蚁随机的放到n个机器人上(一般m大于n),每只蚂蚁依次选择机器人加入联盟,并检测联盟能否满足某些任务需求;如果不满足,则继续寻找机器人加入联盟解中直到可以完成任务。在迭代完成后,则会计算所有联盟解的适应度,并根据适应度大小将机器人将机器人与机器人路径上的信息素进行更新。但是这样会造成通信灵活性差等情况,执行任务的角色只关注自己的局部信息,会造成局部最优解甚至死锁,所以本文采用的思路是将蚂蚁放在任务上作为起点,这样每个任务还需要多少剩余的能力也就有了把控,该方法会将蚂蚁均匀的放在任务上,从任务出发选择机器人加入联盟解,直到联盟解可以成功执行任务,将路线上经过的机器人记录下来。然而传统蚁群算法存在前期收敛慢以及求解准确性低等问题,并且由于蚁群之间信息不共享且都是独立自主进行行动决策,所以容易出现机器人重叠情况,即某个机器人存在于多个任务的联盟解,这样当该机器人在执行其中一个任务时,其他任务需要继续等待该机器人执行完毕,这样大大降低了多机器人系统的性能和效率。所以本文将蚁群进行分组并将传统蚁群算法与随机搜索算法结合,为蚁群算法信息素的更新提供参考集,从而加速收敛速度、提高任务分配求解的准确性并解决传统蚁群算法收敛速度慢,易陷入局部最优等缺点。
[0079]
随机搜索算法是基于整数编码求解的亚启发式算法。它首先通过排列组合方式或者其他方式产生随机初始解,之后根据初始解的适应度(适应度宏观上指匹配度)进行从大到小排序,并将一定比例优秀的解存储到较优参考集部分,其他部分的解称为随机参考集,设计随机参考集部分的目的是为了避免系统过早陷入到局部最优解中,随机搜索算法得出的参考集是不断迭代更新的,但是只更新随机参考集部分,而保留较优解,之后再根据适应度重新进行排序,再迭代重复的更新。本发明在传统蚁群算法的基础上,将随机搜索算法与传统蚁群算法相结合,用随机搜索算法来为蚁群算法提供参考集和更快的收敛速度,最终进行机器人联盟的求解,实现任务的有效分配。
[0080]
基于上述问题,为了实现本发明的目的,本发明采用如下步骤:
[0081]
步骤001.初始化机器人与任务的各项参数,规定最大循环次数。
[0082]
步骤002.将n
×
l只蚂蚁尽量均匀的放置到任务上,随后根据信息素随机选择机器人加入联盟解中直到该联盟解可以完成任务(初始信息素通过机器人与任务的距离进行初始化),同时根据随机搜索算法按比例筛选出每个任务对应的较优参考集(较优参考集比例一般设置为百分之二十)。
[0083]
步骤003.在此轮蚁群算法迭代完成后,记录任务对应联盟解的最优适应度,并与较优参考集对比,如果适应度大小在较优参考集范围内,将蚁群算法得出的任务对应较优解有序的插入至较优参考集中,从而更新较优参考集,再根据线性组合或其他随机方式生成随机参考集,再根据适应度大小重新排序,从而更新参考集。
[0084]
步骤004.根据蚁群算法得出的每个任务的最优联盟解与较优参考集的大小关系,更新路径上的信息素。
[0085]
步骤005.判断参考集是否无明显变化或者是否达到循环的最大次数,如果是,则输出最终结果,结束算法,若否,回到步骤002继续执行。
[0086]
所述步骤001具体包括如下步骤:
[0087]
步骤00101.初始化机器人的能力与任务需求的各项参数。具体包括机器人的能力
维度,位置坐标,并将机器人用整数进行编号(假设机器人为m个,则编号为1、2、3、4
……
m),再次,定义任务所需能力维度(即该任务是一个几维任务)、坐标信息并将任务进行编号(若任务数为n,则编号为t1、t2...t
n
)。
[0088]
步骤00102.规定最大循环次数,计算出每个任务对应的联盟参考集与集合元素数量。
[0089]
随机搜索算法的整个流程与求解机器人联盟有相似的过程,因此可以将其应用到联盟的求解上,把联盟解当作随机搜索算法的解。而且在能够完成任务的前提下,机器人联盟的数量越少越好,因此这也和随机搜索的算法特性一致,随机算法求解的过程就是从低元组解到高元组解。生成高元解的方式为:首先给定任务,通过随机排列组合方式生成所有的二元组解,当这些解都无法满足任务需求时,再让适应度与任务最接近的低元解联盟优先选择其他机器人组成联盟解,所述步骤002,具体包括以下步骤:
[0090]
步骤00201.对于系统中的n个任务,首先选择n
×
l,2≤l≤40只蚂蚁来进行随机寻优。因为要尽量保证每只蚂蚁均匀的分布在每个任务上,所以蚁群数量为n的整数倍。每只蚂蚁k从任务出发来选择适合的机器人j的概率为:
[0091][0092]
j
lk
为l组内蚂蚁k下一步可选择的机器人集合;τ
ij
(t)为t时刻任务i与机器人j路径之间的信息素大小;d
ij
是任务i到机器人j的距离;α是信息素的重要程度;β是距离的倒数的重要程度。
[0093]
将每一组蚂蚁分放在不同的任务上,组内的蚂蚁之间是共享机器人占用信息的,而不同组别的蚁群寻找机器人是相互无影响的,这样可以提高探索的随机性,如果所有蚂蚁信息全部共享的话,这样会降低探索的随机性,不利于找到最优解。由于采用组内蚁群信息共享且不同组别蚁群探索互不影响的策略,则既减少了联盟解之间机器人的重叠率,又提高了探索的随机性,也有效的提高任务分配效率。
[0094]
步骤00202.将蚂蚁数量分为l组,l的值首先要保证合理,过大的l值会使单次的循环时间过长,过小的l值又会使信息素的更新相对局限,即无法寻找更优解。所以当任务数量过多时,l尽量取较小值,如果任务数量少,可以取较大的l值。
[0095]
步骤00203.通过随机排列组合方式(利用随机搜索算法)生成所有的二元组解记为cs2={b
t1
,b
t2
,...,b
tn
};b
t1
={<i1,j1>,<i1,j1>,...,<i
m
,j
m
>},1≤i
m
,j
m
≤m,i
m
≠j
m
,其中m为机器人的数量,b
t1
则表示任务t1对应的解集,i1,j1代表机器人编号。当这些二元解都无法满足任务需求时,跳至步骤00204;如果满足需求,则跳至步骤00205。
[0096]
步骤00204.将对应于任务的适应度(宏观上即匹配度)最大的低元组联盟解优先选择其他机器人组成高元组联盟解。在初始产生一定数量的二元组联盟之后,系统会优先选择适应度大的联盟优先选择其他机器人组成三元组联盟,然后再通过随机组合方式生成三元随机参考集并表示为cs3,根据适应度大小排序,从而更新联盟参考集。四元组解集以及更高元组的解集也依照此方法计算,参考集元素的数量控制公式如下所示:
[0097][0098]
上述公式中,n
r
指的是任务j需要的最小机器人数,n是指系统中的可用机器人数量。随着多机器人系统中机器人数量的增加,联盟参考集数量通过该公式限制由指数型增长变成了线性增长,参考集数量得到了明显的控制。
[0099]
步骤00205.将可行的联盟解加入到较优参考集中,通过随机组合等方式生成随机参考集,并根据适应度大小进行排序,从而更新较优参考集元素集。
[0100]
步骤00206.将较优参考集以及随机参考集组合到一起作为任务t的联盟参考集记为cs
f

[0101]
步骤00207.判断是否满足结束条件,若满足,则输出最终结果cs
f
;若不满足,则跳至步骤00205。
[0102]
步骤003具体包括以下步骤
[0103]
步骤00301.当一轮蚁群算法迭代完成后记录每个任务所对应适应度最大的联盟解。联盟解适应度公式如下所示:
[0104][0105]
在上式中m为联盟机器人数量,其中λ和δ分别是权重系数,表示机器人r
i
所具有的能力向量,v
gj
表示联盟g与任务j的能力匹配值,如果联盟g无法完成任务j,则v
gj
=0。1/f表示联盟中与任务需求差距最大的机器人对应该任务需求差值的倒数,当某能力分量大于任务需求分量时,该分量差值记为0,即当最小能力的机器人与任务差距越大,联盟总体与任务的匹配度就越低。这是由于最短木板原理,当联盟内存在能力过低的机器人时,会造成能力强的机器人资源的浪费,能力发挥不充分。只有当联盟内机器人能力尽量均匀时,联盟总体对应于该任务的适应度才会大。v
ij
为机器人能力匹配公式,如下所示:
[0106][0107]
步骤00302.将步骤00301中适应度最大的联盟解与步骤002求得的较优联盟解进行对比,如果该联盟解的适应度大于较优参考集中适应度最低的那个联盟解,则将蚁群算法得出的任务对应较优解有序的插入至较优参考集中,从而更新参考集。
[0108]
步骤00303.利用线性组合或其他随机方式生成随机参考集,再根据适应度大小重新排序,从而完成参考集的最终更新。
[0109]
步骤004具体包括以下步骤:
[0110]
步骤00401.将通过步骤003得出的每个任务的最优联盟解与较优参考集通过适应度大小进行比较,并更新信息素,信息素更新公式如下:
[0111][0112]
在上述公式中,ρ是信息素挥发系数,表示第k个蚂蚁在本次迭代中对于任务i与机器人j的增量步长。蚂蚁在每一轮迭代分配完任务解后,当这个联盟解与该任务的适应度大于或者等于较优参考集中适应度最差的联盟解,则增加该联盟所有机器人路径上的信息素。信息素增量(增量步长)公式为:
[0113][0114]
在上述式中,g表示一个机器人联盟,f
g
表示通过本轮蚁群算法得出该任务所对应联盟最优解的适应度,f
t
表示较优参考集中一个元素与对应任务的适应度,因此分母表示任务i所对应的联盟较优参考集的适应度之和,m是较优参考集的数量,其中属于同一联盟解内的机器人彼此之间的路径上信息素也根据上述公式的值进行更新。
[0115]
步骤005具体包括以下步骤:
[0116]
步骤00501.判断参考集是否无明显变化或者是否达到循环的最大次数,如果是,则输出最终结果cs
f
,结束算法,若否,回到步骤002继续执行。
[0117]
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1