神经网络学习算法matlab仿真

神经网络学习算法matlab仿真
神经网络学习算法matlab仿真

东南大学自动化学院

智能控制概论

神经网络学习算法研究

学院:

姓名:

学号:

日期:

目录

1 任务要求叙述 ..................................................... 错误!未定义书签。

2 系统分析及设计原理 ......................................... 错误!未定义书签。

3 设计实现.............................................................. 错误!未定义书签。4仿真验证.. (6)

5 讨论与分析.......................................................... 错误!未定义书签。

一.任务要求叙述

(1)任务

(a) 运行算法,观察和分析现有学习算法的性能;

clear all;close all;

nu=20;pi=3.1415926;

for i=1:nu

p(i)=2*pi*i/nu;

t(i)=0.5*(1+cos(p(i)));

end

minmax=[min(p(:)) max(p(:))]

net = newff([ 0 7],[6 1],{'logsig' 'purelin'},'traingd');% traingd traingdm trainlm

net.trainParam.epochs = 10000;

net.trainParam.goal = 0.0001;

net.trainParam.show=200;

net.trainParam.lr=0.1;

net.trainParam.mc=0.6; %0.9 default value; available for momentum

net = train(net,p,t);

y1 = sim(net,p);

figure(2);

plot(p,t,'*-',p,y1,'r--')

%************** test data ******************

nu2=nu*3/2;

for i=1:(nu2)

p2(i)=2*pi*i/(nu2);

t2(i)=0.5*(1+cos(p2(i)));

end

y2 = sim(net,p2);

figure(3);

plot(t2,'*-');hold on; plot(y2,'r');

xlabel('times');ylabel('outputs');

figure(4);

plot(t2-y2);

xlabel('times');ylabel('error');

(b) 为了进一步提高学习逼近效果,可以采取那些措施,调节规律如何?根据所提的每种措施,修改算法程序,给出仿真效果验证、过程以及相应的曲线图,给出适当的评述;(c) 联系、结合前向神经网络的算法样本学习、测试等过程,谈谈本人对神经网络系统的一些认识和看法。

(2)要求

提交完整的报告,包括:封面(题目、个人学号姓名等信息)、目录、任务要求叙述、系

统分析及设计原理(包括神经网络学习过程的原理图及文字分析)、完整的设计实现过程(包括神经网络结构、参数等选择与实现、计算、原理过程等)、仿真验证(算法流程图、实现手段介绍、系统参数选择、曲线图、结合调参对响应曲线的影响给出必要的分析)、讨论与分析,总字数要求在2000以上。

二.系统分析及设计原理

(1)神经网络的学习算法

学习过程实质上是针对一组给定的输入),2,1(N p x p =使网络产生相应的期望输出

的过程。总的来说,神经网络的学习算法分为两大类: 有导师学习和无导师学习。

图 1:有导师指导神经网络学习方式 图 2无导师指导神经网络学习方式

由上图可见,所谓有导师学习就是在训练过程中,始终存在一个期望的网络输出。期望

输出和实际输出之间的距离作为误差度量并用于调整权值。而无导师学习指的是网络不存在一个期望的输出,因而没有直接的误差信息,因此,为实现对网络的训练,徐建立一个简洁的评价函数,以对网络的某种行为取向做出评价。

(2)多层传播网络的学习算法

给定N 组样本);,;,;,(2211p p T X T X T X 。这里i X 为i n 维输入矢量,i T 为o n 维

期望的输出矢量,P i 2,1=,.假设矢量y 和o 分别表示网络的输出层和隐含层的输出矢量。则训练过程为:

(1) 选0>η,max E 作为最大容许误差,并将权系数,,2,1,,L l W l

l

=θ初始化成某

一小的随机权矩阵。

0,1←←E p

(2) 训练开始

p p p T T X O ←←,)1(

按照12,1,0),(1

1

11)

1(-=+Γ=∑=++++L r o w O

r

n i r j r pl r jl r r pj

θ计算出各隐含层神经元的

尽力输出,按照o n i L j L pi L ji L L pj

L pj n L o w

Net y L 2,1),()(1

1

1=+Γ=Γ=∑-=-θ计算出各输

出层神经元的激励输出。

(3) 计算误差[]

o k k n k E y t E 2,1,2/)(2=+-← (4) 按公式

)()(L

pj L pj pj L

pj

pj

pj p L

pj

p

L

pj Net y t Net y y E Net E Γ'-=????-

=??-

))()(())()((111

1

∑∑Γ'=

Γ'????-

=????-

=??-

=++++k

r

pj r r kj r pk k

r pj r r pj

r pk

r pk

p

r

pj

r pj

r pj p r pj

p r

pj

Net w o Net o Net Net E Net o o E Net E δ

计算出r

pj

L pj δδ, (5) 调整权阵系数1,-=?r pj r pj r ji o w ηδ r

pj r j ηδθ=?

(6) 若P p <,1+←p p ,跳转到(2),否则跳转到(7) (7) 若m ax E E <,结束,否则0,1←←E p ,跳转到(2)。

三.设计实现

(1)神经网络的结构(BP 算法的神经网络结构)

下图是一个多层传播结构。即在输入层和输出层之间嵌入一层或多层隐含层的网络结构。隐含层单元既可以与叔叔出单元相连也可以与其他隐含层单元相连。隐含层单元与输入

单元之间通过突触权系数1ij w 连接,并可用矩阵1w 表示全部关系。隐含层单元与输出单元之间通过突触权系数21ij w 连接,全部关系可用矩阵2w 表示。

图 3:神经网络结构图

(2)Maltab神经网络工具箱

1函数介绍

①newc()创建级联前向网络

②②newff()创建前向BP网络

③③newffd()创建存在输入延迟的前向网络

在此次实验中,采用第二个函数即创建的是前向BP网络。前向网络中各神经元接受前一级的输入,并输出到下一级,网络中没有反馈,可以用一个有向无环路图表示,这种神经网络称为前向网络。前向网络中节点分为两类,输入节点和计算节点。每个输入节点可以有任意个输入,但只有一个输出。而输出可以耦合到任意多个其他节点的输入。前向网络通常可以分为不同的层,第i层的输入仅与第i-1层的输出连接。一般认为输入节点为第一层,具有一层计算节点的网络实际上是一个两层网络。由于输入节点和输出节点可以和外界连接,直接接受环境的影响,所以称为可见层。而其他中间层则称为隐层。

2Newff()函数参数介绍

newff函数的格式为:net=newff(PR,[S1 S2 ...SN],{TF1 TF2...TFN},BTF,BLF,PF),函数newff建立一个可训练的前馈网络。

输入参数说明:

PR:Rx2的矩阵以定义R个输入向量的最小值和最大值;

Si:第i层神经元个数;

TFi:第i层的传递函数,默认函数为tansig函数;

BTF:训练函数,默认函数为trainlm函数;

BLF:权值/阀值学习函数,默认函数为learngdm函数;

PF:性能函数,默认函数为mse函数。

3程序中参数含义

(1)Newff()函数中的参数

a)传递函数有三种

tansig(n)=2/(1+exp(-2*n))-1

logsig(n)=1/(1+exp(-n))

purelin(n)=n

b)训练函数有12种

trainbrBayes 规范化BP训练函数

trainc 循环顺序渐增训练函数

traincgb Powell-Beale连接梯度BP训练函数

traincgf Fletcher-Powell连接梯度BP训练函数

traincgp Polak-Ribiere连接梯度BP训练函数

traingda 自适应lrBP的梯度递减训练函数

traingdx 动量及自适应lrBP的梯度递减训练函数

trainlm Levenberg-Marquardt BP训练函数

trainoss 一步正切BP训练函数

trainr 随机顺序递增更新训练函数

trainrp 带反弹的BP训练函数

trains 顺序递增BP训练函数

trainscg 量化连接梯度BP训练函数

(2)其他参数

net.trainParam.epochs=10000; 允许最大训练步数10000

net.trainParam.goal=0.001; 训练目标最小误差0.001

net.trainParam.show=200; 每间隔200步显示一次训练结果

net.trainParam.lr=0.1; 学习步长0.1

net.trainParam.mc=0.6; 动量因子

四.仿真验证

(1)参数调节方法

首先改变传递函数,保持其他参数不变的条件下,将传递函数换成其余两个传递函数,观察运行结果,比较选出最符合要求的传递函数;然后使用最符合要求的传递函数,改变训练函数,同样选出最符合要求的训练函数;最后使用最符合要求的传递函数和训练函数,改变精度、步长、动量因子,比较分析,总结变化规律。

(2)调节运行结果

1初始运行结果

图4:初始结果

minmax =

0.3142 6.2832

TRAINGD, Maximum epoch reached, performance goal was not met.

在初始算法中,采用的是net = newff([ 0 7],[6 1],{'logsig' 'purelin'},'traingd'); 由上图发现即使最大步长为10000 Epochs,最后也没有收敛到我们所需要的精度。这是因为traingd为单纯的梯度下降训练函数。训练速度比较慢,而且容易陷入局部最小的情况。

2修改传递函数

将传递函数logsig改为tansig,即传递函数为2/(1+exp(-2*n))-1;

程序为net = newff([ 0 7],[6 1],{'tansig' 'purelin'},'traingd');

结果发现改变传递函数并没有对测试数据的结果有过多的变化,说明传递函数对系统的性能的影响不大,那么还是选用初始的传递函数logsig 。

minmax =

0.3142 6.2832

TRAINGD, Maximum epoch reached, performance goal was not met.

图5:改变传递函数的结果

3第一次修改训练函数

将训练函数traingd改为traingdm,即net = newff([ 0 7],[6 1],{' logsig' 'purelin'},'traingdm');

图6:训练函数为traningdm的结果

minmax =

0.3142 6.2832

TRAINGDM, Maximum epoch reached, performance goal was not met.

经过10000次训练后,traningdm网络的输出误差与traningd训练算法的结果差不多,

网络误差的收敛速度也非常慢。Traningdm是动量梯度下降算法,和traningd 一样是启发式训练算法,它的使用类似于函数traingd 。

4第二次修改训练函数

将训练函数改为trainlm,即net = newff([ 0 7],[6 1],{' logsig' 'purelin'},' trainlm');

图7:训练函数为trainlm的结果

minmax =

0.3142 6.2832

TRAINLM, Performance goal met.

结果表明仅仅经过6次训练后,网络误差就已经收敛了。说明trainlm算法效果最好,由于误差只是0.001,所以在这个情况下可以加强误差限制。同时在改变步长和动量因子,观察其对结果的影响。

5修改程序中的其他参数

以下研究分析都是在传递函数为logsig,训练函数为trainlm的基础上进行的。

a)改变动量因子

https://www.360docs.net/doc/3f2988076.html,.trainParam.mc=0.9

图8:改变动量因子结果1 minmax =

0.3142 6.2832

TRAINLM, Performance goal met.

https://www.360docs.net/doc/3f2988076.html,.trainParam.mc=0.6

图9:改变动量因子结果2 minmax =

0.3142 6.2832

TRAINLM, Performance goal met.

https://www.360docs.net/doc/3f2988076.html,.trainParam.mc=0.4

图10:改变动量因子结果3 minmax =

0.3142 6.2832

TRAINLM, Performance goal met.

比较以上三组结果可知,他们的训练效果都是不错的,而当mc 减小时,发现收敛速度变快,收敛的精度的方向却是不同的。

b)改变步长的结果(保持net.trainParam.mc=0.6)

https://www.360docs.net/doc/3f2988076.html,.trainParam.lr=0.05

图11:改变训练步长结果1

minmax =

0.3142 6.2832

TRAINLM, Performance goal met.

https://www.360docs.net/doc/3f2988076.html,.trainParam.lr=0.5的效果

图12:改变训练步长结果2 minmax =

0.3142 6.2832

TRAINLM, Performance goal met.

https://www.360docs.net/doc/3f2988076.html,.trainParam.lr=1的效果

图13:改变训练步长结果3 minmax =

0.3142 6.2832

TRAINLM, Performance goal met.

https://www.360docs.net/doc/3f2988076.html,.trainParam.lr=5的效果

图14:改变训练步长结果4 minmax =

0.3142 6.2832

TRAINLM, Performance goal met.

https://www.360docs.net/doc/3f2988076.html,.trainParam.lr=5

图15:改变训练步长结果5

minmax =

0.3142 6.2832

TRAINLM, Performance goal met.

比较以上5组运行结果可知,当步长在以上选取的数值范围内,误差总会收敛到我们想要的结果。而当步长较大时,收敛速度加快了,误差开始有增大的趋势。

五.讨论与分析

虽然模糊控制和神经网络都是典型的智能控制方法,模糊控制解决的是用机器模拟人脑的感知、推理等智能行为方面,但在处理数值数据和自学习能力等方面远没有达到人脑的境界;而神经网络是从人脑的生理学和心理学着手,模拟人脑细胞的分布式工作特点和自组织功能实现并行处理、自学习和非线性映射等能力。

传统的BP学习算法本质上都是梯度搜索法,不可避免的存在极值点附近训练速度相当慢的缺陷。现在许多算法都采用启发式的方法进行改进,而BP算法和它的改进算法对他们的训练问题都存在不可预见性。因此,在基于BP 算法的神经网络应用中,应该具体问题具体分析,很难确定哪一种训练算法的收敛速度更快,占用内存更少,因为这取决于问题的复杂性、训练样本、网络权值和阀值个数及期望误差等许多问题。

本次设计作业让我对神经网络的模型结构和学习算法有了深入的理解,和模糊控制做了明显的区分。以上只是简单的实验性分析探讨,还有更多的内容、知识和方法需要我们去学习、探索和研究,发现问题、解决问题,寻找缺陷,不断改善。

神经网络学习算法matlab仿真(借鉴参照)

东南大学自动化学院 智能控制概论 神经网络学习算法研究 学院: 姓名: 学号: 日期:

目录 1 任务要求叙述 ..................................................... 错误!未定义书签。 2 系统分析及设计原理 ......................................... 错误!未定义书签。 3 设计实现.............................................................. 错误!未定义书签。4仿真验证.. (6) 5 讨论与分析.......................................................... 错误!未定义书签。

一.任务要求叙述 (1)任务 (a) 运行算法,观察和分析现有学习算法的性能; clear all;close all; nu=20;pi=3.1415926; for i=1:nu p(i)=2*pi*i/nu; t(i)=0.5*(1+cos(p(i))); end minmax=[min(p(:)) max(p(:))] net = newff([ 0 7],[6 1],{'logsig' 'purelin'},'traingd');% traingd traingdm trainlm net.trainParam.epochs = 10000; net.trainParam.goal = 0.0001; net.trainParam.show=200; net.trainParam.lr=0.1; net.trainParam.mc=0.6; %0.9 default value; available for momentum net = train(net,p,t); y1 = sim(net,p); figure(2); plot(p,t,'*-',p,y1,'r--') %************** test data ****************** nu2=nu*3/2; for i=1:(nu2) p2(i)=2*pi*i/(nu2); t2(i)=0.5*(1+cos(p2(i))); end y2 = sim(net,p2); figure(3); plot(t2,'*-');hold on; plot(y2,'r'); xlabel('times');ylabel('outputs'); figure(4); plot(t2-y2); xlabel('times');ylabel('error'); (b) 为了进一步提高学习逼近效果,可以采取那些措施,调节规律如何?根据所提的每种措施,修改算法程序,给出仿真效果验证、过程以及相应的曲线图,给出适当的评述;(c) 联系、结合前向神经网络的算法样本学习、测试等过程,谈谈本人对神经网络系统的一些认识和看法。

(完整版)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

基于matlab实现BP神经网络模型仿真

基于BP神经网络模型及改进模型对全国历年车祸次数预测 一、背景 我国今年来随着经济的发展,汽车需求量不断地增加,所以全国每年的车祸次数也被越来越被关注,本文首先搜集全国历年车祸次数,接着通过这些数据利用BP神经网络模型和改进的径向基函数网络进行预测,最后根据预测结果,分析模型的优劣,从而达到深刻理解BP神经网络和径向基函数网络的原理及应用。所用到的数据即全国历年车祸次数来自中国汽车工业信息网,网址如下: https://www.360docs.net/doc/3f2988076.html,/autoinfo_cn/cszh/gljt/qt/webinfo/2006/05/124650 1820021204.htm 制作历年全国道路交通事故统计表如下所示: 二、问题研究 (一)研究方向 (1)通过数据利用BP神经网络模型预测历年全国交通事故次数并与实际值进行比较。(2)分析BP神经网络模型改变训练函数再进行仿真与之前结果进行对比。 (3)从泛化能力和稳定性等方面分析BP神经网络模型的优劣。 (4)利用径向基函数网络模型进行仿真,得到结果与采用BP神经网络模型得到的结果进行比较。

(二)相关知识 (1)人工神经网络 人工神经网络是一种应用类似于大脑神经突触联接的结构进行信息处理的数学模型。在工程与学术界也常直接简称为神经网络或类神经网络。神经网络是一种运算模型,由大量的节点(或称神经元)和之间相互联接构成。每个节点代表一种特定的输出函数,称为激励函数(activation function)。每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重,这相当于人工神经网络的记忆。网络的输出则依网络的连接方式,权重值和激励函数的不同而不同。而网络自身通常都是对自然界某种算法或者函数的逼近,也可能是对一种逻辑策略的表达。 人工神经网络有以下几个特征: (1)非线性非线性关系是自然界的普遍特性。大脑的智慧就是一种非线性现象。人工神经元处于激活或抑制二种不同的状态,这种行为在数学上表现为一种非线性网络关系。具有阈值的神经元构成的网络具有更好的性能,可以提高容错性和存储容量。 (2)非局限性一个神经网络通常由多个神经元广泛连接而成。一个系统的整体行为不仅取决于单个神经元的特征,而且可能主要由单元之间的相互作用、相互连接所决定。通过单元之间的大量连接模拟大脑的非局限性。联想记忆是非局限性的典型例子。 (3)非常定性人工神经网络具有自适应、自组织、自学习能力。神经网络不但处理的信息可以有各种变化,而且在处理信息的同时,非线性动力系统本身也在不断变化。经常采用迭代过程描写动力系统的演化过程。 (4)非凸性一个系统的演化方向,在一定条件下将取决于某个特定的状态函数。例如能量函数,它的极值相应于系统比较稳定的状态。非凸性是指这种函数有多个极值,故系统具有多个较稳定的平衡态,这将导致系统演化的多样性。 (2)BP神经网络模型 BP(Back Propagation)网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网络模型拓扑结构包括输入层(input)、隐层(hide layer)和输出层(output layer)。 (3)径向基函数网络模型 径向基函数(Radial Basis Function,RBF)神经网络由三层组成,输入层节点只传递输入信号到隐层,隐层节点由像高斯函数那样的辐射状作用函数构成,而输出层节点通常是简单的线性函数。 隐层节点中的作用函数(基函数)对输入信号将在局部产生响应,也就是说,当输入信号靠近基函数的中央范围时,隐层节点将产生较大的输出,由此看出这种网络具有局部逼近能力,所以径向基函数网络也称为局部感知场网络。

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 参数。该算法的学习过程由正向传播和反向传播组成。在正向传播过程中,输入信息从输入层经隐含层逐层处理,并 传向输出层。每一层神经元的状态只影响下一层神经

神经网络PID控制及Matlab仿真

神经网络PID控制及Matlab仿真 摘要 PID控制技术是一种应用很普遍的控制技术,目前在很多方面都有广泛的应用。论文首先简要介绍了神经网络的理论基础和神经网络的学习算法,传统的常规PID控制器。为了达到改善常规PID控制器在复杂的、动态的和不确定的系统控制还存在着许多不足之处的目的,文中系统的分析了神经网络PID控制器。 本文主要研究了神经网络PID控制。利用神经网络具有强的非线性映射能力、自学习能力、联想记忆能力、并行信息处理方式及优良的容错性能,应用神经网络对PID控制器进行改进后,对于工业控制中的复杂系统控制有着更好的控制效果,有效的改善了由于系统结构和参数变化导致的控制效果不稳定。文中深入研究了基于神经网络的BP神经网络PID控制器及其仿真等。 最后,对常规PID控制器和神经网络PID控制器进行了仿真比较,仿真结果表明,应用神经网络对常规PID控制器进行改进后提高了系统的鲁棒性和动态特性,有 效的改善了系统控制结果,达到了预期的目的前言 在工业控制过程中,PID控制是一种最基本的控制方式,其鲁棒性好、结构简单、易于实现,但常规的PID控制也有其自身的缺点,因为常规PID控制器的参数是根据被控对象数学模型确定的,当被控对象的数学模型是变化的、非线性的时候,PID参数不易根据其实际的情况做出调整,影响了控制质量,使控制系统的控制品质下降。特别是在具有纯滞后特性的工业过程中,常规的PID控制更难满足控制精度的要求。 PID控制是最早发展起来的控制策略之一,按偏差的比例、积分和微分进行控制的调节器称为 PID控制器,它是连续系统中技术成熟,应用最广泛的一种调节器。由于其算法简单,实现简易、鲁棒性能良好和可靠性高,能够对很大一类工业对象进行有效控制等一系列优点,被广泛应用于工业过程控制,尤其适用于可建立精确数学模型的确定性控制系统。但是在实际的工业生产过程中,往往具有非线性,时变不确定性,因而难以建立精确的数学模型,应用常规 PID控制器不能达到理想的控制效果:在实际生产过程中,由于受到参数整定方法繁杂的困扰,常规PID控制器参数往往整定不良,性能欠佳,对运行工况的适应性很差。

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仿真

本文前言 MA TLAB的简介 MATLAB是一种适用于工程应用的各领域分析设计与复杂计算的科学计算软件,由美国Mathworks公司于1984年正式推出,1988年退出3.X(DOS)版本,19992年推出4.X(Windows)版本;19997年腿5.1(Windows)版本,2000年下半年,Mathworks公司推出了他们的最新产品MATLAB6.0(R12)试用版,并于2001年初推出了正式版。随着版本的升级,内容不断扩充,功能更加强大。近几年来,Mathworks公司将推出MATLAB语言运用于系统仿真和实时运行等方面,取得了很多成绩,更扩大了它的应用前景。MATLAB已成为美国和其他发达国家大学教学和科学研究中最常见而且必不可少的工具。 MATLAB是“矩阵实验室”(Matrix Laboratory)的缩写,它是一种以矩阵运算为基础的交互式程序语言,着重针对科学计算、工程计算和绘图的需要。在MATLAB中,每个变量代表一个矩阵,可以有n*m个元素,每个元素都被看做复数摸索有的运算都对矩阵和复数有效,输入算式立即可得结果,无需编译。MATLAB强大而简易的做图功能,能根据输入数据自动确定坐标绘图,能自定义多种坐标系(极坐标系、对数坐标系等),讷讷感绘制三维坐标中的曲线和曲面,可设置不同的颜色、线形、视角等。如果数据齐全,MATLAB通常只需要一条命令即可做图,功能丰富,可扩展性强。MATLAB软件包括基本部分和专业扩展部分,基本部分包括矩阵的运算和各种变换、代数和超越方程的求解、数据处理和傅立叶变换及数值积分风,可以满足大学理工科学生的计算需要,扩展部分称为工具箱,它实际上使用MATLAB的基本语句编成的各种子程序集,用于解决某一方面的问题,或实现某一类的新算法。现在已经有控制系统、信号处理、图象处理、系统辨识、模糊集合、神经元网络及小波分析等多种工具箱,并且向公式推倒、系统仿真和实时运行等领域发展。MATLAB语言的难点是函数较多,仅基本部分就有七百多个,其中常用的有二三百个。 MATLAB在国内外的大学中,特别是数值计算应用最广的电气信息类学科中,已成为每个学生都应该掌握的工具。MATLAB大大提高了课程教学、解题作业、分析研究的效率。

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;

人工鱼群算法的仿真程序-matlab

tic figure(1);hold on ezplot('x*sin(10*pi*x)+2',[-1,2]); %% 参数设置 fishnum=50; %生成50只人工鱼 MAXGEN=50; %最多迭代次数 try_number=100;%最多试探次数 visual=1; %感知距离 delta=0.618; %拥挤度因子 step=0.1; %步长 %% 初始化鱼群 lb_ub=[-1,2,1]; X=AF_init(fishnum,lb_ub); LBUB=[]; fori=1:size(lb_ub,1) LBUB=[LBUB;repmat(lb_ub(i,1:2),lb_ub(i,3),1)]; end gen=1; BestY=-1*ones(1,MAXGEN); %每步中最优的函数值 BestX=-1*ones(1,MAXGEN); %每步中最优的自变量 besty=-100; %最优函数值 Y=AF_foodconsistence(X); while gen<=MAXGEN fprintf(1,'%d\n',gen) fori=1:fishnum %% 聚群行为 [Xi1,Yi1]=AF_swarm(X,i,visual,step,delta,try_number,LBUB,Y); %% 追尾行为 [Xi2,Yi2]=AF_follow(X,i,visual,step,delta,try_number,LBUB,Y); if Yi1>Yi2 X(:,i)=Xi1; Y(1,i)=Yi1; else X(:,i)=Xi2; Y(1,i)=Yi2; end end [Ymax,index]=max(Y); figure(1); plot(X(1,index),Ymax,'.','color',[gen/MAXGEN,0,0]) ifYmax>besty besty=Ymax; bestx=X(:,index); BestY(gen)=Ymax;

各种BP学习算法MATLAB仿真

3.3.2 各种BP学习算法MATLAB仿真 根据上面一节对BP神经网络的MATLAB设计,可以得出下面的通用的MATLAB程序段,由于各种BP学习算法采用了不同的学习函数,所以只需要更改学习函数即可。 MATLAB程序段如下: x=-4:0.01:4; y1=sin((1/2)*pi*x)+sin(pi*x); %trainlm函数可以选择替换 net=newff(minmax(x),[1,15,1],{'tansig','tansig','purelin'},'trainlm'); net.trainparam.epochs=2000; net.trainparam.goal=0.00001; net=train(net,x,y1); y2=sim(net,x); err=y2-y1; res=norm(err); %暂停,按任意键继续 Pause %绘图,原图(蓝色光滑线)和仿真效果图(红色+号点线) plot(x,y1); hold on plot(x,y2,'r+'); 注意:由于各种不确定因素,可能对网络训练有不同程度的影响,产生不同的效果。如图3-8。 标准BP算法(traingd)

图3-8 标准BP算法的训练过程以及结果(原图蓝色线,仿真图+号线)增加动量法(traingdm) 如图3-9。 图3-9 增加动量法的训练过程以及结果(原图蓝色线,仿真图+号线)弹性BP算法(trainrp)如图3-10 图3-10 弹性BP算法的训练过程以及结果(原图蓝色线,仿真图+号线)

动量及自适应学习速率法(traingdx)如图3-11。 图3-11 动量及自适应学习速率法的训练过程以及结果(原图蓝色线,仿真图+号线)共轭梯度法(traincgf)如图3-12。

人工神经网络作业MATLAB仿真(共3篇)

人工神经网络作业M A T L A B 仿真(共3篇) -标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

人工神经网络仿真作业(3篇) 人工神经网络仿真作业1: 三级倒立摆的神经网络控制 人工神经网络仿真作业2: 基于模型整体逼近的机器人RBF网络自适应控制 人工神经网络仿真作业3: 基于RBF的机械手无需模型自适应控制研究

神经网络仿真作业1:三级倒立摆的神经网络控制 摘要:建立了基于人工神经网络改进BP 算法的三级倒立摆的数学模型,并给 出了BP 网络结构,利用Matlab 软件进行训练仿真,结果表明,改进的BP 算法控制倒立摆精度高、收敛快,在非线性控制、鲁棒控制等领域具有良好的应用前景。 1.引言 倒立摆系统的研究开始于19世纪50年代,它是一个典型的非线性、高阶次、多变量、强耦合和绝对不稳定系统.许多抽象的控制概念,如系统的稳定性、可控性、系统的收敛速度和抗干扰能力都可以通过倒立摆直观地表现出来。随着现代控制理论的发展,倒立摆的研究对于火箭飞行控制和机器人控制等现代高科技的研究具有重要的实践意义。目前比较常见的倒立摆稳定控制方法有线性控制,如LQR,LQY 等;智能控制,如变论域自适应模糊控制,遗传算法,预测控制等。 2.系统的数学模型 2.1三级倒立摆的模型及参数 三级倒立摆主要由小车,摆1、摆2、摆3组成,它们之间自由链接。小车可以在水平导轨上左右平移,摆杆可以在铅垂平面内运动,将其置于坐标系后如图1 所示: 规定顺时针方向的转角和力矩均为正。此外,约定以下记号:u 为外界作用力,x 为小车位移,i (i =1,2,3)为摆i 与铅垂线方向的夹角, i O 分别为摆i 的链接点位置。其它的系统参数说明如下:

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仿真

自适应滤波器 MATLAB仿真 摘要 : 本文介绍了自适应滤波器的工作原理,以及推导了著名的LMS( Least mean squares )算法。以一个例子演示了自适应滤波器的滤波效果。实验结果表明,该滤波器滤波效果较好。 关键词:自适应滤波器 MATLAB7.0 LMS 算法 Simulate of adaptive filter based on MATLAB7.0 Abstract: This article described the working principle of adaptive filter and deduced the well-known LMS algorithm. Take an example to demonstrate the adaptive filters filtering effects. The results show that the filter has an effective way to filter single. Key words: LMS algorithm Adaptive Filter Matlab7.0 1引言 由 Widrow B 等提出的自适应滤波理论,是在维纳滤波、卡尔曼滤波等线性滤波基础上发展起来的一种最佳滤波方法。由于它具有更强的适应性和更优的滤波性能,从而广泛应用于通信、系统辨识、回波消除、自适应谱线增强、自适应信道均衡、语音线性预测和自适应天线阵等诸多领域[1]。自适应滤波器最大的优点在于不需要知道信号和噪声的统计特性的先验知识就可以实现信号的最佳滤波处理。本文通过一个具体例子和结果论证了自适应滤波器的滤波效果。 2自适应滤波原理及 LMS算法 2.1 自适应滤波原理 图 1 自适应滤波原理图 在自适应滤波器中,参数可调的数字滤波器一般为 FIR 数字滤波器, IIR 数字滤波器或格型数字滤波器。自适应滤波分 2 个过程。第一,输入信号想 x(n) 通过参数可调的数字滤波器后得输出信号 y(n) ,y(n) 与参考信号 d(n) 进行比较得误差信号 e(n) ;第二,通过一种自适应算法和 x(n) 和 e(n) 的值来调节参数可调的数字滤波器的参数,即加权系

神经网络与matlab仿真

神经网络与matlab仿真 摘要 随着技术的发展,人工神经网络在各个方面应用越来越广泛,由于matlab仿真技术对神经网络的建模起着十分重要的作用,因此,本文通过讨论神经网络中基础的一类——线性神经网络的matlab仿真,对神经网络的matlab仿真做一个基本的了解和学习。 关键词:人工神经网路matlab仿真线性神经网络 1 神经网络的发展及应用 人工神经网络(Artificial Neural Network,简称ANN)是一种高度并行的信息处理系统,它具有高度的容错性,自组织能力和自学习能力;它以神经科学的研究成果为基础,反映了人脑功能的若干基本特性,对传统的计算机结构和人工智能方法是一个有力的挑战,其目的在于探索人脑加工、储存和搜索信息的机制,进而应用于人工智能系统。 1.1 神经网络的研究历史及发展现状 神经网络的研究已有较长的历史。1943年,心理学家McCulloch和数学家Pitts合作提出形式(兴奋与抑制型)神经元的数学模型(MP模型),开创了神经科学理论研究的时代。1944年,Hebb提出了神经元连接强度的修改规则,它们至今仍在各种神经网络模型中起着重要作用。50年代末60年代初,开始了作为人工智能的网络系统的研究。1958年,F.Rosenblatt首次引进了模拟人脑感知和学习能力的感知器概念,它由阈值性神经元组成。1962年,B.Widrow提出的自适应线性元件(adaline),具有自适应学习功能,在信息处理、模式识别等方面受到重视和应用。在这期间,神经网络大都是单层线性网络。此时,人们对如何解决非线性分割问题很快有了明确的认识,但此时,计算机科学已被人工智能研究热潮所笼罩。80年代后,传统的数字计算机在模拟视听觉的人工智能方面遇到了物理上不能逾越的基线,此时,物理学家Hopfield提出了HNN模型,引入了能量函数的概念,给出了网络稳定性的判据,同时开拓了神经网络用于联想记忆和优化计算的新途径。神经网络的热潮再次掀起。此后,Feldmann和Ballard 的连接网络模型指出了传统的人工智能“计算”与生物的“计算”的不同点,给出了并行分布的计算原则;Hinton和Sejnowski提出的Boltzman机模型则急用了统计物理学的概念和方法,首次采用了多层网络的学习算法,保证整个系统趋于全局稳定点;Rumelhart和McClelland等人发展了多层网络的BP算法;Kosko提出了双向联想记忆网络;Hecht-Nielsen提出了另一种反向传播网络,可用于图像压缩和统计分析;Holland提出了分类系统类似于以规则为基础的专家系统。这些努力为神经网络的后期发展奠定了牢固的基础。 目前,神经网络在研究方向上已经形成多个流派,包括多层网络BP算法,Hopfield网络模型,自适应共振理论(ART),自组织特征映射理论等。1987年,IEEE在San Diego召开大规模的神经网络国际学术会议,国际神经网络学会也随之诞生。 迄今为止的神经网络研究。大体可分为三个大的方向:

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)

基于MATLAB 的神经网络的仿真

智能控制 基于MATLAB 的神经网络的仿真 学院: 姓名: 学号: 年级: 学科:检测技术与自动化装置 日期:

一.引言 人工神经网络以其具有信息的分布存储、并行处理以及自学习能力等优点, 已经在模式识别、 信号处理、智能控制及系统建模等领域得到越来越广泛的应用。MATLAB中的神经网络工具箱是以人工神经网络理论为基础, 利用MATLAB 语言构造出许多典型神经网络的传递函数、网络权值修正规则和网络训练方法,网络的设计者可根据自己的需要调用工具箱中有关神经网络的设计与训练的程序, 免去了繁琐的编程过程。 二.神经网络工具箱函数 最新版的MATLAB 神经网络工具箱为Version4.0.3, 它几乎涵盖了所有的神经网络的基本常用类型,对各种网络模型又提供了各种学习算法,我们可以根据自己的需要调用工具箱中的有关设计与训练函数,很方便地进行神经网络的设计和仿真。目前神经网络工具箱提供的神经网络模型主要用于: 1.数逼近和模型拟合; 2.信息处理和预测; 3.神经网络控制; 4.故障诊断。 神经网络工具箱提供了丰富的工具函数,其中有针对某一种网络的,也有通用的,下面列表中给出了一些比较重要的工具箱函数。

三.仿真实例 BP 网络是一种多层前馈神经网络,由输入层、隐层和输出层组成。BP 网络模型结构见图1。网络同层节点没有任何连接,隐层节点可以由一个或多个。网络的学习过程由正向和反向传播两部分组成。在正向传播中,输入信号从输入层节点经隐层节点逐层传向输出层节点。每一层神经元的状态只影响到下一层神经元网络,如输出层不能得到期望的输出,那么转入误差反向传播过程,将误差信号沿原来的连接通路返回,通过修改各层神经元的权值,逐次地向输入层传播去进行计算,在经正向传播过程,这两个过程反复运用,使得误差信号最小或达到人们所期望的要求时,学习过程结束。

bp神经网络及matlab实现

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

相关文档
最新文档