杨断利 李 今 陈 辉 耿浩川 王德贺 张 然
(1.河北农业大学信息科学与技术学院, 保定 071001; 2.河北农业大学动物科技学院, 保定 071000;3.辛集市动物疫病预防控制中心, 辛集 052360)
封闭蛋鸡舍环境中存在多种有害气体,主要包括氨气、硫化氢、二氧化碳等[1]。有害气体的存在会对蛋鸡的健康和生产性能产生不同程度的危害[2-4]。有害气体中的硫化氢容易引起鸡的肺部水肿,氨气容易引起鸡眼结膜发炎,二氧化碳浓度过高容易引起鸡呼吸困难[5-7]。目前,部分蛋鸡舍养殖条件较差,没有安装对养殖环境进行有效监测和调控的设备[8-9]。部分鸡舍安装有养殖环境监控设备,但往往将传感器测量的有害气体浓度数据直接用于系统调控,而并未对数据进行分析和处理[10]。气体传感器存在的交叉敏感性问题往往导致测量结果误差较大。
近年来,国内外对BP神经网络算法的研究已经相对成熟,BP神经网络以其非线性映射及并行处理的能力,常被用于解决因交叉敏感性而导致气体传感器测量精度不够的问题。但是,BP神经网络算法在训练过程中存在易陷入局部极小值的情况,致使测量精度的提高程度往往并不理想。为了进一步提高测量精度,利用改进粒子群算法(Improved particle swarm optimization,IPSO)优化BP神经网络模型,可明显改善BP神经网络易陷入局部极小值的现象。
国内对鸡舍有害气体监测系统的研究主要集中在数据采集和传输技术方面[11-13],利用智能算法对鸡舍有害气体数据进行处理的相关研究较少,本文设计开发蛋鸡舍有害气体监测系统,融合ZigBee无线传输[14-16]、传感器、STM32技术及智能算法,对目前鸡舍监控系统常用的MQ137、MQ136、MQ135、TGS2602和SGP30 5种型号传感器采集得到的数据进行优化处理,以期为改善现有鸡舍监控系统性能提供新方法。
鸡舍有害气体监测系统由3部分构成:有害气体数据采集端、服务器端和手机APP端。数据采集端利用ZigBee节点自组网形成无线传感器网络,将传感器采集得到的数据无线传输至协调器,协调器利用串口将数据传送至STM32模块,并保存至SD卡中。读取SD卡数据,利用IPSO优化BP神经网络模型,利用数据进行训练,从而得到优化模型。STM32利用GPRS模块进行远程连接,连接到服务器后,将数据传输至数据库进行保存。同时开发手机APP软件同步服务器数据,实现传感器数据实时显示,并可进行阈值设置,实现自动报警等功能。鸡舍有害气体监测系统总体结构如图1所示。
为了充分测量鸡舍内部多点有害气体浓度,系统采用8个ZigBee终端节点采集数据,1个ZigBee协调器节点接收数据。采用点对点通信方式,终端节点只能和协调器进行通信,其他任意两节点间都不能进行通信,确保了数据传输的安全性和可靠性[17]。每个终端节点连接5种型号传感器,各传感器的原理均为传感器的阻值变化引起电压变化从而反映浓度变化,各传感器参数见表1。
表1 传感器参数Tab.1 Sensor parameters
ZigBee协调器数据接收过程如图2所示,ZigBee协调器上电,系统初始化并设定数据接收总时间,搜索信道并创建网络,若有节点成功加入,则协调器为该节点分配网络地址并绑定,然后进行数据的接收和存储,同时根据数据接收总时间判断继续或结束。ZigBee终端节点利用5种型号传感器对有害气体的浓度进行采集。ZigBee终端节点数据采集过程如图3所示,终端节点上电,系统初始化并设定数据采集间隔及采集总时间,发送加入网络信息至协调器,若成功入网,则每隔5 min采集并发送一次数据至协调器,直至达到数据采集总时间。
采用STM32F103RCT6单片机进行数据的接收和传输,GPRS模块选择USR-GM3,ZigBee协调器和USR-GM3模块与单片机通信方式均采用串口通信。STM32有多个串口,本次蛋鸡舍有害气体监测系统利用串口1和串口2进行开发,电路原理如图4所示,将协调器的P0_2、P0_3引脚分别连接STM32的PA9(UART1_TX)、PA10(UART1_RX)引脚, USR-GM3模块的TXD、RXD引脚分别连接STM32的PA3(UART2_RX)、PA2(UART2_TX)引脚,系统电压为5 V。
STM32单片机主程序流程图如图5所示,初始化完成后,发送AT指令登录服务器;登录成功后,单片机进行数据读取;读取到数据后对数据进行解析,并将数据存储至SD卡;最后发送至服务器端。发送成功后,清空标志位并返回,读取下一个要发送的数据,继续上述过程,直至所有数据发送完成。
2.3.1BP神经网络
蛋鸡舍有害气体监测系统采用5种传感器构成的阵列对鸡舍中3种有害气体进行检测,设a1、a2和a3分别为3种有害气体浓度,传感器阵列对这3种有害气体的测量输出值di(i=1,2,3,4,5)是一个非线性方程组,表示为
(1)
式中fi(a1,a2,a3)——浓度与传感器响应值之间的映射关系
将式(1)简写成
D=F(A)
其中
A=(a1,a2,a3)
D=(d1,d2,d3,d4,d5)F=(f1(·),f2(·),f3(·),f4(·),f5(·))
式中A——浓度向量
D——传感器响应值向量
F——浓度向量与传感器响应值向量之间的映射关系向量
可以简单描述为
Y=H(D)
(2)
因此,为了求得Y=A,须求H=F-1,所以建立BP神经网络求出传感器响应输入与真实气体浓度输出之间的非线性关系。
建立优化蛋鸡舍内多气体传感器数据监测的BP神经网络模型,如图6所示,采用隐含层数为1的3层网络结构,输入层为5种型号传感器测量数据,输出层为3种气体真实值,隐含层神经元个数计算式为
(3)
式中NH——隐含层神经元个数
Ni——输入层神经元个数
N0——输出层神经元个数
L——常数
本次实验综合鸡舍内8个节点的数据进行BP神经网络模型训练,每个节点140个数据样本,共1 120个数据样本,随机选用1 000个作训练样本,剩余120个作测试样本。每个样本有5个输入, 3个输出。通过反复实验确定隐含层的传递函数为sigmoid,输出层的传递函数为purelin。在定义输入向量和输出向量时,对样本实验数据进行归一化处理,计算式为
(4)
式中xmax——同一传感器响应值的最大值
xmin——同一传感器响应值的最小值
YMAX——归一化最大值,取1
YMIN——归一化最小值,取-1
根据式(3)确定隐含层神经元个数为4~13,分别选取不同数量神经元的神经网络输出值与真实值进行对比,其平均相对误差对比结果如表2所示。结果表明,神经元个数为10时,3种气体的平均相对误差的平均数最小。所以最终选取隐含层节点个数为10。
表2 不同隐含层神经元数的神经网络输出值与真实值 平均相对误差Tab.2 Average relative error between the output value and the real value of the neural network with different hidden layers
2.3.2粒子群原理及改进
(1)粒子群原理
KENNEDY等[18]于1995年提出了粒子群优化算法。该算法因其简单易懂、容易求得网络全局的最优解,已经被广泛应用于很多领域[19-23]。本实验利用它优化BP神经网络存在的收敛速度慢、局部极小等问题。该算法中粒子依据自身以及其他粒子移动经验来改变并调节自身移动,适应度函数决定粒子质量[18]。所有粒子调整依据为
vi+1=ωvi+c1r1(pbest[i]-xi)+c2r2(gbest[i]-xi)
(5)
xi+1=xi+vi
(6)
式中c1、c2——学习因子,常数,通常取2
ω——惯性权重
r1、r2——0~1间的随机数
pbest[i]——粒子个体经历过的“最好”位置
gbest[i]——群体经历过的“最好”位置
vi——粒子当前速度
xi——粒子当前位置
(2) 学习因子和惯性权重改进
本实验设计粒子在初始搜索时有大的个体认知,小的群体认知。在结束时,有小的个体认知和大的群体认知。研究动态调整惯性权重ω策略时,发现权重ω较大时,搜索时易于跳出局部极小,权重ω较小时,算法收敛良好,因此本次实验最终采取权重线性递减策略实现前期搜索中的全局作用,后期搜索的局部作用。c1、c2、ω计算式为
(7)
c2=4-c1
(8)
(9)
式中mj——最大迭代次数
mi——当前迭代次数
cs——c1初始值,取4
ce——c1最终值,取1
ωs——权重ω初始值,取0.9
ωe——权重ω最终值,取0.4
由图7可知,改进后粒子群适应度收敛速度更快,不易陷入局部极小值。
经重复实验最终确定迭代次数为终止条件并设置为30,种群规模设置为20。然后进行种群初始化,以给定训练样本集的神经网络输出均方误差作为神经网络训练问题的适应度函数,迭代寻优更新,最终根据判断条件终止。将IPSO算法作用于BP神经网络,图8为IPSO优化BP神经网络流程图。
服务器端程序采用Java Mina框架。如图9所示,在主类MinaServer中分别开启STM32硬件端监听端口3001和手机APP端监听端口3000,并分别绑定SensorHandler处理类和AppHandler处理类。硬件端登录成功后,服务器端利用SensorHandler处理类进行数据标识DATA1的判断,若为DATA1则将数据存入数据库,否则发送心跳回复给硬件端。若一段时间后仍未接收到数据证明硬件端与服务器断连,则结束。手机APP软件登录成功后,在AppHandler类的messageReceived方法中,利用JSONObject解析APP发送的JSON格式的数据,然后通过receivejson.getInt(“TYPE”)获取TYPE类型,在switch(TYPE)中判断类型值然后执行对应代码,并发送数据给手机APP。判断是否成功发送数据,若发送成功,则继续监听并解析收到的数据,否则延时一段时间再次发送,若仍未发送成功则证明服务器与手机APP断连,则结束。
手机APP设计时采用一个Activity管理多个Fragment的方式,这种方式的优点是界面切换方便[24],在每一个Fragment类中,首先重写onCreateView方法,应用该方法调用LayoutInflater对象的inflate方法,用来设置显示界面和定义控件,利用View.findViewById方法将控件的ID传入,即可获得布局控件的实例对象,在代码中可动态管理控件的位置、文本和颜色信息。如图10所示,主活动MainActivity管理欢迎、登录、修改密码、注册账号和主界面,主界面中关联我的界面和设备界面,设备界面下关联开关界面和传感器界面。手机APP主要开发界面如图11所示。
2020年8月8日在河北省保定市某封闭式养鸡场鸡舍进行测试实验。鸡舍内部尺寸为长27 m,宽7 m,檐高2.3 m,顶高2.7 m,2列鸡笼,每列鸡笼共3层,饲养2 500只鸡。为了充分地掌握鸡群各点气体浓度信息,如图1所示在每列鸡笼上均匀布置4个采集节点,共8个采集节点,8个采集节点分别布置在鸡笼下鸡粪传送带上方约5 cm处。1个协调器采集节点置于一侧鸡笼的中间位置。由于鸡舍中有害气体主要是粪便发酵产生的[25],并且由于北方夏季高温高湿的条件相较于其他3个季节更易促使粪便发酵,从而导致有害气体浓度相较其他3个季节变化更快、浓度更高,所以在本次实验中,测量季节选定为夏季。为了降温,夏季白天鸡舍一直处于通风状态,通风时间段为08:00—20:00。为了检验系统能否正常工作,系统安装时间为18:00,在18:00—20:00通风时间段内,系统测量到的氨气质量浓度保持在1.60 mg/m3左右,硫化氢质量浓度保持在0.15 mg/m3左右,二氧化碳质量浓度保持在1 334 mg/m3左右,系统工作正常。由于在通风时间段,气体浓度没有大的变化且较低,所以主要选择在不通风的时间段进行数据采集。在风机停止工作的20:00至次日08:00共进行了12 h的数据采集,采集工作顺利完成。在数据采集期间,传感器每隔5 min进行一次采集,为了将传感器测量值与有害气体真实值进行对比,采用保时安BH-90A型精密手持测量仪对各节点的数据进行采集,将手持仪采集到的数据作为真实值。考虑到人员频繁进入鸡舍会使鸡产生应激反应,并且气体浓度在30 min内的变化相对稳定,因此间隔30 min依次对8个采集节点利用手持仪进行测量。鸡舍内布置的8个节点共采集数据1 120个,达到了实验预期,证实了该系统的可行性。
经统计分析采集的1 120个数据样本,可以看出各传感器的测量值与真实值误差较大,如表3所示。
表3 各传感器测量值与真实值误差对比Tab.3 Comparison of error range between measured and true values of each sensor
分别利用BP神经网络模型和IPSO优化BP神经网络模型对1 000个样本训练完成后,保存网络,并利用120个测试样本进行测试,为了能在图中清晰地展现结果,随机选取20个测试样本数据作图,测试结果如图12所示。可以看出,利用BP神经网络模型处理后的数据比传感器测量数据接近真实值, IPSO优化BP神经网络模型处理后的数据,相比于BP神经网络模型处理后的数据更进一步接近真实值。
为了更客观地对模型进行评价,利用平均相对误差百分比和拟合优度两种评价指标对两种模型的处理结果进行对比。表4为120个测试样本在BP神经网络模型和IPSO优化BP神经网络模型下平均相对误差和决定系数的对比结果,从表4可以看出,利用IPSO优化BP模型优化鸡舍内有害气体数据,平均相对误差和拟合优度均优于BP神经网络模型。经IPSO优化BP神经网络后二氧化碳、氨气、硫化氢的平均相对误差为5.32%、8.78%和7.20%,优化效果良好。
表4 2种模型处理结果对比Tab.4 Comparison of processing results of two models
由表5可以看出,各传感器数据精度均有提高,其中SGP30型、MQ135型、MQ137型、MQ136型和TGS2602型传感器精度分别提高了12.94、29.4、21.05、30.45、29.83个百分点。实验结果表明,基于IPSO优化BP神经网络模型将传感器测得的数据进行优化处理,提高了有害气体数据精度,改善了传感器之间的交叉敏感问题。
表5 各传感器测量数据优化前后精度对比Tab.5 Comparison of measurement accuracy of each sensor before and after optimization %
以封闭蛋鸡舍有害气体精确监测为目的,设计并实现了结合ZigBee技术、STM32技术及IPSO优化BP神经网络智能算法的有害气体精确监测系统。系统实现了气体数据采集和存储、GPRS模块远程上传、手机APP端实时显示及数据超出阈值进行振动报警等功能。针对气体传感器因存在交叉干扰而导致鸡舍有害气体数据精度较低的问题,采用IPSO优化BP神经网络模型优化气体传感器测得的数据,有效提高了数据精度。实验结果表明,监测系统运行良好,实现了系统设计的功能,同时,利用IPSO优化BP神经网络模型处理后,3种有害气体的平均测量精度均不小于91.23%,能够满足对鸡舍有害气体精确监测的要求。该系统方便可靠、容易部署,且可移植性强,为禽舍养殖环境精确监测提供了有效手段。