BP神经网络原理及MATLAB仿真

BP神经网络原理及MATLAB仿真
BP神经网络原理及MATLAB仿真

BP神经网络原理及MATLAB仿真

作者:盛仲飙, SHENG Zhong-biao

作者单位:渭南师范学院,计算机科学系,陕西,渭南,714000

刊名:

渭南师范学院学报

英文刊名:JOURNAL OF WEINAN TEACHERS COLLEGE

年,卷(期):2008,23(5)

被引用次数:1次

参考文献(6条)

1.飞思科技产品研发中心Matlab 6.5辅助神经网络分析与设计 2003

2.施航.马琳达人工神经网络在股票价格预测中的应用[期刊论文]-电脑开发与应用 2007(09)

3.徐丽娜神经网络控制 2003

4.徐远芳.周野旸.郑华基于MATLAB的BP神经网络实现研究[期刊论文]-微型电脑应用 2006(12)

5.毕小龙.袁勇基于BP神经网络的人口预测方法研究[期刊论文]-武汉理工大学学报(交通科学与工程版)

2007(06)

6.孙帆.施学勤基于Matlab的BP神经网络[期刊论文]-计算机与数字工程 2007(08)

相似文献(10条)

1.期刊论文刘浩.白振兴.LIU Hao.BAI Zhenxing BP网络的Matlab实现及应用研究-现代电子技术2006,29(2)

人工神经网络以其具有信息的分布存储、并行处理以及自学习能力等优点,已经在信息处理、模式识别、智能控制及系统建模等领域得到越来越广泛的应用.他的基于误差反向传播算法的多层前馈网络,即BP网络在非线性建模、函数逼近和模式识别中有广泛的应用,介绍了BP网络的基本原理,分析了Matlab人工神经网络工具箱中有关BP网络的工具函数,并给出了部分重要工具函数的实际应用.

2.学位论文徐振东人工神经网络的数学模型建立及成矿预测BP网络的实现2004

本文是在完成国家地质实验中心2002年基于GIS的多源地学信息整合处理技术算法设计子课题基础上完成的。主要研究人工神经网络数学模型和计算方法的计算机程序实现,为实现复杂地质信息的非线性整合处理提供技术支持。近年来,作为人工智能主要研究方向之一的人工神经网络(ArtificialNeuralNetworks缩写为ANN)得到了广泛关注,大量的有关神经网络运行机理、神经计算机、网络模型与学习算法、特征分析等的研究不断涌现。由于具有非线性、良好的容错性和自学习、自适应性等特征,人工神经网络在地学领域的应用研究发展很快,在岩性分类、线性构造识别、遥感图像分类与识别、位场特征分类及正反演、地学信息提取与挖掘、资源评价预测等方面均有所应用。本文的主要工作是对人工神经网络的三种常用模型——BP网、Hopfield网和Kohonen网的拓扑结构和学习算法进行了深入的研究,特别的还针对BP网引入RPROP(弹性BP)算法对传统BP算法进行了改进。此外,本文还论述了用VisualC++对这几种网络进行实现的过程。

文中实现了BP网络的通用算法,建立了矿产资源综合评价及成矿预测BP模型,从而可以对成矿信息进一步进行智能化知识发现和信息挖掘,自动评估各地质变量对成矿的贡献,得到区域性的成矿规律和成矿模式,并圈定出成矿靶区。并提供友好的人机交互式界面,使用户可以自己创建、设计和管理成矿预测BP模型。

3.期刊论文李随民.姚书振.周宗桂.Li Suimin.Yao Shuzhen.Zhou Zonggui基于MATLAB的BP网络在矿产资源预测中的应用-金属矿山2007,""(8)

人工神经网络(ANN)是近几年兴起的一门综合交叉学科.人工神经网络在进行预测时,是在输出和输入之间建立一个非线性映射关系,ANN可自动模拟各种成矿因素之间的自然关系,进行全局优化搜索,减少人为干预,提高资源预测的准确率.其中以反向传播网络--BP网络应用最广泛.由于MATLAB提供了跟踪国外先进计算方法与数学模型的许多工具箱,利用MATLAB中的神经网络工具箱,可方便地实现BP网络模型的学习、训练、拟合及预测(仿真)过程.基于上述思路以陕西省旬北地区铅锌矿的远景区预测为例,在MATLAB平台中调用其内部函数建立了BP人工神经网络矿产资源预测系统,并在此基础上进行了远景区预测.

4.学位论文于宁国人工神经网络在谐波检测中的应用研究1998

谐波检测技术要发展就离不开新理论的支持.近几年人工神经网络(ANN)的研究再度掀起高潮,在电力系统中的应用研究十分活跃,可是在电力系统谐波检测方面的应用研究却进展不大.谐波检测方法来源于信号处理方法,而人工神经网络已成功地用在信号处理领域,因此可以将信号处理领域的新成果用在谐波检测技术中.人工神经网络是一种并行处理技术,具有自学习、自适应和并行处理能力.该文在对人工神经网络特别是BP网络进行深入分析的基础上,选择了具有高度非线性映射能力的BP网络进行谐波检测的应用研究.通过对BP网络在谐波检测中应用问题的深入研究,如网络学习算法、网络结构选择和训练样本的选择等,该文用三层BP网络成功的实现了人工神经网络在谐波检测中的应用.大量校验计算和用该文开发的PC机谐波检测装置实际测试,证明了经过训练的BP网络不仅可以检测谐波,还能有效克服谐波信号中直流衰减分量的影响,具有一定理论和实践意义.三层BP网络在电力系统谐波检测技术中的成功应用,为电力系统谐波检测技术提供了一种新理论和新方法,同时也为人工神经网络在谐波检测领域的应用研究打下了基础.

5.期刊论文冷飞.Leng Fei BP网络及其应用研究-中国现代教育装备2006,""(12)

本文介绍了人工神经网络的基本概念和研究方法.对BP网络的发展动态和进展进行了系统的分析,讨论了BP算法的基本概念、运行机制和BP网络的训练.同时对研究和设计神经网络的软件工具MATLAB做了介绍并分析了几个BP网络的应用领域.

6.学位论文吴涛钛(氢)合金热变形流变应力的人工神经网络预测2004

钛(氢)合金热变形流变应力受到变形条件(变形温度、应变速率和应变量等)和氢含量等诸多因素的影响,是一个较复杂的非线性问题.该文研究了渗氢后TC4合金的热变形行为,并利用人工神经网络(ANN)技术,建立了钛(氢)合金热变形流变应力的预测模型.对TC4合金进行了600℃/1h真空退火和渗氢处理,得到真空退火状态和4种不同氢含量的合金试样.在Gleeble-1500热模拟试验机上,对处理后的试样进行不同变形条件下的热压缩变形试验,并根据试验结果分析了变形条件和氢含量对钛(氢)合金流变应力的影响规律.结果表明,随着应变量的增加,流变应力迅速上升,到达峰值后缓慢下降:随着变形温度的升高和应变速率的降低,合金峰值流变应力降低,峰值应变量减小;随着氢含量的增大,峰值流变应力先减小后增大,峰值应力最小值对应的氢含量与变形温

量和氢含量,输出量为流变应力.其中,BP网络使用了改进的BP算法(L-M算法)和两个隐含层.然后,用试验数据检验两个模型的预测性能,并进行了比较.研究结果表明,BP网络和RBF网络都有非常好的非线性逼近能力,训练相关性系数分别为0.998和0.999,但过分降低网络训练的目标误差会使网络的泛化能力下降.BP网络的泛化能力比RBF网络好,RBF网络的训练速度快于BP网络.BP网络测试结果的最大相对误差为7.21﹪,预测结果与试验数据符合的很好,可用于指导工程实践.

7.期刊论文刘晓升.王宜怀基于VB的三层BP网络通用程序设计-苏州大学学报(工科版)2003,23(1)

以三层BP网络为例,讨论了人工神经网络面向对象的程序设计方法,给出了程序设计流程,在Visual Basic6.0语言环境下编制了BP算法程序.以解决异或问题为例,给出了BP算法动态演化过程的训练调试界面.可直接应用于BP网络的实际应用中,亦可用于BP网络的教学过程.

8.学位论文李勇人工神经网络及其在汽轮机故障预测与诊断中的应用1997

该文对人工神经网络中的BP网络在汽轮机故障预测与诊断中的应用进行了深入地研究.该文主要研究了四个问题:(1)完善和改进了BP网络的训练算法;(2)BP网络结构的改进研究,并将其应用于汽轮机故障这类有确定性递增(或减)趋势的时间序列的预测中;(3)BP网络应用于汽轮机的振动故障诊断研究

;(4)基于BP网络的凝汽器清洁率的预测方法及模糊诊断研究.

9.期刊论文倪天龙.丁付刚.王培.张贤高.NI Tian-long.DING Fu-gang.WANG Pei.ZHANG Xian-gao BP网络在基于

ARM的温度精确控制系统中的研究与应用-桂林电子工业学院学报2005,25(5)

基于人工神经网络的新型智能温度精确控制方法,与传统的PID控制相比较,具有系统构建简单、控制精度较高、适应性较强等许多优点,并避开了

P,I,D参数整定这个复杂过程.通过实验证明,应用人工神经网络的新型智能温度精确控制方法的温度控制系统具有很好的控制效果.

10.学位论文王淑青人工神经网络(ANN)在结构分析中的应用2004

弹性结构的有限元分析可用于求解结构几何参数与结构应力、位移等结构响应之间的映射关系.人工神经网络(ANN)可实现对复杂非线性函数关系的模拟.该文在对人工神经网络(ANN)系统研究的基础上,探讨了将人工神经网络用于结构分析中的可行性.该文采用了BP网络的方法,实现了结构几何参数与结构响应关系的全局映射.主要内容包括:1.人工神经网络(ANN)用于模拟杆系结构的应力、位移响应.2.人工神经网络(ANN)用于板结构的优化设计.3.人工神经网络(ANN)用于板结构的模态分析.通过理论分析和数值模拟研究,该文得出如下结论:1.人工神经网络可以有效的应用于机械结构的结构分析、模态分析、结构优化设计中,误差在工程所允许的范围之内(<5%).2.证实了"超立方体"法用于结构分析也是一种行之有效的样本选取方法.3.人工神经网络应用于机械结构时,当隐层神经元数增多时,在训练过程中易出现"过训练"现象,所以,应用于机械结构的神经网络的隐层神经元数不宜多.人工神经网络应用于机械结构中有一定的局限性.因为要得到训练完好的神经网络,对使用"超立方体法"选取样本的网络所需的样本数为3n,应用于复杂的结构问题时,所需的学习样本数将指数增长.这种采用BP网络建立的结构应力、位移等与该结构几何参数之间的全局映射模型,将会提高遗传算法用于结构优化设计的效率.该论文为铁路机车车辆结构优化设计的深入研究打下基础.

引证文献(1条)

1.张延林.佟德军BP神经网络的汽车故障诊断系统[期刊论文]-自动化仪表 2009(4)

本文链接:https://www.360docs.net/doc/5d80859.html,/Periodical_wnsfxyxb200805022.aspx

授权使用:内蒙古大学(nmgdxip),授权号:e73b9c18-5d52-41cf-9574-9da900b4e2ff,下载时间:2010年7月4日

(完整版)BP神经网络matlab实例(简单而经典).doc

p=p1';t=t1'; [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t); % 原始数据归一化 net=newff(minmax(pn),[5,1],{'tansig','purelin'},'traingdx'); %设置网络,建立相应的BP 网络net.trainParam.show=2000; % 训练网络 net.trainParam.lr=0.01; net.trainParam.epochs=100000; net.trainParam.goal=1e-5; [net,tr]=train(net ,pn,tn); %调用TRAINGDM 算法训练BP 网络 pnew=pnew1'; pnewn=tramnmx(pnew,minp,maxp); anewn=sim(net,pnewn); anew=postmnmx(anewn,mint,maxt); %对 BP 网络进行仿真%还原数据 y=anew'; 1、 BP 网络构建 (1)生成 BP 网络 net newff ( PR,[ S1 S2...SNl],{ TF1 TF 2...TFNl }, BTF , BLF , PF ) PR :由R 维的输入样本最小最大值构成的R 2 维矩阵。 [ S1 S2...SNl] :各层的神经元个数。 {TF 1 TF 2...TFNl } :各层的神经元传递函数。 BTF :训练用函数的名称。 (2)网络训练 [ net,tr ,Y, E, Pf , Af ] train (net, P, T , Pi , Ai ,VV , TV ) (3)网络仿真 [Y, Pf , Af , E, perf ] sim(net, P, Pi , Ai ,T ) {'tansig','purelin'},'trainrp' BP 网络的训练函数 训练方法 梯度下降法 有动量的梯度下降法 自适应 lr 梯度下降法 自适应 lr 动量梯度下降法弹性梯度下降法训练函数traingd traingdm traingda traingdx trainrp Fletcher-Reeves 共轭梯度法traincgf Ploak-Ribiere 共轭梯度法traincgp

BP神经网络模型应用实例

BP神经网络模型 第1节基本原理简介 近年来全球性的神经网络研究热潮的再度兴起,不仅仅是因为神经科学本身取得了巨大的进展.更主要的原因在于发展新型计算机和人工智能新途径的迫切需要.迄今为止在需要人工智能解决的许多问题中,人脑远比计算机聪明的多,要开创具有智能的新一代计算机,就必须了解人脑,研究人脑神经网络系统信息处理的机制.另一方面,基于神经科学研究成果基础上发展出来的人工神经网络模型,反映了人脑功能的若干基本特性,开拓了神经网络用于计算机的新途径.它对传统的计算机结构和人工智能是一个有力的挑战,引起了各方面专家的极大关注. 目前,已发展了几十种神经网络,例如Hopficld模型,Feldmann等的连接型网络模型,Hinton等的玻尔茨曼机模型,以及Rumelhart等的多层感知机模型和Kohonen的自组织网络模型等等。在这众多神经网络模型中,应用最广泛的是多层感知机神经网络。多层感知机神经网络的研究始于50年代,但一直进展不大。直到1985年,Rumelhart等人提出了误差反向传递学习算法(即BP算),实现了Minsky的多层网络

设想,如图34-1所示。 BP 算法不仅有输入层节点、输出层节点,还可有1个或多个隐含层节点。对于输入信号,要先向前传播到隐含层节点,经作用函数后,再把隐节点的输出信号传播到输出节点,最后给出输出结果。节点的作用的激励函数通常选取S 型函数,如 Q x e x f /11)(-+= 式中Q 为调整激励函数形式的Sigmoid 参数。该算法的学习过程由正向传播和反向传播组成。在正向传播过程中,输入信息从输入层经隐含层逐层处理,并 传向输出层。每一层神经元的状态只影响下一层神经

BP神经网络地设计实例(MATLAB编程)

神经网络的设计实例(MATLAB编程) 例1 采用动量梯度下降算法训练BP 网络。训练样本定义如下: 输入矢量为 p =[-1 -2 3 1 -1 1 5 -3] 目标矢量为t = [-1 -1 1 1] 解:本例的MATLAB 程序如下: close all clear echo on clc % NEWFF——生成一个新的前向神经网络% TRAIN——对BP 神经网络进行训练 % SIM——对BP 神经网络进行仿真pause % 敲任意键开始 clc % 定义训练样本 P=[-1, -2, 3, 1; -1, 1, 5, -3]; % P 为输入矢量T=[-1, -1, 1, 1]; % T 为目标矢量

clc % 创建一个新的前向神经网络 net=newff(minmax(P),[3,1],{'tansig','purelin'},'traingdm') % 当前输入层权值和阈值 inputWeights=net.IW{1,1} inputbias=net.b{1} % 当前网络层权值和阈值 layerWeights=net.LW{2,1} layerbias=net.b{2} pause clc % 设置训练参数 net.trainParam.show = 50; net.trainParam.lr = 0.05; net.trainParam.mc = 0.9; net.trainParam.epochs = 1000; net.trainParam.goal = 1e-3; pause clc % 调用TRAINGDM 算法训练BP 网络 [net,tr]=train(net,P,T);

Matlab训练好的BP神经网络如何保存和读取方法(附实例说明)

Matlab训练好的BP神经网络如何保存和读取方法(附实例说明) 看到论坛里很多朋友都在提问如何存储和调用已经训练好的神经网络。 本人前几天也遇到了这样的问题,在论坛中看了大家的回复,虽然都提到了关键的两个函数“save”和“load”,但或多或少都简洁了些,让人摸不着头脑(呵呵,当然也可能是本人太菜)。通过不断调试,大致弄明白这两个函数对神经网络的存储。下面附上实例给大家做个说明,希望对跟我有一样问题的朋友有所帮助。 如果只是需要在工作目录下保到当前训练好的网络,可以在命令窗口 输入:save net %net为已训练好的网络 然后在命令窗口 输入:load net %net为已保存的网络 加载net。 但一般我们都会在加载完后对网络进行进一步的操作,建议都放在M文件中进行保存网络和调用网络的操作 如下所示: %% 以函数的形式训练神经网络 functionshenjingwangluo() P=[-1,-2,3,1; -1,1,5,-3]; %P为输入矢量 T=[-1,-1,1,1,]; %T为目标矢量 net=newff(minmax(P),[3,1],{'tansig','purelin'},'traingdm') %创建一个新的前向神经网络 inputWeights=net.IW{1,1} inputbias=net.b{1} %当前输入层权值和阀值 layerWeights=net.LW{2,1} layerbias=net.b{2} net.trainParam.show=50; net.trainParam.lr=0.05; net.trainParam.mc=0.9;

BP神经网络matlab实例

神经网络Matlab p=p1';t=t1'; [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t); %原始数据归一化net=newff(minmax(pn),[5,1],{'tansig','purelin'},'traingdx');%设置网络,建立相应的BP网络 net.trainParam.show=2000; % 训练网络 net.trainParam.lr=0.01; net.trainParam.epochs=100000; net.trainParam.goal=1e-5; [net,tr]=train(net ,pn,tn); %调用TRAINGDM算法训练BP网络 pnew=pnew1'; pnewn=tramnmx(pnew,minp,maxp); anewn=sim(net,pnewn); %对BP网络进行仿真 anew=postmnmx(anewn,mint,maxt); %还原数据 y=anew'; 1、BP网络构建 (1)生成BP网络 = net newff PR S S SNl TF TF TFNl BTF BLF PF (,[1 2...],{ 1 2...},,,) R?维矩阵。 PR:由R维的输入样本最小最大值构成的2

S S SNl:各层的神经元个数。 [1 2...] TF TF TFNl:各层的神经元传递函数。 { 1 2...} BTF:训练用函数的名称。 (2)网络训练 = [,,,,,] (,,,,,,) net tr Y E Pf Af train net P T Pi Ai VV TV (3)网络仿真 = [,,,,] (,,,,) Y Pf Af E perf sim net P Pi Ai T {'tansig','purelin'},'trainrp' BP网络的训练函数 训练方法训练函数 梯度下降法traingd 有动量的梯度下降法traingdm 自适应lr梯度下降法traingda 自适应lr动量梯度下降法traingdx 弹性梯度下降法trainrp Fletcher-Reeves共轭梯度法traincgf Ploak-Ribiere共轭梯度法traincgp Powell-Beale共轭梯度法traincgb 量化共轭梯度法trainscg 拟牛顿算法trainbfg 一步正割算法trainoss Levenberg-Marquardt trainlm

matlab BP神经网络

基于MATLAB的BP神经网络工具箱函数 最新版本的神经网络工具箱几乎涵盖了所有的神经网络的基本常用模型,如感知器和BP网络等。对于各种不同的网络模型,神经网络工具箱集成了多种学习算法,为用户提供了极大的方便[16]。Matlab R2007神经网络工具箱中包含了许多用于BP网络分析与设计的函数,BP网络的常用函数如表3.1所示。 3.1.1BP网络创建函数 1) newff 该函数用于创建一个BP网络。调用格式为: net=newff net=newff(PR,[S1S2..SN1],{TF1TF2..TFN1},BTF,BLF,PF) 其中, net=newff;用于在对话框中创建一个BP网络。 net为创建的新BP神经网络; PR为网络输入向量取值范围的矩阵; [S1S2…SNl]表示网络隐含层和输出层神经元的个数; {TFlTF2…TFN1}表示网络隐含层和输出层的传输函数,默认为‘tansig’; BTF表示网络的训练函数,默认为‘trainlm’; BLF表示网络的权值学习函数,默认为‘learngdm’; PF表示性能数,默认为‘mse’。

2)newcf函数用于创建级联前向BP网络,newfftd函数用于创建一个存在输入延迟的前向网络。 3.1.2神经元上的传递函数 传递函数是BP网络的重要组成部分。传递函数又称为激活函数,必须是连续可微的。BP网络经常采用S型的对数或正切函数和线性函数。 1) logsig 该传递函数为S型的对数函数。调用格式为: A=logsig(N) info=logsig(code) 其中, N:Q个S维的输入列向量; A:函数返回值,位于区间(0,1)中; 2)tansig 该函数为双曲正切S型传递函数。调用格式为: A=tansig(N) info=tansig(code) 其中, N:Q个S维的输入列向量; A:函数返回值,位于区间(-1,1)之间。 3)purelin 该函数为线性传递函数。调用格式为: A=purelin(N) info=purelin(code) 其中, N:Q个S维的输入列向量; A:函数返回值,A=N。 3.1.3BP网络学习函数 1)learngd 该函数为梯度下降权值/阈值学习函数,它通过神经元的输入和误差,以及权值和阈值的学习效率,来计算权值或阈值的变化率。调用格式为: [dW,ls]=learngd(W,P,Z,N,A,T,E,gW,gA,D,LP,LS) [db,ls]=learngd(b,ones(1,Q),Z,N,A,T,E,gW,gA,D,LP,LS)

bp神经网络及matlab实现

bp神经网络及matlab实现 分类:算法学习2012-06-20 20:56 66399人阅读评论(28) 收藏举报网络matlab算法functionnetworkinput 本文主要内容包括:(1) 介绍神经网络基本原理,(2) https://www.360docs.net/doc/5d80859.html,实现前向神经网络的方法,(3) Matlab实现前向神经网络的方法。 第0节、引例 本文以Fisher的Iris数据集作为神经网络程序的测试数据集。Iris数据集可以在https://www.360docs.net/doc/5d80859.html,/wiki/Iris_flower_data_set 找到。这里简要介绍一下Iris数据集: 有一批Iris花,已知这批Iris花可分为3个品种,现需要对其进行分类。不同品种的Iris花的花萼长度、花萼宽度、花瓣长度、花瓣宽度会有差异。我们现有一批已知品种的Iris花的花萼长度、花萼宽度、花瓣长度、花瓣宽度的数据。 一种解决方法是用已有的数据训练一个神经网络用作分类器。 如果你只想用C#或Matlab快速实现神经网络来解决你手头上的问题,或者已经了解神经网络基本原理,请直接跳到第二节——神经网络实现。 第一节、神经网络基本原理 1. 人工神经元( Artificial Neuron )模型 人工神经元是神经网络的基本元素,其原理可以用下图表示:

图1. 人工神经元模型 图中x1~xn是从其他神经元传来的输入信号,wij表示表示从神经元j到神经元i的连接权值,θ表示一个阈值( threshold ),或称为偏置( bias )。则神经元i的输出与输入的关系表示为: 图中yi表示神经元i的输出,函数f称为激活函数 ( Activation Function )或转移函数( Transfer Function ) ,net称为净激活(net activation)。若将阈值看成是神经元i的一个输入x0的权重wi0,则上面的式子可以简化为: 若用X表示输入向量,用W表示权重向量,即: X = [ x0 , x1 , x2 , ....... , xn ]

用遗传算法优化BP神经网络的Matlab编程实例

用遗传算法优化BP神经网络的 Matlab编程实例 由于BP网络的权值优化是一个无约束优化问题,而且权值要采用实数编码,所以直接利用Matlab遗传算法工具箱。以下贴出的代码是为一个19输入变量,1个输出变量情况下的非线性回归而设计的,如果要应用于其它情况,只需改动编解码函数即可。 程序一:GA训练BP权值的主函数 function net=GABPNET(XX,YY) %-------------------------------------------------------------------------- % GABPNET.m % 使用遗传算法对BP网络权值阈值进行优化,再用BP 算法训练网络 %-------------------------------------------------------------------------- %数据归一化预处理 nntwarn off XX=premnmx(XX); YY=premnmx(YY); %创建网络 net=newff(minmax(XX),[19,25,1],{'tansig','tansig','purelin'},' trainlm'); %下面使用遗传算法对网络进行优化 P=XX; T=YY; R=size(P,1); S2=size(T,1); S1=25;%隐含层节点数 S=R*S1+S1*S2+S1+S2;%遗传算法编码长度 aa=ones(S,1)*[-1,1]; popu=50;%种群规模 initPpp=initializega(popu,aa,'gabpEval');%初始化种群 gen=100;%遗传代数 %下面调用gaot工具箱,其中目标函数定义为gabpEval [x,endPop,bPop,trace]=ga(aa,'gabpEval',[],initPpp,[1e-6 1 1],'maxGenTerm',gen,... 'normGeomSelect',[0.09],['arithXover'],[2],'nonUnifMutatio n',[2 gen 3]); %绘收敛曲线图 figure(1) plot(trace(:,1),1./trace(:,3),'r-'); hold on plot(trace(:,1),1./trace(:,2),'b-'); xlabel('Generation'); ylabel('Sum-Squared Error'); figure(2) plot(trace(:,1),trace(:,3),'r-'); hold on plot(trace(:,1),trace(:,2),'b-'); xlabel('Generation'); ylabel('Fittness'); %下面将初步得到的权值矩阵赋给尚未开始训练的BP网络 [W1,B1,W2,B2,P,T,A1,A2,SE,val]=gadecod(x); net.LW{2,1}=W1; net.LW{3,2}=W2; net.b{2,1}=B1; net.b{3,1}=B2; XX=P; YY=T; %设置训练参数 net.trainParam.show=1; net.trainParam.lr=1; net.trainParam.epochs=50; net.trainParam.goal=0.001; %训练网络 net=train(net,XX,YY); 程序二:适应值函数 function [sol, val] = gabpEval(sol,options) % val - the fittness of this individual % sol - the individual, returned to allow for Lamarckian evolution % options - [current_generation] load data2 nntwarn off XX=premnmx(XX); YY=premnmx(YY); P=XX; T=YY; R=size(P,1); S2=size(T,1); S1=25;%隐含层节点数 S=R*S1+S1*S2+S1+S2;%遗传算法编码长度 for i=1:S, x(i)=sol(i); end; [W1, B1, W2, B2, P, T, A1, A2, SE, val]=gadecod(x);

BP神经网络matlab实例

BP神经网络及其MATLAB实例 问题:BP神经网络预测2020年某地区客运量和货运量 公路运量主要包括公路客运量和公路货运量两方面。某个地区的公路运量主要与该地区的人数、机动车数量和公路面积有关,已知该地区20年(1999-2018)的公路运量相关数据如下: 人数/万人: 20.5522.4425.3727.1329.4530.1030.9634.0636.4238.09 39.1339.9941.9344.5947.3052.8955.7356.7659.1760.63机动车数量/万辆: 0.60.750.850.9 1.05 1.35 1.45 1.6 1.7 1.85 2.15 2.2 2.25 2.35 2.5 2.6 2.7 2.85 2.95 3.1 公路面积/单位:万平方公里: 0.090.110.110.140.200.230.230.320.320.34 0.360.360.380.490.560.590.590.670.690.79 公路客运量/万人:5126621777309145104601138712353157501830419836 21024194902043322598251073344236836405484292743462公路货运量/万吨: 1237137913851399166317141834432281328936 11099112031052411115133201676218673207242080321804影响公路客运量和公路货运量主要的三个因素是:该地区的人数、机动车数量和公路面积。 Matlab代码实现 %人数(单位:万人) numberOfPeople=[20.5522.4425.3727.1329.4530.1030.9634.0636.42 38.0939.1339.9941.9344.5947.3052.8955.7356.7659.1760.63]; %机动车数(单位:万辆) numberOfAutomobile=[0.60.750.850.91.051.351.451.61.71.852.15 2.2 2.25 2.35 2.5 2.6 2.7 2.85 2.95 3.1]; %公路面积(单位:万平方公里) roadArea=[0.090.110.110.140.200.230.230.320.320.340.360.360.38

matlab神经网络实例(超级简单)

介绍神经网络算法在机械结构优化中的应用的例子 (大家要学习的时候只需要把输入输出变量更改为你自己的数据既可以了,如果看完了还有问题的话可以加我微博“极南师兄”给我留言,与大家共同进步)。 把一个结构的8个尺寸参数设计为变量,如上图所示, 对应的质量,温差,面积作为输出。用神经网络拟合变量与输出的数学模型,首相必须要有数据来源,这里我用复合中心设计法则构造设计点,根据规则,八个变量将构造出81个设计点。然后在ansys workbench中进行81次仿真(先在proe建模并设置变量,将模型导入wokbench中进行相应的设置,那么就会自动的完成81次仿真,将结果导出来exceel文件) Matlab程序如下 P= [20 2.5 6 14.9 16.5 6 14.9 16.5 15 2.5 6 14.9 16.5 6 14.9 16.5 25 2.5 6 14.9 16.5 6 14.9 16.5 20 1 6 14.9 16.5 6 14.9 16.5 20 4 6 14.9 16.5 6 14.9 16.5 20 2.5 2 14.9 16.5 6 14.9 16.5 20 2.5 10 14.9 16.5 6 14.9 16.5 20 2.5 6 10 16.5 6 14.9 16.5 20 2.5 6 19.8 16.5 6 14.9 16.5 20 2.5 6 14.9 10 6 14.9 16.5 20 2.5 6 14.9 23 6 14.9 16.5 20 2.5 6 14.9 16.5 2 14.9 16.5 20 2.5 6 14.9 16.5 10 14.9 16.5 20 2.5 6 14.9 16.5 6 10 16.5 20 2.5 6 14.9 16.5 6 19.8 16.5 20 2.5 6 14.9 16.5 6 14.9 10 20 2.5 6 14.9 16.5 6 14.9 23 17.51238947 1.75371684 4.009911573 12.46214168 13.26610631 4.009911573 12.46214168 19.73389369 22.48761053 1.75371684 4.009911573 12.46214168 13.26610631 4.009911573 12.46214168 13.26610631 17.51238947 3.24628316 4.009911573 12.46214168 13.26610631 4.009911573

基于MATLAB 的神经网络的仿真

智能控制 基于MATLAB 的神经网络的仿真 学院:机电工程学院 姓名:白思明 学号:2011301310111 年级:自研-11 学科:检测技术与自动化装置 日期:2012-4-3

一.引言 人工神经网络以其具有信息的分布存储、并行处理以及自学习能力等优点, 已经在模式识别、 信号处理、智能控制及系统建模等领域得到越来越广泛的应用。MATLAB中的神经网络工具箱是以人工神经网络理论为基础, 利用MATLAB 语言构造出许多典型神经网络的传递函数、网络权值修正规则和网络训练方法,网络的设计者可根据自己的需要调用工具箱中有关神经网络的设计与训练的程序, 免去了繁琐的编程过程。 二.神经网络工具箱函数 最新版的MATLAB 神经网络工具箱为Version4.0.3, 它几乎涵盖了所有的神经网络的基本常用类型,对各种网络模型又提供了各种学习算法,我们可以根据自己的需要调用工具箱中的有关设计与训练函数,很方便地进行神经网络的设计和仿真。目前神经网络工具箱提供的神经网络模型主要用于: 1.数逼近和模型拟合; 2.信息处理和预测; 3.神经网络控制; 4.故障诊断。 神经网络工具箱提供了丰富的工具函数,其中有针对某一种网络的,也有通用的,下面列表中给出了一些比较重要的工具箱函数。 三.仿真实例 BP 网络是一种多层前馈神经网络,由输入层、隐层和输出层组成。BP 网络模型结构见图1。网络同层节点没有任何连接,隐层节点可以由一个或多个。网络的学习过程由正向和反向传播两部分组成。在正向传播中,输入信号从输入层节点经隐层节点逐层传向输出层节点。每一层神经元的状态只影响到下一层神经元网络,如输出层不能得到期望的输出,那么转入误差反向传播过程,将误差信号沿原来的连接通路返回,通过修改各层神经元的权值,逐次地向输入层传播去进行计算,在经正向传播过程,这两个过程反复运用,使得误差信号最小或达到人们所期望的要求时,学习过程结束。

BP神经网络matlab程序入门实例

认真品味,定会有收获。 BP神经网络matlab源程序代码) %原始数据输入 p=[284528334488;283344884554;448845542928;455429283497;29283497 2261;... 349722616921;226169211391;692113913580;139135804451;35804451 2636;... 445126363471;263634713854;347138543556;385435562659;35562659 4335;... 265943352882;433528824084;433528821999;288219992889;19992889 2175;... 288921752510;217525103409;251034093729;340937293489;37293489 3172;... 348931724568;317245684015;]'; %期望输出 t=[4554292834972261692113913580445126363471385435562659... 4335288240841999288921752510340937293489317245684015... 3666]; ptest=[284528334488;283344884554;448845542928;455429283497;2928 34972261;... 349722616921;226169211391;692113913580;139135804451;35804451 2636;... 445126363471;263634713854;347138543556;385435562659;35562659 4335;... 265943352882;433528824084;433528821999;288219992889;19992889 2175;... 288921752510;217525103409;251034093729;340937293489;37293489 3172;... 348931724568;317245684015;456840153666]'; [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);%将数据归一化 NodeNum1=20;%隐层第一层节点数 NodeNum2=40;%隐层第二层节点数 TypeNum=1;%输出维数 TF1='tansig'; TF2='tansig'; TF3='tansig'; net=newff(minmax(pn),[NodeNum1,NodeNum2,TypeNum], {TF1TF2TF3},'traingdx'); %网络创建traingdm net.trainParam.show=50; net.trainParam.epochs=50000;%训练次数设置 net.trainParam.goal=1e-5;%训练所要达到的精度

BP神经网络的Matlab语法介绍

1. 数据预处理 在训练神经网络前一般需要对数据进行预处理,一种重要的预处理手段是归一化处理。下面简要介绍归一化处理的原理与方法。 (1) 什么是归一化? 数据归一化,就是将数据映射到[0,1]或[-1,1]区间或更小的区间,比如 (0.1,0.9) 。 (2) 为什么要归一化处理? <1>输入数据的单位不一样,有些数据的范围可能特别大,导致的结果是神经网络收敛慢、训练时间长。 <2>数据范围大的输入在模式分类中的作用可能会偏大,而数据范围小的输入作用就可能会偏小。 <3>由于神经网络输出层的激活函数的值域是有限制的,因此需要将网络训练的目标数据映射到激活函数的值域。例如神经网络的输出层若采用S形激活函数,由于S形函数的值域限制在(0,1),也就是说神经网络的输出只能限制在(0,1),所以训练数据的输出就要归一化到[0,1]区间。 <4>S形激活函数在(0,1)区间以外区域很平缓,区分度太小。例如S形函数f(X)在参数a=1时,f(100)与f(5)只相差0.0067。 (3) 归一化算法 一种简单而快速的归一化算法是线性转换算法。线性转换算法常见有两种形式: <1> y = ( x - min )/( max - min ) 其中min为x的最小值,max为x的最大值,输入向量为x,归一化后的输出向量为y 。上式将数据归一化到[ 0 , 1 ]区间,当激活函数采用S形函数时(值域为(0,1))时这条式子适用。 <2> y = 2 * ( x - min ) / ( max - min ) - 1 这条公式将数据归一化到[ -1 , 1 ] 区间。当激活函数采用双极S形函数(值域为(-1,1))时这条式子适用。 (4) Matlab数据归一化处理函数 Matlab中归一化处理数据可以采用premnmx ,postmnmx ,tramnmx 这3个函数。 <1> premnmx 语法:[pn,minp,maxp,tn,mint,maxt] = premnmx(p,t) 参数: pn:p矩阵按行归一化后的矩阵 minp,maxp:p矩阵每一行的最小值,最大值

神经网络matlab实现实例

神经网络matlab实现实例 clear all clc %原始数据输入 p=[1000 1200 1300;1200 1300 1500;1300 1500 1800;1500 1800 1900 ;1800 1900 2000 ;1900 2000 2200 ;]'; %期望输出 t=[1500 1800 1900 2000 2200 2300 ]; ptest=[1000 1200 1300;1200 1300 1500;1300 1500 1800;1500 1800 1900 ;1800 1900 2000 ;1900 2000 2200 ;2000 2200 2300;]'; [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t); %将数据归一化 NodeNum1=20; %隐层第一层节点数 NodeNum2=40;%隐层第二层节点数 TypeNum=1; %输出维数 TF1='tansig'; TF2='tansig' TF3='tansig' net=newff(minmax(pn),[NodeNum1,NodeNum2,TypeNum],{TF1,TF2,TF3},'train gdx'); %网络创建traingdm net.trainParam.show=50; net.trainParam.epochs=50000; %训练次数设置 net.trainParam.goal=1e-5; %训练所要达到的精度 net.trainParam.lr=0.01; %学习速率 net=train(net,pn,tn); p2n=tramnmx(ptest,minp,maxp); %测试数据的归一化 an=sim(net,p2n); [a]=postmnmx(an,mint,maxt) %数据的反归一化,即最终想要得到的预测结果 plot(1:length(t),t,'o',1:length(t)+1,a,'+'); title('o表示预测值---*表示实际值') grid on m=length(a); %向量a的长度 t1=[t,a(m)]; error=t1-a; %误差向量 figure plot(1:length(error),error,'-.') title('误差变化图') grid on

使用MATLAB遗传算法工具实例(详细)

第八章使用MATLAB遗传算法工具 最新发布的MATLAB 7.0 Release 14已经包含了一个专门设计的遗传算法与直接搜索工具箱(Genetic Algorithm and Direct Search Toolbox,GADS)。使用遗传算法与直接搜索工具箱,可以扩展MATLAB及其优化工具箱在处理优化问题方面的能力,可以处理传统的优化技术难以解决的问题,包括那些难以定义或不便于数学建模的问题,可以解决目标函数较复杂的问题,比如目标函数不连续、或具有高度非线性、随机性以及目标函数没有导数的情况。 本章8.1节首先介绍这个遗传算法与直接搜索工具箱,其余各节分别介绍该工具箱中的遗传算法工具及其使用方法。 8.1 遗传算法与直接搜索工具箱概述 本节介绍MATLAB的GADS(遗传算法与直接搜索)工具箱的特点、图形用户界面及运行要求,解释如何编写待优化函数的M文件,且通过举例加以阐明。 8.1.1 工具箱的特点 GADS工具箱是一系列函数的集合,它们扩展了优化工具箱和MATLAB数值计算环境的性能。遗传算法与直接搜索工具箱包含了要使用遗传算法和直接搜索算法来求解优化问题的一些例程。这些算法使我们能够求解那些标准优化工具箱围之外的各种优化问题。所有工具箱函数都是MATLAB的M文件,这些文件由实现特定优化算法的MATLAB语句所写成。 使用语句 type function_name 就可以看到这些函数的MATLAB代码。我们也可以通过编写自己的M文件来实现来扩展遗传算法和直接搜索工具箱的性能,也可以将该工具箱与MATLAB的其他工具箱或Simulink结合使用,来求解优化问题。 工具箱函数可以通过图形界面或MATLAB命令行来访问,它们是用MATLAB语言编写的,对用户开放,因此可以查看算法、修改源代码或生成用户函数。 遗传算法与直接搜索工具箱可以帮助我们求解那些不易用传统方法解决的问题,譬如表查找问题等。 遗传算法与直接搜索工具箱有一个精心设计的图形用户界面,可以帮助我们直观、方便、快速地求解最优化问题。 8.1.1.1 功能特点 遗传算法与直接搜索工具箱的功能特点如下: (1)图形用户界面和命令行函数可用来快速地描述问题、设置算法选项以及监控进程。 (2)具有多个选项的遗传算法工具可用于问题创建、适应度计算、选择、交叉和变异。 (3)直接搜索工具实现了一种模式搜索方法,其选项可用于定义网格尺寸、表 决方法和搜索方法。 (4)遗传算法与直接搜索工具箱函数可与MATLAB的优化工具箱或其他的 MATLAB程序结合使用。 (5)支持自动的M代码生成。 8.1.1.2 图形用户界面和命令行函数

用遗传算法优化BP神经网络的Matlab编程实例

用遗传算法优化BP神经网络的M a t l a b编程实例 由于BP网络的权值优化是一个无约束优化问题,而且权值要采用实数编码,所以直接利用Matlab遗传算法工具箱。以下贴出的代码是为一个19输入变量,1个输出变量情况下的非线性回归而设计的,如果要应用于其它情况,只需改动编解码函数即可。 程序一:GA训练BP权值的主函数 function net=GABPNET(XX,YY) %-------------------------------------------------------------------------- %??GABPNET.m %??使用遗传算法对BP网络权值阈值进行优化,再用BP算法训练网络 %-------------------------------------------------------------------------- %数据归一化预处理 nntwarn off XX=premnmx(XX); YY=premnmx(YY); %创建网络 net=newff(minmax(XX),[19,25,1],{'tansig','tansig','purelin' },'trainlm'); %下面使用遗传算法对网络进行优化 P=XX; T=YY; R=size(P,1); S2=size(T,1); S1=25;%隐含层节点数 S=R*S1+S1*S2+S1+S2;%遗传算法编码长度 aa=ones(S,1)*[-1,1]; popu=50;%种群规模 initPpp=initializega(popu,aa,'gabpEval');%初始化种群 gen=100;%遗传代数 %下面调用gaot工具箱,其中目标函数定义为gabpEval [x,endPop,bPop,trace]=ga(aa,'gabpEval',[],initPpp,[1e-6 1 1],'maxGenTerm',gen,... ??'normGeomSelect',[0.09],['arithXover'],[2],'nonUnifMuta tion',[2 gen 3]); %绘收敛曲线图 figure(1) plot(trace(:,1),1./trace(:,3),'r-'); hold on plot(trace(:,1),1./trace(:,2),'b-'); xlabel('Generation'); ylabel('Sum-Squared Error'); figure(2) plot(trace(:,1),trace(:,3),'r-'); hold on plot(trace(:,1),trace(:,2),'b-'); xlabel('Generation'); ylabel('Fittness'); %下面将初步得到的权值矩阵赋给尚未开始训练的BP 网络 [W1,B1,W2,B2,P,T,A1,A2,SE,val]=gadecod(x); net.LW{2,1}=W1; net.LW{3,2}=W2; net.b{2,1}=B1; net.b{3,1}=B2; XX=P; YY=T; %设置训练参数 %训练网络 net=train(net,XX,YY); 程序二:适应值函数 function [sol, val] = gabpEval(sol,options) % val - the fittness of this individual % sol - the individual, returned to allow for Lamarckian evolution % options - [current_generation] load data2 nntwarn off XX=premnmx(XX); YY=premnmx(YY); P=XX; T=YY; R=size(P,1); S2=size(T,1); S1=25;%隐含层节点数 S=R*S1+S1*S2+S1+S2;%遗传算法编码长度 for i=1:S, ? ?x(i)=sol(i); end; [W1, B1, W2, B2, P, T, A1, A2, SE, val]=gadecod(x); 程序三:编解码函数 function [W1, B1, W2, B2, P, T, A1, A2, SE, val]=gadecod(x) load data2

Matlab中各种神经网络的使用示例

Matlab中各种神经网络的使用示例 %通用BP神经网络 (1) %通用径向基函数网络 (2) %广义回归神经网络 (4) %通用感应器神经网络 (6) %通用BP神经网络 P=[-1 -1 2 2;0 5 0 5]; t=[-1 -1 1 1]; net=newff(minmax(P),[3,1],{'tansig','purelin'},'traingd'); %输入参数依次为:'样本P范围',[各层神经元数目],{各层传递函数},'训练函数' %训练函数traingd--梯度下降法,有7个训练参数. %训练函数traingdm--有动量的梯度下降法,附加1个训练参数mc(动量因子,缺省为0.9) %训练函数traingda--有自适应lr的梯度下降法,附加3个训练参数:lr_inc(学习率增长比,缺省为1.05; % lr_dec(学习率下降比,缺省为0.7);max_perf_inc(表现函数增加最大比,缺省为1.04) %训练函数traingdx--有动量的梯度下降法中赋以自适应lr的方法,附加traingdm和traingda 的4个附加参数 %训练函数trainrp--弹性梯度下降法,可以消除输入数值很大或很小时的误差,附加4个训练参数: % delt_inc(权值变化增加量,缺省为1.2);delt_dec(权值变化减小量,缺省为0.5); % delta0(初始权值变化,缺省为0.07);deltamax(权值变化最大值,缺省为50.0) % 适合大型网络 %训练函数traincgf--Fletcher-Reeves共轭梯度法;训练函数traincgp--Polak-Ribiere共轭梯度法; %训练函数traincgb--Powell-Beale共轭梯度法 %共轭梯度法占用存储空间小,附加1训练参数searchFcn(一维线性搜索方法,缺省为srchcha);缺少1个训练参数lr %训练函数trainscg--量化共轭梯度法,与其他共轭梯度法相比,节约时间.适合大型网络 % 附加2个训练参数:sigma(因为二次求导对权值调整的影响参数,缺省为5.0e-5); % lambda(Hessian阵不确定性调节参数,缺省为5.0e-7) % 缺少1个训练参数:lr %训练函数trainbfg--BFGS拟牛顿回退法,收敛速度快,但需要更多内存,与共轭梯度法训练参数相同,适合小网络 %训练函数trainoss--一步正割的BP训练法,解决了BFGS消耗内存的问题,与共轭梯度法训练参数相同 %训练函数trainlm--Levenberg-Marquardt训练法,用于内存充足的中小型网络 net=init(net);

相关文档
最新文档