一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于变邻域搜索启发式的中继卫星任务调度方法

2022-12-06 23:56:05 来源:中国专利 TAG:


1.本发明属于任务调度领域,具体来说是一种考虑多时间窗和双向任务协同的中继卫星任务调度方法。


背景技术:

2.中继卫星是通信卫星的一种,它在数据传输方面有着巨大的优势,它能够在近地卫星和地面观测站之间提供数据中继。世界各个大国都致力于中继卫星系统的发展,到目前2021年7月为止,我国已经成功发射5颗中继卫星。中继卫星作为近地卫星和地面观测站之间的信息传输中继,它需要协调数量巨大的信息传输任务,才能够使得有限的中继卫星资源得到合理的利用,因此就需要采用合理的算法来进行中继卫星任务的调度。
3.目前现有的求解方法主要集中在精确求解算法和群搜索启发式求解算法。精确求解算法针对小规模的算例能够在有效的时间内求解出精确解,但是针对大规模算例无法在有效的时间内得出合理的方案。群搜索启发式算法在求解的精度上略逊于单点改进的启发式算法。而中继卫星的资源比较紧缺,由于上述问题的存在,中继卫星的资源不能够得到充分的利用。
4.于此同时,目前的中继卫星调度问题的研究主要集中在单向链路即单向任务的调度方面,针对双向任务协同的调度研究目前还没有涉及。


技术实现要素:

5.本发明为了解决上述现有技术存在的不足之处,提出了一种基于变邻域搜索启发式的中继卫星任务调度方法,以期能在考虑双向任务的同时,快速得到中继卫星调度的合理方案,从而能够使紧缺的中继卫星资源得到充分利用。
6.为了达到上述发明目的,本发明采用如下技术方案:
7.本发明一种基于变邻域搜索启发式的中继卫星任务调度方法,其特征是应用于由一个中继卫星与若干个近地卫星进行信息交互的场景中,所述中继卫星内设置有接收设备集合和发送设备集合将中继卫星向近地卫星传输信息的事件记为发任务,且所述发任务由所述发送设备服务;将近地卫星向中继卫星传输信息的事件记为收任务,且所述收任务由所述接收设备服务;将中继卫星和近地卫星同时向对方传输信息的事件记为双向任务,且所述双向任务由所述接收设备和发送设备同时服务;其中,h
p
表示第p个发送设备,rq表示第q个接收设备;m1表示发送设备的数量,m2表示接收设备的数量,令由n1个发任务构成的集合记为令由n2个收任务构成的集合记为令由n3个双向任务构成的集合记为其中,表示第i个发任务,表示第j个收任务,表示第k个双向任务;令第i个发任务的个时间窗构成的集合为其中,表示第i个发任务的第w个时间窗;令第j个收任务的个时间窗构成的集合为
其中,表示第j个收任务的第w个时间窗;令第k个双向任务的个时间窗构成的集合为其中,表示第k个双向任务的第w个时间窗;所述中继卫星任务调度方法包括以下步骤:
8.步骤1、将集合j3中的每个双向任务均拆分一个发任务和一个收任务,由双向任务拆分后的发任务构成的集合记为由双向任务拆分后的收任务构成的集合记为其中,表示被双向任务拆分出的第k1个发任务,表示表示被双向任务拆分出的第k2个收任务;
9.利用式(1)构建以优先级最高和开始服务时刻最早为目标的卫星任务调度模型:
[0010][0011]
式(1)中,表示第i个发任务的优先级,表示第j个收任务的优先级,表示第k个双向任务的拆分的发任务的优先级,大小等于的优先级;表示第i个发任务的开始服务时刻,表示第j个收任务的开始服务时刻,表示第k个双向任务的拆分成的发任务开始服务时刻,α是归一化系数,是双向任务拆分出的发任务的第k个时间窗;
[0012]
x
ipw
表示发送设备r
p
是否在第i个发任务的第w个时间窗内服务发任务若x
ipw
=1表示发送设备r
p
服务在第i个发任务的第w个时间窗内服务发任务若x
ipw
=0表示发送设备r
p
不在第i个发任务的第w个时间窗内服务发任务x
jqw
表示接收设备hq是否在第j个收任务的第w个时间窗内服务收任务若x
jqw
=1表示接收设备hq服务在第j个收任务的第w个时间窗内服务收任务若x
jqw
=0表示接收设备hq不在第j个收任务的第w个时间窗内服务收任务内服务收任务表示发送设备r
p
是否在拆分后的发任务的第w时间窗内服务发任务若表示发送设备r
p
服务在在拆分后的发任务的第w个时间窗内服务发任务若表示发送设备r
p
不在拆分后的发任务的第w个时间窗内服务发任务
[0013][0014]
[0015]
式(2)表示每个发任务最多只能由一个发送设备选择一个时间窗服务;
[0016]
式(3)表示每个收任务最多只能由一个接收设备选择一个时间窗服务;
[0017][0018][0019]
式(4)表示双向任务拆分出的发任务只能由一个发送设备选择一个时间窗服务;
[0020]
式(5)表示双向任务拆分出的收任务只能由一个接收设备选择一个时间窗服务;其中,是双向任务拆分出的收任务的第k个时间窗;
[0021][0022][0023][0024][0025]
式(6)表示第i个发任务的时间窗约束,表示第i个发任务的第w个时间窗的左端,表示第i个发任务的第w个时间窗的右端,表示第i个发任务的结束服务时刻;
[0026]
式(7)中si表示第i个发任务的服务时长;
[0027]
式(8)表示第j个收任务的时间窗约束,其中,表示第j个收任务的第w个时间窗的左端,表示第j个收任务的第w个时间窗的右端,表示第j个收任务的结束服务时刻;
[0028]
式(9)中sj表示第j个收任务的服务时长;
[0029][0030][0031][0032][0033][0034]
式(10)表示第k个双向任务的分解出的发任务的时间窗约束;其中,表示第k个双向任务拆分出的发任务第w个时间窗的左端,表示第w个时间窗的右端,表示的开始服务时刻,表示的结束服务时刻;
[0035]
式(11)中sk表示第k个双向任务的服务时长;
[0036]
式(12)表示第k个双向任务的分解出的收任务的时间窗约束;其中,表示分解出的收任务的开始服务时刻,表示的结束服务时刻;
[0037][0038][0039][0040][0041]
式(15)和式(16)表示发送设备所服务的任务服务时间不冲突约束;
[0042]
式(17)和式(18)表示接收设备所服务的任务服务时间不冲突约束;
[0043]
步骤2、给每个设备构建可行的服务任务序列以得到初始调度方案x
initiate

[0044]
定义调度方案为所有的发送设备和接收设备所服务的任务序列;其中,令第p个发送设备h
p
所服务的任务序列记为l
p
;第q个接收设备rq所服务的任务序列记为aq;初始化所有的发送设备所服务的任务序列和所有接收设备所服务的任务序列为空集;
[0045]
步骤2.1、给所有发送设备安排所服务的发任务序列:
[0046]
步骤2.1.1、对集合j1中所有发任务按照第一个时间窗的左端进行升序排序,得到排序后的集合j
′1;
[0047]
步骤2.1.2、初始化p=1;令未被服务的发任务集合记为u1;并初始化u1=j1;
[0048]
步骤2.1.3、对排序后的集合j
′1依次遍历,并陆续将排序后的每个发送任务插入第p个发送设备h
p
的任务序列末尾,直到插入的发送任务不满足式(6)为止,从而得到第p个发送设备h
p
的任务序列l
p

[0049]
步骤2.1.4、从u1中剔除第p个发送设备h
p
的任务序列l
p
中的发任务,得到更新后的发任务集合并赋值给u1;
[0050]
步骤2.1.5、令p 1赋值给p,返回步骤2.1.3顺序执行,直到p>m1为止,从而得到所有发送设备的任务序列以及未被服务的发任务集合u1;
[0051]
步骤2.2、给所有接收设备安排所服务的收任务序列:
[0052]
步骤2.2.1、对集合j2中所有收任务按照第一个时间窗的左端进行升序排序,得到排序后的集合j
′2;
[0053]
步骤2.2.2、初始化q=1;令未被服务的收任务集合记为u2,并初始化u2=j2;
[0054]
步骤2.2.3、对排序后的集合j
′2依次遍历,并陆续将排序后的每个收任务插入第q个接收设备rq的任务序列末尾,直到插入的收任务不满足式(8)为止,从而得到第q个接收设备rq的任务序列aq;
[0055]
步骤2.2.4、从u2中剔除第q个接收设备rq的任务序列aq中的收任务,得到更新后的收任务集合并赋值给u2;
[0056]
步骤2.2.5、令q 1赋值给q,返回步骤2.2.3顺序执行,直到q>m2为止,从而得到所
有接收设备的任务序列以及未服务的收任务集合u2;
[0057]
步骤2.3、将双向任务插入所述发送设备的任务序列和接收设备的任务序列中:
[0058]
步骤2.3.1、令未服务的双向任务记为u3,并初始化u3=j3;
[0059]
步骤2.3.2、将每个发送设备的任务序列分别和接收设备的任务序列进行两两组合,从而得到m1×
m2个组合任务序列;
[0060]
步骤2.3.3、依次遍历集合u3,将双向任务拆分成一个发任务和一个收任务依次遍历m1×
m2个组合任务序列,再依次遍历组合任务序列中相邻任务之间的位置,找到能满足式(10)~式(14)的位置,并将插入组合任务序列中发送设备的任务序列的相应位置,将插入组合任务序列中接收设备的任务序列的相应位置,从而更新相应的组合任务序列;
[0061]
步骤2.3.4、从u3中剔除双向任务并将所得到的更新后的双向任务任务集合赋值给u3;
[0062]
步骤2.3.5、返回步骤2.3.3直到所有的双向任务都被插入组合任务序列中,或者没有双向任务能够插入为止,从而得到未被服务的双向任务集合u3;
[0063]
步骤2.3.6、由m1个发送设备的任务序列和m2个接收设备的任务序列所构成的调度方案记为x
initiate

[0064]
步骤3、构建邻域算子用于对当前调度方案x进行扰动,以扩大搜索空间:
[0065]
定义最大迭代次数为i
max
;定义当前迭代次数为i
cur
;并初始化i
cur
=1;
[0066]
第i
cur
次迭代的调度方案记为初始化为x
initiate

[0067]
步骤3.1、构建邻域算子:
[0068]
定义邻域算子n1为:随机选择中一个发送设备的任务序列或者一个接收设备的任务序列,随机选择任务序列中的一个任务,先将其从相应任务序列中剔除,再随机重新插入相应任务序列中能满足式(6)或式(8)的一个位置;
[0069]
定义邻域算子n2为:随机选择中一个发送设备的任务序列或者一个接收设备的任务序列,随机选择同一任务序列中的两个任务,如果交换两任务的位置后设备的任务序列仍然满足式(6)或式(8),则交换两个任务的位置;
[0070]
定义邻域算子n3为:随机选择中同为发送设备的两个任务序列或者同为接收设备的两个任务序列,并从两个任务序列中分别随机选择一个任务,如果交换两个任务后设备的任务序列仍然满足式(6)或式(8),则交换两个任务的位置;
[0071]
定义邻域算子n4为:随机选择中一个发送设备的任务序列或者一个接收设备的任务序列,随机删除任务序列中的一个任务,并加入到相应未被服务的任务集合u1或u2或u3中;
[0072]
定义邻域算子n5为:随机选择中一个发送设备的任务序列或者一个接收设备的任务序列,随机删除任务序列中的一段连续任务,将连续任务插入其他相应的设备且能满足式(6)或式(8)的任务序列的位置中;
[0073]
定义邻域算子n6为:随机选择中一个被服务的双向任务,先将其从现在所在的设备序列中剔除,然后通过步骤2.3.1~步骤2.3.3找一对可行的位置并插入;
[0074]
步骤3.2、选择邻域算子的序列:
[0075]
定义邻域算子序列为其中,nu表示第u个邻域算子,u∈[1,6];
[0076]
初始化u=1;
[0077]
步骤3.3、选择第u个邻域算子nu,对进行扰动操作得到扰动后的调度方案
[0078]
步骤4、构建局部搜索算子对进行局部搜索:
[0079]
步骤4.1、构建局部搜索算子:
[0080]
局部搜索算子m1为:针对中每一个发送设备的任务序列和每一个接收设备的任务序列,依次遍历设备的任务序列中每一个任务,先将其从相应任务序列中剔除,再重新插入原任务序列中最优位置,所述最优位置为使得式(1)增量最大的位置,如果不能使式(1)增加,则恢复任务在原任务序列中的位置;
[0081]
局部搜索算子m2为:针对中每个发送设备的任务序列中所服务的任务进行两两组合,如果交换两个任务的位置,能使得式(1)增加,则交换两个任务,否则不进行交换,选择下一个组合进行操作;
[0082]
局部搜索算子m3为:针对中每个接收设备的任务序列中所服务的任务进行两两组合,如果交换两个任务的位置,能使得式(1)增加,则交换两个任务,否则不进行交换,选择下一个组合进行操作;
[0083]
局部搜索算子m4为:针对中两个发送设备的任务序列,或者两个接收设备的任务序列,将两个设备之间的任务进行两两组合,如果交换两个任务的位置,若能使得式(1)增加,则进行交换,否则不进行交换,选择下一个组合进行操作;
[0084]
局部搜索算子m5为:依次遍历未被服务的任务集合如果是发任务就插入发送设备序列中,如果是收任务就插入接收设备序列中,如果是双向任务就将其分解成一个发任务和一个收任务,并通过步骤2.3.1~步骤2.3.2找一对能使得式(1)增量最大的位置将双向任务插入,如不能使得式(1)增加,就选择下一个任务进行操作;
[0085]
局部搜索算子m6为:依次遍历中所有被服务的双向任务,先将其从现在所在的设备中剔除,然后通过步骤2.3.1~步骤2.3.3找一对能使得式(1)增量最大的位置并插入,如果不能使得式(1)增加,则恢复任务在原任务序列中的位置,选择下一个双向任务进行操作;
[0086]
步骤4.2、定义局部搜索算子的序列为其中,mv表示第v个局部搜索算子;
[0087]
步骤4.3、依次采用m
set
中的局部搜索算子对进行操作,得到的邻域调度
方案
[0088]
步骤5、采用模拟退火的方式判断是否将赋值给最优调度方案x
best

[0089]
步骤6、如果i
cur
=i
max
则停止迭代,输出x
best
作为最优调度方案,并输出最优调度方案对应的式(1)的目标函数值,否则将i
cur
1赋值给i
cur
后,返回步骤3.3。
[0090]
本发明所述的基于变邻域搜索启发式的中继卫星任务调度方法的特点在于,所述步骤5包括:
[0091]
步骤5.1、定义模拟退火的初始温度为t0定义模拟退火的冷却率为c,当前温度为t若i
cur
=1,则t=t0,否则将t
×
c赋值给t;
[0092]
步骤5.2、如果则将赋值给将赋值给最优调度方案x
best
;令u=1,返回步骤3.3顺序执行,否则,执行步骤5.3;f(
·
)表示式(1)的目标函数值;
[0093]
步骤5.3、从[0,1]之间取随机数r,若则令u=1,令赋值给返回步骤3.3顺序执行;否则,将(u 1)mod 1赋值给u,跳转步骤6;其中,mod表示取模操作。
[0094]
本发明一种电子设备,包括存储器以及处理器,其特点在于,所述存储器用于存储支持处理器执行所述中继卫星任务调度方法的程序,所述处理器被配置为用于执行所述存储器中存储的程序。
[0095]
本发明一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器运行时所述中继卫星任务调度方法的步骤。
[0096]
与现有技术相比,本发明的有益效果在于:
[0097]
1、本发明基于变邻域启发式的框架来求解中继卫星调度问题。变邻域启发式是一种迭代搜索的启发式算法,首先通过贪婪的方法通过时间的先后顺序安排任务序列生成初始的可行调度方案,然后再使用邻域搜索阶段的邻域搜索算子来对当前的可行调度方案进行邻域搜索,扩大搜索空间,随后在通过局部搜索阶段的局部搜索算子来对当前的可行调度方案进行局部搜索,通过局部搜索获得目标更优的邻域调度方案,随着迭代次数的增加不断的更新最优可行调度方案,最终在迭代终止时,从而得到了一个合理的任务调度方案。
[0098]
2、本发明在目标上综合考虑了两个指标——任务的优先级和开始服务时刻,通过归一化系数有机结合,使得在保证紧急任务能够被及时处理的同时,又保证了所有任务都尽早被执行。
[0099]
3、本发明在处理前向链路和反向链路所产生的信息传输任务时,既考虑了接收信息的收任务和发送信息的发任务,也考虑同时收发的信息传输任务——双向任务,此任务在接收信息的同时发送信息,需要保持两个方向的信息传递的同时性。在处理双向任务的时,把其分解成两个单向任务即一个收任务和一个发任务,但是需添加强约束,及两个任务的执行时间的同时性,从而能够满足现实中对双向任务的调度需求。
附图说明
[0100]
图1为本发明一种基于变邻域搜索启发式的中继卫星任务调度方法的流程图。
具体实施方式
[0101]
本实施例中,一种基于变邻域搜索启发式的中继卫星任务调度方法,是考虑中继卫星资源的有限,合理的安排中继卫星的任务执行序列来充分利用有限的资源,中继卫星内设置有接收设备集合和发送设备集合将中继卫星向近地卫星传输信息的事件记为发任务,且发任务由发送设备服务;将近地卫星向中继卫星传输信息的事件记为收任务,且收任务由接收设备服务;将中继卫星和近地卫星同时向对方传输信息的事件记为双向任务,且双向任务由接收设备和发送设备同时服务;其中,h
p
表示第p个发送设备,rq表示第q个接收设备;m1表示发送设备的数量,m2表示接收设备的数量,令由n1个发任务构成的集合记为令由n2个收任务构成的集合记为令由n3个双向任务构成的集合记为其中,表示第i个发任务,表示第j个收任务,表示第k个双向任务;令第i个发任务的个时间窗构成的集合为其中,表示第i个发任务的第w个时间窗;令第j个收任务的个时间窗构成的集合为其中,表示第j个收任务的第w个时间窗;令第k个双向任务的个时间窗构成的集合为其中,表示第k个双向任务的第w个时间窗;如图1所示,中继卫星任务调度方法包括以下步骤:
[0102]
步骤1、将集合j3中的每个双向任务均拆分一个发任务和一个收任务,由双向任务拆分后的发任务构成的集合记为由双向任务拆分后的收任务构成的集合记为其中,表示被双向任务拆分出的第k1个发任务,表示表示被双向任务拆分出的第k2个收任务;
[0103]
利用式(1)构建以优先级最高和开始服务时刻最早为目标的卫星任务调度模型:
[0104][0105]
式(1)中,表示第i个发任务的优先级,表示第j个收任务的优先级,表示第k个双向任务的拆分的发任务的优先级,大小等于的优先级;表示第i个发任务的开始服务时刻,表示第j个收任务的开始服务时刻,表示第k个双向任务的拆分成的发任务开始服务时刻,α是归一化系数,是双向任务拆分出的发任务的第k个时间窗;
[0106]
x
ipw
表示发送设备r
p
是否在第i个发任务的第w个时间窗内服务发任务若x
ipw
=1表示发送设备r
p
服务在第i个发任务的第w个时间窗内服务发任务若x
ipw
=0表示发送设备r
p
不在第i个发任务的第w个时间窗内服务发任务x
jqw
表示接收设备hq
是否在第j个收任务的第w个时间窗内服务收任务若x
jqw
=1表示接收设备hq服务在第j个收任务的第w个时间窗内服务收任务若x
jqw
=0表示接收设备hq不在第j个收任务的第w个时间窗内服务收任务内服务收任务表示发送设备r
p
是否在拆分后的发任务的第w时间窗内服务发任务若表示发送设备r
p
服务在在拆分后的发任务的第w个时间窗内服务发任务若表示发送设备r
p
不在拆分后的发任务的第w个时间窗内服务发任务
[0107][0108][0109]
式(2)表示每个发任务最多只能由一个发送备选择一个时间窗服务;
[0110]
式(3)表示每个收任务最多只能由一个接收设备选择一个时间窗服务;
[0111][0112][0113]
式(4)表示双向任务拆分出的发任务只能由一个发送设备选择一个时间窗服务;
[0114]
式(5)表示双向任务拆分出的收任务只能由一个接收设备选择一个时间窗服务;其中,是双向任务拆分出的收任务的第k个时间窗;
[0115][0116][0117][0118][0119]
式(6)表示第i个发任务的时间窗约束,表示第i个发任务的第w个时间窗的左端,表示第i个发任务的第w个时间窗的右端,表示第i个发任务的结束服务时刻;
[0120]
式(7)表明发任务的开始服务时刻,服务时长和结束服务时刻的关系,si表示第i个发任务的服务时长;
[0121]
式(8)表示第j个收任务的时间窗约束,其中,表示第j个收任务的第w个时间窗的左端,表示第j个收任务的第w个时间窗的右端,表示第j个收任务的结束服务时刻;
[0122]
式(9)表明收任务的开始服务时刻,服务时长和结束服务时刻的关系,sj表示第j个收任务的服务时长;
[0123][0124][0125][0126][0127][0128]
式(10)表示第k个双向任务的分解出的发任务的时间窗约束;其中,表示第k个双向任务拆分出的发任务第w个时间窗的左端,表示第w个时间窗的右端,表示的开始服务时刻,表示的结束服务时刻;
[0129]
式(11)表示任务开始服务时刻,服务时长和结束服务时刻的关系,sk表示第k个双向任务的服务时长;
[0130]
式(12)表示第k个双向任务的分解出的收任务的时间窗约束;其中,表示分解出的收任务的开始服务时刻,表示的结束服务时刻;
[0131]
式(13)表示任务开始服务时刻,服务时长和结束服务时刻的关系;
[0132]
式(14)表示双向任务拆分出的发任务和收任务开始服务时刻要相同;
[0133][0134][0135][0136][0137]
式(15)和式(16)表示发送设备所服务的任务服务时间不冲突约束;
[0138]
式(17)和式(18)表示接收设备所服务的任务服务时间不冲突约束;
[0139]
步骤2、给每个设备构建可行的服务任务序列以得到初始调度方案x
initiate

[0140]
定义调度方案为所有的发送设备和接收设备所服务的任务序列;其中,令第p个发送设备h
p
所服务的任务序列记为l
p
;第q个接收设备rq所服务的任务序列记为aq;初始化所有的发送设备所服务的任务序列和所有接收设备所服务的任务序列为空集;
[0141]
步骤2.1、给所有发送设备安排所服务的发任务序列:
[0142]
步骤2.1.1、对集合j1中所有发任务按照第一个时间窗的左端进行升序排序,得到排序后的集合j
′1;
[0143]
步骤2.1.2、初始化p=1;令未被服务的发任务集合记为u1;并初始化u1=j1;
[0144]
步骤2.1.3、对排序后的集合j
′1依次遍历,并陆续将排序后的每个发送任务插入第p个发送设备h
p
的任务序列末尾,直到插入的发送任务不满足式(6)为止,从而得到第p个发送设备h
p
的任务序列l
p

[0145]
步骤2.1.4、从u1中剔除第p个发送设备h
p
的任务序列l
p
中的发任务,得到更新后的发任务集合并赋值给u1;
[0146]
步骤2.1.5、令p 1赋值给p,返回步骤2.1.3顺序执行,直到p>m1为止,从而得到所有发送设备的任务序列以及未被服务的发任务集合u1;
[0147]
步骤2.2、给所有接收设备安排所服务的收任务序列:
[0148]
步骤2.2.1、对集合j2中所有收任务按照第一个时间窗的左端进行升序排序,得到排序后的集合j
′2;
[0149]
步骤2.2.2、初始化q=1;令未被服务的收任务集合记为u2,并初始化u2=j2;
[0150]
步骤2.2.3、对排序后的集合j
′2依次遍历,并陆续将排序后的每个收任务插入第q个接收设备rq的任务序列末尾,直到插入的收任务不满足式(8)为止,从而得到第q个接收设备rq的任务序列aq;
[0151]
步骤2.2.4、从u2中剔除第q个接收设备rq的任务序列aq中的收任务,得到更新后的收任务集合并赋值给u2;
[0152]
步骤2.2.5、令q 1赋值给q,返回步骤2.2.3顺序执行,直到q>m2为止,从而得到所有接收设备的任务序列以及未服务的收任务集合u2;
[0153]
步骤2.3、将双向任务插入发送设备的任务序列和接收设备的任务序列中:
[0154]
步骤2.3.1、令未服务的双向任务记为u3,并初始化u3=j3;
[0155]
步骤2.3.2、将每个发送设备的任务序列分别和接收设备的任务序列进行两两组合,从而得到m1×
m2个组合任务序列;
[0156]
步骤2.3.3、依次遍历集合u3,将双向任务拆分成一个发任务和一个收任务依次遍历m1×
m2个组合任务序列,再依次遍历组合任务序列中相邻任务之间的位置,找到能满足式(10)~式(14)的位置,并将插入组合任务序列中发送设备的任务序列的相应位置,将插入组合任务序列中接收设备的任务序列的相应位置,从而更新相应的组合任务序列;
[0157]
步骤2.3.4、从u3中剔除双向任务并将所得到的更新后的双向任务任务集合赋值给u3;
[0158]
步骤2.3.5、返回步骤2.3.3直到所有的双向任务都被插入组合任务序列中,或者没有双向任务能够插入为止,从而得到未被服务的双向任务集合u3;
[0159]
步骤2.3.6、由m1个发送设备的任务序列和m2个接收设备的任务序列
所构成的调度方案记为x
initiate

[0160]
步骤3、构建邻域算子用于对当前调度方案x进行扰动,以扩大搜索空间:
[0161]
定义最大迭代次数为i
max
;定义当前迭代次数为i
cur
;并初始化i
cur
=1;
[0162]
第i
cur
次迭代的调度方案记为初始化为
[0163]
步骤3.1、构建邻域算子:
[0164]
定义邻域算子n1为:随机选择中一个发送设备的任务序列或者一个接收设备的任务序列,随机选择任务序列中的一个任务,先将其从相应任务序列中剔除,再随机重新插入相应任务序列中能满足式(6)或式(8)的一个位置;
[0165]
定义邻域算子n2为:随机选择中一个发送设备的任务序列或者一个接收设备的任务序列,随机选择同一任务序列中的两个任务,如果交换两任务的位置后设备的任务序列仍然满足式(6)或式(8),则交换两个任务的位置;
[0166]
定义邻域算子n3为:随机选择中同为发送设备的两个任务序列或者同为接收设备的两个任务序列,并从两个任务序列中分别随机选择一个任务,如果交换两个任务后设备的任务序列仍然满足式(6)或式(8),则交换两个任务的位置;
[0167]
定义邻域算子n4为:随机选择中一个发送设备的任务序列或者一个接收设备的任务序列,随机删除任务序列中的一个任务,并加入到相应未被服务的任务集合u1或u2或u3中;
[0168]
定义邻域算子n5为:随机选择中一个发送设备的任务序列或者一个接收设备的任务序列,随机删除任务序列中的一段连续任务,将连续任务插入其他相应的设备且能满足式(6)或式(8)的任务序列的位置中;
[0169]
定义邻域算子n6为:随机选择中一个被服务的双向任务,先将其从现在所在的设备序列中剔除,然后通过步骤2.3.1~步骤2.3.3找一对可行的位置并插入;
[0170]
步骤3.2、选择邻域算子的序列:
[0171]
定义邻域算子序列为其中,nu表示第u个邻域算子,u∈[1,6];
[0172]
初始化u=1;
[0173]
步骤3.3、选择第u个邻域算子nu,对进行扰动操作得到扰动后的调度方案
[0174]
步骤4、构建局部搜索算子对进行局部搜索:
[0175]
步骤4.1、构建局部搜索算子:
[0176]
局部搜索算子m1为:针对中每一个发送设备的任务序列和每一个接收设备的任务序列,依次遍历设备的任务序列中每一个任务,先将其从相应任务序列中剔除,再重新插入原任务序列中最优位置,最优位置为使得式(1)增量最大的位置,如果不能使式(1)增加,则恢复任务在原任务序列中的位置;
[0177]
局部搜索算子m2为:针对中每个发送设备的任务序列中所服务的任务进行两两组合,如果交换两个任务的位置,能使得式(1)增加,则交换两个任务,否则不进行交换,选择下一个组合进行操作;
[0178]
局部搜索算子m3为:针对中每个接收设备的任务序列中所服务的任务进行两
两组合,如果交换两个任务的位置,能使得式(1)增加,则交换两个任务,否则不进行交换,选择下一个组合进行操作;
[0179]
局部搜索算子m4为:针对中两个发送设备的任务序列,或者两个接收设备的任务序列,将两个设备之间的任务进行两两组合,如果交换两个任务的位置,若能使得式(1)增加,则进行交换,否则不进行交换,选择下一个组合进行操作;
[0180]
局部搜索算子m5为:依次遍历未被服务的任务集合如果是发任务就插入发送设备序列中,如果是收任务就插入接收设备序列中,如果是双向任务就将其分解成一个发任务和一个收任务,并通过步骤2.3.1~步骤2.3.2找一对能使得式(1)增量最大的位置将双向任务插入,如不能使得式(1)增加,就选择下一个任务进行操作;
[0181]
局部搜索算子m6为:依次遍历中所有被服务的双向任务,先将其从现在所在的设备中剔除,然后通过步骤2.3.1~步骤2.3.3找一对能使得式(1)增量最大的位置并插入,如果不能使得式(1)增加,则恢复任务在原任务序列中的位置,选择下一个双向任务进行操作;
[0182]
步骤4.2、定义局部搜索算子的序列为其中,mv表示第v个局部搜索算子;
[0183]
步骤4.3、依次采用m
set
中的局部搜索算子对进行操作,得到的邻域调度方案
[0184]
步骤5、采用模拟退火的方式对进行判断是否将赋值给
[0185]
步骤5.1、定义模拟退火的初始温度为t0定义模拟退火的冷却率为c,当前温度为t若i
cur
=1,则t=t0,否则将t
×
c赋值给t;
[0186]
步骤5.2、如果则将赋值给将赋值给最优调度方案x
best
;令u=1,返回步骤3.3顺序执行,否则,执行步骤5.3;f(
·
)表示式(1)的目标函数值;
[0187]
步骤5.3、从[0,1]之间取随机数r,若则令u=1,令赋值给返回步骤3.3顺序执行;否则,将(u 1)mod 1赋值给u,跳转步骤6;其中,mod表示取模操作;
[0188]
步骤6、如果i
cur
=i
max
则停止迭代,输出x
best
作为最优调度方案,并输出最优调度方案对应的式(1)的目标函数值,否则将i
cur
1赋值给i
cur
后,返回步骤3.3。
[0189]
本实施例中,一种电子设备,包括存储器以及处理器,该存储器用于存储支持处理器执行上述中继卫星任务调度方法的程序,处理器被配置为用于执行存储器中存储的程序。
[0190]
本实施例中,一种计算机可读存储介质,是在计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时上述中继卫星任务调度方法的步骤。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献