GA.docx
- 文档编号:12456243
- 上传时间:2023-04-19
- 格式:DOCX
- 页数:19
- 大小:263.10KB
GA.docx
《GA.docx》由会员分享,可在线阅读,更多相关《GA.docx(19页珍藏版)》请在冰豆网上搜索。
GA
基于遗传算法的人工神经网络在传感器建模上的应用
作者姓名:
吴迪
指导教师:
张华副教授
单位名称:
信息科学与工程学院
专业名称:
测控技术与仪器
东北大学
2011年6月
摘要
热电偶作为测温元件,被广泛的应用于工业现场及实验室,实际使用时,为了延长使用寿命,常将传感器至于保护套管中,使得传感器感知被测温度的时间变长,导致其测量结果和真实值间有较大滞后误差,实时性变差,严重影响了测量精度,这是传感器普遍面临的一类问题。
针对次问题,本文提出了一种基于遗传优化的神经网络算法,该算法结合了遗传算法的全局性和BP神经网络的并行性,克服了遗传算法收敛至最优解速度较慢和神经网络易陷入局部最优的缺陷。
遗传算法提供了解的全局性,神经网络保证了求解的快速性,二者互补,实现了针对传感器滞后问题的提前预测方法。
从仿真的结果看来,该算法大大缩短了达到稳态的预测时间,对上升的稳态的温度预测仅用了3min,比传感器提前了70%,对冷却后炉温的预测,也提前了70%~75%,且均达到了1.5%的精度;证明了该算法在传感器的滞后动态补偿上有良好的应用前景。
关键词:
遗传算法,人工神经网络,传感器,预测
目录
第一章绪论1
1.1课题的意义1
1.2本文的主要工作1
第二章GA-BP算法2
2.1遗传算法2
2.1.1算法原理2
2.1.2生物遗传学概念与遗传算法中概念的对应关系2
2.1.3算法步骤2
2.2人工神经网络3
2.2.1BP神经网络3
2.2.2BP神经网络matlab实现的基本步骤3
2.3基于遗传算法的人工神经网络3
2.3.1基本思想3
2.3.2具体过程4
第三章Matlab仿真5
3.1建立BP神经网络5
3.2遗传算法对神经网络的权值优化5
3.2.1遗传算法参数初始化5
3.2.2种群初始化6
3.2.3迭代求解最佳初始阀值和权值6
3.3训练神经网络并预测8
3.3.1训练参数设定8
3.3.2训练神经网络并预测结果8
第四章结果分析9
4.1预测结果分析9
4.1.1上升段温度的预测9
4.1.2下降段温度的预测10
4.2多组数据仿真结果12
4.3结论13
第一章绪论
1.1课题的意义
实际工业生产中,最常用的温度测量元件是热电偶、热电阻,为延长其使用寿命,一般都将热电偶与热电阻传感器置于不锈钢的套管中加以保护,这同时也增大了温度传感器的热惯性,不能迅速感受并跟踪被测温度,与被测温度的实际值之间存在较大的时间上的滞后,严重影响动态测温的灵敏度和测量精确度。
因此,必须设计动态测温的补偿环节,以提高热电偶的动态响应特性,满足快速的动态测温的需要。
目前的研究热点是利用神经网络良好的非线性映射能力对传感器的动态特性进行补偿,此方法无需事先知道传感器的数学模型,而是根据传感器动态响应的实际参数训练神经网络,使其输出经神经网络补偿后,能够快速地跟踪被测温度,改善传、感器的动态响应特性。
但是由于神经网络中BP算法的学习效率低且收敛速度慢以及容易陷入局部最优等不足,本文提出利用遗传算法对BP神经网络的结构及参数进行优化,遗传算法(GA)是新近发展起来的一种模拟生命进化机制的搜索和优化方法,将自然遗传学和计算机科学相结合,与传统搜索方法不同的是GA不是对具体参数的搜索空间的一个解进行评估,而是对整个搜索空间的大量可行解同时并行搜索,这样就克服了传统方法(如BP)可能陷入收敛于局部最优的困境。
因此,用遗传算法来优化神经网络的方法已经取代了单纯的神经网络,成功应用于工业生产的预测及动态补偿。
1.2本文的主要工作
本文的主要工作是将遗传算法和神经网络算法相结合,对工业过程中普遍存在的带有滞后现象的系统建模。
其中主要进行以下的研究:
(1)具体介绍遗传算法和神经网络的相关知识;
(2)阐释如何用遗传算法优化神经网络的结构和参数,并写出源代码;
(3)基于MATLAB仿真实现GA-BP,并对结果进行误差分析等。
第二章GA-BP算法
2.1遗传算法
2.1.1算法原理
首先将问题求解表示成基因型(如常用的二进制编码串),从中选取适应环境的个体,淘汰不好的个体,把保留下来的个体复制再生,通过交叉、变异等遗传算子产生新一染色体群。
依据各种收敛条件,从新老群体中选出适应环境的个体,一代一代不断进步,最后收敛到适应环境个体上,求得问题最优解。
2.1.2生物遗传学概念与遗传算法中概念的对应关系
生物遗传学概念
遗传算法中的作用
适者生存
在算法停止时,最优目标值的解有最大的可能被留住
个体(individual)
目标函数的解
染色体(chromosome)
解的编码(向量)
基因(gene)
解中的每一分量的特征(或值)
适应性(fitness)
适应度函数
群体(population)
选定的一组解(其中解的个数为群体的规模)
种群(reproduction)
根据适应函数选取的一组解
交配(crossover)
按交配原则产生一组新解的过程
变异(mutation)
编码的某一分量发生变化的过程
2.1.3算法步骤
1、随机产生一定数目的初始个体(染色体)
这些随机产生的染色体组成一个种群,种群中的染色体数目称为种群的规模或大小
2、用评价函数来评价每个染色体的优劣
染色体对环境的适应程度(称为适应度),并用作以后遗传操作的依据。
3、基于适应值的选择策略
从当前种群中选取一定的染色体作为新一代的染色体,染色体的适应度越高,其被选择的机会越大
4、对这个新生成的种群进行交叉操作、变异操作。
变异操作的目的使种群中的个体具有多样性,防止陷入局部最优解,这样产生的染色体群(种群)称为后代。
5、判断是否达到预定的迭代次数,是则结束,否则返回2进入下一轮迭代操作
2.2人工神经网络
2.2.1BP神经网络
BP神经网络也称为反向传播网络,是一种单向传播的多层前向网络。
BP神经网络的学习过程由正向传播过程和反向传播过程组成。
在前一个过程中,输入信息从输入层经隐含单元逐层处理,并传向输出层。
每一层神经元的状态只影响下一层的神经元状态。
如果在输出层不能得到期望的输出。
则转入反向传播,将误差信号沿原来的连接通路返回。
通过修改各层神经元的权值,使得误差信号最小。
2.2.2BP神经网络matlab实现的基本步骤
1、数据归一化
2、数据分类,主要包括打乱数据顺序,抽取正常训练用数据、变量数据、测试数据
3、建立神经网络,包括设置多少层网络(一般3层以内既可以,每层的节点数(具体节点数,尚无科学的模型和公式方法确定,可采用试凑法,但输出层的节点数应和需要输出的量个数相等),设置隐含层的传输函数等。
4、指定训练参数进行训练
5、完成训练后,就可以调用训练结果,输入测试数据,进行测试
6、数据进行反归一化
7、误差分析、结果预测
2.3基于遗传算法的人工神经网络
2.3.1基本思想
BP算法是一种只考虑局部区域的梯度法,缺乏全局性,有可能陷入到局部最优极值处。
遗传算法是一种基于生物进化过程的随机搜索的全局优化方法,它通过交叉和变异操作大大减少了初始状态的影响,使搜索得到全局最优解,而不是停留在局部最优解处。
把遗传算法与神经网络相结合,可以使神经网络系统搜索解的空间扩大,具备了全局最优的能力。
但遗传算法搜索到的解的精度较低,在遗传算法搜索解的基础上,将遗传算法获得的解作为神经网络的初始解,经过神经网络的学习,最后获得较为满意的解。
2.3.2具体过程
具体的流程图如下
图2.GA-BP算法流程图
1、编码:
将网络的权值分别用实数表示;并且设定参数:
种群规模、进化次数、交叉概率、变异概率、网络层数、每层节点个数。
2、初始化种群:
随机产生n个权值矩阵构成初始种群,每个矩阵代表一个待训练神经网络。
3、评价:
对每个神经网络以前向方式运行,计算评价函数值,并保留最优个体。
4、遗传操作:
依次进行选择、交叉、变异、BP训练,保留最优个体,并计算评价函数值,若误差达到指定精度,则转5,否则转4
5、建立神经网络
6、神经网络初始化:
将遗传优化的神经网络阈值权值赋给神经网络,设定神经网络。
的训练参数。
7、训练神经网络
8、预测结果:
用训练后的神经网络对温度变化曲线进行预测,提前预测稳定后的温度。
9、结束。
第三章Matlab仿真
本文所采用的数据来自热电偶实时测温,每秒采样4组数据所产生的。
由数据可知,约10分钟后,温度逐步稳定,达到509摄氏度。
我们选取前3分钟的实验数据作为神经网络的训练样本,来预测达到稳态时热电偶的温度。
3.1建立BP神经网络
首先使用matlab中的newff函数建立基本神经网络。
net=newff(inputn,outputn,hiddennum,{'tansig','purelin'});
其中inputs为输入样本数据,targets出输出样本数据,hiddennum为隐藏层神经元个数。
'tansig','purelin'分别为隐藏层和输出层的传递函数
3.2遗传算法对神经网络的权值优化
通过遗传算法可为神经网络寻找出最优的权值,可加快神经网络的收敛速度及训练速度,并提高训练结果,进而对结果的预测更为准确。
具体的GA-BP过程如上文图2所示。
3.2.1遗传算法参数初始化
maxgen=3;%进化代数,即迭代次数
sizepop=2;%种群规模
pcross=0.9;%交叉概率选择,0和1之间
pmutation=0.9;%变异概率选择,0和1之间
%节点总数
numsum=inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum;
lenchrom=ones(1,numsum);
bound=[-3*ones(numsum,1)3*ones(numsum,1)];%数据范围
3.2.2种群初始化
individuals=struct('fitness',zeros(1,sizepop),'chrom',[]);%将种群信息定义为一个结构体
avgfitness=[];%每一代种群的平均适应度
bestfitness=[];%每一代种群的最佳适应度
bestchrom=[];%适应度最好的染色体
%初始化种群
fori=1:
sizepop
%随机产生一个种群
individuals.chrom(i,:
)=Code(lenchrom,bound);
x=individuals.chrom(i,:
);
%计算适应度
individuals.fitness(i)=fun(x,inputnum,hiddennum,outputnum,net,inputn,outputn);%染色体的适应度
end
%找最好的染色体
[bestfitnessbestindex]=min(individuals.fitness);
bestchrom=individuals.chrom(bestindex,:
);%最好的染色体
avgfitness=sum(individuals.fitness)/sizepop;%染色体的平均适应度
%记录每一代进化中最好的适应度和平均适应度
trace=[avgfitnessbestfitness];
3.2.3迭代求解最佳初始阀值和权值
%进化开始
fori=1:
maxgen
i;
%选择
individuals=Select(individuals,sizepop);
avgfitness=sum(individuals.fitness)/sizepop;
%交叉
individuals.chrom=Cross(pcross,lenchrom,individuals.chrom,sizepop,bound);
%变异
individuals.chrom=Mutation(pmutation,lenchrom,individuals.chrom,sizepop,i,maxgen,bound);
%计算适应度
forj=1:
sizepop
x=individuals.chrom(j,:
);%解码
individuals.fitness(j)=fun(x,inputnum,hiddennum,outputnum,net,inputn,outputn);
end
%找到最小和最大适应度的染色体及它们在种群中的位置
[newbestfitness,newbestindex]=min(individuals.fitness);
[worestfitness,worestindex]=max(individuals.fitness);
%代替上一次进化中最好的染色体
ifbestfitness>newbestfitness
bestfitness=newbestfitness;
bestchrom=individuals.chrom(newbestindex,:
);
end
individuals.chrom(worestindex,:
)=bestchrom;
individuals.fitness(worestindex)=bestfitness;
avgfitness=sum(individuals.fitness)/sizepop;
trace=[trace;avgfitnessbestfitness];%记录每一代进化中最好的适应度和平均适应度
3.3训练神经网络并预测
3.3.1训练参数设定
1)把通过遗传算法找到的最优化初始阀值权值赋予网络:
w1=x(1:
inputnum*hiddennum);
B1=x(inputnum*hiddennum+1:
inputnum*hiddennum+hiddennum);
w2=x(inputnum*hiddennum+hiddennum+1:
inputnum*hiddennum+hiddennum+hiddennum*outputnum);
B2=x(inputnum*hiddennum+hiddennum+hiddennum*outputnum+1:
inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum);
net.iw{1,1}=reshape(w1,hiddennum,inputnum);
net.lw{2,1}=reshape(w2,outputnum,hiddennum);
net.b{1}=reshape(B1,hiddennum,1);
net.b{2}=B2;
2)网络训练参数
net.trainFcn='trainbr';
net.trainParam.epochs=100;
net.trainParam.lr=0.11;
net.trainParam.goal=1e-10;
3.3.2训练神经网络并预测结果
使用train函数对以建立好的神经网络进行训练:
net=train(net,inputn,outputn);
训练后的神经网路可对后续的温度上升趋势做预测并得到最终稳定后的温度:
inputn_test=mapminmax('apply',input_test,inputps);
an=sim(net,inputn_test);
test_simu=mapminmax('reverse',an,outputps)
第四章结果分析
4.1预测结果分析
4.1.1上升段温度的预测
使用data_1.csv(见附件)中的数据做一次实验,得到预测温度曲线,与实测数据比对:
图3.实际温度与预测温度对比图
可以看出,神经网络预测的温度上升曲线与实测结果的上升趋势吻合较好。
稳定后最高温度为
,实测最高温度为509.4
,一次实验误差:
相对误差:
通过分析预测温度数据与实测数据的误差,如图4所示
图4.实际温度与预测温度的误差
随时间增加,GA-BP的预测温度与实际温度间的误差逐步上升,在温度达到稳定之前,预测温度最大偏离式测温度2
以内,效果非常满意。
对于温度下降时的预测,也可使用神经网络模型,选取温度开始下降后的实测数据,优化得到最佳的神经网络阈值权值,并用这部分数据作为训练样本。
使用训练后的神经网络预测热电偶稳定后的温度,即此时的真实炉温。
4.1.2下降段温度的预测
在对冷却后温度进行预测时,与上升段采用同样算法,仅对训练样本进行修改,使用了温度开始下降后8min左右的数据作为训练样本。
图5.预测温度和实际温度对比图
图6.预测温度和实际温度误差曲线
从以上两个方阵曲线可以看出,温度下降时,采用该算法预测出的温度和实测温度大致相符,最大偏离3.5
以内。
证明该算法有很好的通用性。
4.2多组数据仿真结果
对附件中的5组实测数据进行实验仿真(仅对上升段进行仿真,下降段原理相同)。
结果如图:
图4.Sample2仿真结果
图5.Sample3仿真结果
图6.Sample4仿真结果
图7.Sample5仿真结果
图5.Sample8仿真结果
4.3结论
本文提出了一种新型的算法GA-BP,用于工业过程中普遍存在的具有纯滞后的系统进行模型构建,并借助MATLAB进行了仿真实验,结果表明:
(1)所提出的基于遗传算法的人工神经网络算法(GA-BP),方案正确,论证合理;
(2)GA-BP算法收敛速度快,预报时间均提前了70%,精度高,最大误差控制在1.5%之内;
(3)程序的可移植性较强,GA-BP算法可用于各类预测性问题;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- GA