桑德一,高绍忠,陆巍巍,姚 刚
(1.海军航空大学,山东烟台264001;2.91697部队,山东青岛266002)
岛礁上的气象环境和陆地上不同,岛礁上湿度大、盐度高、太阳辐射强,天气复杂多变,这样的自然环境势必会影响到作战指挥和武器效能的发挥。因此,实时掌握岛礁战场的气象环境至关重要。
全球的军事斗争形势复杂多变,战争模式已经开始向信息化、局部化和智能化的方向发展[1-2]。在这样的战争环境下,更快的传输速度,更方便的运用形式,更高可靠性的战场感知网络,更具体、更精确的战场气象环境数据成为打赢现代战场的重要基础和根本保障[3-4]。全球多国都投入大量资金和人力研究战场数据的采集和远程感知系统,其目的是实现对战场环境的更好感知,让战场的数据迅速传递给指挥层,成为信息优势,指挥层依据战场环境数据做出正确的指挥决策,从而形成作战优势[5-7]。
虚拟仪器是以计算机为平台,结合模块化、高性能的采集、测量硬件来完成各种数据的采集、测量、处理和显示的软件技术[8-9]。虚拟仪器技术可以通过平台编程进行仪器的自主定义,包括界面、操作、显示面板等。它可以充分调动计算机的运算资源,统一标准的软件、硬件也能满足定时和同步的需求,让原本硬件实现的功能软件化、让原本单一的方式灵活化[10-11]。
Labwindows/CVI 是美国虚拟仪器公司(National Instruments)出品的一款用于测量控制领域的计算机虚拟显示仪器开发平台[12]。此平台以C语言为编程语言,集成了丰富的C语言库函数,其功能强大、操作便捷的特点使得该产品在测量控制领域有着广泛的应用[13-14]。
本文选用Labwindows/CVI 作为虚拟仪器开发平台,设计了一套岛礁战场气象环境远程感知软件。可实时监控岛礁战场的气象环境信息,实现重要环境参数的趋势预测,实现对战场气象远程感知系统的远程控制和设备状态监视。
岛礁海洋环境和地理环境复杂,岛礁不同地点的气象数据会不相同。为此,可在岛礁战场的多个地点布置多套数据采集设备,进行不同测点的气象环境数据监测。岛礁战场某测点的温度是随着昼夜交替周期性变化的,并且受空气湿度、光照强度、风速、降雨、周围测点温度等因素的影响,是典型的时间序列数据。
进行时间序列数据预测的一个最有效的工具是循环神经网络模型(Recurrent Neural Network,RNN),它的隐含层节点状态可以记忆任意长度的时间序列数据。这几年,RNN 在图像识别、语音识别、特征提取、分类和自然语言处理等方面取得了优异的成绩。但是RNN在处理时间序列时,对长时间间隔节点的计算存在梯度爆炸或梯度消失的问题,长短期记忆网络(Longshort-Termmemory,LSTM)预测模型作为RNN的一个变种,与其他神经网络相比,RNN 的输出层结果不仅与当前输入层有关,而且与上一次迭代的隐含层结果有关,这就相当于让时间序列有了一定的记忆功能。在进行温度预测时,LSTM 预测模型对温度的变化趋势比较敏感,对处理长时间间隔的时间序列节点比RNN效果好,使温度预测精度有了很大提高。
训练神经网络的第一步是生成数据集,作为训练网络的输入。当前测点某一段时间之后的温度值与以下几个参数有关:当前测点的当前时刻温度、临近测点的当前时刻温度、当前测点的风速、当前测点的湿度、当前测点的光照强度、当前测点的降水量。表1是温度预测需用的变量名称及相应的符号表示。
表1 温度预测模型的变量说明Tab.1 Variable description of temperature prediction model
收集每个测点的以上数据,并用这些数据生成每个测点的神经网络数据集,进行各个测点的温度预测。以上数据采集的时间间隔为r,在时刻t,所有数据组成的向量用P( t )表示:
LSTM 网络的输入层是三维数据[samples,time_steps,features]。其中,samples 代表训练样本的数量;time_steps 代表时间的步长,即与当前数据有关的历史输入数据;features代表特征值,即向量P( t )。
使用最近的R 个网络状态来预测K 时刻之后的测点温度,参数设置为:time_steps=R,设预测时间K是数据采样间隔r 的整数倍,即k=K/r(K=1,2,…) 。也就是说,根据时刻t 的温度及其最近的R 个历史温度数据,来预测时刻t+k 的测点温度。若用fk表示待求解的模型,Tt+k表示t+k 时刻当前测点的温度,则预测行为可以表示为:
fk函数的输入输出数据对,构成了温度预测数据集的输入和输出。即,
构成了一层神经网络的输入输出数据对。
LSTM 用3 个门限作用在RNN 的节点上,来控制历史网络的记忆状态对当前网络计算结果的影响程度。图1是LSTM的结构示意图。
图1 LSTM的结构示意Fig.1 LSTM structure diagram
图1中,3个小圆圈表示添加的3个门限;Xn和Yn表示一次输入输出数据对,U、V 、W 表示权重,hn表示隐含层的状态,hn不仅与Xn有关,而且与前R 个隐含层输出有关。
3 个门限作用分别为:渐隐门限(forget gate)控制有多少个历史隐含层状态hn-1影响当前时刻hn;输入门限(input gate)控制有多少个当前时刻的输入值Xn保存到隐含层状态hn;输出门限(output gate)控制有多少个隐含层状态hn输出到当前时刻的输出值Yn。
3 个控制门限组成了LSTM 神经网络的基本单元。图2 是LSTM 神经网络一个基本单元的结构,其中,hn代表当前单元状态,fn代表渐隐门限,in代表输入门限,on表示输出门限。
图2 LSTM神经网络的基本结构Fig.2 Basic structure of LSTM neural network
当前单元输出:
当前单元状态:
渐隐门限fn可表示为:
输入门限in可表示为:
输出门限on可表示为:
其中,δ 代表sigmoid 函数,该函数作用在3 个门限上,δ 的输出是[0 ,1] ,它控制相应的信息是否应该通过本级网络,1 表示让所有信息通过,0 表示不允许信息通过。而tanh 函数作用在了当前状态和输出。W 代表权重,例如,Wi,x表示输入门限对应的上一状态的输出信息的权重,b 代表偏置。
采集了1 号测点从06:00 到18:00 共12 h 的气象数据(包括多个测点的温湿度、风速、光照、降水等数据),数据采集间隔是60 s。用06:00到12:00的数据对LSTM 网络模型进行训练,用12:00 到18:00 的数据进行测试和修正。LSTM 预测模型的参数设置为:R=60,K=1 800 s,即根据前一小时的历史数据预测距离当前时刻30 min 以后的温度值。
图3是1号测点的30 min 温度预测结果(从12:00到18:00的温度值)。红线代表实测温度,黑线代表预测温度。从图3 中可以看出,预测结果与实测结果保持一致,经计算,该预测模型的最大误差为0.25℃,RMSE值为0.036。LSTM预测算法能够精确地预测1号测点的30 min 温度。
经过多次不同参数的运行试验,当K 取值越小时,预测结果越精确,即越近时刻的温度越容易预测。但R 的取值并不是越大或越小越好,而是有一个最优值,且这个值与温度的变化剧烈程度有关,当温度变化缓慢时,R 越大预测结果越精确,反之,当温度变化快时,R 越大,预测结果越不准确。
图3 温度预测结果验证Fig.3 Verification of temperature prediction results
软件运行环境是监控室的工控机系统,用于岛礁战场气象环境的实时感知,须完成气象数据的实时采集、数据可视化、重要参数趋势预测、历史数据查询、远程控制和设备状态监视等功能。为此,设计了6 个功能模块,分别是人机交互模块、数据可视化模块、TCP 通信模块、数据采集与处理模块、状态反馈模块和终端控制模块。
软件的功能设计图如图4所示。
1)人机交互模块。实现整套系统与指挥人员的交互,指挥人员能通过操作界面对软件的各种功能进行选择,战场气象环境数据采集模块通过此模块接受指挥人员的控制。
2)数据可视化模块。主要功能是以多种形式展示战场气象环境的各类数据,指挥人员既可以查看不同测点的各类环境数据,又可以查看同类环境数据在整个岛礁战场的全局信息。
图4 软件模块设计Fig.4 Software function design diagram
3)TCP 通信模块。主要功能是以TCP/IP 协议完成工控机与采集终端的通信,保证数据和控制指令的有效传输。
4)数据采集与处理模块。主要功能是获取通信模块送来的环境数据,实现数据格式转换、降噪处理、数据存储等数据处理功能。
5)状态反馈模块。主要功能是把采集终端的状态信息回传给上位机,以便指挥员了解装备情况。
6)终端控制模块。主要功能是实现工控机对采集终端的控制,完成设备开关机、设备初始化、设备自检、开始或停止气象数据采集等设备控制任务。
为了实现对岛礁战场气象环境的实时感知和预测,软件的各个模块之间须要并行执行。将软件进程设计为主线程和多个子线程协同运行,主线程完成人机交互,子线程包括TCP 通信子线程、数据采集子线程、数据处理子线程、数据显示子线程。各个线程的执行有控制调用和数据传递关系。软件的线程间的调用关系如图5所示。
图5 软件线程控制图Fig.5 Software thread control diagram
CVI 环境下的多线程设计主要包括创建线程、设置线程标志和释放线程3个步骤:
1)创建线程函数用于创建一个新线程:CmtScheduleThreadPoolFunction();
2)在创建线程时,设置线程标志。设置线程标志的目的是区分不同的线程,便于对线程进行控制。
3)释放线程。当线程内函数功能执行完毕后应当及时释放线程。释放线程由“等待线程函数执行完毕”和“释放线程”2个函数完成,2个函数如下所示:
CmtWaitForThreadPoolFunctionCompletion();CmtReleaseThreadPoolFunctionID()。
本文提出的LSTM 温度预测模型,可精确地实现各测点30 min 级温度的预测,开发的岛礁战场气象环境数据远程感知软件,可完成岛礁战场气象环境数据采集、终端控制、数据可视化、数据预测、数据存储等任务,是实现战场环境远程控制监视的自动化、信息化、智能化的现代战场感知系统的重要组成部分。