模糊神经网络的预测算法在嘉陵江水质评测中的应用

更新时间:2023-11-28 12:23:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

模糊神经网络的预测算法——水质评价

一、案例背景

1、模糊数学简介

模糊数学是用来描述、研究和处理事物所具有的模糊特征的数学,“模糊”是指他的研究对象,而“数学”是指他的研究方法。

模糊数学中最基本的概念是隶属度和模糊隶属度函数。其中,隶属度是指元素μ属于模糊子集f的隶属程度,用μf(u)表示,他是一个在[0,1]之间的数。μf(u)越接近于0,表示μ属于模糊子集f的程度越小;越接近于1,表示μ属于f的程度越大。

模糊隶属度函数是用于定量计算元素隶属度的函数,模糊隶属度函数一般包括三角函数、梯形函数和正态函数。 2、T-S模糊模型

T-S模糊系统是一种自适应能力很强的模糊系统,该模型不仅能自动更新,还能不断修正模糊子集的隶属函数。T-S模糊系统用如下的“if-then”规则形式来定义,在规则为R的情况下,模糊推理如下:

Ri:If xiisA1i,x2isA2i,?xkisAki then yi =p0i+p1ix+?+pkixk

其中,Aij为模糊系统的模糊集;Pij(j=1,2,?,k)为模糊参数;yi为根据模糊规则得到的输出,输出部分(即if部分)是模糊的,输出部分(即then部分)是确定的,该模糊推理表示输出为输入的线性组合。

假设对于输入量x=[x1,x2,?,xk],首先根据模糊规则计算各输入变量Xj的隶属度。 μAij=exp(-(xj-cij)/bij)j=1,2,?,k;i=1,2,?,n式中,Cij,bij分别为隶属度函数的中心和宽度;k为输入参数数;n为模糊子集数。

将各隶属度进行模糊计算,采用模糊算子为连乘算子。 ωi=μ

1

Aj

i

(x1)*μ2Aj(x2)*?*μk

Aj i=1,2,?,n

根据模糊计算结果计算模糊型的输出值yi。 YI=∑i=1ω(P0+P1x1+?+Pkxk)/ ∑i=1ω3、T-S模糊神经网络模型

T-S模糊神经网络分为输入层、模糊化层、模糊规则计划层和输出层四层。输入层与输

n

i

i

i

i

n

i

入向量XI连接,节点数与输入向量的维数相同。模糊化层采用隶属度函数对输入值进行模糊化得到模糊隶属度值μ。模糊规则计算层采用模糊连乘公式计算得到ω。输出层采用公式计算模糊神经网络的输出。

模糊神经网络的学习算法如下 (1) 误差计算

式中,yd是网络期望输出;yc是网络实际输出;e魏期望输出和实际输出的误差。 (2)系数修正

iip式中,j为神经网络系数;?为网络学习率;xj为网络输入参数;w为输入参数隶

属度连乘积。 (3)参数修正

ii 式中,cjbj分别为隶属度函数的中心和宽度。

4、水质评价

水质评测是根据水质评测标准和采样水样本各项指标值,通过一定的数学模型计算确定采样水样本的水质等级。水质评测的目的是能够准确判断出采样水样本的污染等级,为污染防治和水源保护提供依据。

水体水质的分析主要包括氨氮、溶解氧、化学需氧量、高锰酸盐指数、总磷和总氮六项指标。其中氨氮是有机物有氧分解的产物,可导致水富营养化现象产生,是水体富营养化的指标。化学需氧量是采用强氧化剂络酸钾处理水样,消耗的氧化剂量是水中还原性物质多少

的指标。高锰酸钾是反映有机污染的指标。溶解氧是溶解在水中的氧。总磷是水体中的含磷量,是衡量水体富营养化的指标。总氮是水体中氮的含量,也是衡量水体富营养化的指标。(各项数据在附件的数据库中。)地表水环境质量标准如下所示:

地表水环境质量标准

二、模型建立

基于T-S模糊神经网络的嘉陵江水质评测算法流程图如下所示。其中,模糊神经网络构建根据训练样本维数确定模糊神经网络输入/输出节点数、模糊隶属度函数个数,由于输入数据为6维,输出数据为1维,所以有12个隶属度函数,选择7组系数P0~P6,模糊隶属度函数中心和宽度c和b随机得到。

图示:模糊神经网络水质评价算法流程

模糊神将网络训练用训练数据模糊神经网络,由于水质评价真实数据比较难找,所以采用了等隔均匀分布方式内插水质指标标准数据生成样本的方式来生成训练样本,采用的水质指标标准数据来自本文的上表,网络反复训练100次。

模糊神经网络预测用训练好的模糊神经网络评价采样水水质等级。

三、编程实现

根据模糊神经网络原理,在MATLAB中编程实现基于模糊神经网络的水质评价算法。 1、网络初始化

根据训练输入/输出数据确定网络结构,初始化模糊神经网络隶属度函数参数和系数,归一化训练数据。从数据文件datal.mat中下载训练数据,其中input_train和output_train为模糊神经网络训练数据,input_test和output_test为模糊神经网络测试数据。

input_train

output_train

%下载数据

Load datal input_train output_train input_test output_test

%网络结构

I=6; %输入节点数 M=12; %隐含节点数

O=1; %输出节点数

Maxgem=100; %迭代次数

%初始化模糊神经网络参数

p0=0.3*ones(M,1);p0_1=p0;p0_2=p0_1; p1=0.3*ones(M,1);p1_1=p1;p1_2=p1_1; p2=0.3*ones(M,1);p2_1=p2;p2_2=p2_1; p3=0.3*ones(M,1);p3_1=p3;p3_2=p3_1; p4=0.3*ones(M,1);p4_1=p4;p4_2=p4_1; p5=0.3*ones(M,1);p5_1=p5;p5_2=p5_1; p6=0.3*ones(M,1);p6_1=p6;p6_2=p6_1;

%初始化模糊隶属度参数

c=1+rands(M,I);c_1=c;c_2=c_1; b=1+rands(M,I);b_1=b;b_2=b_1; maxgen=100; %进化次数

%调练数据归一化

[inputn,inputps]=mapminmax(input_train); [outputn,outputps]=mapminmax(output_train);

2、模糊神经网络训练

用训练样本训练模糊神经网络 [n,m]=size(input_train);

%开始迭代

for i=1:maxgen %maxgem 最大迭代次数 for k=1:m %m个样本 %提取训练样本 x=inputn(:,k);

%输入参数模糊化 for i=1:I for j=1:M

u(i,j)=exp(-(x(i)-c(j,i))^2/b(j,i)); end end

%模糊隶属度计算

for i=1:M

w(i)=u(1,i)*u(2,i)*u(3,i)*u(4,i)*u(5,i)*u(6,i); end

addw=sum(w);

%输出计算

for i=1:M

yi(i)=p0_1(i)+p1_1(i)*x(1)+p2_1(i)*x(2)+p3_1(i)*x(3)+p4_1(i)*x(4)+p5_1(i)*x(5)+p6_1(i)*x(6); end

addyw=0;

addyw=yi*w';

yn(k)=addyw/addw;

e(k)=outputn(k)-yn(k);

%系数p修正值计算 d_p=zeros(M,1);

for i=1:M

d_p(i)=xite*e(k)*w(i)/addw; end

%b的修正值计算 d_b=0*b_1; for i=1:M

for j=1:I

d_b(i,j)=xite*e(k)*(yi(i)*addw-addyw)*(x(j)-c(i,j))^2*w(i)/(b(i,j)^2*addw^2); end

end

%c的修正值计算 for i=1:M

for j=1:I

d_c(i,j)=xite*e(k)*(yi(i)*addw-addyw)*2*(x(j)-c(i,j))*w(i)/(b(i,j)*addw^2); end end

%系数修正

p0=p0_1+ d_p; p1=p1_1+ d_p*x(1); p2=p2_1+ d_p*x(2); p3=p3_1+ d_p*x(3); p4=p4_1+ d_p*x(4); p5=p5_1+ d_p*x(5); p6=p6_1+ d_p*x(6);

% 隶属度参数修正 b=b_1+d_b; c=c_1+d_c;

end end

3、模糊神经网络水质评价

用训练好的模糊神将网络评价水质,各采样口水样指标值存储在data2.mat文件中,根据网络预测值得到水质等级指标。预测值小于1.5时水质登记为1级,预测值在

1.5——2.5时水质等级为2级,预测值在2.5——3.5时水质等级为3级,预测值在3.5——4.5时水质等级为4级,预测值大于4.5时水质等级为5级。

% 下载数据,hgsc为A工厂水质指标,gjhy为B工厂水质指标,dxg为C工厂水质指标 zzsz=hgsc;

%输入数据归一化

inputn_test =mapminmax('apply',zssz,inputps); [n,m]=size(zssz);

%网络预测 for k=1:1:m

x=inputn_test(:,k);

%输入参数模糊化 for i=1:I for j=1:M

u(i,j)=exp(-(x(i)-c(j,i))^2/b(j,i)); end end

for i=1:M

w(i)=u(1,i)*u(2,i)*u(3,i)*u(4,i)*u(5,i)*u(6,i); end

addw=0;

for i=1:M

addw=addw+w(i); end

%计算输出

for i=1:M

yi(i)=p0_1(i)+p1_1(i)*x(1)+p2_1(i)*x(2)+p3_1(i)*x(3)+p4_1(i)*x(4)+p5_1(i)*x(5)+p6_1(i)*x(6); end

addyw=0;

for i=1:M

addyw=addyw+yi(i)*w(i); end

%网络预测值

szzb(k)=addyw/addw; end

%预测值反归一化

szzbz2=mapminmax('reverse',szzb,outputps);

%根据预测值确定本质等级 for i=1:m

if szzbz1(i)<=1.5 szpj1(i)=1;

elseif szzbz1(i)>1.5&&szzbz1(i)<=2.5 szpj1(i)=2;

elseif szzbz1(i)>2.5&&szzbz1(i)<=3.5 szpj2(i)=3;

elseif szzbz1(i)>3.5&&szzbz1(i)<=4.5 szpj1(i)=4; else

szpj1(i)=5; end end

4、结果分析

用训练好的模糊神经网络评价各取水口2003年到2008年每季度采样水水质等级,网络评测结果如下所示:

训练数据预测

测试数据预测

预测水质

时间 A工厂 B水厂 C水厂 2003.1 2003.2 2003.3 2003.4 2004.1 2004.2 2004.3 2004.4 2005.1 2005.2 2005.3 2005.4 3 4 4 3 4 4 3 3 3 3 3 3 3 3 4 4 3 3 3 2 2 2 3 2 2 3 4 3 2 2 2 2 2 2 3 3 时间 A工厂 B水厂 C水厂 2006.1 2006.2 2006.3 2006.4 2007.1 2007.2 2007.3 2007.4 2008.1 2008.2 2008.3 2008.4 3 3 3 2 2 2 2 2 2 3 3 3 3 3 3 2 3 3 2 3 2 3 3 2 3 3 3 2 3 3 2 2 3 3 3 3

从水质量评价等级可以看出A、B、C(上、中、下游)三个取水口水样质量在2003年到2004间有一定改善,近几年变化不大,基本维持在2、3级左右。总体来说,上游水质量评价结果优于下游水质量结果,网络评价水质等级变化趋势同真实指标数据变化趋势相符,说明了模糊神经网络评价的有效性。

本文来源:https://www.bwwdw.com/article/6m1t.html

Top