发明内容
有鉴于此,本发明提供一种人工智能程序员书写数字飞行器源代码的决策分解方法,该方法对数字飞行器源代码的书写逻辑进行分解,根据不同的书写逻辑采用不同的人工智能决策方法完成数字飞行器源代码的书写工作,克服了现有各类仿真系统开发周期长、重复性开发工作量大和学习成本高的缺点。
为了实现上述目的,本发明采用如下技术方案:
一种人工智能程序员书写数字飞行器源代码的决策分解方法,其特征在于,包括以下步骤:
步骤一,建立数字飞行器的规范化描述;
步骤二,基于数字飞行器的规范化描述,采用维分解方法,对数字飞行器、数字飞行器仿真结构和数字飞行器书写结构进行拆分,获得数字飞行器的决策拆分集;
步骤三,根据所述数字飞行器决策拆分集确定决策选择方法,并完成数字飞行器源代码书写。
优选的,所述步骤一的具体方法包括:
(1)确定数字飞行器的目标元素集;
(2)确定数字飞行器的模型参数集;
(3)按照所述目标元素集和所述模型参数集的类型选择规范化描述记录。
优选的,所述规范化描述记录具体包括:
对于所述目标元素集和所述模型参数集包含的信息,若所述信息具备复杂关系,则采用数据库的形式记录和存储;若所述信息具备树状结构,采用可扩展标记语言文件记录和存储;参数和配置项采用文本文件记录和存储。
优选的,所述步骤二中,采用系统维对数字飞行器进行拆分:
将所述数字飞行器的舱段拆分为服务舱和有效载荷;所述服务舱拆分为服务舱结构、控制系统、推进系统、温度控制系统、电源系统、遥测遥控子系统;所述控制系统包括敏感器、控制器和执行机构,其中所述敏感器和所述执行机构属于部件,控制器是若干处理器芯片的集合。
优选的,所述步骤二中,数字飞行器仿真结构拆分的方法包括如下步骤:
按照仿真需求,将数字飞行器配置为单机仿真版本、分布式仿真版本或嵌入式仿真版本;
根据数字飞行器配置确定数字飞行器仿真结构。
优选的,所述步骤二中,数字飞行器书写结构的拆分具体包括:
源代码书写模式包括但不限于固定代码拷贝模式、固定代码直接书写模式、基于有限选择的书写模式、基于有限规范的书写模式、基于推理的书写模式、基于智能决策的书写模式。
优选的,所述步骤三具体包括:
对于单一决策过程,直接调用数字飞行器决策拆分集;
对于遵循特定决策规范的决策过程,首先书写固定代码部分,然后根据输入的规范化描述记录书写可变代码部分,建立逻辑推理模块知识库,建立逻辑推理模块方法库,将书写过程中的计算公式转化为逻辑推理模块识别的规范结构,将计算流程转化为逻辑推理模块识别的规范结构,将复杂运算公式转化为每一步中可直接运算的公式;
对于根据固定逻辑推理的代码部分,采用prolog推理方法完成源代码书写;
对于没有固定源代码模板或具体书写规则时,通过机器学习预存的决策样本完成源代码书写;其中机器学习方法包括但不限于聚类、神经网络或遗传编程方法。
经由上述的技术方案可知,与现有技术相比,本发明的关键的技术是人工智能程序员,人工智能程序员是将人写程序的决策过程分解,根据不同的书写逻辑采用不同的人工智能决策方法完成数字飞行器源代码的书写工作。本发明与现有技术相比的优点在于:
(1)缩短飞行器仿真系统的开发周期,降低飞行器仿真系统的开发工作量;
通过对数字飞行器书写决策过程进行分解,能够将飞行器仿真系统的源代码规范化和模块化,缩减功能类似和冗余的代码,降低开发工作量。将不随飞行器变化而变化的源代码剥离,将非固定源代码提炼出各种能由机器执行的书写规则,使得源代码书写、编译和链接能够自动交由计算机完成。计算机进行源代码书写、编译和链接的执行效率远高于程序员,因此降低了飞行器仿真系统的开发周期。
(2)减少飞行器仿真系统对开发人员的编程要求,提高飞行器仿真系统的通用性。
源代码书写、编译和链接能够自动交由计算机完成,可以避免源代码因开发人员的不同以及不同开发人员编程习惯和能力的不同而产生的差异性,上述差异对飞行器仿真系统的开发、维护、移植和升级带来的额外工作量因而可以得到消除,飞行器仿真系统的通用性因而得以提高。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,图1为人工智能程序员书写数字飞行器源代码的决策分解方法的整体流程示意图。
1.建立数字飞行器的规范化描述的实现过程为:
(1)确定数字飞行器的目标元素集;
目标元素集是人在书写计算机程序源代码时,做出决策的依据与需要做出决策的内容。数字飞行器设计中目标元素的数据对象包括:轨道选择、轨道递推方法、主承力结构选择、稳定方式、姿态控制算法选择、敏感器选择、敏感器安装位置与数量、姿态控制执行机构的选择、部件构型、有效载荷选择。
一个目标元素集可能包括:选择对地观测卫星轨道高度(500km)、太阳帆板面积(4m2)、光学相机分辨率(1m)。在此条件下书写控制力矩陀螺部件的源代码。
(2)确定数字飞行器的模型参数集;
飞行器部件模型决策集是依据目标元素做出的决策,与上面的具体数据对象对应,例如:为控制力矩陀螺选用“含有轴承与电机等元件级模型的动力学解算方法”。除控制力矩陀螺这一个部件之外,对于动量轮,蓄电池,太阳帆板,充液储箱等其它部件的模型也采用类似的决策方法。
(3)按照目标元素集和模型参数集类型选择合适的规范化描述记录;
确定数字飞行器的目标元素集合模型参数集后,即可采用合适的规范化描述方法来记录这些信息。对于包含复杂关系的信息,采用数据库的形式记录和存储;对于具备树状结构的信息,采用可扩展标记语言文件记录和存储,其他参数和配置项可以采用文本文件记录和存储。
2.基于逻辑维分形特征,采用各种维分解方法,将数字飞行器、数字飞行器仿真结构和数字飞行器书写结构拆分为若干组成部分,构成数字飞行器的决策拆分集,具体实现过程为:
(1)采用各种维分解方法,将数字飞行器进行划分;
(1.1)从系统维的角度,将数字飞行器按照舱段、子系统和部件划分。数字飞行器划分为服务舱和有效载荷。对于航空器,服务舱为航空器本身主体,有效载荷包括武器系统和战斗部等;对于航天器,服务舱为航天器本身主体,有效载荷包括载人飞船的载人舱、卫星的相机天线设备等;
服务舱可划分为:服务舱结构、控制系统(航空器的飞行控制系统、航天器的轨道姿态控制系统)、推进系统、温度控制系统、电源系统、遥测遥控子系统;结构指支撑和承载飞行器的主体,根据形状划分为诸如承力桶结构、箱式结构、板式结构等;
控制系统所需部件包括敏感器和执行机构。敏感器包括陀螺、太阳敏感器、地球敏感器、星敏感器、磁强计、GPS、北斗定位设备、激光雷达、视觉相机等;执行机构包括精密轮、飞轮、控制力矩陀螺、推力器、磁力矩器等;控制系统还包括执行飞行控制的控制器模块;
温度控制系统即调节飞行器内部各处温度平衡的系统,包括热管、散热窗口和加热器等;
电源系统用以保证飞行器电能充足、调节电池充放电和各设备开关,包括太阳能电池阵、蓄电池、充放电调节器、调压器等;
遥测遥控子系统用以保证飞行器和地面通信,主要包括天线、转发器、放大器等;
推进系统用以执行控制操作,主要包括气瓶、燃料贮箱、氧化剂贮箱、管路和阀门等。
(2)采用维分解方法,将数字飞行器仿真结构进行划分;
(2.1)按照仿真需求,将数字飞行器配置为单机仿真版本、分布式仿真版本或嵌入式仿真版本。其他支撑工程包括动力学归档转发工程、测控解码转发工程、二维显示工程、三维演示工程。动力学归档转发工程负责将数字飞行器仿真的动力学数据转发给数据库进行归档,测控解码转发工程负责将数字飞行器发送的遥测包进行解码并转发给数据库进行归档,二维显示和三维演示工程负责给用户直观展示数字飞行器的实时飞行状态;
(2.2)单机版本,卫星服务舱和有效载荷均合并为一个工程,运行在一台计算机上;分布式版本,动力学解算作为独立工程,运行在单独的计算机上。各子系统分别拆分为独立的工程,运行在不同的计算机上。各子系统也可拆分到部件层面,敏感器作为一个独立工程,执行机构作为一个独立工程,控制器作为一个独立工程,分别运行在不同计算机上;嵌入式版本,动力学解算作为独立工程,运行在独立的上位机上。各部件单独作为一个工程,分别运行在独立的嵌入式板卡上;
(2.3)从系统维的角度,对数字飞行器仿真结构进行分解;
数字飞行器源代码文件包括以下几个部分:数字飞行器部件参数头文件包含、数字飞行器基础算法头文件包含、数字飞行器模块与部件个数宏定义、数字飞行器部件外部变量定义、数字飞行器部件静态变量定义、数字飞行器部件临时变量定义、数字飞行器部件函数声明、数字飞行器子系统、模块和部件功能实现函数定义;
(3)采用各种维分解方法,将数字飞行器书写结构进行划分;
(3.1)从系统界定维的角度,对数字飞行器书写结构进行划分;
源代码书写模式包括固定代码拷贝模式、固定代码直接书写模式、基于有限选择的书写模式、基于有限规范的书写模式、基于推理的书写模式、基于智能决策的书写模式等;
源代码书写过程包括数字飞行器规范化描述记录的信息读取过程、数字飞行器非固定源代码书写过程、数字飞行器源代码编译校验过程;
源代码书写过程的操作包括数字飞行器部件模型与算法固定代码片段文件读取操作、数字飞行器部件数据库和装配数据库查询操作、固定代码片段与部件库装配库路径寻址操作、数字飞行器固定源代码文件复制操作、数字飞行器源代码文件和头文件创建操作、文件书写操作、文件关闭操作、文件修改操作等;
(3.2)从数字飞行器源代码设计的角度,将数字飞行器源代码的书写方法进行划分;
动力学、电、热、磁多场耦合计算分别对应单独的源代码文件和配套的头文件。这些文件一般具备通用性,不随飞行器变化而变化;
部件作为数字飞行器的最小组成,每个部件书写为单独的一个源代码文件。不同部件类型和型号对应的源代码文件不同,但某个具体的部件类型型号的源代码文件是确定的,只需要根据需要调整部分参数(如安装位置、安装姿态)和决定是否启用部分功能(如误差、失效功能)即可;
控制器作为飞行器核心子系统,包括多个源代码文件。以卫星为例,数字卫星的姿轨控系统主要包括飞行流程文件、姿态确定文件、姿态控制文件、输入输出文件和相应的配套头文件;
3.针对数字飞行器决策拆分集,确定决策选择方法,完成数字飞行器源代码书写的实现过程为:
(1)对于划分得到的数字飞行器、数字飞行器源代码和数字飞行器源代码的书写方法,分别确定人的书写方法;
(1.1)固定不变的源代码。如不随飞行器改变而改变的底层算法函数(矩阵点乘、矩阵转置、矩阵求逆、矢量叉乘等数学函数)、底层功能函数(如硬件驱动函数、接口函数)、高层算法函数(如剔野算法函数、滤波算法函数)。人一般将这些函数开发完善后存放起来,等需要时直接拷贝粘贴到指定地点,或者包含进入工程中使用即可;
(1.2)主体结构基本不变的源代码,仅部分内容或幅值与具体飞行器有关。以数字卫星为例,敏感器初始化函数中的安装矩阵与该部件在卫星中的具体安装方式有关,敏感器误差模型与某次仿真的逼真度需求有关,人在书写这些源代码时,会根据实际情况修改对应变化的部分,而其他固定不变的源代码保持不变。并且,人在修改变化部分代码时,往往会遵循某些规则;
典型的主体结构不变但具体内容存在变化的代码如卫星的飞行历程源代码,飞行历程由一系列飞行模式和飞行方式组成,每个飞行方式中均由轨道姿态确定算法、轨滤波算法、道姿态控制算法、流程切换控制算法和控制指令分配逻辑算法组成,但不同的卫星有不同的飞行历程,不同的卫星不同的飞行历程中的具体算法选择不一样,同样的算法选择其具体算法参数不一样,需要根据实际情况进行修改;
源代码书写规范包括但不限于结构化总体编程规范、工程建立规范、文件建立规范、变量书写规范、函数书写规范、代码封装规范、集合的使用规范、对象/结构的使用规范、资源合理使用规范。
结构化总体编程规范针对自顶向下逐步细化的编程方法,包括顺序、选择、循环三种结构的规范书写方法,以及缩进、空行、注释、代码保护等的规范书写方法。
工程建立规范包括根据数据库中存储结果建立工程的执行方法。文件建立规范执行方法包括在文件、源代码生成程序、数据库中的固定源代码的存储和书写规范。
变量书写规范执行方法包括全局/内部变量书写规范,变量的类型选取规范、变量命名规范、变量使用规范。
函数书写规范执行方法包括函数整体的命名、返回值、形参、声明和调用以及函数内部的变量使用、表达式书写、循环使用、条件语句等规范。
代码封装规范执行方法包括对具有较强功能聚集性和独立性的功能模块(如数据库读写)封装成一个单独的类并设置合理的输入输出接口。
集合的使用规范执行方法包括对数组、List的书写规范。
对象/结构的使用规范执行方法包括对于一类实体或者某类实体中几个独立的子系统等相对独立的部分建立对象的规范,对具有紧耦合关系的变量建立结构的规范。
资源合理使用规范执行方法包括对于建立的数据库连接或文件读写操作,在对应打开的程序中结束使用后执行关闭操作。
(1.3)整体均改变的源代码,与具体飞行器有关,有固定的推理逻辑。以数字卫星为例,数字卫星所采用的推进系统构型,推进系统部件的种类、类型和个数,该决策影响整个卫星推进系统源代码的书写。决定卫星采用何种推进系统构型,与卫星的具体任务、飞行轨道高度、质量等因素有关,这些因素经过一系列逻辑推理可以得到最终推进系统的布局、推进系统所需部件的选型和个数设计,进而完成源代码开发;
(1.4)整体均改变的源代码,与具体飞行器有关。没有固定的源代码模板或者具体书写规则时,人会根据以往的数字卫星源代码书写经验和参考已有完成的数字卫星进行书写决策;
(2)分别选取人工智能决策方法;
(2.1)对于直接调用的源代码,直接采用调用策略;
(2.2)对于遵循某些规则或规范完成书写的源代码,首先书写源代码的固定部分,然后根据输入的规范化描述记录书写源代码中变化的部分;
针对算法公式,建立逻辑推理模块知识库,建立逻辑推理模块方法库,将公式转化为逻辑推理模块可以识别的规范结构,将计算流程转化为逻辑推理模块可以识别的规范结构,将复杂运算公式转化为每一步中可直接运算的公式。
逻辑推理模块识别的规范结构即为二叉树,其中运算符作为父节点,运算单元作为子节点,将复杂推理过程转化为若干单步完成的子推理过程,每个子推理过程可直接运算,即只需要1步就能完成计算。
建立逻辑推理模块知识库,包括但不限于变量类型,运算类型,解算算法等基本概念。在知识库中定义不同事实,包括但不限于变量类型事实,运算类型事实,解算算法事实。将公式转化为逻辑推理模块可以识别的规范结构,包括但不限于单元数运算和双元数运算。在知识库中检索找到运算优先级最高的运算作为运算实体,重复该过程直到将公式完整转化为运算类型,变量类型,运算实体。将计算流程转化为逻辑推理模块可以识别的规范结构,采用方法库中的解算算法流程确认方法,将将完整的算法流程分解为多个基本流程并列、嵌套的形式,基本流程包含流程类型、判断条件、具体实施。将复杂运算公式转化为每一步中可直接运算的公式。针对每个公式描述,获取算法描述中流程的三个关键信息(流程类型,判断条件,具体实施)和公式的三个关键信息(运算类型,变量类型,参与运算实体),进行源代码书写工作。
(2.3)对于根据固定逻辑推理得到的源代码,采用prolog等推理方法复现人的推理决策过程,完成源代码书写。
建立Prolog方法库保存人决策所需的知识和方法,根据输入的变化推理出最适合的书写规则,以规范化格式的文件或数据库保存。推理出各个工程、程序、文件源代码语言,输入输出方式、运行平台、变量定义的类型和方式、定义位置和声明位置,函数定义位置、声明位置、调用位置、形参个数、类型;
(2.4)对于没有固定源代码模板或具体书写规则时,参考人的书写决策方法,借鉴包含待书写源代码类似问题和对应书写方案的真实案例,将案例作为样本存储,通过机器学习的方法完成源代码书写,具体的机器学习方法包括但不限于聚类、神经网络或遗传编程;
聚类决策时,提取样本中待解决问题的特征,用特征向量表征。对生成的特征向量进行聚类操作,得到各类样本的一般解决方案并存储。在源代码书写时,将当前的书写问题划分到与之最接近的一类中,采用该类问题的解决方案进行源代码书写;
神经网络决策时,归纳样本中的输入输出信息,得到神经网络的输训练输入和训练输出。对神经网络进行训练后将成型神经网络存储。在源代码书写是,将当前的书写问题进行归纳后得到输入,将输入信息传递给神经网络得到网络输出,解析神经网络的输出得到对当前问题的决策;
遗传编程决策时,将样本中待决策的问题分解为若干小问题,作为遗传编程中终端集合的输入变量。确定遗传编程的终端集合、函数集合,随机产生原始种群,使用样本进行适应度测试。将当前的书写问题输入遗传编程得到的决策程序,获得输出并解析,得到针对当前书写问题的解决方案完成源代码书写。
针对具体的源代码进行具体书写决策举例。
1、将飞行器姿轨控子系统划分为敏感器、控制器、控制器和执行机构;
2、以陀螺敏感器为例,其他部件类似。陀螺模型的源代码书写为模型源代码文件(.c文件)。模型源代码文件包含陀螺模型所需的模型头文件包含代码、输入输出变量定义、模型参数变量定义、模型初始化函数、模型输入输出函数、模型计算函数等;
3、模型头文件包含代码逐条书写陀螺模型功能实现所需的头文件,包括系统内置头文件和自定义头文件。系统内置头文件如数学标准库头文件、系统标准输入输出头文件等,自定义头文件如陀螺安装矩阵信息头文件、陀螺数据传输通道定义头文件、组包格式定义头文件等;
4、自定义头文件名称按照规定的命名规范书写,如陀螺数据传输通道头文件名,根据通道采用的总线的不同,遵循不同的命名规范。如CAN总线,遵循“发送方+To+接收方+CANChannelNofor+飞行器实体名称+for+部件名称”的规范命名,又如UART总线,遵循“ulUART+发送方+To+接收方+ChannelNofor+飞行器实体名称+for+部件名称”;
5、输入输出变量定义包含固定变量书写和非固定变量书写。固定变量即为陀螺模型实现功能所依赖的不随模型变化而变化的通用变量,如计数变量、时间步进变量等;非固定变量与具体部件有关,对于陀螺而言,如陀螺电功率、陀螺敏感测量值、陀螺误差系数等。非固定变量定义在部件数据库中,在程序书写时检索数据库中对应类型和型号的陀螺,然后遍历其状态量逐行书写;
6、初始化函数书写时,遍历陀螺部件模型在部件数据库中状态量定义表中的初始取值,根据状态量所述子系统表进行分类,分为原理模型所需变量(如敏感值、常值偏差系数、随机游走系数)、温度控制系统所需变量(如热功率、温度)、电源系统所需变量(如电功率、电压、电流)、误差模型所需变量(随机游走系数、常值漂移参数)、故障模型所需变量(如故障模式编号)等,然后对各类别逐一书写子系统宏定义区块,在每个区块内逐行列写变量初始化语句;
7、模型输入输出函数书写时,检索信息传输配置数据库,遍历陀螺信息传输数据包,根据包格式逐一书写各数据传输包。以默认包格式的陀螺测量角速度数据包为例,逐一书写包头、包编号、各陀螺敏感测量值,最后书写包发送语句;
8、模型计算函数书写时,陀螺模型的主体源代码为部件数据库中的代码片段,书写时直接根据陀螺型号和类型检索到相应的代码片段进行拷贝操作即可;
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。