文档库 最新最全的文档下载
当前位置:文档库 › 7-8基于BP神经网络的铸坯质量预报模型开发

7-8基于BP神经网络的铸坯质量预报模型开发

7-8基于BP神经网络的铸坯质量预报模型开发
7-8基于BP神经网络的铸坯质量预报模型开发

基于BP神经网络的铸坯质量预报模型

李向奎张家泉

(北京科技大学钢冶系)

摘要:针对国内某钢厂大方坯连铸机的特点,采用BP神经网络开发了用于预报中心偏析、中间裂纹及中心裂纹的铸坯质量预报模型。利用Visual C++6.0编写了相应软件,并使用该厂连铸生产中的实际数据作为样本,对构建的网络进行了训练。采用训练成功的网络对样本进行了预报,结果表明,该模型具有较高的预报精度,能够满足现场的使用要求。

1、前言

连铸是钢材生产中的一个重要工序,连铸坯质量好坏不仅和钢材的最终质量密切相关,还影响整个钢铁企业的生产效率。随着国家大力提倡发展循环经济,冶金企业对节能降耗的要求也越来越高。在以具有能耗低、投资省、成材率高、生产周期短等明显特征的近终形连铸一连轧、热送热装和直接轧制为代表的工艺紧凑化技术飞速发展的今天,传统的冷态取样检查铸坯质量的判定方法已远远不能适应这一要求, 而利用模型在线诊断预报铸坯质量新

技术的发展成为必然。

近十多年,关于铸坯质量的在线预报,国内外进行了不断探索。英国钢铁公司于20世纪80年代开发了结晶器热监控专家系统(MTM)[1~2],该系统通过热电偶测定结晶器铜板温度场进行漏钢预报和表面质量预报。奥钢联开发了计算机辅助质量控制专家系统(CAQC)[3~6],曼内斯曼.德马格公司开发了质量评估专家系统(XQE)[7]以及Daneli公司开发了QCS专家系统等等[8]。宝钢在日本新日铁的计算机辅助质量判定(CAQJ )系统的基础上,依靠宝钢自身的技术力量,经过工艺、设备和计算机人员的共同努力开发了板坯品质异常把握模型和漏钢预报系统[9~10]。上面这些系统有一个共同的特点:其预报方法大部分都是基于连铸机理模型所建立的逻辑判断模型。由于连铸是一个边充填、边凝固并涉及凝固体高温塑性变形的复杂的动态凝固工艺,铸坯缺陷产生的机理非常复杂,影响铸坯质量的因素繁多,应用基于凝固机理的数学模型建立的铸坯质量预报模型很难达到令人满意的预报精度,所以在实际应用中具有相当大的局限性。

而神经网络的出现给缺陷诊断提供了可能,借助于神经网络良好的自适应性、非线性逼近能力、记忆能力以及泛化能力,就可以很好地解决连铸坯质量预报这种多因素、不确定和不精确的复杂的非线性问题。本文采用基于BP算法的多层前馈神经网络模型,通过收集生产数据,将工艺参数作为输入,铸坯质量缺陷作为输出,应用数学方法研究输入与输出信息的关系,从而对铸坯质量进行预报。

2、BP神经网络质量预报模型的原理

BP神经网络是一种典型的多层前向网络。这种网络在输入层与输出层之间至少有一个隐含层,每一个神经元结点与它后面一层中的每个结点都有连接,但是没有后层结点向前层结点的反馈连接,同一层内的结点之间没有连接,也没有跨层的前馈连接。BP神经网络质量预报模型对铸坯质量预报的原理如下:网络输出作为控制目标(即要预报的缺陷类型及等级)可用Y=[Y1,Y2…Ym]T (Y∈R m)表示,其输入向量即与要预报的缺陷有密切关系的各种工艺参数由X=[X1,X2…Xn]T (X ∈R n)表示,研究旨在利用BP网络的自学习与调整功能,对来自生产实践中的样本不断学习,使得网络实际输出不断逼近期望输出从而找出一个从

R n到R m的映射,得到大量样本数据中蕴含的铸坯缺陷与各特征参数之间的非线性函数关系Y=F(X),从而利用这个关系实现铸坯质量缺陷的预测。

3、铸坯质量预报模型的建立

(1)BP网络拓朴结构的确定。理论已经证明,带有一个隐含层的三层网络可以以任意精度逼近任何复杂的函数,它是一个通用的函数逼近模型[11~14]。所以本文选择三层BP网络结构来获得铸坯缺陷与工艺参数之间的函数关系。

(2)输入向量与输出向量的确定。输入向量的维数代表输入层的神经单元数,输出向量的维数就是输出层的单元数。这两个参数由建立的质量模型要实现的目标来确定。铸坯质量缺陷包括内部缺陷、表面缺陷、纯净度以及形状缺陷。而内部缺陷和表面缺陷又包括中心偏析、中心裂纹、中间裂纹、缩孔、中心疏松、表面纵裂纹、表面横裂纹、夹渣、表面夹杂以及气泡等等多种缺陷类型。一个质量预报模型不可能也没必要对所有的缺陷类型都进行预报,而是在建立模型时,根据具体钢厂具体连铸机类型以及所生产的钢种特点来确定模型要实现的控制目标。本文根据国内某钢厂大方坏连铸机的自身特点,对其日常所生产钢种中比较关心的铸坯中心偏析、中心裂纹、中间裂纹三种内部质量来建立预报模型。所以输出层的单元数为3个,分别代表要预测的铸坯的中心偏析、中心裂纹、中间裂纹等级。输入向量就是与这三种内部缺陷密切相关的各种特征参数。输入向量的维数就是最终要确定的各种特征参数的个数。影响这三种内部质量的因素很多,包括钢种化学成份、设备因素以及各种工艺参数。由于神经网络进行的是数值计算,它的输入必须是数值类型,而设备因素比如二冷区扇形段的辊子不转、磨损、变形以及辊缝值的变化情况,这些因素在连铸过程中我们不能实时获取而且也很难用数值来准确描述,所以建立模型时,我们不考虑设备因素即假定连铸时设备处于良好的运行状态,这种情况下,缺陷的产生主要是由于化学成份以及各种工艺参数偏离了正常范围造成的。根据冶金理论以及生产实践经验和该厂连铸大生产中的数据统计分析,最终我们确定了下列15个输入变量:二冷区各段水量(该铸机二冷区分为三个扇形段九个冷却回路)、拉速、中包温度、电磁搅拌电流强度、C 含量、 P 含量、S 含量。输入输出变量的特征见表1。

(3)隐含层单元数的确定。对于隐含层结点数目的选择是一个十分复杂的问题,目前尚无理论上的指导,各类文献对此说法不一,给出的计算式计算结果相差甚远。根据最近Eberhart 的书中阐述,称隐含层结点的选择是一种艺术,因为没有很好的解析式来表示,但是隐含层结点数目与问题的要求,输入输出单元多少都有直接的关系。事实证明,隐单元数太少的网络可能不能训练出来,或者网络不够“强壮”,不能识别以前没有看到的样本,容错性差;但隐单元数太多又使学习时间过长,误差也不一定最佳。本文根据文献[15]中给出的下面两个公式再结合柔性隐结点数选用法用来求解隐含层结点数即先参考下面两个公式求出一个隐节点数进行网络训练学习,在学习一定的次数后,不成功再增加或删除隐单元数,直至确定出最佳结构。

1n a = (1) 12log n n = (2)

其中1n 为隐含层单元数,m 为输出单元数,n 为输入单元数,a 为1~10之间的常数。 本文根据这种方法逐一试探,最终确定隐含层的最优单元数为10。

表1铸坯质量预报模型输入输出变量的特征表

(4)样本集制作及样本数据的归一化处理 网络的输入向量及输出向量确定以后,为了得到最终的网络结构参数(包括各层神经元之间的连接权值及阈值、学习速率以及网络学习误差精度等),就需要为下一步网络的训练准备样本集。本文的样本数据来自该连铸机生产实践中的工艺生产记录及连铸坯低倍检验记录,从记录中挑选出表1指定的特征参数,其中前15个作为信号输入,后3个作为教师信号。

从表1可知,网络的各特征参数原始数据具有不同的量纲、大小差别很大、数据分布范围也不同,如果将其直接送入网络进行训练,可能由于数据平均值和方差不一样会产生夸大某些变量影响输出目标的作用或掩盖某些变量的贡献的不良后果。为了消除这种不良后果,训练前必须对样本集中的数据进行归一化处理。归一化有很多方法,主要有最大最小值标准化方法和平均值及标准偏差标准化方法。通过比较,本文选用第一种方法,如公式(3)所示,标准化后的结果使得输入输出数据都为介于(0-1)之间的数据。

i χ'=

min

min

χχχχ--maz i (3)

式中:假设i χ为原始输入数据,max χ为该组变量数据的最大值,min χ为最小值,而i χ'为标准化后的原始输入数据。

4、铸坯质量预报模型的软件设计

本系统是采用训练好的三层BP 神经网络模型来实现对铸坯质量进行在线评估,因而要涉及到大量的网络训练样本和网络权值、阈值、预报结果以及与钢种有关的工艺数据,故本系统可分为以下两大块:应用部分和数据库部分。数据库部分用来存放训练网络用的训练样本集、训练好的网络单元之间的连接权值、阈值、连铸机所生产钢种的相关工艺数据,更重要的是保存在线预报时产生的预报结果。而应用部分又可分为系统的维护、质量预报。系统维护包括样本维护(包括样本集中样本的查询、修改、删除、增加)和网络训练,系统维护的主要功能是随着连铸生产的不断进行,所生产的钢种范围可能发生了变化,工艺结构可能发生了调整,这时为了保证我们建立的网络模型还能够使用并且还具有较高的预报精度,我们必须向样本集中增加新的产品样本来丰富和完善样本集,再重新训练网络,更新网络的连接权值和阈值。质量预报是该系统的核心功能,是用户最终要求实现的功能,也是本系统的最终目的。预报的实质就是将连铸生产过程中采集的各种工艺参数(将其归一化处理后)送入网络的相应输入单元中,利用训练好的神经网络的前向计算得到铸坯缺陷的产生情况。系统结构图见图1。本系统利用面向对象的编程语言Visual C++ 6.0开发了相应软件。为了拓展该系统的预报应用范围,将BP 网络构建及训练部分开发成了一个通用的网络开发平台,

用户只要按照开发平台程序的提示,输入相应的网络结构参数及样本文件进行训练就可得到你想要的BP网络。网络开发平台的程序流程如图2。

图1铸坯质量预报系统结构图

图2 网络开发平台的程序流程

5、铸坯质量预报模型的仿真

从大方坯连铸机20#钢的实际生产中搜集样本数据85个,将这85个样本分成训练集(70个样本)和测试集(15个样本)。利用网络通用开发平台对训练集中的样本进行训练。在学习过程中为了使网络训练能够达到较高的学习精度,在学习前期可选择较大的学习速率,加速网络的收敛;当学习一定次数后,误差下降变得平缓,此时调整学习速率为较小的值防止网络振荡,从而使网络的总误差达到最小。图3为采用学习速率为0.15时网络的学习曲线;图4为前期采用较大的学习速率0.25后期采用较小的学习速率0.10时的学习曲线。从图3、图4可以看出:学习速率小时,学习过程比较平滑,系统均方差下降较慢;当增大学习速率时,网络出现振荡,但系统均方差下降很快。另外,随着学习次数的增加,网络达到了较好的学习精度。

1000

2000

3000

4000

5000

0.05

0.100.150.200.250.300.350.400.450.500.550.600.65

0.700.750.800.85系 统 均 方差

学习速率为 0.15

学 习 次 数

图3 网络学习曲线

2000

4000

6000

8000

10000

0.05

0.100.150.200.250.300.350.400.45

0.500.550.600.65学习速率:前期0.25,后期0.10

系 统 均 方差

学习次 数

图4 网络学习曲线

网络训练完成以后,将学习好的网络保存,就可以调用质量预报模块利用训练好的网络进行缺陷预报了。质量预报模块的程序界面如图5所示。利用该程序对训练集和测试集中的样本数据进行预报,其结果见表2。

表2 神经网络对样本的预报结果

从表2可以看出,神经网络训练很成功。对训练集的样本,系统对三种缺陷的综合预报准确率达到91.9%;而对没有参加学习的测试样本集中的样本,其预报准确率也达到了83.3%。

6、结论

(1)建立了基于三层BP 网络的铸坯质量预报模型,并利用现场生产中采集的样本进行了仿真,结果表明该模型具有较高的预报准确率。

(2)模型的预报精度取决于网络对大量样本的训练,所以样本数据的数量和可靠性对模型的预报精度有很大的影响。

(3)利用开发的神经网络平台,可以很方便地设计不同拓朴结构的BP网络,从而实现对铸坯其它类型缺陷的预报。

参考文献:

[1] J.D.Madill, A.S.Normanton, A.Robson, D.Stamp·Continuous Casting Development at British

Steel·1998 Steelmaking Conference Proceedings ,285~289.

[2] 郝二虎,毕学工.基于MTM 系统的铸坯表面质量控制.炼钢,2003.10(5):45~47

[3] H.Preissl and T.Faster·Automatic Quality Control of Cast Slabs at the VOEST-ALPINE Steel

Works ·Steelmaking Conference Proceedings 1995, 621~627.

[4] 姜广森,毕学工,金焱等.连铸板坯表面质量预报专家系统.山东冶金,2005.6(3):36~38

[5] 金焱,毕学工·板坯表面质量预报专家系统·河南冶金,vol 12(3),2004

[6] 李救生,毕学工·连铸坯质量预报系统发展及我国应用的探讨·钢铁研究,No.2,2003

[7] B.Henze,U.Falkenreck,C.Kozok et al.Xpert Quality Evaluation for Continuous Casting

Quality Control.Steelmaking Conference Proceedings,1993.

[8] 杨旗·攀钢2#板坯连铸QCS质量控制模型·四川冶金,2005(4):46~48.

[9] 边权胜·宝钢板坯连铸漏钢预报系统的开发与应用·宝钢技术,2000(5):45~47

[10] 许成信·连铸品质异常计算机管理技术·宝钢技术,2003(2):62~65

[11] Cybenko G. .Mathematics of Control[J].Signals and Systems,1980,(2):303-314.

[12] Hornik K,Baldi P.Multilayer Feedforward Networks are Universal Approximators[J].Neural

Network,1989,2:359-366.

[13] Chen T, P,Chen, H,Liu R.Approximation Capability in Ckn by Multilayer Feedforward

Networks and Related Problems[J].IEEE Trans NN,1995,6(1):25-30.

[14] Scarselli F,Tsoi AC.Universal Approximation using FNN:A Survey of Some Existing

Methods and Some New Results[J].Neural Networks,1998,11(1):15-37.

[15] 张立明·人工神经网络模型及其应用·上海:复旦大学出版社,1993.

BP神经网络预测的matlab代码

BP神经网络预测的matlab代码附录5: BP神经网络预测的matlab代码: P=[ 0 0.1386 0.2197 0.2773 0.3219 0.3584 0.3892 0.4159 0.4394 0.4605 0.4796 0.4970 0.5278 0.5545 0.5991 0.6089 0.6182 0.6271 0.6356 0.6438 0.6516

0.6592 0.6664 0.6735 0.7222 0.7275 0.7327 0.7378 0.7427 0.7475 0.7522 0.7568 0.7613 0.7657 0.7700] T=[0.4455 0.323 0.4116 0.3255 0.4486 0.2999 0.4926 0.2249 0.4893 0.2357 0.4866 0.2249 0.4819 0.2217 0.4997 0.2269 0.5027 0.217 0.5155 0.1918 0.5058 0.2395 0.4541 0.2408 0.4054 0.2701 0.3942 0.3316 0.2197 0.2963 0.5576 0.1061 0.4956 0.267 0.5126 0.2238 0.5314 0.2083 0.5191 0.208 0.5133 0.1848 0.5089 0.242 0.4812 0.2129 0.4927 0.287 0.4832 0.2742 0.5969 0.2403 0.5056 0.2173 0.5364 0.1994 0.5278 0.2015 0.5164 0.2239 0.4489 0.2404 0.4869 0.2963 0.4898 0.1987 0.5075 0.2917 0.4943 0.2902 ] threshold=[0 1] net=newff(threshold,[11,2],{'tansig','logsig'},'trainlm');

基于BP神经网络预测模型指南

基于BP神经网络的国际黄金价格预测模型 公文易文秘资源网顾孟钧张志和陈友2009-1-2 13:35:26我要投稿添加到百度搜藏 [摘要] 为了寻找国际黄金价格与道琼斯工业指数、美国消费者指数,国际黄金储备等因素之间的内在关系,本文对1972年~2006年间的各项数据首先进行归一化处理,利用MATLAB神经网络工具箱进行模拟训练,建立了基于BP神经网络的国际黄金价格预测模型 [摘要] 为了寻找国际黄金价格与道琼斯工业指数、美国消费者指数,国际黄金储备等因素之间的内在关系,本文对1972年~2006年间的各项数据首先进行归一化处理,利用MATLAB神经网络工具箱进行模拟训练,建立了基于BP神经网络的国际黄金价格预测模型。 [关键词] MATLAB BP神经网络预测模型数据归一化 一、引言 自20世纪70年代初以来的30多年里,世界黄金价格出现了令人瞠目的剧烈变动。20 世纪70年代初,每盎司黄金价格仅为30多美元。80年代初,黄金暴涨到每盎司近700美元。本世纪初,黄金价格处于每盎司270美元左右,此后逐年攀升,到2006年5月12日达到了26年高点,每盎司730美元,此后又暴跌,仅一个月时间内就下跌了约160美元,跌幅高达21.9%。最近两年,黄金价格一度冲高到每盎司900多美元。黄金价格起伏如此之大,本文根据国际黄金价格的影响因素,通过BP神经网络预测模型来预测长期黄金价格。 二、影响因素 刘曙光和胡再勇证实将观察期延长为1972年~2006年时,则影响黄金价格的主要因素扩展至包含道琼斯指数、美国消费者价格指数、美元名义有效汇率、美国联邦基金利率和世界黄金储备5个因素。本文利用此观点,根据1972年~2006年各因素的值来建立神经网络预测模型。 三、模型构建

BP神经网络实验 Matlab

计算智能实验报告 实验名称:BP神经网络算法实验 班级名称: 2010级软工三班 专业:软件工程 姓名:李XX 学号: XXXXXX2010090

一、实验目的 1)编程实现BP神经网络算法; 2)探究BP算法中学习因子算法收敛趋势、收敛速度之间的关系; 3)修改训练后BP神经网络部分连接权值,分析连接权值修改前和修改后对相同测试样本测试结果,理解神经网络分布存储等特点。 二、实验要求 按照下面的要求操作,然后分析不同操作后网络输出结果。 1)可修改学习因子 2)可任意指定隐单元层数 3)可任意指定输入层、隐含层、输出层的单元数 4)可指定最大允许误差ε 5)可输入学习样本(增加样本) 6)可存储训练后的网络各神经元之间的连接权值矩阵; 7)修改训练后的BP神经网络部分连接权值,分析连接权值修改前和修改后对相同测试样本测试结果。 三、实验原理 1 明确BP神经网络算法的基本思想如下: 在BPNN中,后向传播是一种学习算法,体现为BPNN的训练过程,该过程是需要教师指导的;前馈型网络是一种结构,体现为BPNN的网络构架 反向传播算法通过迭代处理的方式,不断地调整连接神经元的网络权重,使得最终输出结果和预期结果的误差最小 BPNN是一种典型的神经网络,广泛应用于各种分类系统,它也包括了训练和使用两个阶段。由于训练阶段是BPNN能够投入使用的基础和前提,而使用阶段本身是一个非常简单的过程,也就是给出输入,BPNN会根据已经训练好的参数进行运算,得到输出结果 2 明确BP神经网络算法步骤和流程如下: 1初始化网络权值 2由给定的输入输出模式对计算隐层、输出层各单元输出 3计算新的连接权及阀值, 4选取下一个输入模式对返回第2步反复训练直到网络设输出误差达到要求结束训练。

用matlab编BP神经网络预测程序加一个优秀程序

求用matlab编BP神经网络预测程序 求一用matlab编的程序 P=[。。。];输入T=[。。。];输出 % 创建一个新的前向神经网络 net_1=newff(minmax(P),[10,1],{'tansig','purelin'},'traingdm') % 当前输入层权值和阈值 inputWeights=net_1.IW{1,1} inputbias=net_1.b{1} % 当前网络层权值和阈值 layerWeights=net_1.LW{2,1} layerbias=net_1.b{2} % 设置训练参数 net_1.trainParam.show = 50; net_1.trainParam.lr = 0.05; net_1.trainParam.mc = 0.9; net_1.trainParam.epochs = 10000; net_1.trainParam.goal = 1e-3; % 调用TRAINGDM 算法训练BP 网络 [net_1,tr]=train(net_1,P,T); % 对BP 网络进行仿真 A = sim(net_1,P); % 计算仿真误差 E = T - A; MSE=mse(E) x=[。。。]';%测试 sim(net_1,x) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 不可能啊我2009 28对初学神经网络者的小提示

第二步:掌握如下算法: 2.最小均方误差,这个原理是下面提到的神经网络学习算法的理论核心,入门者要先看《高等数学》(高等教育出版社,同济大学版)第8章的第十节:“最小二乘法”。 3.在第2步的基础上看Hebb学习算法、SOM和K-近邻算法,上述算法都是在最小均方误差基础上的改进算法,参考书籍是《神经网络原理》(机械工业出版社,Simon Haykin著,中英文都有)、《人工神经网络与模拟进化计算》(清华大学出版社,阎平凡,张长水著)、《模式分类》(机械工业出版社,Richard O. Duda等著,中英文都有)、《神经网络设计》(机械工业出版社,Martin T. Hargan等著,中英文都有)。 4.ART(自适应谐振理论),该算法的最通俗易懂的读物就是《神经网络设计》(机械工业出版社,Martin T. Hargan等著,中英文都有)的第15和16章。若看理论分析较费劲可直接编程实现一下16.2.7节的ART1算法小节中的算法. 4.BP算法,初学者若对误差反传的分析过程理解吃力可先跳过理论分析和证明的内容,直接利用最后的学习规则编个小程序并测试,建议看《机器学习》(机械工业出版社,Tom M. Mitchell著,中英文都有)的第4章和《神经网络设计》(机械工业出版社,Martin T. Hargan等著,中英文都有)的第11章。 BP神经网络Matlab实例(1) 分类:Matlab实例 采用Matlab工具箱函数建立神经网络,对一些基本的神经网络参数进行了说明,深入了解参考Matlab帮助文档。 % 例1 采用动量梯度下降算法训练BP 网络。 % 训练样本定义如下: % 输入矢量为 % p =[-1 -2 3 1 % -1 1 5 -3] % 目标矢量为t = [-1 -1 1 1] close all clear clc % --------------------------------------------------------------- % NEWFF——生成一个新的前向神经网络,函数格式: % net = newff(PR,[S1 S2...SNl],{TF1 TF2...TFNl},BTF,BLF,PF) takes, % PR -- R x 2 matrix of min and max values for R input elements % (对于R维输入,PR是一个R x 2 的矩阵,每一行是相应输入的

BP神经网络matlab源程序代码

close all clear echo on clc % NEWFF——生成一个新的前向神经网络 % TRAIN——对 BP 神经网络进行训练 % SIM——对 BP 神经网络进行仿真 % 定义训练样本 % P为输入矢量 P=[0.7317 0.6790 0.5710 0.5673 0.5948;0.6790 0.5710 0.5673 0.5948 0.6292; ... 0.5710 0.5673 0.5948 0.6292 0.6488;0.5673 0.5948 0.6292 0.6488 0.6130; ... 0.5948 0.6292 0.6488 0.6130 0.5654; 0.6292 0.6488 0.6130 0.5654 0.5567; ... 0.6488 0.6130 0.5654 0.5567 0.5673;0.6130 0.5654 0.5567 0.5673 0.5976; ... 0.5654 0.5567 0.5673 0.5976 0.6269;0.5567 0.5673 0.5976 0.6269 0.6274; ... 0.5673 0.5976 0.6269 0.6274 0.6301;0.5976 0.6269 0.6274 0.6301 0.5803; ... 0.6269 0.6274 0.6301 0.5803 0.6668;0.6274 0.6301 0.5803 0.6668 0.6896; ... 0.6301 0.5803 0.6668 0.6896 0.7497]; % T为目标矢量 T=[0.6292 0.6488 0.6130 0.5654 0.5567 0.5673 0.5976 ... 0.6269 0.6274 0.6301 0.5803 0.6668 0.6896 0.7497 0.8094]; % Ptest为测试输入矢量 Ptest=[0.5803 0.6668 0.6896 0.7497 0.8094;0.6668 0.6896 0.7497 0.8094 0.8722; ... 0.6896 0.7497 0.8094 0.8722 0.9096]; % Ttest为测试目标矢量 Ttest=[0.8722 0.9096 1.0000]; % 创建一个新的前向神经网络 net=newff(minmax(P'),[12,1],{'logsig','purelin'},'traingdm'); % 设置训练参数 net.trainParam.show = 50; net.trainParam.lr = 0.05; net.trainParam.mc = 0.9; net.trainParam.epochs = 5000; net.trainParam.goal = 0.001; % 调用TRAINGDM算法训练 BP 网络 [net,tr]=train(net,P',T); % 对BP网络进行仿真 A=sim(net,P'); figure; plot((1993:2007),T,'-*',(1993:2007),A,'-o'); title('网络的实际输出和仿真输出结果,*为真实值,o为预测值'); xlabel('年份'); ylabel('客运量'); % 对BP网络进行测试 A1=sim(net,Ptest');

基于Bp神经网络的股票预测

基于神经网络的股票预测 【摘要】: 股票分析和预测是一个复杂的研究领域,本论文将股票技术分析理论与人工神经网络相结合,针对股票市场这一非线性系统,运用BP神经网络,研究基于历史数据分析的股票预测模型,同时,对单只股票短期收盘价格的预测进行深入的理论分析和实证研究。本文探讨了BP神经网络的模型与结构、BP算法的学习规则、权值和阈值等,构建了基于BP神经网络的股票短期预测模型,研究了神经网络的模式、泛化能力等问题。并且,利用搭建起的BP神经网络预测模型,采用多输入单输出、单隐含层的系统,用前五天的价格来预测第六天的价格。对于网络的训练,选用学习率可变的动量BP算法,同时,对网络结构进行了隐含层节点的优化,多次尝试,确定最为合理、可行的隐含层节点数,从而有效地解决了神经网络隐含层节点的选取问题。 【abstract] Stock analysis and forecasting is a complex field of study. The paper will make research on stock prediction model based on the analysis of historical data, using BP neural network and technical analysis theory. At the same time, making in-depth theoretical analysis and empirical studies on the short-term closing price forecasts of single stock. Secondly, making research on the model and structure of BP neural network, learning rules, weights of BP algorithm and so on, building a stock short-term forecasting model based on the BP neural network, related with the model of neural network and the ability of generalization. Moreover, using system of multiple-input single-output and single hidden layer, to forecast the sixth day price by BP neural network forecasting model structured. The network of training is chosen BP algorithm of traingdx, while making optimization on the node numbers of the hidden layer by several attempts. Thereby resolve effectively the problem of it. 【关键词】BP神经网络股票预测分析 1.引言 股票市场是一个不稳定的非线性动态变化的复杂系统,股价的变动受众多因素的影响。影响股价的因素可简单地分为两类,一类是公司基本面的因素,另一类是股票技术面的因素,虽然股票的价值是公司未来现金流的折现,由公司的基本面所决定,但是由于公司基本面的数据更新时间慢,且很多时候并不能客观反映公司的实际状况,采用适当数学模型就能在一定

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

BP神经网络的预测理论的及程序 学习

12、智能算法 12.1 人工神经网络 1、人工神经网络的原理假如我们只知道一些输入和相应的输出,但是不清楚这些输入和输出之间的具体关系是什么,我们可以把输入和输出之间的未知过程看成是一个“网络”,通过不断的网络输入和相应的输出进行“训练”(学习),网络根据输入和对应输出不断调整连接网络的权值,直到满足我们的目标要求,这样就训练好了一个神经网络,当我们给定一个输入, 网络就会计算出一个相应的输出。 2、网络结构神经网络一般有一个输入层,多个隐层,和一个输出层。隐层并非越多越好。如下图所示: 神经网络工具箱几乎 MATLAB 12.2 Matlab 神经网络工具箱 BP 网络和涵盖了所有的神经网络的基本常用模型,如感知器、nntool nftool,nctool,nprtool,nntraintool 和等。它由RBFNN 函数逼近和数据拟合、信息处理和预测、神经网组成。主要应用于

在实际应用中,针对具体的问题,首先络控制和故障诊断等领域。.需要分析利用神经网络来解决问题的性质,然后依据问题的特点,提取训练和测试数据样本,确定网络模型,最后通过对网络进行训练、仿真等检验网络的性能是否满足要求。具体过程如下: (1)确定信息表达的方式,主要包括数据样本已知;数据样本之间相互关系不明确;输入/输出模式为连续的或离散的;数据样本的预处理;将数据样本分成训练样本和测试样本。 (2)网络模型的确定。确定选择何种神经网络以及网络层数。 (3)网络参数的选择,如输入输出神经元个数的确定,隐层神经元的个数等。 (4)训练模式的确定,包括选择合理的训练算法、确定合适的训练步数、指定适当的训练目标误差等 (5)网络测试,选择合理的样本对网络进行测试。 简单来讲就是三个步骤:建立网络(newXX)—训练网络(trainXX)—仿真网络(sim) 12.3 BP 神经网络的 Matlab 相关函数 BP 算法的基本思想:学习过程由信号的正向传播与误差的反向传播两个过程组成。正向传播时,输入样本从输入层传入,经各隐层逐层处理后,传向输出层。若输出层的实际输出与期望输出(教师信号)不符,则转入误差的反向传播阶段。误差反传是将输出误差以某种形式通过隐层向输入层逐层反传,并将误差分摊给各层的所有单元,从而获得各层单元的误差信号,此误差信号作为修正各单元权

求用matlab编BP神经网络预测程序

求用编神经网络预测程序 求一用编的程序[。。。];输入[。。。];输出 创建一个新的前向神经网络((),[],{'',''},'') 当前输入层权值和阈值{} {} 当前网络层权值和阈值{} {} 设置训练参数 ; ; ; ; ; 调用算法训练网络[](); 对网络进行仿真 (); 计算仿真误差 ; () [。。。]'测试 () 不可能啊我 对初学神经网络者的小提示

第二步:掌握如下算法: .最小均方误差,这个原理是下面提到的神经网络学习算法的理论核心,入门者要先看《高等数学》(高等教育出版社,同济大学版)第章的第十节:“最小二乘法”。 .在第步的基础上看学习算法、和近邻算法,上述算法都是在最小均方误差基础上的改进算法,参考书籍是《神经网络原理》(机械工业出版社,著,中英文都有)、《人工神经网络与模拟进化计算》(清华大学出版社,阎平凡,张长水著)、《模式分类》(机械工业出版社, . 等著,中英文都有)、《神经网络设计》(机械工业出版社, . 等著,中英文都有)。 (自适应谐振理论),该算法的最通俗易懂的读物就是《神经网络设计》(机械工业出版社, . 等著,中英文都有)的第和章。若看理论分析较费劲可直接编程实现一下节的算法小节中的算法. 算法,初学者若对误差反传的分析过程理解吃力可先跳过理论分析和证明的内容,直接利用最后的学习规则编个小程序并测试,建议看《机器学习》(机械工业出版社, . 著,中英文都有)的第章和《神经网络设计》(机械工业出版社, . 等著,中英文都有)的第章。 神经网络实例() 分类:实例 采用工具箱函数建立神经网络,对一些基本的神经网络参数进行了说明,深入了解参考帮助文档。 例采用动量梯度下降算法训练网络。 训练样本定义如下: 输入矢量为 [ ] 目标矢量为[ ] ——生成一个新的前向神经网络,函数格式: (,[ ],{ }) , (对于维输入,是一个的矩阵,每一行是相应输入的边界值) 第层的维数 第层的传递函数, '' 反向传播网络的训练函数, '' 反向传播网络的权值阈值学习函数, ''

BP神经网络matlab源程序代码

BP神经网络matlab源程序代码) %******************************% 学习程序 %******************************% %======原始数据输入======== p=[2845 2833 4488;2833 4488 4554;4488 4554 2928;4554 2928 3497;2928 3497 2261;... 3497 2261 6921;2261 6921 1391;6921 1391 3580;1391 3580 4451;3580 4451 2636;... 4451 2636 3471;2636 3471 3854;3471 3854 3556;3854 3556 2659;3556 2659 4335;... 2659 4335 2882;4335 2882 4084;4335 2882 1999;2882 1999 2889;1999 2889 2175;... 2889 2175 2510;2175 2510 3409;2510 3409 3729;3409 3729 3489;3729 3489 3172;... 3489 3172 4568;3172 4568 4015;]'; %===========期望输出======= t=[4554 2928 3497 2261 6921 1391 3580 4451 2636 3471 3854 3556 2659 ... 4335 2882 4084 1999 2889 2175 2510 3409 3729 3489 3172 4568 4015 ... 3666]; ptest=[2845 2833 4488;2833 4488 4554;4488 4554 2928;4554 2928 3497;2928 3497 2261;... 3497 2261 6921;2261 6921 1391;6921 1391 3580;1391 3580 4451;3580 4451 2636;... 4451 2636 3471;2636 3471 3854;3471 3854 3556;3854 3556 2659;3556 2659 4335;... 2659 4335 2882;4335 2882 4084;4335 2882 1999;2882 1999 2889;1999 2889 2175;... 2889 2175 2510;2175 2510 3409;2510 3409 3729;3409 3729 3489;3729 3489 3172;... 3489 3172 4568;3172 4568 4015;4568 4015 3666]'; [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t); %将数据归一化 NodeNum1 =4; % 隐层第一层节点数 NodeNum2=7; % 隐层第二层节点数 TypeNum = 5; % 输出维数 TF1 = 'tansig';

BP神经网络预测代码

x=[54167 55196 56300 57482 58796 60266 61465 62828 64653 65994 67207 66207 65859 67295 69172 70499 72538 74542 76368

80671 82992 85229 87177 89211 90859 92420 93717 94974 96259 97542 98705 100072 101654 103008 104357 105851 107507

112704 114333 115823 117171 118517 119850 121121 122389 123626 124761 125786 126743 127627 128453 129227 129988 130756 131448

134480 135030 135770 136460 137510]'; % 该脚本用来做NAR神经网络预测 % 作者:Macer程 lag=3; % 自回归阶数 iinput=x; % x为原始序列(行向量) n=length(iinput); %准备输入和输出数据 inputs=zeros(lag,n-lag); for i=1:n-lag %绘制误差的自相关情况(20lags) figure, parcorr(errors) %绘制偏相关情况 %[h,pValue,stat,cValue]= lbqtest(errors) %Ljung-Box Q检验(20lags)figure,plotresponse(con2seq(targets),con2seq(yn)) %看预测的趋势与原趋势%figure, ploterrhist(errors) %误差直方图

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程序

%清空环境变量 clc clear %读取数据 a=xlsread('F:\4.数据挖掘讲义—马景义\数据和程序\matlab\one-input.csv'); b=xlsread('F:\4.数据挖掘讲义—马景义\数据和程序\matlab\output.csv'); c=xlsread('F:\4.数据挖掘讲义—马景义\数据和程序\matlab\c.csv'); save data1.mat b save data2.mat a load data1 load data2 %节点个数 inputnum=42; hiddennum=8; outputnum=1; %训练数据和预测数据 input_train=a(:,1:90); input_test=a(:,91:137); output_train=b(:,1:90); output_test=b(:,91:137); %将训练样本输入输出数据归一化 [inputn,inputps]=mapminmax(input_train); [outputn,outputps]=mapminmax(output_train); %构建BP神经网络 net=newff(inputn,outputn,[20,12],{'tansig','purelin'},'traingdx'); net.trainParam.epochs=1000; net.trainParam.lr=0.01; net.trainParam.goal=0.00000001; %BP神经网络训练 net=train(net,inputn,outputn); %测试样本归一化 inputn_test=mapminmax('apply',input_test,inputps); %BP神经网络预测 an=sim(net,inputn_test); %%网络得到数据反归一化 BPoutput=mapminmax('reverse',an,outputps); d=BPoutput>c figure(1) %plot(d,':og'); scatter(1:(137-90),d,'rx'); hold on; %plot(output_test,'-*'); scatter(1:(137-90),output_test,'o'); legend('预测输出','期望输出','fontsize',12); title('BP网络预测输出','fontsize',12); xlabel('样本','fontsize',12);

bp神经网络及matlab实现解析

bp神经网络及matlab实现 分类:算法学习2012-06-20 20:56 66399人阅读评论(28) 收藏举报网络matlab算法functionnetworkinput 本文主要内容包括:(1) 介绍神经网络基本原理,(2) https://www.wendangku.net/doc/965969219.html,实现前向神经网络的方法,(3) Matlab实现前向神经网络的方法。 第0节、引例 本文以Fisher的Iris数据集作为神经网络程序的测试数据集。Iris数据集可以在https://www.wendangku.net/doc/965969219.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神经网络预测实例

%% 清空环境变量 clc clear %% 训练数据预测数据 data=importdata('test.txt'); %从1到768间随机排序 k=rand(1,768); [m,n]=sort(k); %输入输出数据 input=data(:,1:8); output =data(:,9); %随机提取500个样本为训练样本,268个样本为预测样本input_train=input(n(1:500),:)'; output_train=output(n(1:500),:)'; input_test=input(n(501:768),:)'; output_test=output(n(501:768),:)'; %输入数据归一化 [inputn,inputps]=mapminmax(input_train); %% BP网络训练 % %初始化网络结构 net=newff(inputn,output_train,10);

net.trainParam.epochs=1000; net.trainParam.lr=0.1; net.trainParam.goal=0.0000004; %% 网络训练 net=train(net,inputn,output_train); %% BP网络预测 %预测数据归一化 inputn_test=mapminmax('apply',input_test,inputps); %网络预测输出 BPoutput=sim(net,inputn_test); %% 结果分析 %根据网络输出找出数据属于哪类 BPoutput(find(BPoutput<0.5))=0; BPoutput(find(BPoutput>=0.5))=1; %% 结果分析 %画出预测种类和实际种类的分类图 figure(1) plot(BPoutput,'og') hold on plot(output_test,'r*'); legend('预测类别','输出类别') title('BP网络预测分类与实际类别比对','fontsize',12)

BP神经网络程序

x1=rand(1,2000); x2=rand(1,2000); y1=x1.^2+x2.^2; input=[x1',x2']; output=[y1']; k=rand(1,2000); [m,n]=sort(k); input_train=input(n(1:1900),:)'; output_train=output(n(1:1900),:)'; input_test=input(n(1901:2000),:)'; output_test=output(n(1901:2000),:)'; %训练数据归一化 [inputn,inputps]=mapminmax(input_train); [outputn,outputps]=mapminmax(output_train); %BP神经网络的构建 net=newff(inputn,outputn,5); %网络参数配置 net.trainParam.epochs=100; net.trainParam.goal=0.00004; net.trainParam.lr=0.1; %BP神经网络训练 net=train(net,inputn,outputn); inputn_test=mapminmax('apply',input_test,inputps); %BP神经网络预测输出 An=sim(net,inputn_test); %输出结果反归一化 BPoutput=mapminmax('reverse',An,outputps); %网络预测结果图形 figure(1) plot(BPoutput,':or') hold on plot(output_test,'-*'); legend('预测输出','期望输出'); title('BP网络预测输出','fontsize',12); ylabel('函数输出','fontsize',12); xlabel('样本','fontsize',12); %网络预测误差图形 figure(2) error=[output_test]'-[BPoutput]'; plot(error,'-*')

BP神经网络预测代码

B P神经网络预测代码 Document number:WTWYT-WYWY-BTGTT-YTTYU-2018GT

x=[54167 55196 56300 57482 58796 60266 61465 62828 64653 65994 67207 66207 65859 67295 69172 70499 72538 74542 76368 78534

80671 82992 85229 87177 89211 90859 92420 93717 94974 96259 97542 98705 100072 101654 103008 104357 105851 107507 109300 111026

112704 114333 115823 117171 118517 119850 121121 122389 123626 124761 125786 126743 127627 128453 129227 129988 130756 131448 132129 132802

134480 135030 135770 136460 137510]'; % 该脚本用来做NAR预测 % 作者:Macer程 lag=3; % 自回归阶数 iinput=x; % x为原始序列(行向量) n=length(iinput); %准备输入和输出数据 inputs=zeros(lag,n-lag); for i=1:n-lag %绘制误差的自相关情况(20lags) figure, parcorr(errors) %绘制偏相关情况 %[h,pValue,stat,cValue]= lbqtest(errors) %Ljung-Box Q检验(20lags)figure,plotresponse(con2seq(targets),con2seq(yn)) %看预测的趋势与原趋势%figure, ploterrhist(errors) %误差直方图 %figure, plotperform(tr) %误差下降线

BP神经网络预测代码

B P神经网络预测代码 Revised as of 23 November 2020

x=[54167 55196 56300 57482 58796 60266 61465 62828 64653 65994 67207 66207 65859 67295 69172 70499 72538 74542 76368 78534

80671 82992 85229 87177 89211 90859 92420 93717 94974 96259 97542 98705 100072 101654 103008 104357 105851 107507 109300 111026

112704 114333 115823 117171 118517 119850 121121 122389 123626 124761 125786 126743 127627 128453 129227 129988 130756 131448 132129 132802

134480 135030 135770 136460 137510]'; % 该脚本用来做NAR预测 % 作者:Macer程 lag=3; % 自回归阶数 iinput=x; % x为原始序列(行向量) n=length(iinput); %准备输入和输出数据 inputs=zeros(lag,n-lag); for i=1:n-lag %绘制误差的自相关情况(20lags) figure, parcorr(errors) %绘制偏相关情况 %[h,pValue,stat,cValue]= lbqtest(errors) %Ljung-Box Q检验(20lags)figure,plotresponse(con2seq(targets),con2seq(yn)) %看预测的趋势与原趋势%figure, ploterrhist(errors) %误差直方图 %figure, plotperform(tr) %误差下降线

相关文档
相关文档 最新文档