浦 玮, 刘清惓,c, 史雪雪, 王定奥
(南京信息工程大学 a.电子与信息工程学院;b.江苏省气象探测与信息处理重点实验室;c.江苏省大气环境与设备技术协同创新中心,南京 210044)
自动气象站温度传感器采用的自然通风防辐射罩易受到太阳辐射加热的影响,从而产生辐射误差[1]。由于防辐射罩的材料以及防辐射板外部的涂层材料不同,其反射太阳辐射的能力不同,即不同表面反射率的防辐射罩在复杂的大气环境下对传感器造成的辐射误差也不同。美国Young的41003自然通风防辐射罩在不同的大气环境下的辐射误差达到0.4~1.5 ℃,芬兰VAISALA的DTR500系列防辐射罩辐射误差[2]达到-0.1~0.2 ℃。气温是自动气象站观测的一项重要数据,相对准确的观测结果对大气科学以及天气气候的预测、气候变化的研究具有重要意义。根据唐国利[3]的研究结果,自1873年以来,中国气候呈显著增暖趋势,其中年平均气温约上升了0.96 ℃,年平均最高、最低气温分别上升约1.20 ℃和0.70 ℃,20世纪初以来,平均气温升高约0.80 ℃。鉴于上述资料,自动气象站需提供更加准确的观测数据,才能更为准确地研究我国气温变化。
为提升自动气象站温度传感器温度测量的准确性,对自然通风防辐射罩进行辐射误差分析与修正,本文提出采用计算流体力学(Computational Fluid Dynamics,CFD)[4-5]方法,获得不同太阳辐射强度、风速、表面反射率下的自然通风防辐射罩的辐射误差。采用BP神经网络算法对计算结果进行拟合,获得辐射误差修正方程。通过CFD方法对防辐射罩进行仿真数值分析,得到一组离散的辐射误差值。将这组辐射误差值作为BP神经网络的预测模型进行训练,对比训练结果与BP预测结果,尝试获得高精度的辐射误差修正方程,并开发Web平台将拟合的辐射误差修正方程实际应用。
本文采用商用软件ANSYS SpaceClaim对自然通风防辐射罩进行模型仿真,其仿真模型结构示意图如图1所示。
图1 自然通风防辐射罩仿真模型结构示意图
通过CFD建立自然通风防辐射罩以及外围空气域的物理模型,气流进口在防辐射罩左侧,右侧为气流出口,如图2所示。
使用ANSYS Meshing对计算流体物理模型进行网格划分,采用非结构化四面体网格划分技术,得到的四面体网格示意图,如图3所示。
使用有限元分析软件Fluent,以整个空气域作为计算流域,空气域6个面设置为壁面以及边界条件,对不同大气环境下的自然通风防辐射罩进行流-固耦合传热计算得到防辐射罩的温度场分布[6],当风速0.5 m/s、太阳辐射强度200 W/m2时,温度场分布情况如图4所示。
图2 计算流体物理模型示意图
图3 四面体网格示意图
图4 温度场分布图
从图4可以看出,在该环境下温度由左侧进风口向右侧压力出口递减,符合传热物理定律,通过CFD-POST计算可知自然通风防辐射罩升温为0.535 K。本文分别对不同风速下,防辐射罩表面反射率和辐射强度产生的辐射误差进行数值仿真分析,得到当表面反射率为80%时,由风速和太阳辐射强度计算出来的辐射误差值,如图5所示。
图5 不同太阳辐射强度时的辐射误差
当太阳辐射强度为1 kW时,由表面反射率和风速计算出来的辐射误差值如图6所示。
计算结果表明,辐射误差与太阳辐射强度、表面反射率呈正相关,与风速呈负相关,并且可以看出太阳辐射强度对辐射误差的影响更为显著。
图6 不同表面反射率时的辐射误差
BP神经网络学习过程[7]为信号的正向传播与误差的反向传播两个过程。1989年,Robert Hecht-Nielsen证明了对于任何闭区间内的一个连续函数都可以用一个隐含层的BP网络来逼近,即万能逼近定理,所以一个3层的BP网络可以完成任意的m~n维的映射。
信号的正向传播为逐层波浪式地传递输出值,输入样本不经过计算从输入层进行输入。本文将仿真结果太阳辐射强度、风速、表面反射率作为BP神经网络的输入,则输入层的节点个数为3,以辐射误差为输出,输出层节点个数为1。
在BP神经网络中,输入层和输出层的节点个数都是确定的,而隐含层通过激活函数,根据经验公式:
(1)
式中:h为隐含层节点数目;m为输入层节点数目;n为输出层节点数目;a为1~10之间的调节常数,运用试凑法确定网络隐含层节点个数为6。
若输出层的实际输出与期望的输出不等,则转到误差反向传播阶段,反向传播的基本思想就是通过计算输出层与期望值之间的误差来调整网络参数,从而使得误差变小。信号的正向传播与误差的反向传播的各层权值不断调整,网络不断学习训练来得到最佳的绝对误差。具有一个隐层的三层BP神经网络能在闭集上以任意精度逼近任意非线性函数[8]。因此本文选择单隐层BP神经网络,结构如图7所示。
图7 3层神经网络结构图
采用基于Matlab的BP神经网络经行辐射误差预测,编程代码简单、调试方便、运行效率高,其BP神经网络工具箱功能强大[9]。由于BP神经网络输入参数的数据范围较大且单位不统一,所以在训练神经网络前需要对数据进行归一化处理,即将数据映射到[0,1]或[-1,1]区间。将网络的学习速率设为0.05,训练结果设为0.000 004,训练次数设为5 000,按照设定好的网络结构编写程序进行训练。
记录下完成训练后BP神经网络各层的权值与阈值,并且由此得出拟合公式,输出更高精度的辐射误差,
ΔT=purelin{tansig(PWi1+vWi2+
RWi3+θi)Wki+ak}
(2)
式中:Wi1、Wi2、Wi3分别为辐射强度P、风速v和表面反射率R对应的由隐含层到输入层的权值,输入层神经元为3,输出层为1,则j=3,k=1;Wki为输出层到隐含层的权值;θi为隐含层阈值;ak为输出层阈值,
αk=2.356 183
为验证算法的可靠性,将BP的预测结果与仿真结果进行对照,如图8所示。
图8 仿真输出与训练输出对照结果
结果表明,仿真输出的辐射误差值与训练输出辐射误差值基本吻合。为了更加直观地分析结果,将仿真输出与训练输出相减得到绝对误差,如图9所示。由此可知,仿真输出与训练输出的绝对误差基本控制在[-0.001,0.002],说明BP神经网络数据拟合算法的拟合度较高。
图9 仿真输出与训练输出的绝对误差
本文用Java对完成训练后的BP神经网络得到的辐射误差修正方程进行封装,并开发算法修正平台方便从业人员的调用。Web平台是基于Node.js开发环境[10],Vue.js为开发框架[11],ElementUI、Echarts提供相应的组件库完成软件的前端开发[12],后台服务端使用的技术栈是SpringBoot框架[13],通过Spring-boot-jpa作为DAO层框架与MySQL数据库进行数据交互。
整个系统是一个3层的B/S结构[14],设计图如图10所示。用户在操作界面输入数据,逻辑层处理用户行为,并将Ajax请求[15]发送至服务器,服务器接收到请求后将所需的JSON数据[16]返回逻辑层,逻辑层再将数据返回给用户,实现了数据的动态加载。每次进入操作界面逻辑层会向CDN内容分发网络[17]初始化请求,CDN能够实时将用户请求导向离用户最近的服务节点上,提高数据接收速度和性能。
图10 软件系统设计图
如图11所示,是整个软件的主界面。第1部分是实时修正结果,用户设置常用防辐射罩型号,当前修正温度将会实时显示在界面上。第2部分用户输入温度、辐射强度、传感器型号,点击修正,经过调用辐射误差修正方法修正后,修正结果会在第3部分显示,同时保存修正历史数据。
(1) 应用计算流体力学的方法对自然通风防辐射罩进行数值分析,模拟出防辐射罩在太阳辐射下的温度场分布,获得在不同大气环境下的辐射误差。
图11 修正软件界面设计图
(2) 利用BP神经网络对离散的辐射误差进行数据拟合,绝对误差控制在[-0.001,0.002]。
(3) 用Java封装BP神网络拟合出的辐射误差修正公式,并进行了误差修正平台的开发和算法应用,增加了算法的实用性。