BP及RBP神经网络逼近.docx

上传人:b****1 文档编号:2571922 上传时间:2023-05-04 格式:DOCX 页数:34 大小:1.05MB
下载 相关 举报
BP及RBP神经网络逼近.docx_第1页
第1页 / 共34页
BP及RBP神经网络逼近.docx_第2页
第2页 / 共34页
BP及RBP神经网络逼近.docx_第3页
第3页 / 共34页
BP及RBP神经网络逼近.docx_第4页
第4页 / 共34页
BP及RBP神经网络逼近.docx_第5页
第5页 / 共34页
BP及RBP神经网络逼近.docx_第6页
第6页 / 共34页
BP及RBP神经网络逼近.docx_第7页
第7页 / 共34页
BP及RBP神经网络逼近.docx_第8页
第8页 / 共34页
BP及RBP神经网络逼近.docx_第9页
第9页 / 共34页
BP及RBP神经网络逼近.docx_第10页
第10页 / 共34页
BP及RBP神经网络逼近.docx_第11页
第11页 / 共34页
BP及RBP神经网络逼近.docx_第12页
第12页 / 共34页
BP及RBP神经网络逼近.docx_第13页
第13页 / 共34页
BP及RBP神经网络逼近.docx_第14页
第14页 / 共34页
BP及RBP神经网络逼近.docx_第15页
第15页 / 共34页
BP及RBP神经网络逼近.docx_第16页
第16页 / 共34页
BP及RBP神经网络逼近.docx_第17页
第17页 / 共34页
BP及RBP神经网络逼近.docx_第18页
第18页 / 共34页
BP及RBP神经网络逼近.docx_第19页
第19页 / 共34页
BP及RBP神经网络逼近.docx_第20页
第20页 / 共34页
亲,该文档总共34页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

BP及RBP神经网络逼近.docx

《BP及RBP神经网络逼近.docx》由会员分享,可在线阅读,更多相关《BP及RBP神经网络逼近.docx(34页珍藏版)》请在冰点文库上搜索。

BP及RBP神经网络逼近.docx

BP及RBP神经网络逼近

 

《BP及RBP神经网络逼近、药品销售预测、基本遗传算法设计实验》

实验指导书

雷菊阳编

机械工程学院

2012年6月

实验一、BP及RBP神经网络逼近

 

一、实验目的

1、了解MATLAB集成开发环境

2、了解MATLAB编程基本方法

3、加深对BP算法的理解和掌握

4、掌握工具包入口初始化及调用

5、加深BP、RBP神经网络对任意函数逼近的理解

二、实验内容

1、MATLAB基本指令和语法。

2、BP算法的MATLAB实现

三、实验步骤

1、熟悉MATLAB开发环境

2、输入参考程序

3、设置断点,运行程序,观察运行结果

四、参考程序

1、BP算法的matlab实现程序

%lr为学习步长,err_goal期望误差最小值,max_epoch训练的最大次数,隐层和输出层初值为零

lr=0.05;

err_goal=0.01;

max_epoch=3000;

a=0.9;

Oi=0;

Ok=0;

%两组训练集和目标值

X=[11;-1-1;11];

T=[11;11];

%初始化wki,wij(M为输入节点j的数量;q为隐层节点i的数量;L为输出节点k的数量)

[M,N]=size(X);

q=8;

[L,N]=size(T);

wij=rand(q,M);

wki=rand(L,q);

wij0=zeros(size(wij));

wki0=zeros(size(wki));

forepoch=1:

max_epoch

%计算隐层各神经元输出

NETi=wij*X;

forj=1:

N

fori=1:

q

Oi(i,j)=2/(1+exp(-NETi(i,j)))-1;

end

end

%计算输出层各神经元输出

NETk=wki*Oi;

fori=1:

N

fork=1:

L

Ok(k,i)=2/(1+exp(-NETk(k,i)))-1;

end

end

%计算误差函数

E=((T-Ok)'*(T-Ok))/2;

if(E

break;

end

%调整输出层加权系数

deltak=Ok.*(1-Ok).*(T-Ok);

w=wki;

wki=wki+lr*deltak*Oi';

wki0=w;

%调整隐层加权系数

deltai=Oi.*(1-Oi).*(deltak'*wki)';

w=wij;

wij=wij+lr*deltai*X';

wij0=w;

end

epoch%显示计算次数

%根据训练好的wki,wij和给定的输入计算输出

X1=X;

%计算隐层各神经元的输出

NETi=wij*X1;

forj=1:

N

fori=1:

q

Oi(i,j)=2/(1+exp(-NETi(i,j)))-1;

end

end

%计算输出层各神经元的输出

NETk=wki*Oi;

fori=1:

N

fork=1:

L

Ok(k,i)=2/(1+exp(-NETk(k,i)))-1;

end

end

Ok%显示网络输出层的输出

2、BP逼近任意函数算法的matlab实现程序

⏹X=-4:

0.08:

4;

⏹T=1.1*(1-X+2*X.^2).*exp(-X.^2./2);

⏹net=newff(minmax(X),[20,1],{'tansig','purelin'});

⏹net.trainParam.epochs=15000;

⏹net.trainParam.goal=0.001;

⏹net=train(net,X,T);

⏹X1=-1:

0.01:

1;

⏹y=sim(net,X1);

⏹figure;

⏹plot(X1,y,'-r',X,T,':

b','LineWidth',2);

3.RBF能够逼近任意的非线性函数

⏹X=-4:

0.08:

4;

⏹T=1.1*(1-X+2*X.^2).*exp(-X.^2./2);

⏹net=newrb(X,T,0.002,1);

⏹X1=-1:

0.01:

1;

⏹y=sim(net,X1);

⏹figure;

⏹plot(X1,y,'-r',X,T,':

b','LineWidth',3);

 

五、思考题

1、试设计一个函数并将结果用图画出。

2、假设训练样本X=[11;-1-1;11],目标输出T=[11;11],建立一个输入层3个神经元,单隐层8个神经元,输出层2个神经元的网络结构,其中隐层、输出层神经元的传递函数均为sigmoid函数,

(1)试利用BP学习算法实现该网络的训练过程;

(2)利用增加动量项的BP学习算法实现该网络;

(3)观察两种学习算法的运行结果,比较两种算法的优缺点

3、训练参数的改变对逼近性能的影响

 

实验二、药品销售预测实验

一、实验目的

1、了解利用神经网络处理实际问题的一般思路

2、掌握MATLAB中常用神经网络函数

二、实验内容

1、数据预处理。

2、神经网络的MATLAB实现

三、实验步骤

1、熟悉MATLAB开发环境

2、输入参考程序

3、设置断点,运行程序,观察运行结果

四、参考程序

下表为某药品的销售情况,现构建一个如下的三层BP神经网络对药品的销售进行预测:

输入层有三个结点,隐含层结点数为5,隐含层的激活函数为tansig;输出层结点数为1个,输出层的激活函数为logsig,并利用此网络对药品的销售量进行预测,预测方法采用滚动预测方式,即用前三个月的销售量来预测第四个月的销售量,如用1、2、3月的销售量为输入预测第4个月的销售量,用2、3、4月的销售量为输入预测第5个月的销售量.如此

反复直至满足预测精度要求为止。

月份

1

2

3

4

5

6

销量

2056

2395

2600

2298

1634

1600

月份

7

8

9

10

11

12

销量

1873

1478

1900

1500

2046

1556

程序实现:

production=[205623952600229816341600187314781900150020461556];

gyhvector=(production-1478)/(2600-1478);

P=[0.51520.81731.0000;

0.81731.00000.7308;

1.00000.73080.1390;

0.73080.13900.1087;

0.13900.10870.3520;

0.10870.35200.0000;]';

T=[0.73080.13900.10870.35200.00000.3761];

net=newff([01;01;01],[5,1],{'tansig','logsig'},'traingd');

net.trainParam.epochs=500;%%%%可以改

net.trainParam.goal=0.005;

LP.lr=0.1;

net=train(net,P,T);

test=[0.01960.50620.0695;

0.37610.01960.5062;

00.37610.0196;

0.51520.81731.0000;

0.81731.00000.7308;

1.00000.73080.1390;

0.73080.13900.1087;

0.13900.10870.3520;

0.10870.35200.0000;

0.352000.3761;

00.37610.0196;

0.37610.01960.5062;]';

y=sim(net,test);

x=[1:

12];

figure;

plot(x,gyhvector,'rs',x,y,'bo');

set(gca,'xtick',x);

实验结果:

goal=0.005

 

五、思考题

简述利用MATLAB神经网络函数处理实际工程问题的一般方法和步骤

 

实验三、基本遗传算法设计实验

一、实验目的

1、了解基本遗传算法全局优化一般思路

2、掌握选择、交叉、变异算子如何实现

3、轮盘赌方法(roulettewheelmodel)如何用程序方法实现

4、适应度函数设计方法

二、实验内容

1、初始化处理。

2、神经网络的MATLAB实现

三、实验步骤

1、熟悉MATLAB开发环境

2、输入参考程序

3、设置断点,运行程序,观察运行结果

四、参考程序

1、初始化

functionresult=Initial(length)

fori=1:

length

r=rand();

result(i)=round(r);

end

2、Matlab实现----十进制与二进制转换

⏹functiony=Dec(a,b,x,L)

⏹base=2.^((L-1):

-1:

0);

⏹y=dot(base,x);

⏹y=a+y*(b-a)/(2^L-1);

3、Matlab实现---适应度函数计算

⏹functionF=fitness(x)

⏹F=20+x+10*sin(4*x)+8*cos(3*x);

 

4、Matlab实现----GA()

function[xv,fv]=GA(fitness,a,b,NP,NG,pc,pm)

L=24;%L=ceil(log((b-a)/eps+1))L=24

x=zeros(NP,L);

fori=1:

NP;

x(i,:

)=Initial(L);

fx(i)=fitness(Dec(a,b,x(i,:

),L));

end

fork=1:

NG

sumfx=sum(fx);

px=fx/sumfx;

ppx=0;

ppx

(1)=px

(1);

fori=2:

NP

ppx(i)=ppx(i-1)+px(i);

end

fori=1:

NP

sita=rand();

forn=1:

NP

ifsita<=ppx(n)

SelFather=n;

break;

end

end

SelMother=floor(rand()*(NP-1))+1;

posCut=floor(rand()*(L-2))+1;

r1=rand();

ifr1<=pc

nx(i,1:

posCut)=x(SelFather,1:

posCut);

nx(i,(posCut+1):

L)=x(SelMother,(posCut+1):

L);

r2=rand();

ifr2<=pm

posMut=round(rand()*(L-1)+1);

nx(i,posMut)=~nx(i,posMut);

end

else

nx(i,:

)=x(SelFather,:

);

end

end

x=nx;

fori=1:

NP

fx(i)=fitness(Dec(a,b,x(i,:

),L));

end

end

fv=-inf;

fori=1:

NP

fitx=fitness(Dec(a,b,x(i,:

),L));

iffitx>fv

fv=fitx;

xv=Dec(a,b,x(i,:

),L);

end

end

5、Matlab实现----主程序

a=0;

b=10;

NP=10;%%%%改

NG=2000;%%%该

pc=0.6;

pm=0.04;

[xv,fv]=GA(@fitness,a,b,NP,NG,pc,pm);

disp“最优个体"

xv

disp“最优适应度"

fv

6、实验结果

五、思考题

1、求y=x*x在【0,31】的最大值

2、如何求最小值并考虑怎样修改程序:

f(x)=x2-10x+16【0,31】的最小值?

实验四、模糊PID控制器设计实验

一、实验目的

1、掌握常规PID算法如何用程序来实现

2、掌握过程输出如何仿真

3、模糊PID控制器程序设计方法

4、比较两种控制器的控制效果

二、实验要求

具体要求如下:

1、模糊PID控制器设计方法。

2、过程输出仿真。

3、Matlab程序设计实现及调试。

三、实验原理

对于已知系统的传递函数为:

,假设系统给定为阶跃值R=10,系统的初始值R(0)=0,试分析设计:

a、常规的PID控制器

b、模糊PID控制器

c、比较两种控制器的控制效果

控制规则:

If(erroriserror<<0)then(duisdu>>0)

(1)

If(erroriserror=0)then(duisdu=0)

(1)

If(erroriserror>>0)then(duisdu<<0)

(1)

If(erroriserror<0)and(deisde<0)then(duisdu>>0)

(1)

If(erroriserror>0)and(deisde>0)then(duisdu<<0)

(1)

过程输出仿真:

四阶龙格库塔法

三、实验参考程序

模糊PID控制器:

 

常规的PID控制器:

五、思考题

1、模糊控制器设计方法

2、龙格库塔法模拟控制对象输出的原理?

实验五、模糊自适应PID控制设计实验

一、实验目的

1、掌握如何运用模糊推理来实现PID各个参数自动调节

2、掌握如何将操作人员的经验进行形式化变成可用的知识库

3、掌握过程输出如何仿真

4、模糊PID控制器程序设计方法

5、掌握自适应PID算法如何用程序来实现

二、实验要求

具体要求如下:

1、模糊PID控制器设计方法。

2、过程输出仿真。

3、Matlab程序设计实现及调试。

四、实验原理

模糊化规则由PID各个参数对系统的影响得到:

(a)当误差|e|较大时,说明误差的绝对值较大,不论误差的变化趋势如何,都应该考虑控制器的Kp取较大值,以提高响应的快速性;而为防止因为|ec|瞬时过大,kd应该取较小的值;为控制超调,ki也应该取值很小。

(b)当误差|e|在中等大小时,为保证系统的相应速度并控制超调,应减小Kp,Ki值应增大,Kd应适中。

(c)当误差|e|较小时,为保证系统具有良好的稳态特性,应加大Kp、Ki的取值,同时为避免产生振荡,Kd的取值应该和|ec|联系起来。

模糊PID控制根据系统运行的不同状态,考虑Kp、Ki、Kd三者的关联,根据工程经验设计模糊整定这三个参数,选择输入语言变量为误差e和偏差变化率ec,语言变量值取{NB,NM,NS,0,PS,PM,PB}七个模糊值;选择输出语言变量为△Kp,△Ki,△Kd语言变量值也取{NB,NM,NS,0,PS,PM,PB}七个模糊值,建立△Kp,△Ki,△Kd的模糊规则表如下表1、表2、表3。

 

五、实验参考程序

五、思考题

1、自适应模糊PID控制基本原理及框图

2、考虑在改变控制对象传递函数的情况下如何修改程序,并以具体实例说明。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2