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

火箭故障后的轨迹重构方法、装置、终端设备及存储介质

2022-11-19 10:03:21 来源:中国专利 TAG:


1.本发明涉及运载火箭控制领域,尤其涉及一种火箭故障后的轨迹重构方法、装置、终端设备及存储介质。


背景技术:

2.针对火箭故障后的轨迹重构问题,一般是将其转化为若干凸子问题的求解,将轨迹重构问题转化为对一系列结构相同、参数不同的凸子问题(kkt系统)进行求解直至收敛;原对偶内点法是求解凸优化问题的最有效的方法之一,但是对于火箭故障后的轨迹重构问题而言,内点法kkt系数矩阵k中的子块a、g,以及分解后的单位下三角矩阵l都极为稀疏(稀疏程度与问题特性和离散化方法有关),而现有的原对偶内点法,在其每一次内部迭代中,需要耗费极为可观的计算资源和时间,来辨识和维护问题的稀疏结构,对内部的常零元素进行计算例如对l矩阵中常零元素的冗余计算,这样存在大量冗余逻辑和数值操作,对结果无益且耗时耗力。


技术实现要素:

3.本发明实施例提供一种火箭故障后的轨迹重构方法、装置、终端设备及存储介,能提高火箭故障后的轨迹重构效率。
4.本发明一实施例提供一种火箭故障后的轨迹重构方法,包括:构建求解火箭故障后的飞行轨迹的序列凸规划问题;
5.对所述序列凸规划问题进行求解,获得火箭故障后的飞行轨迹;在求解时所述序列凸规划问题时,通过以下方法对序列凸规划问题中各凸子问题所对应的kkt系数矩阵k进行分解:
6.计算kkt系数矩阵k进行转置变化换后所对应的稀疏对称拟定矩阵k*;
7.调用计算对角矩阵d和单位下三角矩阵l中非零元素的显式代码,计算稀疏对称拟定矩阵k*分解后所生成得对角矩阵d和单位下三角矩阵l中非零元素的元素值;
8.根据对角矩阵d和单位下三角矩阵l中非零元素的元素值,生成对角矩阵d和单位下三角矩阵l;
9.对角矩阵d和单位下三角矩阵l进行转置变换,获得kkt系数矩阵k的分解结果;
10.其中,对角矩阵d和单位下三角矩阵l的显式代码的生成包括:
11.根据稀疏对称拟定矩阵k*,确定单位下三角矩阵l的稀疏结构;
12.确定与稀疏对称拟定矩阵k*具有相同稀疏结构的矩阵t;其中,矩阵t中的每一个元素被定义为对角矩阵d和三角矩阵l中对应元素的乘积;
13.根据稀疏对称拟定矩阵k*的稀疏结构、单位下三角矩阵l的稀疏结构、矩阵t的稀疏结构以及预设的压缩存储规则,确定稀疏对称拟定矩阵k*、单位下三角矩阵l、以及矩阵t中每个非零元素在内存中的预设存储位置,继而构建稀疏对称拟定矩阵k*、单位下三角矩阵l、以及矩阵t中每个非零元素所对应的存储数组下标的映射表;所述预设的压缩存储规
则为:将矩阵中每一行的所有非零元素存储在相邻的内存空间中,且矩阵中各相邻行相邻存储;
14.根据所述映射表以及左视ldl矩阵分解算法,生成计算对角矩阵d和单位下三角矩阵l中非零元素的显式代码。
15.进一步的,所述根据所述映射表以及左视ldl矩阵分解算法,生成计算对角矩阵d和单位下三角矩阵l中非零元素的显式代码,包括:
16.根据所述左视ldl矩阵分解算法确定对角矩阵d中每一非零元素计算时,所涉及的元素对象和元素对象的运算方式;
17.根据所述映射表确定对角矩阵d中每一非零元素计算时,所涉及的元素对象的存储数组下标;
18.根据对角矩阵d中每一非零元素计算时,所涉及的元素对象的存储数组下标,以及元素对象的运算方式,逐一构建对角矩阵d中每一非零元素的计算代码,获得对角矩阵d中各非零元素的显式代码;
19.根据所述左视ldl矩阵分解算法确定对单位下三角矩阵l中每一非零元素计算时,所涉及的元素对象和元素对象的运算方式;
20.根据所述映射表确定对单位下三角矩阵l中每一非零元素计算时,所涉及的元素对象的存储数组下标;
21.根据对单位下三角矩阵l中每一非零元素计算时,所涉及的元素对象的存储数组下标,以及元素对象的运算方式,逐一构建对单位下三角矩阵l中每一非零元素的计算代码,获得对单位下三角矩阵l中各非零元素的显式代码。
22.进一步的,在获得对角矩阵d中各非零元素的显式代码以及对单位下三角矩阵l中各非零元素的显式代码之后还包括:
23.若在所有显式代码所对应的运算中,存在连续相同稀疏结构的行点积运算且连续相同稀疏结构长度大于预设长度值,则将连续相同稀疏结构的行点积运算所对应的显式代码,替换为对公共点积运算函数进行调用的代码。
24.进一步的,在求解时所述序列凸规划问题时,还调用三角系统前向代入显式代码及三角系统后向代入显式代码,计算三角系统的前向代入及后向代入。
25.在上述方法项实施例的基础上,本发明对应提供了装置项实施例;
26.本发明一实施例提供了一种火箭故障后的轨迹重构装置,包括:序列凸规划问题构建模块以及序列凸规划问题求解模块;所述序列凸规划问题求解模块,包括kkt系数矩阵分解子模块以及第一显式代码生成子模块;
27.所述序列凸规划问题构建模块,用于构建求解火箭故障后的飞行轨迹的序列凸规划问题;
28.所述序列凸规划问题求解模块,用于对所述序列凸规划问题进行求解,获得火箭故障后的飞行轨迹;
29.所述kkt系数矩阵分解子模块,用于在求解时所述序列凸规划问题时,通过以下方法对序列凸规划问题中各凸子问题所对应的kkt系数矩阵k进行分解:计算kkt系数矩阵k进行转置变化换后所对应的稀疏对称拟定矩阵k*;调用计算对角矩阵d和单位下三角矩阵l中非零元素的显式代码,计算稀疏对称拟定矩阵k*分解后所生成得对角矩阵d和单位下三角
矩阵l中非零元素的元素值;根据对角矩阵d和单位下三角矩阵l中非零元素的元素值,生成对角矩阵d和单位下三角矩阵l;对角矩阵d和单位下三角矩阵l进行转置变换,获得kkt系数矩阵k的分解结果;
30.所述第一显式代码生成子模块,用于通过以下方法生成对角矩阵d和单位下三角矩阵l的显式代码:根据稀疏对称拟定矩阵k*,确定单位下三角矩阵l的稀疏结构;确定与稀疏对称拟定矩阵k*具有相同稀疏结构的矩阵t;其中,矩阵t中的每一个元素被定义为对角矩阵d和三角矩阵l中对应元素的乘积;根据稀疏对称拟定矩阵k*的稀疏结构、单位下三角矩阵l的稀疏结构、矩阵t的稀疏结构以及预设的压缩存储规则,确定稀疏对称拟定矩阵k*、单位下三角矩阵l、以及矩阵t中每个非零元素在内存中的预设存储位置,继而构建稀疏对称拟定矩阵k*、单位下三角矩阵l、以及矩阵t中每个非零元素所对应的存储数组下标的映射表;所述预设的压缩存储规则为:将矩阵中每一行的所有非零元素存储在相邻的内存空间中,且矩阵中各相邻行相邻存储;根据所述映射表以及左视ldl矩阵分解算法,生成计算对角矩阵d和单位下三角矩阵l中非零元素的显式代码。
31.进一步的,所述第一显式代码生成子模块,根据所述映射表以及左视ldl矩阵分解算法,生成计算对角矩阵d和单位下三角矩阵l中非零元素的显式代码,包括:
32.根据所述左视ldl矩阵分解算法确定对角矩阵d中每一非零元素计算时,所涉及的元素对象和元素对象的运算方式;
33.根据所述映射表确定对角矩阵d中每一非零元素计算时,所涉及的元素对象的存储数组下标;
34.根据对角矩阵d中每一非零元素计算时,所涉及的元素对象的存储数组下标,以及元素对象的运算方式,逐一构建对角矩阵d中每一非零元素的计算代码,获得对角矩阵d中各非零元素的显式代码;
35.根据所述左视ldl矩阵分解算法确定对单位下三角矩阵l中每一非零元素计算时,所涉及的元素对象和元素对象的运算方式;
36.根据所述映射表确定对单位下三角矩阵l中每一非零元素计算时,所涉及的元素对象的存储数组下标;
37.根据对单位下三角矩阵l中每一非零元素计算时,所涉及的元素对象的存储数组下标,以及元素对象的运算方式,逐一构建对单位下三角矩阵l中每一非零元素的计算代码,获得对单位下三角矩阵l中各非零元素的显式代码。
38.进一步的,所述第一显式代码生成子模块,还用于在获得对角矩阵d中各非零元素的显式代码以及对单位下三角矩阵l中各非零元素的显式代码之后,若确定在所有显式代码所对应的运算中,存在连续相同稀疏结构的行点积运算且连续相同稀疏结构长度大于预设长度值,则将连续相同稀疏结构的行点积运算所对应的显式代码,替换为对公共点积运算函数进行调用的代码。
39.进一步的,所述序列凸规划问题求解模块,还包括:三角系统计算子模块;
40.所述三角系统计算子模块,用于在求解时所述序列凸规划问题时,调用三角系统前向代入显式代码及三角系统后向代入显式代码,计算三角系统的前向代入及后向代入。
41.在上述方法项实施例的基础上,本发明对应提供了终端设备项实施例;
42.本发明一实施例提供了一种终端设备,包括:处理器、存储器以及存储在所述存储
器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现本发明任意一项所述的火箭故障后的轨迹重构方法。
43.在上述方法项实施例的基础上,本发明对应提供存储介质项实施例;
44.本发明一实施例提供了一种存储介质,所述存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述存储介质所在设备执行本发明任意一项所述的火箭故障后的轨迹重构方法。
45.通过实施本发明实施例具有如下有益效果:本发明实施例提供了火箭故障后的轨迹重构方法、装置、终端设备及存储介质,所述方法预先基于kkt系数矩阵k进行转置变化换后稀疏对称拟定矩阵k*,然后按矩阵中每一行的所有非零元素存储在相邻的内存空间中,且矩阵中各相邻行相邻存储这一压缩存储规则预先确定稀疏对称拟定矩阵k*、以及稀疏对称拟定矩阵k*分解后的单位下三角矩阵l、以及矩阵t中每个非零元素的内存中的预设存储位置,然后生成存储数组下标的映射表;紧接着根据映射表和现有的左视ldl矩阵分解算法,生成对角矩阵d和单位下三角矩阵l中非零元素的显式代码;最后当在线求解火箭故障后的飞行轨迹的序列凸规划问题时,调用计算对角矩阵d和单位下三角矩阵l中非零元素的显式代码,直接计算稀疏对称拟定矩阵k*分解后所生成得对角矩阵d和单位下三角矩阵l中非零元素的元素值,最终生成kkt系数矩阵k的分解结果。与现有技术相比,本发明通过硬编码方式将所有非零元素的计算表达为显式代码,然后仅对非零元素进行计算,避免了l矩阵常零元素的冗余计算,提高了效率,此外,排除现有内点法中左视ldl矩阵分解算法中的循环和分支所产生的计算代价,并可保证算法运行时仅使用事先分配好的静态内存空间。
附图说明
46.图1是本发明一实施例提供的一种火箭故障后的轨迹重构方法的流程示意图。
47.图2是本发明一实施例提供的显式代码的生成方法的流程示意图。
48.图3是本发明一实施例提供的ldl矩阵分解显式代码与左视ldl矩阵分解算法的对应关系示意图。
49.图4是本发明一实施例提供的前向代入显式代码与通用循环算法对应关系示意图。
50.图5是本发明一实施例提供的t和l矩阵中的不同行连续相同稀疏结构示意图。
51.图6是本发明一实施例提供的公共点积函数的示意图。
52.图7是本发明一实施例提供的火箭故障后的轨迹重构装置的结构示意图。
具体实施方式
53.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
54.如图1所示,本发明一实施例提供的一种火箭故障后的轨迹重构方法至少包括,如下步骤:
55.s1:构建求解火箭故障后的飞行轨迹的序列凸规划问题。
56.s2:对所述序列凸规划问题进行求解,获得火箭故障后的飞行轨迹;在求解时所述序列凸规划问题时,通过以下方法对序列凸规划问题中各凸子问题所对应的kkt系数矩阵k进行分解:计算kkt系数矩阵k进行转置变化换后所对应的稀疏对称拟定矩阵k*;调用计算对角矩阵d和单位下三角矩阵l中非零元素的显式代码,计算稀疏对称拟定矩阵k*分解后所生成得对角矩阵d和单位下三角矩阵l中非零元素的元素值;根据对角矩阵d和单位下三角矩阵l中非零元素的元素值,生成对角矩阵d和单位下三角矩阵l;对角矩阵d和单位下三角矩阵l进行转置变换,获得kkt系数矩阵k的分解结果。
57.对于步骤s1、具体的:在火箭出现动力故障时,将目标圆轨道的轨道约束凸化为凸约束;根据所述凸约束、火箭参数、目标轨道根数信息以及火箭的初始状态信息构建求解火箭故障后的飞行轨迹的序列凸规划问题。需要说明的是,火箭故障后的飞行轨迹的序列凸规划问题的构建是现有技术,其并不为本发明的发明点,因此在本发明中不在展开说明;
58.对于步骤s2、对上述序列凸规划问题进行求解,获得火箭故障后的飞行轨迹;在求解序列凸规划问题时本发明采用了与现有原对偶内点法不同的方法对各凸子问题所对应的kkt系数矩阵k进行分解。
59.首先针对特定kkt系统结构进行正则化摄动,计算最优置换矩阵p,然后基于最优置换矩阵p计算得到kkt系数矩阵k进行转置变化换后的稀疏对称拟定矩阵k*。需要说明的是,将kkt系数矩阵k进行转置变化换生成k*的这一过程是现有技术在此不再展开说明。
60.紧接着,调用计算对角矩阵d和单位下三角矩阵l中非零元素的显式代码,计算稀疏对称拟定矩阵k*分解后所生成得对角矩阵d和单位下三角矩阵l中非零元素的元素值;
61.优选的,对角矩阵d和单位下三角矩阵l中非零元素的显式代码的具体步骤如图2所示,其具体包括:
62.步骤s21:根据稀疏对称拟定矩阵k*,确定单位下三角矩阵l的稀疏结构。
63.具体的,一般采用ldl分解方法将稀疏对称拟定矩阵k
*
分解为因子l、d和l
t
,其中d为对角矩阵、l为单位下三角矩阵。k
*
=ldl
t
展开一般形式为:
[0064][0065]
其中,n为矩阵维度。可见矩阵k
*
分解的实质,就是计算l和d矩阵中的非零元素,其具体计算方法如下:
[0066][0067]
稀疏对称拟定矩阵k*确定的情况下,单位下三角矩阵l的稀疏结构也能够唯一确定。
[0068]
步骤s22:确定与稀疏对称拟定矩阵k*具有相同稀疏结构的矩阵t;其中,矩阵t中的每一个元素被定义为对角矩阵d和三角矩阵l中对应元素的乘积。
[0069]
具体的,为避免不必要的乘法运算,利用式(2)中的结构,引入与矩阵l有相同稀疏结构的矩阵t,并定义其元素取值t
ij
=l
ijdj

[0070]
步骤s23:根据稀疏对称拟定矩阵k*的稀疏结构、单位下三角矩阵l的稀疏结构、矩阵t的稀疏结构以及预设的压缩存储规则,确定稀疏对称拟定矩阵k*、单位下三角矩阵l、以及矩阵t中每个非零元素在内存中的预设存储位置,继而构建稀疏对称拟定矩阵k*、单位下三角矩阵l、以及矩阵t中每个非零元素所对应的存储数组下标的映射表;所述预设的压缩存储规则为:将矩阵中每一行的所有非零元素存储在相邻的内存空间中,且矩阵中各相邻行相邻存储。
[0071]
具体的,现有左视(left-looking)ldl矩阵分解算法具体如下:
[0072][0073]
可见,上述算法计算量最大之处在于其第4行和第9行。其中,第4行循环计算d矩阵元素,处于二重for循环之中;第9行循环计算t矩阵元素,处于三重for循环之中。又注意到,第4和第9行的计算结构高度相似:即t矩阵和l矩阵不同行之间的点积。结合这一特点,本发明对对称拟定矩阵k*的稀疏结构、单位下三角矩阵l的稀疏结构以及矩阵t的稀疏结构采用
行压缩存储(compressed row storage,crs)数据结构,将矩阵每一行的所有非零元素存储在相邻的内存空间中,且各相邻行也相邻存储,这有利于提高矩阵行点积运算的空间局部性(spatial locality),进而可显著提升缓存命中率、降低缓存缺失引发的延迟。
[0074]
矩阵分解占据内点法内部迭代的较大部分计算耗时,而t和l矩阵的行点积运算又占据矩阵分解的绝大部分耗时,因此上述存储方法在cpu缓存调度层次有效提升了算法效率。
[0075]
步骤s24:根据所述映射表以及左视ldl矩阵分解算法,生成计算对角矩阵d和单位下三角矩阵l中非零元素的显式代码。
[0076]
在确定了相关矩阵的稀疏结构以及对应的压缩存储方式,即可为问题的求解预先分配确定大小的内存空间,且将算法进行显式编码实现。显式代码生成的核心思想是将上述现有左视(left-looking)ldl矩阵分解算法中的三重循环展开,将循环体中的每一次非零元素的赋值、乘法、除法运算生成一条显式c语言指令,从而去除所有的冗余计算、逻辑判断和循环操作。
[0077]
在一个优选的实施例中,所述根据所述映射表以及左视ldl矩阵分解算法,生成计算对角矩阵d和单位下三角矩阵l中非零元素的显式代码,包括:
[0078]
根据所述左视ldl矩阵分解算法确定对角矩阵d中每一非零元素计算时,所涉及的元素对象和元素对象的运算方式;根据所述映射表确定对角矩阵d中每一非零元素计算时,所涉及的元素对象的存储数组下标;根据对角矩阵d中每一非零元素计算时,所涉及的元素对象的存储数组下标,以及元素对象的运算方式,逐一构建对角矩阵d中每一非零元素的计算代码,获得对角矩阵d中各非零元素的显式代码;根据所述左视ldl矩阵分解算法确定对单位下三角矩阵l中每一非零元素计算时,所涉及的元素对象和元素对象的运算方式;根据所述映射表确定对单位下三角矩阵l中每一非零元素计算时,所涉及的元素对象的存储数组下标;根据对单位下三角矩阵l中每一非零元素计算时,所涉及的元素对象的存储数组下标,以及元素对象的运算方式,逐一构建对单位下三角矩阵l中每一非零元素的计算代码,获得对单位下三角矩阵l中各非零元素的显式代码。
[0079]
具体的,本发明将生成矩阵分解显式代码的函数命名为gen_ldl(),该函数以矩阵k
*
和l的稀疏结构作为输入。首先,通过矩阵稀疏结构和压缩存储规则建立k
*
、l、t中每一个非零元素到对应存储数组下标的映射表,该表在显式代码生成时用于确定操作数在内存中的存储位置。接着,gen_ldl()基于左视ldl矩阵分解算法按列生成显式代码,每列先生成对角矩阵d对应元素的计算代码,再按行生成t和l元素计算的代码。生成的每一行显式代码只执行基本的代数和赋值运算,形如t[#]-=t[$]*l[@],其中数组索引占位符#、$、@在实际代码中均为确定的常数,依据预分配的数组以及非零元素存储映射表确定。最后,gen_ldl()将生成的显式代码写入定制化ldl分解计算函数cus_ldl(),供在线求解序列凸规划问题时调用。cus_ldl()中映射左视ldl矩阵分解算法各个步骤的显式编码示例如图3所示。
[0080]
通过上述方法将现有左视ldl矩阵分解算法的循环进行展开,生成每一非零元素的显式代码,只对非零元素进行运算。有别于现有技术中基于多重循环结构实现kkt系统求解方式,在本发明中,无需在迭代计算中维护多个循环体避免了额外计算代价,且不存在循环结构中的分支指令可能使处理器流水线断流,进一步降低了计算效率的问题。
[0081]
在一个优选的实施例中,在获得对角矩阵d中各非零元素的显式代码以及对单位
下三角矩阵l中各非零元素的显式代码之后还包括:
[0082]
若在所有显式代码所对应的运算中,存在连续相同稀疏结构的行点积运算且连续相同稀疏结构长度大于预设长度值,则将连续相同稀疏结构的行点积运算所对应的显式代码,替换为对公共点积运算函数进行调用的代码。
[0083]
在这一实施例中,将前述数若干c语言显式计算指令合并为一个公共函数调用,从而降低显式编码程序规模并提高时空局部性。同时,在代码行数缩减和函数调用带来的额外开销之间寻求最优的平衡,获得最优的整体计算效率。
[0084]
如前所述,ldl分解算法中的主要计算量在于t和l矩阵的行点积。在前述方案中将点积运算中每一个有意义的元素乘积(t
ik
,l
jk
均不为0)运算生成一条显式c语言指令。经过更为细致深入的结构分析可知,t和l矩阵在多个不同行之间存在具有连续相同稀疏结构的部分。以图5所示的t矩阵和l矩阵为例:
[0085]
l矩阵中第i行的索引[0]~[2]的元素与t中第j行[0]~[2]具有完全一致稀疏结构;l第p行[1]~[4]的与t第j行[0]~[3]具有完全一致稀疏结构。这一特性在伪谱法离散产生的分解矩阵中广泛存在。
[0086]
由于t和l矩阵的稀疏结构是确定的,即可以分析所有行向量点积运算的连续相同稀疏结构,结合其行压缩存储方式,大量点积计算可以调用公共点积函数来实现,而不必为每次求积计算生成代码,进而降低程序规模和运行时的指令数量。
[0087]
利用这一特性,在这一实施例中设计了专门的点积函数dot()求解连续相同稀疏结构的行点积,其输入参数为两个连续相同结构的起始内存位置和连续相同部分的长度。如图5所示意,假设在t行压缩存储向量中,自索引[4]开始至[12](对应稀疏矩阵某一行中的部分元素),与l行压缩向量中[30]至[38]具有如图6所示的连续相同稀疏结构,则在前述实施例中生成的9行代码可用这一实施例中的一行dot()函数调用替换。通过利用大量类似的行向量连续相同稀疏结构,大幅度降低了显式代码生成量,进而在一定程度上克服了显式代码方法带来的指令缓存大量失效问题。
[0088]
基于上述实施例所示的方法构建好对角矩阵d和单位下三角矩阵l中非零元素的显式代码后,后续直接调用对应的显式代码,计算出稀疏对称拟定矩阵k*分解后所生成得对角矩阵d和单位下三角矩阵l中非零元素的元素值;然后在矩阵其他位置补上零元素,即可生成对角矩阵d和单位下三角矩阵l。
[0089]
最后将对角矩阵d和单位下三角矩阵l进行转置变换,即可获得kkt系数矩阵k的分解结果。
[0090]
在一个优选的实施例中,在求解时所述序列凸规划问题时,还调用三角系统前向代入显式代码及三角系统后向代入显式代码,计算三角系统的前向代入及后向代入。
[0091]
完成系数矩阵k
*
的ldl分解后,即可通过前向三角系统前向代入和后向代入等计算完成线性系统求解。如前所述,内点法一次内部迭代涉及1次矩阵分解和多次前\后向代入计算,因此对代入运算的定制化也会对算法效率产生可观的益处。前\后向代入计算涉及二重for循环,其显式代码生成的方法与ldl分解基本一致,即将循环展开并为每一次非零元素数值计算生成一条c语言指令。
[0092]
以形如的三角系统前向代入计算(三角系统后向代入计算与三角系统前向代入计算相似,在此不再对其进行进一步说明)为例,其显式代码与基于二重循环通用方法
的映射关系如图4所示。
[0093]
为验证本发明所示的方法在满足凸问题高精度求解要求的前提下,其相对通用求解器的加速性能,以及针对cpu高速缓存利用优化的效果。在加速性能分析中,采用性能先进的ecos求解器作为对比对象。
[0094]
以运载火箭动力系统故障在线任务重构问题为典型示例,对所研究的定制化实时内点法进行实验验证。数值实验中使用的火箭参数和初始状态、目标轨道根数信息分别如表1和表2所示。
[0095]
表1运载火箭末级参数取值
[0096][0097][0098]
表2运载火箭末级初始飞行状态和目标轨道根数
[0099]
火箭初始状态*取值目标轨道根数取值x390651m半长轴7378059my6744225m偏心率0.00032z-102070m轨道倾角99.50degv
x
3525.544m/s升交点经度173.04degvy2396.608m/s近地点幅角90.29degv
z-233.467m/s真近点角71.76deg
[0100]
*火箭初始状态为发惯系下末级标称弹道0秒时刻状态
[0101]
本发明所公开的方法既关注内点算法的绝对速度,又关注其相对通用求解器的加速比。采用不同的计算机平台,对计算速度和加速比均有不同的影响。为全面验证本发明所提出的方法的性能以及缓存敏感性,采用三型不同架构、不同主频、不同缓存大小的计算机进行实验测试,如表3所示。其中,配有i9处理器的台式计算机(简称i9台式机)cpu主频最高,三级缓存较大;采用arm v8.2处理器的英伟达jetson agx开发板(简称agx),具有最大的一级和二级缓存,主频也较高;树莓派4b开发板主频最低,各级缓存也相对较小。
[0102]
表3数值实验采用的三型计算平台及cpu参数
[0103][0104][0105]
最终,算法加速结果可见表4-表9(表4-表9中的“ciec-v1”指的是本发明中未调用点积函数对连续相同稀疏结构的行点积求解时的算法,“ciec-v2”为本发明中调用点积函数对连续相同稀疏结构的行点积求解时的算法):
[0106]
表4树莓派4b计算平台的加速性能(表中全部计算耗时数据单位为:ms)
[0107][0108]
表5树莓派4b计算平台上算法缓存缺失比例(表中全部缓存缺失数据单位为:%)
[0109]
[0110][0111]
表6 agx计算平台上t算法加速性能(表中全部计算耗时数据单位为:ms)
[0112][0113][0114]
表7 agx计算平台上算法缓存缺失比例(表中全部缓存缺失数据单位为:%)
[0115][0116]
表8 i9台式机计算平台上算法加速性能(表中全部计算耗时数据单位为:ms)
[0117]
[0118][0119]
表9 i9台式机计算平台上算法缓存缺失比例(表中全部缓存缺失数据单位为:%)
[0120][0121]
在上述方法项实施例的基础上,本发明对应提供了装置项实施例;
[0122]
如图7所示,本发明一实施例提供了一种火箭故障后的轨迹重构装置,包括:序列凸规划问题构建模块以及序列凸规划问题求解模块;所述序列凸规划问题求解模块,包括kkt系数矩阵分解子模块以及第一显式代码生成子模块;
[0123]
所述序列凸规划问题构建模块,用于构建求解火箭故障后的飞行轨迹的序列凸规划问题;
[0124]
所述序列凸规划问题求解模块,用于对所述序列凸规划问题进行求解,获得火箭
故障后的飞行轨迹;
[0125]
所述kkt系数矩阵分解子模块,用于在求解时所述序列凸规划问题时,通过以下方法对序列凸规划问题中各凸子问题所对应的kkt系数矩阵k进行分解:计算kkt系数矩阵k进行转置变化换后所对应的稀疏对称拟定矩阵k*;调用计算对角矩阵d和单位下三角矩阵l中非零元素的显式代码,计算稀疏对称拟定矩阵k*分解后所生成得对角矩阵d和单位下三角矩阵l中非零元素的元素值;根据对角矩阵d和单位下三角矩阵l中非零元素的元素值,生成对角矩阵d和单位下三角矩阵l;对角矩阵d和单位下三角矩阵l进行转置变换,获得kkt系数矩阵k的分解结果;
[0126]
所述第一显式代码生成子模块,用于通过以下方法生成对角矩阵d和单位下三角矩阵l的显式代码:根据稀疏对称拟定矩阵k*,确定单位下三角矩阵l的稀疏结构;确定与稀疏对称拟定矩阵k*具有相同稀疏结构的矩阵t;其中,矩阵t中的每一个元素被定义为对角矩阵d和三角矩阵l中对应元素的乘积;根据稀疏对称拟定矩阵k*的稀疏结构、单位下三角矩阵l的稀疏结构、矩阵t的稀疏结构以及预设的压缩存储规则,确定稀疏对称拟定矩阵k*、单位下三角矩阵l、以及矩阵t中每个非零元素在内存中的预设存储位置,继而构建稀疏对称拟定矩阵k*、单位下三角矩阵l、以及矩阵t中每个非零元素所对应的存储数组下标的映射表;所述预设的压缩存储规则为:将矩阵中每一行的所有非零元素存储在相邻的内存空间中,且矩阵中各相邻行相邻存储;根据所述映射表以及左视ldl矩阵分解算法,生成计算对角矩阵d和单位下三角矩阵l中非零元素的显式代码。
[0127]
在一个优选的实施例中,所述第一显式代码生成子模块,根据所述映射表以及左视ldl矩阵分解算法,生成计算对角矩阵d和单位下三角矩阵l中非零元素的显式代码,包括:
[0128]
根据所述左视ldl矩阵分解算法确定对角矩阵d中每一非零元素计算时,所涉及的元素对象和元素对象的运算方式;
[0129]
根据所述映射表确定对角矩阵d中每一非零元素计算时,所涉及的元素对象的存储数组下标;
[0130]
根据对角矩阵d中每一非零元素计算时,所涉及的元素对象的存储数组下标,以及元素对象的运算方式,逐一构建对角矩阵d中每一非零元素的计算代码,获得对角矩阵d中各非零元素的显式代码;
[0131]
根据所述左视ldl矩阵分解算法确定对单位下三角矩阵l中每一非零元素计算时,所涉及的元素对象和元素对象的运算方式;
[0132]
根据所述映射表确定对单位下三角矩阵l中每一非零元素计算时,所涉及的元素对象的存储数组下标;
[0133]
根据对单位下三角矩阵l中每一非零元素计算时,所涉及的元素对象的存储数组下标,以及元素对象的运算方式,逐一构建对单位下三角矩阵l中每一非零元素的计算代码,获得对单位下三角矩阵l中各非零元素的显式代码。
[0134]
在一个优选的实施例中,所述第一显式代码生成子模块,还用于在获得对角矩阵d中各非零元素的显式代码以及对单位下三角矩阵l中各非零元素的显式代码之后,若确定在所有显式代码所对应的运算中,存在连续相同稀疏结构的行点积运算且连续相同稀疏结构长度大于预设长度值,则将连续相同稀疏结构的行点积运算所对应的显式代码,替换为
对公共点积运算函数进行调用的代码。
[0135]
在一个优选的实施例中,所述序列凸规划问题求解模块,还包括:三角系统计算子模块;
[0136]
所述三角系统计算子模块,用于在求解时所述序列凸规划问题时,调用三角系统前向代入显式代码及三角系统后向代入显式代码,计算三角系统的前向代入及后向代入。
[0137]
需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0138]
所述领域的技术人员可以清楚地了解到,为的方便和简洁,上述描述的装置的具体工作过程,可参考前述方法实施例中对应的过程,在此不再赘述。
[0139]
在上述方法项实施例的基础上,本发明对应提供了终端设备项实施例;
[0140]
本发明一实施例提供了一种终端设备,包括:处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现本发明任意一项所述的火箭故障后的轨迹重构方法。
[0141]
终端设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述终端设备可包括,但不仅限于,处理器、存储器。
[0142]
所称处理器可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述终端设备的控制中心,利用各种接口和线路连接整个终端设备的各个部分。
[0143]
所述存储器可用于存储所述计算机程序,所述处理器通过运行或执行存储在所述存储器内的计算机程序,以及调用存储在存储器内的数据,实现所述终端设备的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据手机的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
[0144]
在上述方法项实施例的基础上,本发明对应提供存储介质项实施例;
[0145]
本发明一实施例提供了一种存储介质,所述存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述存储介质所在设备执行本发明任意一项所述的火箭故障后的轨迹重构方法。
[0146]
所述存储介质为计算机可读存储介质,所述计算机程序存储在所述计算机可读存
储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
[0147]
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
再多了解一些

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

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

相关文献