基于改进蜂群算法和灰色模型的管道腐蚀预测 - 附代码

文章目录

  • 基于改进蜂群算法和灰色模型的管道腐蚀预测 - 附代码
    • 1.灰色模型(GM( 1,1) )原理
    • 2.GM(1,1)模型优化
      • 2.1 原始数据序列预处理
      • 2.2 背景值优化
    • 4.管道腐蚀预测
    • 3.参考文献
    • 4.Matlab代码

摘要:为了解决缺少大量数据样本情况下油气管道剩余寿命预测问题,采用 GM( 1,1) 模型预测管道腐蚀趋势。考虑到 GM( 1,1) 模型自身存在的缺陷,采用指数变换预处理原始数据和动态生成系数重构背景值两种方法改进GM( 1,1) 模型的建模过程,并运用改进的蜂群算法( IABC) 求解全局最优动态生成系数,进而建立改进的蜂群算法优化的指数变换灰色模型( IABC-EGM( 1,1) ) ;

1.灰色模型(GM( 1,1) )原理

灰色预测 GM( 1,1) 模型利用原始序列累加生成新的序列,使原本混乱的数据呈现出规律性,即使
只有较少的数据,也能得到良好的预测结果,其一般包括累加生成、建模求解、累减还原 3 个步骤,具体如下:

1)累加生成。

设X(0)={x(0)(1),x(0)(2),...,x(0)(n)}X^{(0)}=\{x^{(0)}(1),x^{(0)}(2),...,x^{(0)}(n)\}X(0)={x(0)(1),x(0)(2),...,x(0)(n)}​为原始非负数据序列;则X(1)={x(1)(1),x(1)(2),...,x(1)(n)}X^{(1)}=\{x^{(1)}(1),x^{(1)}(2),...,x^{(1)}(n)\}X(1)={x(1)(1),x(1)(2),...,x(1)(n)}​​为 X(0)X^{(0)}X(0) 的一阶累加生成序列,其中:
x(1)(k)=∑i=1kx(0)(i)(1)x^{(1)}(k)=\sum_{i=1}^kx^{(0)}(i)\tag{1} x(1)(k)=i=1∑k​x(0)(i)(1)
式子中,k=1,2,...,nk=1,2,...,nk=1,2,...,n

则Z(1)={z(1)(2),z(1)(3),...,z(1)(n)}Z^{(1)}=\{z^{(1)}(2),z^{(1)}(3),...,z^{(1)}(n)\}Z(1)={z(1)(2),z(1)(3),...,z(1)(n)}为X(1)X^{(1)}X(1)的紧邻均值生成序列,其中:
z(1)(k)=12[x(1)(k)+x(1)(k−1)](2)z^{(1)}(k)=\frac{1}{2}[x^{(1)}(k)+x^{(1)}(k-1)]\tag{2} z(1)(k)=21​[x(1)(k)+x(1)(k−1)](2)
式子中,k=2,3,...,nk=2,3,...,nk=2,3,...,n

2)建模求解

x(0)(k)+az(1)(k)=bx^{(0)}(k)+az^{(1)}(k)=bx(0)(k)+az(1)(k)=b​为 GM( 1,1)模型的灰微分方程,其白化微分方程为:
dx(1)(t)dt+ax(1)(t)=b(3)\frac{dx^{(1)}(t)}{dt}+ax^{(1)}(t)=b\tag{3} dtdx(1)(t)​+ax(1)(t)=b(3)
式中,aaa 为发展系数,bbb 为灰色作用量,均为待解参数,可通过最小二乘法估计 aaa 和 bbb 的值。
(a,b)T=(BTB)−1BTY(4)(a,b)^T=(B^TB)^{-1}B^TY \tag{4} (a,b)T=(BTB)−1BTY(4)
式中,B=[−z(1)(2)1−z(1)(3)1......−z(1)(n)1]B=\left[\begin{matrix} -z^{(1)}(2)&1\\ -z^{(1)}(3)&1\\ ...&...\\ -z^{(1)}(n)&1\\ \end{matrix}\right]B=⎣⎢⎢⎡​−z(1)(2)−z(1)(3)...−z(1)(n)​11...1​⎦⎥⎥⎤​​​,Y=[x(0)(2)x(0)(3)...x(0)(n)]Y=\left[\begin{matrix} x^{(0)}(2)\\ x^{(0)}(3)\\ ...\\ x^{(0)}(n)\\ \end{matrix}\right]Y=⎣⎢⎢⎡​x(0)(2)x(0)(3)...x(0)(n)​⎦⎥⎥⎤​​​

则白化微分方程的解为:
x(1)(t)=ba+[x(1)(1)−ba]e−a(t−1)(5)x^{(1)}(t)=\frac{b}{a}+[x^{(1)}(1)-\frac{b}{a}]e^{-a(t-1)}\tag{5} x(1)(t)=ab​+[x(1)(1)−ab​]e−a(t−1)(5)
GM( 1,1) 模型的时间响应序列为:
x(1)(k+1)∗=ba+[x(0)(1)−ba]e−ak(6)x^{(1)}(k+1)^*=\frac{b}{a}+[x^{(0)}(1)-\frac{b}{a}]e^{-ak}\tag{6} x(1)(k+1)∗=ab​+[x(0)(1)−ab​]e−ak(6)
式子中,k=1,2,...,n−1k=1,2,...,n-1k=1,2,...,n−1。

3)累减还原。原始数据序列还原值为
x(0)(k+1)∗=x(1)(k+1)∗−x(1)(k)∗(7)x^{(0)}(k+1)^*=x^{(1)}(k+1)^*-x^{(1)}(k)^*\tag{7} x(0)(k+1)∗=x(1)(k+1)∗−x(1)(k)∗(7)

2.GM(1,1)模型优化

2.1 原始数据序列预处理

当处理某些光滑度不足的数据序列时,灰色模型的精度会大大下降,常见方法是采用数据变换预
处理原始数据以提高其光滑度 。本文采用指数函数变换预处理原始数据,建立指数变换灰色模型
EGM( 1,1) ,具体过程如下。

对原始序列作指数变换
y(0)(i)=cx(0)(k),i=k=1,2,..,n(8)y^{(0)}(i)=c^{x^{(0)}(k)},i=k=1,2,..,n \tag{8} y(0)(i)=cx(0)(k),i=k=1,2,..,n(8)
式中,ccc​ 为底数。按照 GM( 1,1) 模型对新序列进行建模,得到新的响应序列为:
y(1)(k+1)∗=ba+[y(0)(1)−ba]e−ak(9)y^{(1)}(k+1)^* = \frac{b}{a}+[y^{(0)}(1)-\frac{b}{a}]e^{-ak}\tag{9} y(1)(k+1)∗=ab​+[y(0)(1)−ab​]e−ak(9)
新序列的还原值为
y(0)(k+1)∗=y(1)(k+1)∗−y(1)(k)∗(10)y^{(0)}(k+1)^*=y^{(1)}(k+1)^*-y^{(1)}(k)^*\tag{10} y(0)(k+1)∗=y(1)(k+1)∗−y(1)(k)∗(10)
由y(0)(i)=cx(0)(k)y^{(0)}(i)=c^{x^{(0)}(k)}y(0)(i)=cx(0)(k)可得原始序列的还原值为:
x(0)(k)∗=ln(y(0)(k)∗)ln(c)(11)x^{(0)}(k)^*=\frac{ln(y^{(0)}(k)^*)}{ln(c)}\tag{11} x(0)(k)∗=ln(c)ln(y(0)(k)∗)​(11)

2.2 背景值优化

GM( 1,1) 模型的背景值构造公式是存在缺陷的,如图1 所示,真实背景值应该是x ( 1) ( t) 在[k -1,k]区间上的积分,而传统建模方法的背景值是采用梯形面积作为替代。当处理某些剧烈变化的数据时,传统背景值构造方法会带来较大误差,导致模型的精度下降。

图1.GM( 1,1) 模型背景值误差来源

基于此,本文采用动态生成系数 α( i) 替代固定值,通过动态调整各区间的生成系数,最大程度降低
背景值误差。新的背景值构造公式为
z(1)(k)=α(i)x(1)(k)+(1−α(i))x(1)(k−1)(12)z^{(1)}(k) = \alpha(i)x^{(1)}(k)+(1-\alpha(i))x^{(1)}(k-1) \tag{12} z(1)(k)=α(i)x(1)(k)+(1−α(i))x(1)(k−1)(12)
式中,α(i)α(i)α(i) 为动态生成系数,0≤α(i)≤1,i=1,2,...,n−1,k=2,3,...,n0\leq\alpha(i)\leq1,i=1,2,...,n-1,k=2,3,...,n0≤α(i)≤1,i=1,2,...,n−1,k=2,3,...,n

由于求解动态生成系数的参数较多,一般的方法难以求解,而蜂群算法在求解非线性、多维的复杂
优化问题时有独特优势,可得到参数的全局最优解,所以采用蜂群算法求解灰色模型的动态生成系数

3.蜂群算法及其改进

具体原理参考参考文献即可

本文的目标函数为加权平方误差和,其公式为:
min∑k=2nϕ(k)(x(0)(k)∗−x(0)(k))2(13)min\,\sum_{k=2}^n \phi(k)(x^{(0)}(k)^*-x^{(0)}(k))^2 \tag{13} mink=2∑n​ϕ(k)(x(0)(k)∗−x(0)(k))2(13)
式中,x(0)(k)x^{(0)}(k)x(0)(k)​为建模原始数据序列; x(0)(k)∗x^{(0)}(k)^*x(0)(k)∗​为模型拟合值; ϕ(k)\phi(k)ϕ(k)为加权系数,其值为各平方误差与平方误差和的比值。通过加权系数修正各平方误差和,提高大误差的权重,降低小误差的权重,使总的误差分布更加均匀。

4.管道腐蚀预测

为了检验本文提出的预测模型的有效性,用常压蒸馏塔塔顶换热器入口分配管弯头测厚数据进行比较分析,壁厚测量的平均值见表 1。表中前 12 个工作月的数据作为灰色建模方法的原始序列,后 6 个工作月的数据作为预测序列,用于评估预测方法的准确性。

工作月数 壁厚/mm
1 8.8700
2 8.7800
3 8.4700
4 8.4500
5 8.1150
6 7.7900
7 7.7300
8 7.3300
9 7.2850
10 7.0100
11 6.8550
12 6.7050
13 6.5375
14 6.3000
15 5.9650
16 5.6250
17 5.3325
18 5.1100

实验结果如下图所示:

改进蜂群GM预测数据为:8.87 8.8169 8.5697 8.3294 8.0958 7.8688 7.6482 7.4337 7.2253 7.0227 6.8257 6.6343 6.4483 6.2675 6.0917 5.9209 5.7549 5.5935
**改进蜂群GM的MSE:**0.032463
基础GM预测数据为:8.87 8.7863 8.5472 8.3146 8.0883 7.8682 7.654 7.4457 7.2431 7.046 6.8542 6.6677 6.4862 6.3097 6.1379 5.9709 5.8084 5.6503
基础GM的MSE:0.040304

从结果来看改进算法结果明显优于原始GM算法。

3.参考文献

[1]秦谢勋,刘文彬,陈良超.基于改进蜂群算法和灰色模型的管道腐蚀预测[J].北京化工大学学报(自然科学版),2021,48(01):74-80.

4.Matlab代码

基于改进蜂群算法和灰色模型的管道腐蚀预测 - 附代码相关推荐

  1. 基于粒子群算法优化的ELMAN动态递归神经网络预测-附代码

    基于粒子群算法优化的ELMAN动态递归神经网络预测及其MATAB实现 文章目录 基于粒子群算法优化的ELMAN动态递归神经网络预测及其MATAB实现 1. 模型与算法描述 1.1 ELMAN神经网络预 ...

  2. 基于灰狼算法优化概率神经网络PNN的分类预测-附代码

    基于灰狼算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于灰狼算法优化概率神经网络PNN的分类预测 - 附代码 1.PNN网络概述 2.变压器故障诊街系统相关背景 2.1 模型建立 3. ...

  3. 【Kelm预测】基于哈里斯鹰算法优化核极限学习机实现数据预测matlab代码

    1 简介 工业过程常含有显著的非线性,时变等复杂特性,传统的核极限学习机有时无法充分利用数据信息,所建软测量模型预测性能较差.为了提高核极限学习机的泛化能力和预测精度,提出一种哈里斯鹰算法结合核极限学 ...

  4. ​【预测模型】基于粒子群算法优化核极限学习机实现数据预测matlab代码

    1 简介 煤与瓦斯突出是煤矿煤炭生产过程中面临的主要动力灾害之一.研究表明,在有发生煤与瓦斯突出的矿井中,煤层均发育一定程度的构造煤,且构造煤厚度越大,瓦斯突出的危险性越严重.因此,如果能够准确预测出 ...

  5. 【BP预测】基于差分进化算法优化BP神经网络实现汇率数据预测matlab代码​

    1 简介 镍镉电池组作为移动电源对于现代军民用品是必不可少的.为了能够有效的提高镍镉电池寿命的预测精准度,在建立BP神经网络的电池寿命预测模型的基础上,运用差分进化算法(DE)优化BP神经网络连接的初 ...

  6. 【Matlab优化预测】布谷鸟算法优化灰色模型预测【含源码 1244期】

    一.代码运行视频(哔哩哔哩) [Matlab优化预测]布谷鸟算法优化灰色模型预测[含源码 1244期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]屈迟文,傅 ...

  7. kettle spoon判断增量更新_【论文推荐】张斌等:基于改进 SOINN 算法的恶意软件增量检测方法...

    基于改进SOINN算法的恶意软件增量检测方法 张斌1,2, 李立勋1,2, 董书琴1,2 1 信息工程大学,河南 郑州 450001 2 河南省信息安全重点实验室,河南 郑州 450001 摘要:针对 ...

  8. 基于人工蜂群算法的线性规划求解matlab程序

    基于人工蜂群算法的线性规划求解matlab程序 1 人工蜂群算法概述 2005年D. Karaboga教授仿照蜜蜂集群采蜜生物行为,提出了人工蜂群仿生算法,可以有效解决有关函数优化等相关难题.ABC算 ...

  9. matlab基于人工蜂群算法的函数优化分析【matlab优化算法十一】

    基于人工蜂群算法的函数优化分析 自然界中的群居昆虫,它们虽然个体结构简单,但是通过个体间的合作却能够表现出极其复杂的行为能力.受这些社会性昆虫群体行为的启发,研宄者通过模拟这些群体的行为提出了群集智能 ...

  10. 基于改进MRAS算法的永磁同步电机参数辨识

    基于改进MRAS算法的永磁同步电机参数辨识 摘 要 永磁同步点电机参数辨识算法介绍 永磁同步电机数学模型 改进MRAS参数辨识算法 递推最小二乘法辨识原理 递推最小二乘法结合MRAS算法原理 仿真结果 ...

最新文章

  1. MySql忘记密码了咋办
  2. ssm 异常捕获 统一处理_统一异常处理介绍及实战
  3. Linux 之三 静态库及动态库的编写和使用
  4. 24.C#LINQ TO XML(十二章12.3)
  5. 51CTO博客首页看到我了
  6. 2019-05-22 防范ASP木马;如何防止注入攻击;
  7. SQL Server 创建表
  8. android 取出list第一页数据_Android传递ListObject的用法
  9. php+nginx环境 两错误解决
  10. 「本地搭建」worpress博客系统
  11. 如何下载矢量道路路网电子地图
  12. 分分钟搞定LabVIEW读取与写入Excel【三易电子工作室】
  13. jqGrid分页点击事件,点击分页的时候滚动条回到顶端
  14. python绘制箱线图-python绘制箱线图
  15. Java 11中文版 API参考文档(收藏)
  16. Hacking EV3系列之七:iPhone 手势无线控制LEGO EV3 Gyro Boy 机器人
  17. 矩阵求逆的几种方法总结(C++)
  18. 2021年高压电工新版试题及高压电工试题及解析
  19. Java调用Zebra800条码打印机
  20. js按钮确认删除提示

热门文章

  1. 二叉树最小结构(C++版本)
  2. mybatis xml配置
  3. docker具名和匿名挂载
  4. php+模版取余,PHP取余函数介绍MOD(x,y)与x%y_php技巧
  5. python做图像处理程序_python图像处理之镜像实现方法
  6. java序列化和反序列化练习
  7. JavaScript:三大家族
  8. JavaScript:split() 方法和join() 方法
  9. 论文笔记_S2D.32-2019-TIP_HMS-Net:用于稀疏深度补全的分层多尺度稀疏不变网络
  10. python数据分析之(4)读写数据文件CSV,EXCEL等