一种多机器人救援任务分配方法与流程

文档序号:16582295发布日期:2019-01-14 18:04阅读:181来源:国知局
一种多机器人救援任务分配方法与流程

本发明涉及机器人救援方法,尤其涉及一种用于多机器人灾后救援任务分配方法。



背景技术:

受天文事件,地壳运动,奇异事件以及其他自然和社会因素的影响,长期以来,人类经常受到各种灾难的严重危害,灾难给人类的生产和生活造成了不可逆转的破坏。人类在抵抗灾难的过程中,积累了大量的防灾和救灾经验,现有的应对灾难的方法主要有灾前预测和灾后救援,对于部分自然灾难,比如地震、海啸,以及人为造成的灾难,比如爆炸,这些都无法预测,一旦发生,只能采取灾后救援的方式。

一般地,灾后环境复杂且恶劣,救援人员深入灾区进行救援,如果发生二次灾难,势必对救援人员的生命安全造成威胁。考虑到机器人可以深入灾区,有效代替人类来完成各种复杂的救援任务,因此,越来越多的灾后救援机器人被用来代替救援人员来完成救援任务。

灾难发生后,环境地貌大都遭到破坏,出现凹凸不平的现象,从而导致灾后地貌高低不一。此外,灾难发生后,被困人员的存活时间是有限的,而且不同被困人员的存活时间也不是不一样的,存活时间是随着时间递减的。救援的主要目标是在有限的时间内,要求机器人在考虑救援环境的复杂性,以及被困人员的存活时间约束等问题的同时,尽可在最短的时间以最小的成本完成救援任务。当灾难发生后,如何合理高效的对机器人分配救援任务,是机器人救援的难题。



技术实现要素:

发明目的:本发明提供一种在最短的时间内,用最少的机器人去完成救援任务的多机器人救援任务分配方法。

技术方案:为了达到上述发明目的,本发明给出一种多机器人救援任务分配方法,包括如下步骤:

(1)将救援灾区分成多个区域;

(2)对所述的多个区域的每一区域的被困人员进行分组:计算任意两个被困人员之间的距离,得到一个距离矩阵;针对某一区域,随机选择一个被困人员(i),以其为中心,将距离矩阵中的距离与被困人员(i)之间距离小于机器人搜索半径的被困人员与被困人员(i)归为同一组;如果没有满足上述条件的被困人员,则被困人员(i)自成一组;并统计每组中的被困人员的救援序列;

(3)估算需要投入救援的机器人个数:计算所有被困人员与机器人起始点之间的直线距离,并将被困人员序号按照距离的长短从小到大进行排序,得到一个基于距离排序的整数序列,计算该整数列所需的投入救援机器人总个数;将所有被困人员按照生命期限从小到大的顺序进行排序,得到一个基于生命期限排序的整数序列,计算该整数列所需的投入救援机器人总个数;比较上述两个所投入救援的总机器人个数,取其最小值作为投入救援的机器人个数;

(4)对步骤(2)中所述的每组中的被困人员救援序列采用微粒群优化算法求解出机器人救援任务分配序列。

进一步,在步骤(1)中,根据救援灾区的地势的高低和地貌倾斜度将所述的救援灾区分成多个区域。

进一步,在步骤(2)中需要检查每一区域以及各组中有无重复分配的被困人员,如果存在重复分配的被困人员,则统计重复分配组的被困人员个数,将重复分配的被困人员保留在被困人员个数最少的组内;如果组内被困人员个数相等,则保留在被困人员最密集的那组;统计分组数g;统计每组中被困人员的个数,如果被困人员的个数大于平均值,则需要将组内多余的被困人员移除并重新分组;针对其他区域的被困人员采用上述方法,统计并更新分组个数g、每组的被困人员个数gn以及每组中的被困人员救援序列gn。

进一步,将组内多余的被困人员移除并重新分组,具体方法如下:

(21)根据每组被困人员在三维空间坐标的位置,构造一个三维空间,并将此空间分为d1*d2*d3个三维网格,其中d1为x轴方向等分的个数,d2为y轴方向上等分的个数,d3为z轴方向上等分的个数;

(22)查找每个网格中被困人员的个数,以被困人员个数最多的网格为基准,计算每个被困人员到该网格中心的距离,依次将距离最大的被困人员移出该组,直到该组中被困人员的个数等于平均值;

(23)对移出的被困人员采用步骤(2)方法进行分组,统计每组中的被困人员个数,如果依然大于平均值,进行移除和重组操作,直到满足个数要求。

5、根据权利要求1所述的一种多机器人救援任务分配方法,其特征在于:在步骤(3)中,估算需要投入救援的机器人个数的步骤如下:

(31)计算所有被困人员与机器人起始点之间的直线距离,并将被困人员序号按照距离的长短从小到大进行排序,得到一个基于距离排序的整数序列;

(32)选择步骤(31)中的所得序列的第一个被困人员,根据分组结果找出其所在的分组,采用机器人(1)对该组的所有被困人员实施救援,如果能够完成救援,则该组仅需一个机器人便能完成救援;反之,则再加一个机器人,直到能够将所有的被困人员救起,记录该组被困人员救援需要的机器人个数,记为

(33)接着将步骤(31)所得序列移除掉步骤(32)救援的被困人员,得到一个新的序列,采用步骤(32)的方法,计算新序列第一个被困人员所在组所需要的机器人个数,记为以此类推,估算出完成整个救援行动所需的机器人总个数,记为

(34)将所有被困人员按照他们生命期限从小到大的顺序进行排序,得到一个基于生命期限排序的整数序列:

(35)选择步骤(34)中第一个被困人员,根据分组结果找出其所在的分组,采用机器人(1)对整个分组去实施救援,如果能够完成救援,则该组仅需一个机器人便能完成救援;反之,则再加一个机器人,直到能够将所有的被困人员救起,记录该组被困人员救援需要的机器人个数,记为

(36)从步骤(34)中的序列中移除步骤(35)救援的被困人员,得到一个新的基于生命期限排序的序列,采用步骤(35)相同的方法,计算新序列第一个被困人员所在组所需要的机器人个数,记为以此类推,估算出完成整个救援行动所需的机器人总个数,记为

(37)比较步骤(33)与步骤(36)中所投入救援的总机器人个数取其最小值作为投入救援的机器人个数。

进一步,在步骤(4)中,根据步骤(2)和步骤(3)所确定的被困人员的分组数和机器人个数,每组中的被困人员救援序列采用微粒群算法优化出机器人救援任务分配序列,具体步骤如下:

(61)将机器人救援任务分配序列看作一个微粒,微粒群则表示多个救援任务分配序列,采用整数编码,初始化该微粒群,并对微粒一一解码,迭代次数(t)=0;

(62)将所有被困人员的平均救援时间定义为微粒的适应值,并计算出每个微粒的适应值,同时,根据适应值的大小选出个体极值和全局极值;

(63)更新微粒;

(64)计算更新后微粒的适应值,并更新微粒的个体极值和全局极值;

(65)判断是否满足算法达到设定的最大迭代次数,满足则结束;否则转步骤(62),迭代次数(t)=(t)+1。

7、根据权利要求6所述的一种多机器人救援任务分配方法,其特征在于:在步骤(61)中,所述的微粒的编码解码方法的计算步骤如下:

(611)随机初始化生成微粒,采用如下整数编码方法,设一微粒(xi),该微粒可以表示为:

其中,为前g个整数,该g个整数表示每组救援任务分配到哪个机器人来救援;为后m个整数,该m个整数表示对所有被困人员的救援顺序进行编码;

(612)对所述的前g个整数的每个整数执行取余加1操作,得到每组目标点具体的由哪个救援机器人进行救援;

(613)判断步骤(612)得到的救援分配序列中有无一个机器人救援两个或两个以上组,如果存在,则判断机器人距离两个组中任意一个目标点的距离,哪个距离近,则先救援哪个组;则如果不存在,则转步骤(614);

(614)对所述的m个整数的每个整数执行取余加1操作,解码得到一个序列,机器人救援被困人员的顺序为解码得到序列的大小顺序,解码得到的数字越小则越先得到救援;如果有解码得到相同的数字大小,则排在序列前面的先得到救援;

(615)采用相同的方法所有的分组进行操作,从而可以获取一个完整的序列,得到解码后的救援分配序列。

进一步,在步骤(64)中,对所述的全局极值和个体极值更新步骤如下:

(641)引入一个评价指标fr,该指标表示为救援个数,其公式为:

式中,dj(j-1)表示某一机器人救援序列中第(j-1)与第(j)个目标点之间的距离,其中(j)=0表示机器人的起始点位置;vr表示无人机的飞行速度,表示无人机从第(j-1)到第(j)个目标点所需要的时间,表示机器人从起始点到第(j)个目标点一共需要的时间;△oj表示第(j)个目标点的初始生命强度;

(642)给出两个判定标准,类等于,正大于,其定义为:设某一微粒的适应值为(fi),如果另外一个微粒的适应值(fj)在[fi-f,fi+f]范围内,那么这两个微粒的适应值类等于;当另一个微粒的适应值满足(fj>fi+f)时,(fj)正大于(fi),其中,f小于1;

(643)如果当前微粒的适应值正大于个体极值,则个体极值更新为当前微粒;如果当前微粒的适应值类等于个体极值,且当前微粒的评价指标(fr)值大于个体极值的评价指标(fr),则当前微粒更新为个体极值;其余情况下微粒个体极值保持不变;

(644)如果个体极值的适应值正大于全局极值,则全局极值更新为个体微粒;如果个体微粒的适应值类等于全局极值,且当前微粒的评价指标(fr)值大于个体极值的评价指标(fr),则当前微粒更新为全体极值;其余情况下微粒全体极值保持不变

有益效果:通过本发明的技术方案,可在最短的时间内完成了多目标点的救援任务。考虑灾后环境地貌的复杂性,根据高度和倾斜度将地貌进行划分;然后根据被困人员的位置信息,将在机器人搜索半径内的被困人员分为一组,如此,分在同一组中的被困人员在短时间便可以得到救援,提高了机器人的搜索效率;采用微粒群优算法进行数据优化,保证了多个机器人在救援的时候,不会发生一个被困人员被多个机器人重复救援的情况,避免了冲突的发生,更重要的,可以使机器人在尽可能短的时间内完成救援任务。

附图说明

图1为本发明的一灾区地的平面图;

图2为根据灾区的地势的高低将灾区进行分区;

图3为根据灾区的地面的倾斜度将灾区进行分区;

图4为被困人员分组的示意图;

图5为对被困人员分组进行移除的示意图。

具体实施方式

下面结合具体附图和实例对本发明技术方案进一步说明。

图1给出一所需救援的一灾区,灾区的被困人员共13人,并分布在灾区的不同位置。本发明将被困的13名被困人员用数字1-13进行标识。考虑到灾区存在地势的高低不平,机器人在不同地貌之间实施救援,势必会降低救援的效率。首先,根据灾区的地势的高低和灾区的地面倾斜度将灾区分成多个区域,因机器人的救援灾区是一个三维空间,在对灾区进行分区时,灾区的地势的主要考虑三维空间的高度信息,也即z轴范围,假设机器人可以活动的高度范围为hr,以高度h对机器人工作空间的高度进行均分,其中一个h称为一个高度等级,且h≤hr。

地貌分区主要根据两点:1)地势的高低;2)地面的倾斜度进行划分。机器人的救援环境是一个三维空间,在进行地貌分区的时候,针对1)地势的高低,主要考虑三维空间的高度信息,也即z轴范围,如图2所示,根据具体救援环境的高度和机器人的搜救范围,同时保证可以平分z轴,确定整个救援环境的高度等级h,如果救援环境在z轴可以分为q个h,则表明该环境有q个高度等级。采用上述方法,将图1所示环境根据平分成了6个高度等级;然后针对上述不同的高度等级,考虑某一高度等级h范围内,根据2)地貌的倾斜度,进一步对地貌分区,由于草地,灌木丛,丘陵等的倾斜度不同,本发明利用这一特点,将地貌划分成多个不同的区域。如图3所示,将图1所示的某一高度等级上,根据倾斜度将其分成了5个不同的地貌。由此,采用同样的方法对其他高度等级进行划分,整个灾区分区的总数为所有高度等级所分区域的个数之和。

其次,为了提高救援机器人的救援效率,针对上述方法所得所有分区,对每个分区的被困人员进行分组,具体分组方法为:

步骤:2.1:计算两个被困人员i与j之间的距离dij(i,j=1,2,…,m,且i≠j),并保存起来,得到一个距离矩阵d;

步骤2.2:任选一个分区,随机选择一个被困人员i,以其为中心,将距离矩阵d中满足dij≤r(r为机器人的搜索半径)的被困人员j与被困人员i归为同一组;如果没有满足上述条件的被困人员,则自成一组,如图4所示。

步骤2.3:对于其他分区中的被困人员,采用与步骤2.2相同的方法,直至所有的被困人员都得到分配。

步骤2.4:检查所有分区以及各组中有无重复分配的被困人员,如果存在重复分配的被困人员,则统计重复分配组的被困人员个数,将重复分配的被困人员保留在被困人员个数最少的组内;如果组内被困人员个数相等,则保留在被困人员最密集的那组。统计分组数g,每组的被困人员个数gn以及每组中的被困人员救援序列gn(其中g为一个整数,gn为一个1*g的矩阵,gn为一g*max(gn)的矩阵)。

步骤2.5:统计每组中被困人员的个数,如果个数大于平均值,则需要将组内多余的被困人员移除并重新分组,假设第u个分组的被困人员个数gnu大于平均值,具体方法如下:

步骤2.5.1:假设对于根据每组被困人员在三维空间坐标的位置,构造一个三维空间,并将此空间分为d1*d2*d3个三维网格,其中d1为x轴方向上划分的个数,xmax,xmin分别为被困人员位置在x轴的最大值和最小值,d2为y轴方向上划分的个数,ymax,ymin分别为被困人员位置在y轴的最大值和最小值,d3为z轴方向上划分的个数,zmax,zmin分别为被困人员位置在z轴的最大值和最小值,如图5所示;

步骤2.5.2:查找每个网格中被困人员的个数,以被困人员个数最多的网格为基准,计算每个被困人员到该网格中心的距离,如图5所示,依次将距离最大的被困人员移出该组,直到该组中被困人员的个数等于平均值。

步骤2.5.3:对移出的被困人员采用步骤2.1-2.4方法进行分组,统计每组中的被困人员个数,如果依然大于平均值,那么按照步骤2.5.1,2.5.2的方法进行移出和重组操作,直到满足个数要求。

步骤2.6:针对其他区域的被困人员采用步骤2.5方法,统计并更新分组个数g,每组的被困人员个数gn以及每组中的被困人员救援序列gn。

为了更好的说明被困人员分组方法,对图4中的13个被困人员进行分组。首先,随机选择一个被困人员,比如被困人员2,以其为中心,在机器人的搜索半径内存在着被困人员3,被困人员6,被困人员8,被困人员11。故上述5个目标点便分为同一组中;接着,随机选择一个被困人员,比如1,以其为中心,在机器人的搜索半径内没有被困人员,那么被困人员1,则自成一组;此外,从图4可以看出,虚线圆与其右上方实线圆有重叠的区域,且被困人员8和11被重复分配两次,根据步骤2.4中方法,虚线圆中有被困人员3个,实线圆中有被困人员5个,那么重复分配的被困人员8和11被分配到虚线圆所在的组内。

进一步,如果将被困人员全部分组完毕,则检查每组中的被困人员个数,如果存在被困人员个数大于平均数(其中,m为被困人员个数,n为参与救援的机器人个数)的情况,则需要对其中某些被困人员进行移除操作。如图5所示,图中,被困人员2,3,6,8和11分在同一组中,假设派出3个机器人来实施救援,那么因此,该组中被困人员个数超过平均值1个,需要根据步骤2.5中方法移除两个被困人员。首先,划分网格,找出被困人员个数最多的网格,图中采用黑色圆标记处网格的被困人员个数为2个,个数最多,找出网格几何中心,并用五角星表示,计算除去网格中被困人员2和被困人员6以外的其他被困人员距离五角星的几何距离,从图中,计算出,被困人员11距离dw11五角星的距离最大,故而将其移除,然后采用步骤2.2以及步骤2.4的方法对被困人员11重新进行分组。

为了节约救援成本,减少救援机器人的投入,在救援之前估算实际需要投入救援的机器人个数,不失一般性,假设所有机器人都是从同一个起始点出发,具体步骤如下:

步骤3.1:计算所有被困人员与机器人起始点之间的距离,并将被困人员序号按照距离的长短从小到大进行排序,从而得到一个基于距离排序的整数序列。假设有4个被困人员为被困人员1,被困人员2,被困人员3和被困人员4,他们距离机器人的直线距离分别是10m,35.5m,3.4m,2.5m,那么基于距离排序的整数序列为{4,3,1,2};

步骤3.2:选择步骤3.1所得序列的第一个被困人员,根据步骤2.6找出其所在的分组,采用机器人1对整个分组实施救援,如果能够完成救援,则该组仅需一个机器人便能完成救援;反之,则再加一个机器人,直到能够将所有的被困人员救起,记录该组被困人员救援需要的机器人个数

步骤3.3:接着将步骤3.1所得序列移除掉步骤3.2救援的被困人员,采用步骤3.2的方法得出一个新的基于距离排序的整数序列,计算新序列第一个被困人员所在组所需要的机器人个数,记为以此类推,从而可以估算出完成整个救援行动所需的机器人个数

步骤3.4:将所有个被困人员按照他们生命期限按照从小到大的顺序进行排序,得到一个基于生命期限排序的整数序列。在步骤3.1中,4个被困人员的生命期限分别为1.3h,0.5h,3.4h,4.9h,那么基于生命期限排序的整数序列为{2,1,3,4}。

步骤3.5:选择步骤3.4中第一个被困人员,根据步骤2.6找出其所在的分组,采用机器人1对整个分组去实施救援,如果能够完成救援,则该组仅需一个机器人便能完成救援;反之,则再加一个机器人,直到能够将所有的被困人员救起,记录该组被困人员救援需要的机器人个数

步骤3.6:从步骤3.1中的序列中移除步骤3.2救援的被困人员,采用步骤3.2相同的方法,计算新序列第一个被困人员所在组所需要的机器人个数,记为以此类推,从而可以估算出完成整个救援行动所需的机器人个数

步骤3.7:比较步骤3.3与步骤3.6所得结果所需机器人的个数,得出最小值n即为实际所需要投入救援机器人的数量,即,

为了能快速处理上述复杂的被困人员分配序列,给出最佳的机器人救援任务分配序列,本发明采用微粒群优化算法来找到上述问题的最优分配策略。容易知道,需要救援的人越多,形成的顺序组合就越多,从而问题的解就越多,微粒群算法能够快速的从众多解中找到最优解,从而能够更快更有效的实施救援。

为了求取上述问题,首先,采用微粒表示问题的解,对机器人救援任务分配序列进行编码,其中,一个微粒表示一个解,也即,机器人救援任务分配序列,微粒群含有多个微粒,则表示上述问题的多个解。接着,采用步骤1-3所得结果,对所有的微粒进行解码,得到多个问题的解;然后,评价上述解的优劣,本发明采用平均救援时间作为目标函数,微粒解码后解的平均救援时间越小,则表明其性能越好,选出个体和全局最好的解作为个体极值和全局极值;然后,针对复杂问题,一个微粒群的微粒个数有限,需要保存好的微粒并发掘新的微粒,因此,下一步为更新微粒,并对新的微粒进行评价,然后依此来更新个体极值和全局极值。采用上述步骤迭代运行,直到迭代完设定的运行次数。采用微粒群算法,主要因为微粒群算法简单,收敛速度快,可以用于优化各种实际存在的组合优化问题,而本发明主要是对救援任务的分配策略进行优化,本质上是对序列进行排序,是一个组合优化问题,故选择采用微粒群算法来优化得到问题的最优分配策略。

本发明给出一灾区,通过无人机深入灾区,采用红外传感器测量有m个被困人员需要救援,其中,参与救援的机器人个数为n个,被困人员分组个数为g个,每组的被困人员个数gn以及每组中的被困人员救援序列gn。通过微粒群算法,求解救援序列,最后得到一最佳救援顺序。由于救援序列是离散序列,故,微利群算法采用整数编码,编码的长度为g+m。算法的迭代次数表示为t,最大迭代次数tmax,在t<tmax的情况下,算法一直运行,否则算法停止。具体的微粒群算法步骤如下:

步骤4.1:t=0,设立一微粒xi,该微粒可以表示为:

其中,为前g个整数,该g个整数表示每组救援任务分配到哪个机器人来救援;为后面m个整数表示对所有被困人员的救援顺序进行编码,m=gn1+gn2+…+gng-1+gng。

步骤4.2:对步骤4.1中的微粒进行解码,微粒编码后为一系列整数序列,因而无法得到救援任务分配序列,因此,有必要将上述编码进行解码,得到整个问题的解。设定微粒xi解码后的微粒表示为si,si的具体求取方法可以由以下步骤来说明:

步骤4.2.1:对于前g个整数,即,对每个整数执行取余加1操作,即,其中,j=1,2,…,g。即,可以得到每组目标点具体的由哪个救援机器人进行救援;

步骤4.2.2:判断步骤4.2.1得到的救援分配序列中有无一个机器人救援两个或两个以上组,如果存在,则判断机器人距离两个组中任意一个目标点的距离,哪个距离近,则先救援哪个组;则如果不存在,则转步骤4.2.3;

步骤4.2.3:对于m个整数,即,对每个整数执行取余加1操作,即其中k=1,2,…,gn1,解码得到一个序列,那么,机器人救援任务分配序列为解码得到序列的大小顺序,解码得到的数字越小则越先得到救援。如果有解码得到相同的数字大小,则排在序列前面的先得到救援。

步骤4.2.4:采用相同的方法所有的分组进行操作,从而可以得到一个完整的序列,得到解码后的救援分配序列。

通过上述四个步骤,可以得到解码后的救援分配方法。为了更好的说明本发明的解码方法,通过如下例子,详细了解整个解码过程。

针对图1所示,假设在某一区域,采用上述方法,假设图1中可以分为6组,即,g=6,每组救援的目标点分别为:

(1)(10,13)(5)(7)(4,12)(2,3,6,8,9,11),假设需要3个机器人对这些目标点进行救援。假设第i个微粒,也即问题的第i个解,可以表示为:xi=(10,20,4,5,8,78,22,48,96,4,7,8,14,15,78,62,36,55,5)。对前6个整数执行取余加1操作,即对(10,20,4,5,8,78)中的整数对3进行取余加1操作,对于第一个整数10,mod(10,3)+1=2,依次对上述整数执行取余加1操作,得到的结果为:(2,3,2,3,3,1),表示第一个和第3个任务由机器人2执行救援,第二个,第四个和第五个任务由机器人3执行救援,第六个则由机器人1执行救援.比较机器人2救援的两个任务列表解码之前的整数大小,10>4,所以机器人2需要先对第一个任务进行救援,然后对第3个任务进行救援;采用相同方法,机器人3依次救援的任务为2,5,4。序列后面表示的是各个任务需要救援的目标点顺序,针对图1,第一个任务列表内只有一个目标点,则无需解码;第二个任务有两个目标点,对xi中第g+2与g+3个整数进行排序,大的标记为1,小的标记为2,即对48,96进行排序,解码为(2,1),表示为机器人先对第13个目标点进行救援,然后再对第10个进行救援.依次对各个任务执行排序操作,则依次解码为(1)(13,10)(5)(7)(4,12)(11,2,8,9,6,3),表示机器人对各个任务的救援顺序。由此,针对图1所示环境,采用本发明的解码方法,可以得到如下序列:si=(2,3,2,3,3,1,1,12,10,5,7,4,12,11,2,8,9,6,3),表示的意义为,机器人1对任务6执行救援操作,救援的顺序为目标点11-2-8-9-6-3;机器人2对任务1和3救援,救援的顺序为1,5;剩下的由机器人3来救援,救援的顺序为任务13-10-4-12-7,那么机器人可以上述救援顺序,完成救援任务。

采用上述方法,对整个微粒群中的微粒进行解码,完成整个微粒群的解码操作。因救援的迫切性,所要优化的目标为平均救援时间,要求在最短的时间内完成救援任务。故,将所有被困人员的平均救援时间设为适应值。

故步骤4.3:进行适应值计算,即:

用r=[r1,r2,…,rn]t表示n个机器人,t=[t1,…,tm]t表示m个不同位置的被困人员,机器人需要飞到被困人员所在位置进行救援。采用gn=[gn1,gn2,…,gnn]t表示救援的序列,其中gni,i=1,…,g表示分配到机器人ri的救援序列。故,最小平均救援时间minf为:

其中gni表示分配到第i个机器人ri的目标点个数,ci,j(gni)表示第i个机器人ri到达第j个目标点之前序列的救援时间。

考虑到救援问题的特殊性,要求救援时间越小越好,采用公式(1)计算每个微粒的适应值,从而可以判断解码后微粒的优劣,选择出最优(最小)的微粒来指导微粒群的进化,其中微粒周围适应值最优的微粒选为个体极值,整个微粒群适应值最优的微粒选为微粒的全局极值。

评价完整个微粒群,为了进一步发掘新的微粒,找到性能更好的解,需要更新微粒。

步骤4.4:微粒更新公式

本文中,采用如下两个公式进行速度和位置的更新,表示如下:

vij(t+1)=wvij(t)+c1r1(pij(t)-xij(t))+c2r2(pgj(t)-xij(t))(2)

其中,v表示微粒的速度,x表示微粒的位置,也即编码后的微粒,表示向下取整函数。

步骤4.5:全局和个体极值更新步骤

一旦微粒更新,那么势必会出现不同的微粒,所以可能会导致个体最优和全局最优发生变化。此外,全局极值在整个算法运行过程中,引导微粒飞行,保证微粒在整个过程中,可以发掘到问题的最优解。全局极值在整个算法的寻优过程中起着非常重要的作用,因此,它的选择尤为重要,如何选择全局极值是本部分研究的问题.

由于全局极值从个体极值中选取,因此,首先需要更新微粒的个体极值,为了更好的评价微粒,引入一个评价指标fr,即救援个数,具体表示为:

式中,dj(j-1)表示第i个机器人救援序列中的第j-1与第j个目标点之间的距离,其中j=0为机器人的起始点位置;vr表示机器人的飞行速度,表示机器人从第j-1到第j个目标点所需要的时间,表示第i个机器人从起始点到第j个目标点一共需要的时间;△oj表示第j个目标点的初始生命强度。

由于微粒适应值为救援时间,要求越快越好,但是如果在可以接受的救援时间范围内,救援的个数必然是越多越好。基于此,本发明给出两个定义,类等于与正大于,两者的定义为:假设某一微粒的适应值为fi,如果另外一个微粒的适应值fj在[fi-f,fi+f]范围内,那么这两个微粒的适应值类等于;当另外一个微粒的适应值fj>fi+f,fj正大于fi,其中,f为一个人为设定的参数,根据灾难具体的严重情况来确定,其值不超过1。

个体极值更新的具体思想为:如果当前微粒的适应值正大于个体极值,则个体极值更新为当前微粒;如果当前微粒的适应值类等于个体极值,且当前微粒的fr值大于个体极值的fr,则当前微粒更新为个体极值;其余情况下微粒个体极值保持不变。

全局极值更新的具体思想与个体极值更新策略类似,具体为:如果个体极值的适应值正大于全局极值,则全局极值更新为个体微粒;如果个体微粒的适应值类等于全局极值,且当前微粒的fr值大于个体极值的fr,则当前微粒更新为全局极值;其余情况下微粒全局极值保持不变。

步骤4.6:判断是否满足算法达到设定的最大迭代次数tmax,即t<tmax,满足则结束;否则转步骤4.2,t=t+1。

本发明根据被困人员的位置信息,将被困人员分组,集中对同一组中被困人员救援,如此,同一组中被困人员在短时间便可以得到救援,提高了救援效率;采用微粒群算法对救援任务分配序列进行优化,保证救援时,不会发生一个被困人员被多个机器人重复救援的情况,避免了冲突的发生,可以使机器人在尽可能短的时间内完成救援任务。

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