基于柔性带权有向图模型的卫星指令序列生成方法与流程

文档序号:11233818阅读:264来源:国知局
基于柔性带权有向图模型的卫星指令序列生成方法与流程

本发明涉及一种基于柔性带权有向图模型的卫星指令序列生成方法,属于航天器数据管理技术领域。



背景技术:

低轨遥感卫星分辨率高,是获取太空信息的主要渠道,在国民经济建设中发挥着日益重要的作用。然而,低轨遥感卫星受轨道重访特性、天气状况、星上电子学使用约束、地面可用接收资源等因素制约,其任务具有间歇性、多样性和不确定性,采用任务规划系统对星地资源统筹优化,以最少的资源完成最多的成像任务,是用户最关心的问题之一,也是学术界的研究热点。

随着卫星机动能力快速提升,卫星任务量、每个任务的指令数都飞速增长,测控系统上注压力越来越大,现有基于带权有向无环图(aoe)的卫星指令序列生成算法,能够根据指令执行约束关系,对卫星指令序列进行排序,大幅度降低了地面中心对航天器的运控效率。但是该算法对指令进行拓扑排序生成指令序列的时候,对于非关键路径的指令节点间执行间隔可能默认延长,没有考虑到部分航天器指令执行时间间隔严格保护的需求。



技术实现要素:

本发明提供了一种基于柔性带权有向图模型的卫星指令序列生成方法,该方法根据前驱节点和后驱节点之间的约束关系,确定各节点的合理执行区间,并进一步确定各节点的合理执行时刻,利用该方法所确定的各指令执行时刻,能够满足严格的指令执行时间间隔需求。

实现本发明的技术方案如下:

一种基于柔性带权有向图模型的卫星指令序列生成方法,具体过程为:

步骤一,将卫星任务指令序列转化为由节点及其约束关系构成的柔性带权有向图模型,其中有向图模型中权值可变的边为柔性边,且柔性边的权值为柔性区间;

步骤二,针对每一节点,根据其前驱节点的执行区间,以及其与后驱节点之间的柔性区间,计算其对应的执行区间;

步骤三,针对每一节点,根据其后驱节点的最终执行时间、其与后驱节点之间的柔性区间、及其对应的执行区间,计算并更新其对应的执行区间,并在更新后的执行区间内确定最终执行时间;然后根据每一节点所对应的最终执行时间执行对应的指令。

进一步地,本发明所述步骤二的具体过程为:

101、将任务起始节点v0的执行区间定为iz(v0)=[0,0],其他所有节点的执行区间定为iz(vi)=[0,+∞),i=1,2,3……;

102、从柔性带权有向图模型的第一个节点v0开始,将其作为当前节点,依据公式(1),计算当前节点的所有出度边相连的后驱节点的执行区间范围;

iz’=iz+fz=[izdown+fzdown,izup+fzup]………………(1)

其中,[izdown,izup]为当前节点的执行区间,[fzdown,fzup]为后驱节点与前驱节点之间的柔性区间;

103、针对每一新增的后驱节点的执行区间,将其与对应的后驱节点的执行区间进行“与运算”,更新后驱节点的执行区间;

104、删除当前节点,并删除当前节点的所有出度边;

105、从柔性带权有向图模型中选择一个入度边为0(没有前驱节点、不存在入度边)的节点作为当前节点,按照102到104的方式,直到柔性带权有向图模型中不存在节点为止;

106、针对步骤一中获得的柔性带权有向图模型,将每一节点所对应的执行区间确定为最终更新获得的执行区间。

进一步地,本发明所述步骤三的具体过程为:

201、针对步骤二中得到的柔性带权有向图模型,将最后一个节点vn作为当前节点,从当前节点的执行区间中选择时间点作为当前节点的最终执行时间,根据公式(2)计算当前节点的所有入度边相连的前驱节点执行区间范围;

iz’=iz-fz=[izdown-fzup,izup-fzdown]∩[0,+∞)………………(2)

202、针对每一计算结果,将其与对应的前驱节点的执行区间进行“与运算”,若“与运算”结果为空,则该方法结束,否则利用“与运算”的结果更新前驱节点的执行区间,进入步骤203;

203、删除当前节点,并删除当前节点的所有入度边;

204、从柔性带权有向图模型中选择一个出度边为0的节点(没有后驱节点、不存在出度边)作为当前节点,按照201至203的方式,直到柔性带权有向图模型中不再存在节点为止;

205、按照每个节点所确定的时间点,执行柔性带权有向图模型中各节点所对应的指令。

进一步地,本发明根据节点时间选择策略,从当前节点的执行区间中选择时间点作为当前节点的最终执行时间,所述节点时间选择策略为结尾指令以选择最早执行时间,开机指令尽量晚,关机指令尽量早。

有益效果

本发明提出的基于柔性带权有向无环图指令生成方法,通过在有向无环图中引入柔性区间的概念,解决了指令执行时间间隔固定在某个确定的可变区域的问题,保证存在依赖关系的指令执行间隔在预设的范围之内。

附图说明

图1为基于柔性带权有向图模型的卫星指令序列生成方法的流程图;

图2为柔性带权有向无环图指令约束关系示意图;

图3为调整后的柔性带权有向无环图指令约束关系示意图。

具体实施方式

下面结合附图和具体实施方式对本发明进行详细说明。

本发明提供一种基于柔性带权有向图模型的卫星指令序列生成方法,如图1所示,具体过程为:

步骤一,将卫星任务指令序列转化为由节点及其约束关系构成的柔性带权有向图模型;

步骤二,针对每一节点,根据其前驱节点的执行区间,以及其与后驱节点之间的柔性区间,计算其对应的执行区间;

步骤三,针对每一节点,根据其后驱节点的最终执行时间、其与后驱节点之间的柔性区间、及其对应的执行区间,计算并更新其对应的执行区间,并在更新后的执行区间内确定最终执行时间;然后根据每一节点所对应的最终执行时间执行对应的指令。

实例1:

(一)建立柔性带权有向图模型,即将卫星任务指令序列转化为由节点及其约束关系构成的柔性带权有向图模型g(v,e),其中:

图g=(v,e),source顶点代表任务开始执行,sink顶点代表任务结束;

v={v0,v1,v2,v3,…,vn}是有向图的节点集合,每个节点vj(j=0,1,2,…,n)对应一条指令;time(vj)代表该指令的执行时刻;

e={e1,e2,…,em}是柔性带权有向图模型的边集合,边ei={vj→vk}(i=1,2,…,m;j,k=0,1,2,…,n)代表指令vj先于vk执行,vj为vk的前向节点,vk为vj的后向节点,边的长度li代表两条指令执行时间间隔的约束,简称“执行时长”。

表1卫星任务指令序列与有向图模型g(v,e)之间的等效关系

考虑更一般的情况,某些指令间隔可以是一个设定的区间内,例如执行v0指令3-4s后必须执行v1指令,则显然区间[3,4]是e1的可变区间。此时,在带权有向无环图中进入引入柔性区间边的概念。

柔性边(flexibleedge):在有向图中,权值可变的边,称之为柔性边,记为fe。

柔性区间(flexiblezone):柔性边权值变化区间,称之为柔性边的柔性区间,记为fz,显然,刚性边记为柔性区间上限和下限相等的一种特殊柔性边。

合理执行区间(implementzone):在有向图中,节点发生的时间属于合理范围变动,这个变动范围成为合理执行区间,简称执行区间,记为iz。

为了表述方便,本发明定义执行区间和柔性区间的加法操作记为:

iz’=iz+fz=[izdown+fzdown,izup+fzup]………………(1)

为了表述方便,本发明定义执行区间和柔性区间的减法操作记为:

iz’=iz-fz=[izdown-fzup,izup-fzdown[0,+∞)……………(2)

显然,若izup<fzdown,则

针对以上定义,提出了以下定理,并证明如下:

定理1:假设有向无环图中节点vi,存在一个前驱节点vpre,对应的柔性边为fepre,柔性区间为fz(fepre)=[fz(fepre)down,fz(fepre)up]。若iz(vpre)=[iz(vpre)down,lz(vpre)up]已确定,则有iz(vi)=[iz(vpre)down+fz(fepre)down,lz(vpre)up+fz(fepre)up]。

证明:因为令x=t(vpre),y=t(fepre),z=t(vi)。根据柔性边fepre约束,有目标函数z=x+y,x∈[iz(vpre)down,iz(vpre)up],y∈[fz(fepre)down,fz(fepre)up]。根据二元一次函数的特性,目标函数z=x+y的值域为[iz(vpre)down+fz(fepre)down,lz(vpre)up+fz(fepre)up],且在其定义域内值域连续。因此有iz(vi)=[iz(vpre)down+fz(fepre)down,lz(vpre)up+fz(fepre)up]。

推论1:假设有向无环图中节点vi,存在j个前驱节点每个前驱节点的执行区间与节点入度边fej的柔性区间fz(fej)决定了节点vi的一个执行区间范围iz(vi)j,本节点的所有入度决定本节点的执行区间范围的交集,等于本节点的执行区间。即:

定理2:假设有向无环图中节点vi,存在一个后驱节点vnext,对应的柔性边为fenext,柔性区间为fz(fenext)=[fz(fenext)down,fz(fenext)up]。若iz(vnext)=[iz(vnext)down,lz(vnext)up]已确定,则有iz(vi)=[lz(vnext)down-fz(fenext)up,iz(vnext)up-fz(fenext)down]。

证明:因为令x=t(vnext),y=t(fenext),z=t(vi)。根据柔性边fenext约束,有目标函数z=x-y,x∈[iz(vnext)down,iz(vnext)up],y∈[fz(fenext)down,fz(fenext)up]。根据二元一次函数的特性[4],目标函数z=x-y的值域为[lz(vnext)down-fz(fenext)up,iz(vnext)up-fz(fenext)down],且在其定义域内值域连续。因此有iz(vi)=[lz(vnext)down-fz(fenext)up,iz(vnext)up-fz(fenext)down]。

推论2:假设有向无环图中节点vi,存在j个后驱节点每个后驱节点的执行区间与节点入度边fej的柔性区间fz(fej)能够推导节点vi的一个执行区间范围iz(vi)j,本节点的所有入度决定本节点的执行区间范围的交集,等于本节点的执行区间。即有:

基于所构建的柔性带权有向图模型及上述的定理、推论,确定每一指令的执行时间的过程为:

(二)将任务起始节点v0的执行区间定为iz(v0)=[0,0],其他所有节点的执行区间定为iz(vi)=[0,+∞),i=1,2,3……;

(三)从柔性带权有向图模型的第一个节点v0开始,将其作为当前节点,依据公式(1),计算当前节点的所有出度边相连的后驱节点的执行区间范围;

iz’=iz+fz=[izdown+fzdown,izup+fzup]………………(1)

其中,[izdown,izup]为当前节点的执行区间,[fzdown,fzup]为后驱节点与前驱节点之间的柔性区间;该步骤中根据当前节点的执行区间,以及当前节点与后驱节点之间的柔性区间,确定后驱节点的执行区间。例如当前节点为任务起始节点v0,其执行区间为[0,0],执行v0所对应的指令3-4s后必须执行v1指令,则根据公式(1)计算出v1执行的执行区间。

(四)针对每一个新增的后驱节点的执行区间,将其与对应的后驱节点的执行区间进行“与运算”,利用运算的结果更新后驱节点的执行区间;由于每一后驱节点存在至少一个前驱节点,各前驱节点的执行区间可能存在对后驱节点执行区间的约束,因此需要利用新增后驱节点的执行区间进行“与运算”来更新后驱节点的执行区间。

(五)删除当前节点,并删除当前节点的所有出度边,即柔性边。

(六)从柔性带权有向图模型中选择一个入度为0(没有前驱节点)的节点作为当前节点,按照102到104的方式,直到柔性带权有向图模型中不存在节点为止;当步骤(六)执行完毕,更新完了每一节点的执行区间。

(七)针对步骤(一)中获得的柔性带权有向图模型,将每一节点所对应的执行区间确定为最终更新获得的执行区间。

(八)针对步骤(七)中得到的柔性带权有向图模型,将最后一个节点vn(没有后驱节点)作为当前节点,根据节点时间选择策略,从当前节点的执行区间中选择时间点作为当前节点的最终执行时间,所述时间选择策略包括结尾指令以选择最早值,开机指令尽量晚,关机指令尽量早等原则;然后根据公式(2)计算当前节点的所有入度边相连的前驱节点执行区间范围;

iz’=iz-fz=[izdown-fzup,lzup-fzdown]∩[0,+∞)………………(2)

(九)针对每一计算结果,将其与对应的前驱节点的执行区间进行“与运算”,若“与运算”结果为空,则表示不存在合适的执行区间,结束该方法,若“与运算”的结果不为空,则表示存在合适的执行区间,此时利用“与运算”的结果更新前驱节点的执行区间,并进入步骤十。

(十)删除当前节点,并删除当前节点的所有入渡边。

(十一)从柔性带权有向图模型中选择一个出度边为0的节点(没有后驱节点)作为当前节点,按照201至203的方式,直到柔性带权有向图模型中不再存在节点为止。

(十二)按照每个节点所确定的时间点,执行柔性带权有向图模型中各节点所对应的指令。

本发明能够自动生成指令序列,并满足航天器指令间时间间隔固定或在确定区间动态浮动的需求,进而保证生成的指令序列的正确性。

本发明时间复杂度为o(n)=o(n+e),其中n表示有向图模型中的节点个数,e表示边个数。实际上与拓扑排序算法一致,时间复杂度为同等级别。

实例2:

本发明提出基于柔性权值有向无环图模型的指令序列生成方法,假设存在4个节点的指令,指令间的依赖关系生成了4个柔性边fe。

根据本发明,对图2的计算过程则有:

首先,确定初始节点的执行区间iz(v0)=[0,0],v1节点的执行区间iz(v1)=[0,+∞],v2节点的执行区间iz(v2)=[0,+∞],v3节点的执行区间iz(v3)=[0,+∞];

其次,根据v0节点与v1节点之间的柔性区间,更新v1节点的执行区间为iz(v1)=iz(v0)+fz(fe1)=[5,7];根据v0节点与v2节点之间的柔性区间,更新v2节点的执行区间为iz(v2)=iz(v0)+fz(fe2)=[7,9];

根据v1节点与v2节点之间的柔性区间,以及v2节点与v3节点之间的柔性区间,最终更新v3节点的执行区间为:

iz(v3)=iz(v1)+fz(fe3)=[5,7]+[4,5]=[9,12];

根据路径v0->v2->v3,v3最早执行时间为15,而根据路径v0->v1->v3,v3最晚执行时间为12,显然本实例无解。

针对实际需求,假设可以调整fz(fe4)=[4,+∞),如图3所示。

初始各节点的执行区间为:iz(v0)=[0,0],iz(v1)=[0,+∞],iz(v2)=[0,+∞],iz(v3)=[0,+∞];

从v0节点开始,更新后v1节点和v2节点的执行区间为:iz(v1)=iz(v0)+fz(fe1)=[5,7],iz(v2)=iz(v0)+fz(fe2)=[7,9];

由v1节点所确定的v3节点的执行区间为:iz(v3)=iz(v1)+fz(fe3)=[5,7]+[4,5]=[9,12];

再由v2节点最终确定v3节点的执行区间为:iz(v3)’=(iz(v2)+fz(fe2))∩iz(v3)=[11,+∞)∩[9,12]=[11,12]

根据结尾指令选择最早执行时间原则,确定v3节点的执行时间点为t(v3)=11,将此时v3节点的执行区间记为lz(v3)=[11,11];

从v3节点开始,根据v3节点的执行区间更新得到v1节点的执行区间为:iz(v1)’=(iz(v3)-fz(fe3))∩iz(v1)=[6,7]∩[5,7]=[6,7]

若v1遵循选择最晚时间原则,则令t(v1)=7,lz(v1)=[7,7]

从v3节点开始,根据v3节点的执行区间更新得到v2节点的执行区间为:iz(v2)’=(iz(v3)-fz(fe4))∩iz(v2)=[0,7]∩[7,9]=[7,7]

若v2遵循选择最早时间原则,则令t(v2)=7,lz(v2)=[7,7]

再根据v1和v2节点的执行区间,计算出v0节点的执行区间:

iz(v0)’=(iz(v1)-fz(fe1))∩iz(v0)=[0,2]∩[0,0]=[0,0]

t(v0)=0,lz(v1)=[0,0]

iz(v0)’=(iz(v2)-fz(fe2))∩iz(v0)=[0,0]∩[0,0]=[0,0]

t(v0)=0,lz(v1)=[0,0]

综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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