一种基于gru-attention和自适应模糊pid的煤泥水智能加药控制方法
技术领域
1.本发明涉及选煤技术领域,涉及一种煤泥水加药控制方法,具体是一种基于gru-attention和自适应模糊pid的煤泥水智能加药控制方法。
背景技术:2.煤泥水处理是选煤厂洗选工艺中的重要一环,从原煤脱泥到重介分选再到气泡浮选,对水的需求量极大,为保护环境,必须在选煤厂构建洗水闭路系统,实现洗水全部复用,消除煤泥水外排造成污染环境和资源浪费。对于大部分的选煤厂来说,自然沉降并不能满足洗水闭路循环需要,往往要对煤泥水的沉降过程添加絮凝剂和凝聚剂加强沉降效果,使得煤泥水在浓缩机中得到有效沉降。
3.目前煤泥水加药普遍采用人工加药的方式,通过人工将一定量的絮凝剂和凝聚剂加入到定量的清水桶中配制成一定浓度的溶液,然后将溶液加入到浓缩机絮凝剂缓冲桶中,工人根据溢流水水质的变化来调整加药量,加药量极易受到工人主观意识影响,造成药剂浪费或药效不足的情况,使得循环水浊度不稳定,导致大量细泥进入循环水系统,影响主选系统的分选精度和产品质量。
4.陕西神渭煤炭管道运输有限责任公司通过在进水管上加装电磁流量计和在线监测浊度仪,利用流量计和浊度计的数据作为反馈信息来确定加药量,但是由于检测滞后,在进水管上检测浊度,不能及时反应絮凝沉降过程的变化,所以这种方法不能克服滞后性大,鲁棒性弱等问题。
5.安徽理工大学发明的一种具备浓度检测功能的煤泥水自动化浓缩系统,通过监控不同高度所取煤泥水样品的实时重量,实现浓缩池内絮凝剂、凝聚剂和煤泥水的快速添加,确保浓缩池内煤泥水沉降效果始终趋于最优化范围内,但是这种方法是用煤泥水重量间接反应煤泥水浊度,不能准确反应絮凝沉降过程,所以这种方法不能克服加药不准确等问题。
6.针对目前煤泥水加药方式的加药不准确、滞后性大、非实时性等问题,结合复杂的工业现场环境,设计一种煤泥水智能加药控制系统尤为重要。
技术实现要素:7.本发明旨在提供一种基于gru-attention和自适应模糊pid的煤泥水智能加药控制方法,以解决现有技术中存在的加药不准确、滞后性大、非实时性等问题。
8.为了实现上述目的,本发明的构思是:
9.一种基于gru-attention和自适应模糊pid的煤泥水智能加药控制方法,总体而言是一种前馈+反馈控制,在浓缩池入料管道加装流量采集节点和浓度采集节点,在浓缩池溢流口安装浊度采集节点,分别检测入料煤泥水的流量、浓度以及溢流浊度,同时相应数据采集节点会对采样数据进行滤波处理,然后利用lora无线传输技术将滤波后数据传输至智能加药控制系统,再通过前馈计算模型计算获得初始加药量,接下来采用线性化卡尔曼滤波
算法对浊度数据作进一步滤波处理并通过gru-attention浊度预测模型预测得到预测值,再将该预测值作为反馈信号与浊度设定值进行对比,得到偏差e及其偏差变化率ec在不同时刻的取值,最后自适应模糊pid控制器根据偏差e及其偏差变化率ec输出不同的pid控制参数k
p
,ki,kd并通过变频器和计量泵组成的执行机构实现加药控制,使得溢流浊度精确追踪设定值,达到克服现有加药技术滞后性大和加药不准确等问题。
10.本发明的关键在于利用gru-attention浊度预测模型对未来的浊度变化趋势进行估计,预测出未来某个时间段的浊度,自适应模糊pid控制器再利用该预测值与浊度设定值的偏差e及其偏差变化率ec,根据给定的模糊规则进行模糊推理,最后对模糊参数进行解模糊,输出pid控制参数k
p
,ki,kd满足不同时刻的e和ec对pid参数自整定的要求。
11.一种基于gru-attention和自适应模糊pid的煤泥水智能加药控制方法,实现煤泥水智能加药,包括以下步骤:
12.步骤1:在浓缩池入料管道加装流量采集节点和浓度采集节点,在浓缩池溢流口安装浊度采集节点,分别采样入料煤泥水的流量、浓度以及溢流浊度,并采用限幅平均滤波法滤波处理;加装的采集节点由stm32,相应传感仪器及lora模块组成;
13.步骤2:数据无线传输,传输路径由数据采集节点,lora网关,上位机服务器程序组成;采集节点将数据通过lora上传至lora网关,lora网关收集各节点的数据并利用4g网络转发,上位机服务器程序对lora网关上传的数据进行存储,计算和展示;
14.步骤3:前馈加药控制,前馈控制器利用煤泥水入料实时流量和浓度,通过初始加药量前馈计算模型计算获得初始加药量;
15.步骤4:浊度数据预处理,智能加药控制系统获得步骤1经限幅平均滤波法处理的浊度数据后,利用线性化卡尔曼滤波算法针对浊度的数据特征对数据平滑处理,减少原始时间序列数据的噪声和异常波动,提高预测精度;
16.步骤5:gru-attention浊度预测模型,采用滑动窗口法对离线溢流水浊度数据处理得到离线数据集,利用离线数据集对gru-attention浊度预测模型进行训练,得到训练好的模型,将实时浊度与前n次的历史浊度组成一个时间序列输入该模型,以此得到溢流水浊度预测值;
17.步骤6:自适应模糊pid控制,将步骤5所得的溢流水预测浊度值作为反馈信号与浊度设定值进行对比,得到溢流水预测浊度值与其设定值的偏差e及其偏差变化率ec在不同时刻的取值,利用模糊规则进行模糊推理,对pid控制器三个参数k
p
,ki,kd进行参数调整,提升系统的适应能力,同时也能克服加药滞后性,精确完成加药量补偿。
18.根据上述发明构思,本发明采用的技术方案是:
19.一种基于gru-attention和自适应模糊pid的煤泥水智能加药控制方法,其特征在于,包括以下步骤:
20.步骤1,利用由stm32、相应传感仪器及lora模块组成的数据采集节点,实时检测入料煤泥水的流量、浓度以及溢流浊度,并采用限幅平均滤波法进行滤波处理;
21.步骤2,通过lora和4g无线传输,将数据采集节点处理得到的数据传输至智能加药控制系统;
22.步骤3,搭建初始加药量前馈计算模型,输入入料煤泥水的浓度和流量计算获得初始加药量;
23.步骤4,利用线性化卡尔曼滤波算法对实时浊度进行进一步数据平滑处理,减少原始时间序列数据的噪声和异常波动;
24.步骤5,通过将实时浊度与前m次的历史浊度组成一个时间序列输入训练好的gru-attention浊度预测模型,以此得到溢流水浊度预测值;
25.步骤6,利用预测浊度值与浊度设定值的偏差e及其偏差变化率ec在不同时刻的取值,对pid三个参数k
p
,ki,kd进行参数调整,并通过变频器和计量泵组成的执行机构,实现加药控制。
26.在所述步骤1中,包括以下步骤:
27.步骤1.1:浓缩池入料管道加装流量采集节点和浓度采集节点,在浓缩池溢流口安装浊度采集节点;相应数据采集节点由stm32、相应传感仪器及lora模块组成;
28.步骤1.2:利用限幅滤波算法消除随机干扰,比较相邻时刻的采样数值和对应上一时刻的滤波输出值yn和,根据经验确定两次采样允许的最大偏差;如果两次采样值的差值超过最大偏差范围,可认为发生随机干扰,并认为后一次采样值yn为非法值并丢弃;丢弃后,可用代替yn;若未超过所允许的最大偏差范围,则认为本次采样值有效;限幅滤波算法的公式为如下式(1):
[0029][0030]
其中yn是第n次采样数值,是第n-1次的滤波输出值,是第n次的滤波输出值,α是允许的最大偏差范围;
[0031]
步骤1.3:利用滑动平均滤波法对周期性干扰进行抑制,具体方法是把n个采样数据看成一个队列,其固定长度为n,每进行一次新的采样,把新的采样数据放入队尾,同时去掉队首的一个数据,由此更新数据队列,然后对队列中的n个采样数据,进行算术平均,即得到新的滤波值;滑动平均滤波的公式为如下(2):
[0032][0033]
其中,是第n次滤波输出值,y
n-i
是第n-i次采样值,n是递推平均项数,i表示0到n-1的整数值。进一步地,在上述步骤1.2中,本发明利用限幅滤波算法消除随机干扰,由于测控系统存在随机脉冲干扰,或由于变送器不可靠而将尖脉冲干扰引入输入端,从而引起检测信号的失真,导致原始数据中可能包含无效数据,而相邻时刻采样获得的煤泥水入料流量与浓度以及溢流水浊度数值差值应在给定的范围之内,比较相邻时刻的采样数值和对应上一时刻的滤波输出值。进一步地,在上述步骤1.3中,利用滑动平均滤波法对周期性干扰进行抑制,可对周期性干扰有良好的抑制作用,适用于高频振荡的系统。
[0034]
优选地,在所述步骤2中,包括以下步骤:
[0035]
步骤2.1:数据采集节点由stm32、相应传感仪器及lora模块组成,所有节点使用锂电池供电,无需外接电源,节点主要利用传感器模块获取入料煤泥水的流量、浓度以及溢流浊度,同时接收lora网关下达的控制指令,通过lora通信,上传数据至lora网关,完成数据的采集与转发;
[0036]
步骤2.2:lora网关与服务器建立socket连接,智能加药控制系统下发的查询指令
通过4g网络传送给lora网关,lora网关转发查询指令给指定的节点,节点下的传感设备根据查询指令选择上报数据,并通过节点
→
lora网关
→
智能加药控制系统上位机服务器,完成一次数据采集过程;智能加药控制系统下发的控制指令通过智能加药控制系统上位机服务器
→
lora网关
→
节点,完成一次指令下发过程;
[0037]
步骤2.3:智能加药控制系统上位机服务器对lora网关上传的数据进行存储,计算与展示,上位机服务器可实时查看各数据采集节点的入料煤泥水的流量、浓度以及溢流浊度数据信息。
[0038]
优选地,在所述步骤3中,包括以下步骤:
[0039]
步骤3.1:gui线程,即此部分程序的主线程,用来实时显示接收到的滤波数据;
[0040]
步骤3.2:上位机服务器监听线程,主要用来监听相应的端口等待客户端连接,当连接成功时可获得socket描述符,服务器检测到newconnection()信号时,在此信号对应的槽处理函数中获取连接socket,同时调用pthread_create()创建通信线程并将连接socket传入通信线程,服务器利用unodered_map容器存储和管理通信线程;
[0041]
步骤3.3:通信线程,主要用来处理单个socket上发生的读写事件;当socket接收缓冲区有新数据到来时,会触发readyread()信号,在readyread()对应的槽处理函数中读取数据;当有数据要发送时,利用write()函数向通信对象发送数据;
[0042]
步骤3.4:前馈模型计算线程,在完成一次读写事件后,利用qt的信号与槽机制触发调用pthread_create函数创建一个处于detached状态的前馈模型计算临时线程,通过初始加药量前馈计算模型计算获得初始加药量;前馈计算模型公式为(3),根据煤泥水的浓度和流量进行前馈控制,前馈计算模型的输入是入料煤泥水的浓度和流量:
[0043][0044]
其中,δq是加药量,α是影响因子,c1一般是固定的药液浓度,c是入料煤泥水的浓度,v是入料煤泥水的流量。
[0045]
优选地,在所述步骤4中,包括以下步骤:
[0046]
步骤4.1:利用线性化卡尔曼滤波算法对浊度数据作平滑处理;
[0047]
步骤4.2:qt c++使用pyobject类调用python中filterpy库实现的线性化卡尔曼滤波模块,以此实现qt调用python脚本。
[0048]
进一步地,在上述步骤4.1中,为进一步减少原始浊度时间序列数据的噪声和异常波动,提高浊度预测精度,根据浊度数据的非线性特征,利用线性化卡尔曼滤波算法对浊度数据作平滑处理。
[0049]
优选地,在所述步骤5中,包括以下步骤:
[0050]
步骤5.1:采用min-max归一化法,将原始浊度数据归一化在(-1,1)之间,计算公式为式(4):
[0051][0052]
其中,x为原始浊度数据,x
*
是归一化处理后的数据;x
mean
、x
max
和x
min
分别是样本数据的平均值、最大值和最小值;
[0053]
步骤5.2:采用滑动窗口法,对离线浊度数据处理,利用dataframe类中的shift()
函数将长度为m的浊度时间序列数据依次向下平移m,m-1,...,3,2,1,0行,得到维数为(m+m)
×
(m+1)的表,然后调用dropna()函数将含nan的行删除,表的维数更改为m
×
(m+1),基于上述数据处理,适合监督学习的浊度时间序列数据集被得到,该数据集的每一行是过去时间序列t-m,t-(m-1),...,t-3,t-2,t-1与当前t时刻的浊度,将浊度时间序列数据集划分为训练集和测试集,利用训练集迭代更新浊度预测模型参数,利用测试集评价模型的预测能力;
[0054]
步骤5.3:gru-attention浊度预测模型由gru网络层,attention层以及输出层组成;gru网络层由gru单元组成,其包含两个重要门控:复位门和更新门;复位门用于控制上一个状态向量h
t-1
进入gru的量更新门用于控制上一个gru单元的状态变量h
t-1
和新进入gru单元的向量对新状态向量h
t
的影响程度;attention层输入为经过gru网络层激活处理的输出向量,根据权重分配原则计算不同特征向量对应的概率,不断更新迭代出较优的权重参数矩阵;输出层通过全连接层计算出预测值;选取adam优化算法对模型参数进行优化,模型的损失函数使用均方误差函数;
[0055]
复位门主要根据公式(5)和(6)实现:
[0056]gr
=σ(wr[h
t-1
,x
t
]+br)
ꢀꢀꢀ
(5)
[0057][0058]
其中,h
t-1
为上一个gru单元的状态向量,x
t
为当前时间戳的输入,gr为复位门门控向量,wr和br为复位门的参数,σ(
·
)为sigmoid函数,为新进入gru单元的向量,wh和bh为权重参数,tanh(
·
)为tanh激活函数;
[0059]
更新门主要根据公式(7)和公式(8)实现:
[0060]gz
=σ(wz[h
t-1
,x
t
]+bz)
ꢀꢀꢀ
(7)
[0061][0062]
其中,gz为更新门门控向量,wz和bz为更新门的参数,σ(
·
)为sigmoid函数,h
t
是当前gru单元的状态向量;
[0063]
attention层根据公式(9)-(11)实现:
[0064]et
=u tanh(wh
t
+b)
ꢀꢀꢀ
(9)
[0065]
其中,e
t
表示第t个时间戳输入的gru单元的输出向量h
t
所决定的注意力概率分布值,u和w为权重系数,b为偏置系数;
[0066][0067]
其中,α
t
为历史输入信息的隐藏层对当前输入h
t
的第t个时间戳的注意力权重值,exp(
·
)为以自然常数e为底的指数函数,表示从第1个时间戳到当前第t个时间戳的历史输入信息之和,j为1到t的整数值;
[0068]
[0069]
其中,s
t
表示attention层在第t时刻的输出,其由attention层的输入向量(有m个)与公式(10)计算所得的注意力权重值加权求和计算得到,α
tht
表示第t个时间戳输入信息的相关程度,t为1到m的整数值;
[0070]
输出层根据公式(12)实现:
[0071]yt
=sigmoid(wos
t
+bo)
ꢀꢀꢀ
(12)
[0072]
其中,y
t
表示第t时刻的预测输出值,wo为权重矩阵,bo为偏差向量;
[0073]
步骤5.4:智能加药控制系统将实时浊度与前n次的历史浊度组成一个时间序列,由步骤4线性化卡尔曼滤波处理后输入到训练好的浊度预测模型,以此得到溢流水浊度预测值。
[0074]
优选地,在所述步骤6中,包括以下步骤:
[0075]
步骤6.1:确定自适应模糊pid控制器的输入量和输出量,以溢流水预测浊度值与其设定值的偏差e及其偏差变化率ec为输入变量,pid参数的修正量δk
p
,δki,δkd为自适应模糊pid控制器的输出量;
[0076]
步骤6.2:控制器进行模糊推理,首先定义自适应模糊pid控制器输入输出变量的模糊集为e,ec,δk
p
,δki,δkd={nb,nm,ns,ze,ps,pm,pb},论域定义为e,ec=[-3,3],δk
p
,δki,δkd=[-0.3,0.3],然后对系统偏差e及其偏差变化率ec进行模糊处理得到模糊输入偏差e和模糊输入偏差变化率ec;然后考虑不同时刻δk
p
,δki,δkd参数在控制系统中的作用及相互之间的关联关系,建立模糊调节规则表,最后根据模糊输入偏差e和模糊输入偏差变化率ec进行模糊规则表查询,确定pid控制参数修正量δk
p
,δki,δkd的模糊值;
[0077]
步骤6.3:自适应模糊pid控制器的反模糊化,采用重心法完成输出量的去模糊化过程,公式为(13):
[0078][0079]
其中,z0是去模糊化输出量的清晰值,z
λ
是模糊控制量论域的值,μc(z
λ
)是z
λ
的隶属度值,p为模糊控制量论域中的元素个数,λ为0到p的整数值;
[0080]
步骤6.4:利用步骤6.3反模糊化计算得到的pid控制器参数修正量δk
p
,δki,δkd实时修正pid参数,公式为(14)-(15):
[0081]k′
p
=k
p
+δk
p
ꢀꢀꢀ
(14)
[0082]k′i=ki+δkiꢀꢀꢀ
(15)
[0083]k′d=kd+δkdꢀꢀꢀ
(16)
[0084]
其中,k
p
,ki,kd为更新前pid控制器参数,δk
p
,δki,δkd为pid控制器参数修正量,k
′
p
,k
′i,k
′d是更新后pid控制器参数;
[0085]
步骤6.5:利用matlab通过步骤6.1到步骤6.4实现自适应模糊pid控制器并生成dll文件,智能加药控制系统调用该dll文件,实现自适应模糊pid控制并通过变频器和计量泵组成的执行机构实现加药控制。
[0086]
本发明与现有技术相比较,具有如下显而易见的突出实质性特点和显著的优点:
[0087]
1.本发明利用由stm32,相应传感仪器及lora模块组成的数据采集节点实时检测
入料煤泥水的流量、浓度以及溢流浊度,并采用限幅平均滤波法进行滤波处理;通过lora和4g无线传输技术将数据采集节点处理得到的数据传输至系统;搭建初始加药量前馈计算模型,输入入料煤泥水的浓度和流量计算获得初始加药量;利用线性化卡尔曼滤波算法对实时浊度进行进一步数据平滑处理,减少原始时间序列数据的噪声和异常波动;
[0088]
2.本发明通过将实时浊度与前m次的历史浊度组成一个时间序列输入训练好的gru-attention浊度预测模型,以此得到溢流水浊度预测值;利用该预测浊度值与浊度设定值的偏差e及其偏差变化率ec在不同时刻的取值对pid三个参数k
p
,ki,kd进行参数调整并通过变频器和计量泵组成的执行机构实现加药控制;
[0089]
3.本发明能够实现煤泥水智能加药控制,有效克服加药滞后性,增强了加药的实时性和准确性,使得溢流浊度能够精确追踪设定值,不依赖于人工,提高了选煤厂的经济效益与智能化水平。
附图说明
[0090]
图1为本发明的总体流程图。
[0091]
图2为本发明的控制框图。
[0092]
图3为本发明优选实施例的采集装置安装示意图。
[0093]
图4为本发明优选实施例的浊度预测模型结构图。
[0094]
图5为本发明优选实施例的自适应模糊pid控制器的模糊规则。
具体实施方式
[0095]
以下就本发明的优选实施例结合附图作进一步详细说明。
[0096]
实施例一
[0097]
参见图1,一种基于gru-attention和自适应模糊pid的煤泥水智能加药控制方法,包括以下步骤:
[0098]
步骤1,利用由stm32、相应传感仪器及lora模块组成的数据采集节点,实时检测入料煤泥水的流量、浓度以及溢流浊度,并采用限幅平均滤波法进行滤波处理;
[0099]
步骤2,通过lora和4g无线传输,将数据采集节点处理得到的数据传输至智能加药控制系统;
[0100]
步骤3,搭建初始加药量前馈计算模型,输入入料煤泥水的浓度和流量计算获得初始加药量;
[0101]
步骤4,利用线性化卡尔曼滤波算法对实时浊度进行进一步数据平滑处理,减少原始时间序列数据的噪声和异常波动;
[0102]
步骤5,通过将实时浊度与前m次的历史浊度组成一个时间序列输入训练好的gru-attention浊度预测模型,以此得到溢流水浊度预测值;
[0103]
步骤6,利用预测浊度值与浊度设定值的偏差e及其偏差变化率ec在不同时刻的取值,对pid三个参数k
p
,ki,kd进行参数调整,并通过变频器和计量泵组成的执行机构,实现加药控制。
[0104]
本实施例方法能够实现煤泥水智能加药控制,有效克服加药滞后性,增强了加药的实时性和准确性。
[0105]
实施例二
[0106]
在本实施例中,一种基于gru-attention和自适应模糊pid的煤泥水智能加药控制方法,总体而言是一种前馈+反馈控制,参见图1,在浓缩池入料管道加装流量采集节点和浓度采集节点,在浓缩池溢流口安装浊度采集节点,分别检测入料煤泥水的流量、浓度以及溢流浊度,同时相应数据采集节点会对数据进行滤波处理,然后利用lora无线传输技术将滤波后数据传输至智能加药控制系统,再通过前馈计算模型计算获得初始加药量,接下来采用线性化卡尔曼滤波算法对浊度数据作进一步滤波处理并通过gru-attention浊度预测模型预测得到预测值,再将该浊度值作为反馈信号与浊度设定值进行对比,得到偏差e及其偏差变化率ec在不同时刻的取值,最后自适应模糊pid控制器根据偏差e及其偏差变化率ec输出不同的pid控制参数k
p
,ki,kd,使溢流浊度精确追踪设定值,智能加药控制系统控制框图如图2所示。
[0107]
步骤1:利用数据采集节点实时检测入料煤泥水的流量、浓度以及溢流浊度,并采用限幅平均滤波法滤波处理;加装的数据采集节点由stm32,相应传感仪器及lora模块组成;
[0108]
步骤1.1:浓缩池入料管道加装流量采集节点和浓度采集节点,在浓缩池溢流口安装浊度采集节点,如图3所示;
[0109]
步骤1.2:利用限幅滤波算法消除随机干扰,由于测控系统存在随机脉冲干扰,或由于变送器不可靠而将尖脉冲干扰引入输入端,从而引起检测信号的失真,导致原始数据中可能包含无效数据,而相邻时刻采样获得的煤泥水入料流量与浓度以及溢流水浊度数值差值应在一定的范围之内,比较相邻时刻的采样数值和对应上一时刻的滤波输出值yn和根据经验确定两次采样允许的最大偏差。如果两次采样值的差值超过最大偏差范围,可认为发生随机干扰,并认为后一次采样值yn为非法值并丢弃,丢弃后,可用代替yn;若未超过所允许的最大偏差范围,则认为本次采样值有效;限幅滤波算法的公式为(1):
[0110][0111]
其中yn是第n次采样数值,是第n-1次的滤波输出值,是第n次的滤波输出值,α是允许的最大偏差范围;
[0112]
步骤1.3:利用滑动平均滤波法对周期性干扰进行抑制,可对周期性干扰有良好的抑制作用,适用于高频振荡的系统,具体方法是把n个采样数据看成一个队列,其固定长度为n,每进行一次新的采样,把新的采样数据放入队尾,同时去掉队首的一个数据,由此更新数据队列,然后对队列中的n个采样数据,进行算术平均,即得到新的滤波值;滑动平均滤波的公式为(2):
[0113][0114]
其中,是第n次滤波输出值,y
n-i
是第n-i次采样值,n是递推平均项数,i表示0到n-1的整数值;
[0115]
步骤2:通过lora和4g无线传输技术将数据采集节点处理得到的数据传输至智能加药控制系统;
[0116]
步骤2.1:数据采集节点由stm32,相应传感仪器及lora模块组成,所有节点使用锂电池供电,无需外接电源,节点主要利用传感器模块获取入料煤泥水的流量、浓度以及溢流浊度,同时接收lora网关下达的控制指令,通过lora通信技术上传数据至lora网关,完成数据的采集与转发;
[0117]
步骤2.2:lora网关与服务器建立socket连接,智能加药控制系统下发的查询指令通过4g网络传送给lora网关,lora网关转发查询指令给指定的节点,节点下的传感设备根据查询指令选择上报数据,并通过节点
→
lora网关
→
智能加药控制系统上位机服务器,完成一次数据采集过程,同样的,智能加药控制系统下发的控制指令通过:智能加药控制系统上位机服务器
→
lora网关
→
节点,完成一次指令下发过程;
[0118]
步骤2.3:智能加药控制系统上位机服务器对lora网关上传的数据进行存储,计算与展示,上位机服务器可实时查看各数据采集节点的入料煤泥水的流量、浓度以及溢流浊度数据信息;
[0119]
步骤3:搭建初始加药量前馈计算模型,输入入料煤泥水的浓度和流量计算获得初始加药量;
[0120]
步骤3.1:gui线程,即此部分程序的主线程,用来实时显示接收到的滤波数据;
[0121]
步骤3.2:上位机服务器监听线程,主要用来监听相应的端口等待客户端连接,当连接成功时可以获得socket描述符,服务器检测到newconnection()信号时,在此信号对应的槽处理函数中获取连接socket,同时调用pthread_create()创建通信线程并将连接socket传入通信线程,服务器利用unodered_map容器存储和管理通信线程;
[0122]
步骤3.3:通信线程,主要用来处理单个socket上发生的读写事件;当socket接收缓冲区有新数据到来时,会触发readyread()信号,在readyread()对应的槽处理函数中读取数据;当有数据要发送时,利用write()函数向通信对象发送数据;
[0123]
步骤3.4:前馈模型计算线程,在完成一次读写事件后,利用qt的信号与槽机制触发调用pthread_create函数创建一个处于detached状态的前馈模型计算临时线程,通过初始加药量前馈计算模型计算获得初始加药量;前馈计算模型公式为(3),根据煤泥水的浓度和流量进行前馈控制,前馈计算模型的输入是入料煤泥水的浓度和流量:
[0124][0125]
其中,δq是加药量,α是影响因子,c1一般是固定的药液浓度,c是入料煤泥水的浓度,v是入料煤泥水的流量;
[0126]
步骤4:利用线性化卡尔曼滤波算法进行进一步数据平滑处理;
[0127]
步骤4.1:为进一步减少原始浊度时间序列数据的噪声和异常波动,提高浊度预测精度,根据浊度数据的非线性特征,利用线性化卡尔曼滤波算法对浊度数据作平滑处理;
[0128]
步骤4.2:qt c++使用pyobject类调用python中filterpy库实现的线性化卡尔曼滤波模块,以此实现qt调用python脚本;
[0129]
步骤5:通过将实时浊度与前n次的历史浊度组成一个时间序列输入训练好的gru-attention浊度预测模型,以此得到溢流水浊度预测值,模型结构如图4所示;
[0130]
步骤5.1:采用min-max归一化法将原始浊度数据归一化在(-1,1)之间,计算公式为(4):
[0131][0132]
其中,x为原始浊度数据,x
*
是归一化处理后的浊度数据;x
mean
、x
max
和x
min
分别是样本数据的平均值、最大值和最小值;
[0133]
步骤5.2:采用滑动窗口法,对离线浊度数据处理,利用dataframe类中的shift()函数将长度为m的浊度时间序列数据依次向下平移m,m-1,...,3,2,1,0行,得到维数为(m+m)
×
(m+1)的表,然后调用dropna()函数将含nan的行删除,表的维数更改为m
×
(m+1),基于上述数据处理,适合监督学习的浊度时间序列数据集被得到,该数据集的每一行是过去时间序列t-m,t-(m-1),...,t-3,t-2,t-1与当前t时刻的浊度,将浊度时间序列数据集划分为训练集和测试集,利用训练集迭代更新浊度预测模型参数,利用测试集评价模型的预测能力;
[0134]
步骤5.3:gru-attention浊度预测模型由gru网络层,attention层以及输出层组成;gru网络层由gru单元组成,其包含两个重要门控:复位门和更新门;复位门用于控制上一个状态向量h
t-1
进入gru的量更新门用于控制上一个gru单元的状态变量h
t-1
和新进入gru单元的向量对新状态向量h
t
的影响程度;attention层输入为经过gru网络层激活处理的输出向量,根据权重分配原则计算不同特征向量对应的概率,不断更新迭代出较优的权重参数矩阵;输出层通过全连接层计算出预测值;选取adam优化算法对模型参数进行优化,模型的损失函数使用均方误差函数;
[0135]
复位门主要根据公式(5)和(6)实现:
[0136]gr
=σ(wr[h
t-1
,x
t
]+br)
ꢀꢀꢀ
(5)
[0137][0138]
其中,h
t-1
为上一个gru单元的状态向量,x
t
为当前时间戳的输入,gr为复位门门控向量,wr和br为复位门的参数,σ(
·
)为sigmoid函数,为新进入gru单元的向量,wh和bh为权重参数,tanh(
·
)为tanh激活函数;
[0139]
更新门主要根据公式(7)和公式(8)实现:
[0140]gz
=σ(wz[h
t-1
,x
t
]+bz)
ꢀꢀꢀ
(7)
[0141][0142]
其中,gz为更新门门控向量,wz和bz为更新门的参数,σ(
·
)为sigmoid函数,h
t
是当前gru单元的状态向量;
[0143]
attention层根据公式(9)-(11)实现:
[0144]et
=u tanh(wh
t
+b)
ꢀꢀꢀ
(9)
[0145]
其中,e
t
表示第t个时间戳输入的gru单元的输出向量h
t
所决定的注意力概率分布值,u和w为权重系数,b为偏置系数;
[0146][0147]
其中,α
t
为历史输入信息的隐藏层对当前输入h
t
的第t个时间戳的注意力权重值,
exp(
·
)为以自然常数e为底的指数函数,表示从第1个时间戳到当前第t个时间戳的历史输入信息之和,j为1到t的整数值;
[0148][0149]
其中,s
t
表示attention层在第t时刻的输出,其由attention层的输入向量(有m个)与公式(10)计算所得的注意力权重值加权求和计算得到,α
tht
表示第t个时间戳输入信息的相关程度,t为1到m的整数值;
[0150]
输出层根据公式(12)实现:
[0151]yt
=sigmoid(wos
t
+bo)
ꢀꢀꢀ
(12)
[0152]
其中,y
t
表示第t时刻的预测输出值,wo为权重矩阵,bo为偏差向量;
[0153]
步骤5.4:智能加药控制系统将实时浊度与前n次的历史浊度组成一个时间序列,由步骤4线性化卡尔曼滤波处理后输入到训练好的浊度预测模型,以此得到溢流水浊度预测值;
[0154]
步骤6:利用步骤5所得溢流水预测浊度值与其设定值的偏差e及其偏差变化率ec在不同时刻的取值对pid三个参数k
p
,ki,kd进行参数调整;
[0155]
步骤6.1:确定自适应模糊pid控制器的输入量和输出量,以溢流水预测浊度值与其设定值的偏差e及其偏差变化率ec为输入变量,pid参数的修正量δk
p
,δki,δkd为自适应模糊pid控制器的输出量;
[0156]
步骤6.2:控制器进行模糊推理,首先定义自适应模糊pid控制器输入输出变量的模糊集为e,ec,δk
p
,δki,δkd={nb,nm,ns,ze,ps,pm,pb},论域定义为e,ec=[-3,3],δk
p
,δki,δkd=[-0.3,0.3],然后对系统偏差e及其偏差变化率ec进行模糊处理得到模糊输入偏差e和模糊输入偏差变化率ec,接下来通过总结专家经验,考虑不同时刻k
p
,ki,kd参数在控制系统中的作用及相互之间的关联关系,建立模糊调节规则表,最后根据模糊输入偏差e和模糊输入偏差变化率ec进行模糊规则表查询,确定pid控制参数修正量δk
p
,δki,δkd的模糊值,模糊规则表如图5所示;
[0157]
步骤6.3:自适应模糊pid控制器的反模糊化,采用重心法完成输出量的去模糊化过程,公式为(13):
[0158][0159]
其中,z0是去模糊化输出量的清晰值,z
λ
是模糊控制量论域的值,μc(z
λ
)是z
λ
的隶属度值,p为模糊控制量论域中的元素个数,λ为0到p的整数值;
[0160]
步骤6.4:利用步骤6.3反模糊化计算得到的pid控制器参数修正量δk
p
,δki,δkd实时修正pid参数,公式为(14)-(16):
[0161]k′
p
=k
p
+δk
p
ꢀꢀꢀ
(14)
[0162]k′i=ki+δkiꢀꢀꢀ
(15)
[0163]k′d=kd+δkdꢀꢀꢀ
(16)
[0164]
其中,k
p
,ki,kd为更新前pid控制器参数,δk
p
,δki,δkd为pid控制器参数修正量,k
′
p
,k
′i,k
′d是更新后pid控制器参数;
[0165]
步骤6.5:利用matlab通过步骤6.1到步骤6.4实现自适应模糊pid控制器并生成dll文件,智能加药控制系统调用该dll文件实现自适应模糊pid控制并通过变频器和计量泵组成的执行机构实现加药控制;
[0166]
上述步骤1至步骤6完成了煤泥水智能加药控制,增强了加药实时性和准确性,使得溢流浊度能够精确追踪设定值。
[0167]
综上所述,上述实施例基于gru-attention和自适应模糊pid的煤泥水智能加药控制方法,包括如下步骤:利用由stm32,相应传感仪器及lora模块组成的数据采集节点实时检测入料煤泥水的流量、浓度以及溢流浊度,并采用限幅平均滤波法进行滤波处理;通过lora和4g无线传输技术将数据采集节点处理得到的数据传输至系统;搭建初始加药量前馈计算模型,输入入料煤泥水的浓度和流量计算获得初始加药量;利用线性化卡尔曼滤波算法对实时浊度进行进一步数据平滑处理,减少原始时间序列数据的噪声和异常波动;通过将实时浊度与前n次的历史浊度组成一个时间序列输入训练好的gru-attention浊度预测模型,以此得到溢流水浊度预测值;利用该预测浊度值与浊度设定值的偏差e及其偏差变化率ec在不同时刻的取值对pid三个参数k
p
,ki,kd进行参数调整并通过变频器和计量泵组成的执行机构实现加药控制;本发明上述实施例能够实现煤泥水智能加药控制,有效克服加药滞后性,增强了加药的实时性和准确性,使得溢流浊度能够精确追踪设定值,不依赖于人工,提高了选煤厂的经济效益与智能化水平。
[0168]
以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
技术特征:1.一种基于gru-attention和自适应模糊pid的煤泥水智能加药控制方法,其特征在于,包括以下步骤:步骤1,利用由stm32、相应传感仪器及lora模块组成的数据采集节点,实时检测入料煤泥水的流量、浓度以及溢流浊度,并采用限幅平均滤波法进行滤波处理;步骤2,通过lora和4g无线传输,将数据采集节点处理得到的数据传输至智能加药控制系统;步骤3,搭建初始加药量前馈计算模型,输入入料煤泥水的浓度和流量计算获得初始加药量;步骤4,利用线性化卡尔曼滤波算法对实时浊度进行进一步数据平滑处理,减少原始时间序列数据的噪声和异常波动;步骤5,通过将实时浊度与前m次的历史浊度组成一个时间序列输入训练好的gru-attention浊度预测模型,以此得到溢流水浊度预测值;步骤6,利用预测浊度值与浊度设定值的偏差e及其偏差变化率ec在不同时刻的取值,对pid三个参数k
p
,k
i
,k
d
进行参数调整,并通过变频器和计量泵组成的执行机构,实现加药控制。2.根据权利要求1所述的基于gru-attention和自适应模糊pid的煤泥水智能加药控制方法,其特征在于,在所述步骤1中,包括以下步骤:步骤1.1:浓缩池入料管道加装流量采集节点和浓度采集节点,在浓缩池溢流口安装浊度采集节点;相应数据采集节点由stm32、相应传感仪器及lora模块组成;步骤1.2:利用限幅滤波算法消除随机干扰,比较相邻时刻的采样数值和对应上一时刻的滤波输出值y
n
和根据经验确定两次采样允许的最大偏差;如果两次采样值的差值超过最大偏差范围,认为发生可随机干扰,并认为后一次采样值y
n
为非法值并丢弃;丢弃后,可用代替y
n
;若未超过所允许的最大偏差范围,则认为本次采样值有效;限幅滤波算法的公式为如下式(1):其中y
n
是第n次采样数值,是第n-1次的滤波输出值,是第n次的滤波输出值,α是允许的最大偏差范围;步骤1.3:利用滑动平均滤波法对周期性干扰进行抑制,具体方法是把n个采样数据看成一个队列,其固定长度为n,每进行一次新的采样,把新的采样数据放入队尾,同时去掉队首的一个数据,由此更新数据队列,然后对队列中的n个采样数据,进行算术平均,即得到新的滤波值;滑动平均滤波的公式为如下(2):其中,是第n次滤波输出值,y
n-i
是第n-i次采样值,n是递推平均项数,i表示0到n-1的整数值。3.根据权利要求1所述的基于gru-attention和自适应模糊pid的煤泥水智能加药控制方法,其特征在于,在所述步骤2中,包括以下步骤:
步骤2.1:数据采集节点由stm32、相应传感仪器及lora模块组成,所有节点使用锂电池供电,无需外接电源,节点主要利用传感器模块获取入料煤泥水的流量、浓度以及溢流浊度,同时接收lora网关下达的控制指令,通过lora通信,上传数据至lora网关,完成数据的采集与转发;步骤2.2:lora网关与服务器建立socket连接,智能加药控制系统下发的查询指令通过4g网络传送给lora网关,lora网关转发查询指令给指定的节点,节点下的传感设备根据查询指令选择上报数据,并通过节点
→
lora网关
→
智能加药控制系统上位机服务器,完成一次数据采集过程;智能加药控制系统下发的控制指令通过智能加药控制系统上位机服务器
→
lora网关
→
节点,完成一次指令下发过程;步骤2.3:智能加药控制系统上位机服务器对lora网关上传的数据进行存储,计算与展示,上位机服务器可实时查看各数据采集节点的入料煤泥水的流量、浓度以及溢流浊度数据信息。4.根据权利要求1所述的基于gru-attention和自适应模糊pid的煤泥水智能加药控制方法,其特征在于,在所述步骤3中,包括以下步骤:步骤3.1:gui线程,即此部分程序的主线程,用来实时显示接收到的滤波数据;步骤3.2:上位机服务器监听线程,主要用来监听相应的端口等待客户端连接,当连接成功时可获得socket描述符,服务器检测到newconnection()信号时,在此信号对应的槽处理函数中获取连接socket,同时调用pthread_create()创建通信线程并将连接socket传入通信线程,服务器利用unodered_map容器存储和管理通信线程;步骤3.3:通信线程,主要用来处理单个socket上发生的读写事件;当socket接收缓冲区有新数据到来时,会触发readyread()信号,在readyread()对应的槽处理函数中读取数据;当有数据要发送时,利用write()函数向通信对象发送数据;步骤3.4:前馈模型计算线程,在完成一次读写事件后,利用qt的信号与槽机制触发调用pthread_create函数创建一个处于detached状态的前馈模型计算临时线程,通过初始加药量前馈计算模型计算获得初始加药量;前馈计算模型公式为(3),根据煤泥水的浓度和流量进行前馈控制,前馈计算模型的输入是入料煤泥水的浓度和流量:其中,δq是加药量,α是影响因子,c1一般是固定的药液浓度,c是入料煤泥水的浓度,v是入料煤泥水的流量。5.根据权利要求1所述的基于gru-attention和自适应模糊pid的煤泥水智能加药控制方法,其特征在于,在所述步骤4中,包括以下步骤:步骤4.1:利用线性化卡尔曼滤波算法对浊度数据作平滑处理;步骤4.2:qt c++使用pyobject类调用python中filterpy库实现的线性化卡尔曼滤波模块,以此实现qt调用python脚本。6.根据权利要求1所述的基于gru-attention和自适应模糊pid的煤泥水智能加药控制方法,其特征在于,在所述步骤5中,包括以下步骤:步骤5.1:采用min-max归一化法,将原始浊度数据归一化在(-1,1)之间,计算公式为式(4):
其中,x为原始浊度数据,x
*
是归一化处理后的浊度数据;x
mean
、x
max
和x
min
分别是样本数据的平均值、最大值和最小值;步骤5.2:采用滑动窗口法,对离线浊度数据处理,利用dataframe类中的shift()函数将长度为m的浊度时间序列数据依次向下平移m,m-1,...,3,2,1,0行,得到维数为(m+m)
×
(m+1)的表,然后调用dropna()函数将含nan的行删除,表的维数更改为m
×
(m+1),基于上述数据处理,适合监督学习的浊度时间序列数据集被得到,该数据集的每一行是过去时间序列t-m,t-(m-1),...,t-3,t-2,t-1与当前t时刻的浊度,将浊度时间序列数据集划分为训练集和测试集,利用训练集迭代更新浊度预测模型参数,利用测试集评价模型的预测能力;步骤5.3:gru-attention浊度预测模型由gru网络层,attention层以及输出层组成;gru网络层由gru单元组成,其包含两个重要门控:复位门和更新门;复位门用于控制上一个状态向量h
t-1
进入gru的量更新门用于控制上一个gru单元的状态变量h
t-1
和新进入gru单元的向量对新状态向量h
t
的影响程度;attention层输入为经过gru网络层激活处理的输出向量,根据权重分配原则计算不同特征向量对应的概率,不断更新迭代出较优的权重参数矩阵;输出层通过全连接层计算出预测值;选取adam优化算法对模型参数进行优化,模型的损失函数使用均方误差函数;复位门主要根据公式(5)和(6)实现:g
r
=σ(w
r
[h
t-1
,x
t
]+b
r
)
ꢀꢀꢀꢀꢀꢀ
(5)其中,h
t-1
为上一个gru单元的状态向量,x
t
为当前时间戳的输入,g
r
为复位门门控向量,w
r
和b
r
为复位门的参数,σ(
·
)为sigmoid函数,为新进入gru单元的向量,w
h
和b
h
为权重参数,tanh(
·
)为tanh激活函数;更新门主要根据公式(7)和公式(8)实现:g
z
=σ(w
z
[h
t-1
,x
t
]+b
z
)
ꢀꢀꢀꢀꢀꢀꢀ
(7)其中,g
z
为更新门门控向量,w
z
和b
z
为更新门的参数,σ(
·
)为sigmoid函数,h
t
是当前gru单元的状态向量;attention层根据公式(9)-(11)实现:e
t
=utanh(wh
t
+b)
ꢀꢀꢀꢀꢀ
(9)其中,e
t
表示第t个时间戳输入的gru单元的输出向量h
t
所决定的注意力概率分布值,u和w为权重系数,b为偏置系数;其中,α
t
为历史输入信息的隐藏层对当前输入h
t
的第t个时间戳的注意力权重值,exp
(
·
) 为以自然常数e为底的指数函数,表示从第1个时间戳到当前第t个时间戳的历史输入信息之和,j为1到t的整数值;其中,s
t
表示attention层在第t时刻的输出,其由attention层的输入向量(有m个)与公式(10)计算所得的注意力权重值加权求和计算得到,α
t
h
t
表示第t个时间戳输入信息的相关程度,t为1到m的整数值;输出层根据公式(12)实现:y
t
=sigmoid(w
o
s
t
+b
o
)
ꢀꢀꢀꢀ
(12)其中,y
t
表示第t时刻的预测输出值,w
o
为权重矩阵,b
o
为偏差向量;步骤5.4:智能加药控制系统将实时浊度与前n次的历史浊度组成一个时间序列,由步骤4线性化卡尔曼滤波处理后输入到训练好的浊度预测模型,以此得到溢流水浊度预测值。7.根据权利要求1所述的基于gru-attention和自适应模糊pid的煤泥水智能加药控制方法,其特征在于,在所述步骤6中,包括以下步骤:步骤6.1:确定自适应模糊pid控制器的输入量和输出量,以溢流水预测浊度值与其设定值的偏差e及其偏差变化率ec为输入变量,pid参数的修正量δk
p
,δk
i
,δk
d
为自适应模糊pid控制器的输出量;步骤6.2:控制器进行模糊推理,首先定义自适应模糊pid控制器输入输出变量的模糊集为e,ec,δk
p
,δk
i
,δk
d
={nb,nm,ns,ze,ps,pm,pb},论域定义为e,ec=[-3,3],δk
p
,δk
i
,δk
d
=[-0.3,0.3],然后对系统偏差e及其偏差变化率ec进行模糊处理得到模糊输入偏差e和模糊输入偏差变化率ec;然后考虑不同时刻k
p
,k
i
,k
d
参数在控制系统中的作用及相互之间的关联关系,建立模糊调节规则表,最后根据模糊输入偏差e和模糊输入偏差变化率ec进行模糊规则表查询,确定pid控制参数修正量δk
p
,δk
i
,δk
d
的模糊值;步骤6.3:自适应模糊pid控制器的反模糊化,采用重心法完成输出量的去模糊化过程,公式为(13):其中,z0是去模糊化输出量的清晰值,z
λ
是模糊控制量论域的值,μ
c
(z
λ
)是z
λ
的隶属度值,p为模糊控制量论域中的元素个数,λ为0到p的整数值;步骤6.4:利用步骤6.3反模糊化计算得到的pid控制器参数修正量δk
p
,δk
i
,δk
d
实时修正pid参数,公式为(14)-(16):k
′
p
=k
p
+δk
p
ꢀꢀꢀꢀ
(14)k
′
i
=k
i
+δk
i
ꢀꢀꢀꢀ
(15)k
′
d
=k
d
+δk
d
ꢀꢀꢀꢀꢀꢀ
(16)其中,k
p
,k
i
,k
d
为更新前pid控制器参数,δk
p
,δk
i
,δk
d
为pid控制器参数修正量,k
′
p
,k
′
i
,k
′
d
是更新后pid控制器参数;
步骤6.5:利用matlab通过步骤6.1到步骤6.4实现自适应模糊pid控制器并生成dll文件,智能加药控制系统调用该dll文件,实现自适应模糊pid控制并通过变频器和计量泵组成的执行机构实现加药控制。
技术总结本发明提出一种基于GRU-Attention和自适应模糊PID的煤泥水智能加药控制方法,利用数据采集节点实时检测入料煤泥水的流量、浓度以及溢流浊度,并采用限幅平均滤波法进行滤波处理;将数据采集节点处理得到的数据传输至系统;搭建初始加药量前馈计算模型,输入入料煤泥水的浓度和流量计算初始加药量;利用线性化卡尔曼滤波算法对实时浊度进行数据平滑处理;利用训练好的GRU-Attention浊度预测模型,以此得到溢流水浊度预测值;对PID参数进行参数调整并通过变频器和计量泵组成的执行机构实现加药控制;本发明能实现煤泥水智能加药控制,有效克服加药滞后性,增强了加药实时性和准确性,使得溢流浊度能够精确追踪设定值,不依赖于人工,提高了选煤厂的经济效益与智能化水平。水平。水平。
技术研发人员:彭晨 杨陈 杨林顺
受保护的技术使用者:上海大学
技术研发日:2022.03.25
技术公布日:2022/7/5