数字卫星光学载荷成像源程序的人工智能书写方法
技术领域
本发明涉及人工智能程序员书写数字卫星源代码技术领域,更具体的说是涉及一种数字卫星光学载荷成像源程序的人工智能书写方法。
背景技术
“遥感”最早由美国于上世纪五十年代提出,泛指通过非接触方式,在远距离上对目标区域运用各种传感器获取有用信息的过程。这些传感器一般搭载于空基或天基平台,星载相机就是其中之一。美国1960年发射了KH-1型侦察卫星,并成功地执行了第一次任务,宣告了航天遥感时代的开始。与其他的遥感相机,如航空遥感相机相比,星载相机具有诸多优势:观测范围大,不受国界限制;观测重复周期短,几小时内即可对目标地域重复观测;运营成本低,虽然在研制阶段的投入较高,但是使用寿命较长,因此长期使用运营成本较低,得到了广泛的应用,而空间光学航天相机研究是一项高风险、高投入、高度复杂而又高精度的系统工程。
目前,工程设计、研发、测试过程中利用数字世界进行仿真验证的比例大大提升,卫星实物测试成本高,数字卫星的作用更加明显。其中,数字卫星光学载荷成像代码开发量大,每次开发都特别耗时耗力。
因此,如何提供一种省时省力的数字卫星光学载荷成像源程序的开发方法是本领域技术人员亟需解决的问题。
发明内容
有鉴于此,本发明提供了一种数字卫星光学载荷成像源程序的人工智能书写方法,解决了数字卫星光学载荷成像源程序开发耗时耗力的问题。
为了实现上述目的,本发明采用如下技术方案:
一种数字卫星光学载荷成像源程序的人工智能书写方法,包括:
S1:对数字卫星光学载荷成像源程序进行分解;
S2:将分解得到的代码片段存储至代码库中;
S3:建立瓦片库:将瓦片图像以及瓦片图像对应的坐标信息存储至固定路径的文件夹中,得到瓦片库;
S4:获取配置文件;
S5:根据所述配置文件、所述代码库和所述瓦片库书写数字卫星光学载荷成像源程序。
优选的,从文件、函数和语句三个层次对数字卫星光学载荷成像源程序进行分解。
优选的,从文件层次将数字卫星光学载荷成像源程序分解为:光学载荷成像界面初始化及用户交互源代码、光学载荷成像图像生成与处理源代码和辅助源代码。
优选的,从函数层次将光学载荷成像界面初始化及用户交互源代码分解为用户交互源代码和界面窗体初始化源代码。
优选的,从函数层次将光学载荷成像图像生成与处理源代码分解为接收函数、瓦片获取函数、瓦片拼接函数、瓦片剪裁函数和数据回传函数。
优选的,从语句层次将数字卫星光学载荷成像源程序分解为变量定义语句、变量赋值语句、函数声明语句、调用函数语句、条件判断语句、条件选择语句和循环语句。
优选的,所述用户交互源代码的书写过程包括:从所述代码库中拷贝相应的代码片段拼接而成;
所述界面窗体初始化源代码的书写过程包括:从所述配置文件中获取界面窗体属性信息;
根据所述属性信息和所述代码库中预先存储的关于界面窗体初始化的代码片段书写所述界面窗体初始化源代码。
优选的,所述接收函数、所述瓦片拼接函数、所述瓦片裁剪函数和所述数据回传函数的书写过程包括:从所述代码库中拷贝相应的代码,并拼接而成。
优选的,所述瓦片获取函数的书写过程包括:根据所述配置文件读取分辨率信息,并确定所述分辨率信息对应的瓦片级数信息;
根据所述瓦片级数信息书写瓦片获取函数。
优选的,所述辅助源代码的书写过程包括:从所述代码库中拷贝相应的代码片段并拼接。
优选的,还包括:对书写出来的数字卫星光学载荷成像源程序进行编译
经由上述的技术方案可知,与现有技术相比,本发明公开提供了一种数字卫星光学载荷成像源程序的人工智能书写方法,解决了数字卫星光学载荷成像源程序开发耗时耗力的问题,实现了对数字卫星光学载荷成像的源程序的智能书写。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1附图为本发明提供的照四叉树方式对瓦片进行编码的示意图;
图2附图为本发明提供的数字卫星光学载荷成像源程序的人工智能书写方法的流程图;
图3附图为本发明提供的获取有效区域的地图的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
首先,对卫星光学载荷成像的一些知识进行介绍。
为了更好的研究星载相机的成像特点,数字卫星光学载荷成像源程序的人工智能书写方法为星载相机仿真提供了技术基础,采用离线地图的方式解决了地球表面数据信息大的难题。
1、坐标系的定义:
地理坐标系:Google地图的地理坐标系以经纬度为单位。以本初子午线和赤道的交点为原点,横轴往东为正,纵轴往北为正。
墨卡托投影坐标系:它以米为单位,原点、横纵轴与地理坐标系一致。与地理坐标系通过墨卡托投影相互转换。
瓦片坐标系:Google地图由分辨率大小为256*256的图片无缝拼接而成,称为瓦片。瓦片坐标系的以180度(W),85.05113度(N)为原点,坐标系横轴往东为正,纵轴往南为正。瓦片坐标是对同一缩放级别下瓦片的编号,包括行号和列号,记为r和c。
像素坐标系:将瓦片坐标系中每张瓦片分割成256*256个像素点,则像素坐标系的最大值是瓦片坐标系最大值的256倍。原点、横纵轴与瓦片坐标系一致。
2、墨卡托投影
墨卡托投影是一种等角圆柱投影,如以赤道做x轴,根据等角条件推算出来的投影公式为:
x=Ae*λ
其中:Ae为赤道半径,λ为经度,φ为纬度,e为地球椭球体第一偏心率。实际计算中,将地球看作球体,将墨卡托投影公式简化如下:
x=Re*λ
Re为地球平均半径。当y等于πRe时,投影后的图正好为一个正方形,可得出纬度为85.05113°,所以Google地图最大纬度范围为±85.05113°,最大经度范围为±180°。x和y的取值范围均为[-20037508.342789220037508.3427892]。
3、快速索引码
Google地图有0-21缩放级别,记为m。缩放等级越高,图像显示越详细。0级全球地图为一张像素为256*256的图片,每放大一级就将原来级别中每张256*256的图片放大成四张256*256的图片。为了快速查找或遍历这些瓦片,Google地图采用qrst按照四叉树方式对瓦片进行编码,记为T,如图1。
4、Google地图算法
地图坐标系下的经纬度坐标(λ,φ)转换到瓦片坐标系下瓦片坐标(r,c)的公式如下:
其中:λ为经度,φ为纬度,m为缩放级数,r,c分别表示在当前级数m下瓦片的行列号。
对于同一经纬度坐标点(λ,φ),像素坐标和瓦片坐标实际上由缩放级数m决定,另外瓦片像素坐标与快速索引码之间存在二进制变换关系,将r和c变换成二进制后按位组合即可得到快速索引码。
5、离线瓦片数据库
采用开源软件进行地图数据的下载。从Google地图服务器上下载的瓦片名称为00r-00c.jpg格式,r和c为瓦片的行列坐标,将全球地图瓦片重命名成快速索引码之后存到本地硬盘之中。
6、BitMap
Bitmap是Android系统中的图像处理的最重要类之一。用它可以获取图像文件信息,进行图像剪切、旋转、缩放等操作,并可以指定格式保存图像文件。
7、DrawImage
DrawImage(Image,Rectangle,Rectangle,GraphicsUnit)在指定位置并且按指定大小绘制指定的Image的指定部分。
DrawImage(Image,Rectangle)在指定位置并且按指定大小绘制指定的Image。
DrawImage(Image,Int32,Int32)在由坐标对指定的位置0,使用图像的原始物理大小绘制指定的图像。
8、TCP(传输控制协议)
TCP是因特网中的传输层协议,使用三次握手协议建立连接。当主动方发出SYN连接请求后,等待对方回答SYN+ACK,并最终对对方的SYN执行ACK确认。这种建立连接的方法可以防止产生错误的连接,TCP使用的流量控制协议是可变大小的滑动窗口协议。
TCP三次握手的过程如下:
客户端发送SYN(SEQ=x)报文给服务器端,进入SYN_SEND状态。
服务器端收到SYN报文,回应一个SYN(SEQ=y)ACK(ACK=x+1)报文,进入SYN_RECV状态。
客户端收到服务器端的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established状态。
三次握手完成,TCP客户端和服务器端成功地建立连接,可以开始传输数据了。
建立一个连接需要三次握手,而终止一个连接要经过四次握手,这是由TCP的半关闭(half-close)造成的。具体过程如下:
(1)某个应用进程首先调用close,称该端执行“主动关闭”(active close)。该端的TCP于是发送一个FIN分节,表示数据发送完毕。
(2)接收到这个FIN的对端执行“被动关闭”(passive close),这个FIN由TCP确认。
(3)一段时间后,接收到这个文件结束符的应用进程将调用close关闭它的套接字。这导致它的TCP也发送一个FIN。
(4)接收这个最终FIN的原发送端TCP(即执行主动关闭的那一端)确认这个FIN。
9、UDP(用户数据包协议)
(1)UDP是一个无连接协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。
(2)由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等,因此一台服务机可同时向多个客户机传输相同的消息。
(3)UDP信息包的标题很短,只有8个字节,相对于TCP的20个字节信息包的额外开销很小。
(4)吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率、传输带宽、源端和终端主机性能的限制。
(5)UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链接状态表(这里面有许多参数)。
(6)UDP是面向报文的。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付给IP层。既不拆分,也不合并,而是保留这些报文的边界,因此,应用程序需要选择合适的报文大小。
下面重点介绍本发明涉及到的数字卫星光学载荷成像源程序的人工智能书写方法。
参加附图2,本发明实施例公开了一种数字卫星光学载荷成像源程序的人工智能书写方法,包括:
S1:对数字卫星光学载荷成像源程序进行分解;
S2:将分解得到的代码片段存储至代码库中;
S3:建立瓦片库:将瓦片图像以及瓦片图像对应的坐标信息存储至固定路径的文件夹中,得到瓦片库;
S4:获取配置文件;
S5:根据配置文件、代码库和瓦片库书写数字卫星光学载荷成像源程序。
为了进一步优化上述技术方案,从文件、函数和语句三个层次对数字卫星光学载荷成像源程序进行分解。
为了进一步优化上述技术方案,从文件层次将数字卫星光学载荷成像源程序分解为:光学载荷成像界面初始化及用户交互源代码、光学载荷成像图像生成与处理源代码和辅助源代码。
为了进一步优化上述技术方案,从函数层次将光学载荷成像界面初始化及用户交互源代码分解为用户交互源代码和界面窗体初始化源代码。
为了进一步优化上述技术方案,从函数层次将光学载荷成像图像生成与处理源代码分解为接收函数、瓦片获取函数、瓦片拼接函数、瓦片剪裁函数和数据回传函数。
其中,瓦片获取函数根据地图缩放级别、所需区域的中心点坐标和经纬度跨度,获取区域内所有瓦片。获取区域内所有瓦片的算法如下:
(1)计算出显示区域左下点和右上点的经纬度坐标,转换为瓦片行列坐标;
(2)得到该区域内所有瓦片的瓦片行列坐标,瓦片的总行数R和总列数C;
(3)根据每个瓦片的行列坐标,由坐标变换得到快速索引码;
(4)根据瓦片的快速索引码从离线地图瓦片数据库中取出瓦片。
如图3所示,实线区域为所需的所有瓦片,虚线区域为有效区域。要获取有效区域的地图,必须获取9块瓦片,将瓦片拼接成一张大图后,还需要剪裁出所需图幅的图片。
进一步地,瓦片拼接函数主要根据接收到的星下点坐标确定拍摄区域,依据拍摄区域确定地图瓦片的组成,将瓦片拼接成整张图片。在VS2010环境下,利用C#语言编程实现瓦片的拼接。利用BitMap画出一幅宽为R×256,长为C×256的图片,采用DrawImage方法将从离线地图数据库中取出的所有瓦片以行列坐标均最小的瓦片为位置基准添加到图片中,即可完成瓦片的拼接。
进一步地,瓦片剪裁函数实现对拼接后的大图进行适当剪裁,取出有效图幅。拼接之后可知道大图所涵盖区域的经纬度跨度,于是可计算出有效区域的左上角坐标相对于大图左上角坐标的位置,将有效区域的经纬度跨度换算成像素之后,可知有效图幅的大小。最后利用DrawImage方法从大图中裁取出拍摄区域对应的图片。
进一步地,数据回传函数完成剪裁后数据的回传。
为了进一步优化上述技术方案,从语句层次将数字卫星光学载荷成像源程序分解为变量定义语句、变量赋值语句、函数声明语句、调用函数语句、条件判断语句、条件选择语句和循环语句。
为了进一步优化上述技术方案,用户交互源代码的书写过程包括:根据需求从代码库中拷贝相应的代码片段拼接而成;其中,所述的需求实际是指成熟代码的顺序和逻辑。
界面窗体初始化源代码的书写过程包括:从配置文件中获取界面窗体属性信息;
根据属性信息和代码库中预先存储的关于界面窗体初始化的代码片段书写界面窗体初始化源代码。
为了进一步优化上述技术方案,接收函数、瓦片拼接函数、瓦片裁剪函数和数据回传函数的书写过程包括:从代码库中拷贝相应的代码,并拼接而成。
为了进一步优化上述技术方案,瓦片获取函数的书写过程包括:根据配置文件读取分辨率信息,并确定分辨率信息对应的瓦片级数信息;
根据瓦片级数信息书写瓦片获取函数。
为了进一步优化上述技术方案,辅助源代码的书写过程包括:从代码库中拷贝相应的代码片段并拼接。
为了进一步优化上述技术方案,还包括:对书写出来的数字卫星光学载荷成像源程序进行编译。
下面结合具体实例对数字卫星载荷成像源程序的书写进行进一步论述。
1、对数字卫星光学载荷成像源程序进行维分解。
从文件层次分解为光学载荷成像界面窗体初始化与用户交互源代码FormImage.cs、光学载荷成像图像生成与处理源代码clsImage.cs、其他辅助源代码(clsCalculateHLB.cs,claDataTCPNet.cs,clsName.cs等)。
clsImage.cs文件中,从函数层次分解为以下函数:
①winDynamicImage—clsImage.cs—CopeMessagesStarTrack():介绍如何确定拍摄区域;
②winDynamicImage—clsImage.cs—GetTiles():介绍程序如何实现依据拍摄区域确定地图瓦片的组成;
③winDynamicImage—clsImage.cs—CombineTiles():介绍如何将瓦片拼接成整张图片;
④winDynamicImage—clsImage.cs—CutTiles():介绍如何对图片进行裁剪;
⑤winDynamicImage—clsImage.cs—SendImages():介绍裁剪完成后数据回传;
FormImage.cs文件中:从函数层次分解为以下函数:
①Initialization()函数:winDynamicImage\\bin\\Release\\Result下创建文件夹BitMap;
②ConsultInitialize()函数,加载winDynamicImage\\bin\\Release\\Source路径下的DynamicImage.xml;;
③ResolutionInitialize()函数,计算1-22级瓦片的分辨率;
④CameraConfig()函数,读取winDynamicImage\\bin\\Release\\Source路径下的DynamicImageCamera.xml。
⑤InitialJulianCenturyConfig()函数,读取winDynamicImage\\bin\\Release\\Source下的Time.xml;
⑥LoadDSConfig()函数,读取DSConfig.cfg文件。
⑦FromImage()函数,从指定的System.Drawing.Image创建新的System.Drawing.Graphics。
⑧DrawImage()函数,在指定位置并且按指定大小绘制指定的System.Drawing.Image的指定部分;
⑨Save()函数,将该System.Drawing.Image保存到指定BitMap路径下的.bmp类型的文件。
采以上只是分解出来的一些主要文件与函数,其余文件与函数不再一一罗列。
对数字卫星光学载荷成像源程序代码进行两次聚类。首先,对数字卫星光学载荷成像源程序代码按应用层次进行聚类根据代码应用的适用性聚类结果,将代码划分为系统层及应用层代码。系统层代码适用于所有涉及到的程序,作为程序底层代码为应用层提供支撑,具体包括光学载荷成像界面窗体初始化与用户交互源代码文件、其他辅助源代码文件。应用层代码实现程序各部分所独有的功能,包括光学载荷成像图像生成与处理源代码文件。然后针对系统层和应用层代码在不同工况下通用性进一步聚类,划分固定代码及可变代码。根据两次聚类的分支建立决策树,根据决策树为不同源代码文件和函数选用合适的人工智能书写方法。其中,本发明中采用的人工智能书写方法主要包括:源代码规范决策执行方法,后续再对源代码规范决策执行方法做进一步详细介绍。
以下为智能书写数字卫星光学载荷成像源程序的具体过程:
第一步:源代码片段库与瓦片库的建立
预先将光学载荷成像界面窗体初始化与用户交互源代码、光学载荷成像图像生成与处理源代码、辅助源代码分解为代码片段模板存储至代码库中。每个文件的源代码片段存放在一个文件夹中,该文件夹命名为该文件的名字,如clsImage文件夹。每个文件夹中分别按照函数名存放不同函数的代码片段,以及一个变量定义的代码片段。
每个瓦片以jpg格式的图片存于固定路径下Tiles文件夹下,其命名方式为快速索引码,例如tqqqqsrs.jpg;每个jpg格式图片对应一个txt格式文本,记录了该瓦片左上、坐下、右上、右下四个顶点的坐标值,且该文本以与对应图片同名,如tqqqqsrs.txt。
第二步:数字卫星装配
通过数字装配界面装配光学载荷,其参数包括像元大小、焦距、视场角、分辨率、从属卫星等,并设置好光学载荷的安装位置与安装姿态,将需要的光学载荷信息存入配置文件。
本例中采用xml文件的配置文件,其中的装配信息格式如下表1所示:
表1装配信息
节点 |
名称 |
备注 |
CameraName |
载荷名称 |
如视频相机 |
Index |
部件编号 |
光学载荷部件的编号,为一个整数 |
Mass |
载荷质量 |
|
Jx |
惯性张量 |
|
Jy |
惯性张量 |
|
Jx |
惯性张量 |
|
Jxy |
惯性张量 |
|
Jzx |
惯性张量 |
|
PixelSize |
像元大小 |
|
Description |
焦距 |
|
FileAngle |
视场角 |
|
DisplaySize |
分辨率 |
|
第三步:书写数字卫星光学载荷界面窗体初始化与用户交互源代码
数字卫星光学载荷界面窗体初始化与用户交互源代码为系统层代码,包括固定部分及可变部分。
其中用户交互源代码为固定部分,保存为固定的C#源文件形成代码库。使用时根据需求从代码库拷贝相应代码片段拼接而成。
用户交互源代码书写主要为鼠标交互代码,包括鼠标事件监测与事件响应源代码。鼠标事件监测源代码使用选择分支语句实现,监测事件主要包括:点击左键、点击右键和双击左键动作等。鼠标事件响应源代码使用选择分支语句实现,将鼠标操作一一对应到程序交互动作,比如:放大、缩小、平移等。
界面窗体初始化源代码为可变部分。可变部分主要为界面窗体的属性值,包括每一个控件的属性值,如如位置、尺寸、背景色、字号、行为、操作等。
预先将数字卫星光学载荷界面窗体属性信息存到配置文件中,在书写界面窗体初始化源代码时,首先从配置文件中读取相关信息,再根据属性信息书写界面窗体初始化源代码。
例如,窗体中有一个button控件,该控件的text属性为“按钮1”。则先把该控件text属性信息存于xml的一个节点中,书写的时候先读取xml该节点信息,把“按钮1”字符串存于生成程序的内存变量strText中,生成程序书写该控件text属性初始化的语句为:
swIO.WriteLine(“this.buttonOne.Text=\””+strText+”\””)
本例中配置文件采用xml文件,每一个控件的名字作为一个父节点,其属性信息存在该父节点的子节点中,如位置、尺寸、背景色、字号、行为、操作等。
第四步:书写光学载荷成像图像生成与处理源代码
光学载荷成像图像生成与处理源代码为应用层代码,包括固定部分及可变部分。其中固定部分为接收函数、瓦片拼接函数、瓦片剪裁函数和数据回传函数;可变部分分为瓦片获取函。
书写接收函数、瓦片拼接函数、瓦片剪裁函数和数据回传函数时,通过从代码库直接拷贝代码片段的方式拼接而成。
其中,接收函数接收来自动态模拟器的数字卫星实时信息,包括星下点轨迹、卫星姿态、包长度、包ID、数据类型。接收函数的输入参数应包括:动态模拟器传输数据的总线标识、包长度等。接收函数在接收到动态模拟器的数据包以后还应对数据包进行解包,提取出仿真数据。数据包使用结构体来表示,其中包含了数据包ID、数据包长度和数据内容。
瓦片获取函数书写时,需要根据数字卫星装配结果xml文件确定获取瓦片的级数,即将相机成像分辨率与瓦片缩放级数相对应,表2给出了两者的对应关系。为了方便确定所需瓦片级数,将该对应关系存入xml配置文件中。
书写瓦片获取函数时,首先从数字卫星装配结果xml文件读取相机成像分辨率信息,再从分辨率与瓦片级数对应关系xml文件中读取该相机分辨率对应的瓦片级数信息。根据瓦片级数信息书写出瓦片获取函数。书写该函数时,把读取到的瓦片级数赋值到人工智能程序员的内存变量中去,书写与瓦片级数有关语句时,把要书写的瓦片级数用该内存变量表示。
表2瓦片级数与分辨率对应关系
第五步:书写辅助源代码
辅助源代码为系统层代码,且是固定代码。通过从代码库直接拷贝代码片段的方式拼接而成。辅助源代码主要为一些底层源代码,主要包括坐标系变化、墨卡托投影、经纬度计算以及数据库和配置文件的操作源代码。
第六步:自动编译
在以上代码书写完成后,对数字卫星光学载荷程序源程序进行编译,若编译通过将生成可执行程序exe文件,并且将可执行程序exe文件和程序运行时需要的的配置文件都部署到数字卫星光学载荷程序程序文件中。
此外,还需要进行说明的是,本发明在书写各个部分代码的时候采用了数字飞行器源代码规范决策执行方法,简单说明就是基于成熟的代码并利用生成程序(即人工智能程序员)按照固定顺序或者逻辑进行书写。
例如:源代码中有一句#include“FederalNo.h”
则对应生成程序中用swIO.WriteLine(“#include\”FederalNo.h\””)语句来执行这一句源代码的书写。
生成程序的书写顺序和书写逻辑是写死在生成程序中的,是根据源代码的顺序和逻辑确定的。
人工智能程序员基于规范决策的执行方法的书写包括三种实现方式:1、根据输入信息,利用固化在其中的生成逻辑进行源代码书写;2、根据输入信息,挑选出需要拷贝的对应行和字段,直接拷贝或替换某些部分后拷贝;3、根据输入信息确定文件库路径信息,拷贝完整的文件或文件的一部分,或对文件中某些部分进行针对性替换后再拷贝。
下面具体的源代码规范决策执行方法包括:
步骤一,利用多种维分解方法对数字飞行器源代码进行多层次分解,得到最小分解结果;
分解方法主要包括代码层次、飞行器类型、系统维、仿真粒度,以及多种分解方法之间的交叉组合;
步骤二,对所述最小分解结果进行聚类,并建立数字飞行器源代码书写决策树;
该步骤可细分为以下两个小步骤:
(1)对最小分解结果进行聚类,给出聚类后分支的适用对象和适用条件聚类依据包括通用性、工作逻辑方式。
根据工作逻辑方式进行聚类,卫星中姿轨控子系统源代码主要包括姿态确定模块、姿态控制模块、模式监测和切换模块,导弹制导控制系统中包括飞行事件监测和切换模块、导引模块、控制模块,两种飞行器工作逻辑方式基本一致,因此实现方式聚为一类,聚类后结果将飞行器源代码运动控制部分分为三部分,第一部分为飞行器状态确定模块,第二部分为飞行过程的状态监测和满足特定情况切换逻辑模块,第三部分为飞行器运动控制模块。
(2)建立程序员书写数字飞行器源代码完整决策树:将源代码分解结果聚类后,建立决策树
步骤三,根据决策树分支情况建立执行规范书写操作的人工智能程序员;根据适用范围、变化频率、变化方式因素对源代码书写执行方法进行选择,建立智能程序员。
步骤四,利用所述人工智能程序员读取所需生成场景的配置信息生成数字飞行器仿真源程序。
该步骤可细分为以下两个小步骤:
(1)智能程序员读取所需生成场景包含飞行器配置信息
利用形成的人工智能程序员,读取书写数字飞行所需的配置文件输入信息。配置文件按照文件类型分解包括数据库、格式化文件(xml文件)、文件库等。配置文件根据适用性进行分解,包括所有飞行器通用、每种类型飞行器通用、每种型号特殊等。
(2)根据决策树分支适用条件进行逐层判定,获取源代码书写操作执行方法,执行书写操作自动生成源代码。
人工智能程序员中根据决策树分支语句进行决策树各层级分支的满足条件判定和筛选,查找书写过程中每步的所属最小分支。
根据每个分支的书写方法,通过源代码生成程序书写、数据库读取书写、文件直接拷贝、文件替换拷贝方式,完成完整数字飞行器系统源代码书写。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。