⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bpyz.m

📁 智能控制的课件 做的很好很不错
💻 M
字号:
%******************************初始化各参数**********************************
l=0.1;											%取学习步长为0.5	
cells=8;										%取6个神经元
times=10000;	                                   %bp网络学习总次数
w1=rand(cells,3);							%取第一层连接权系数初始值为随量, cells*1矩阵
w2=rand(1,cells);				     		%取第二层连接权系数初始值为随量,1*cells矩阵
zw1=rand(cells,1);						%取第一层阈值初始为随机量,为%cells*1矩阵
zw2=rand;									%取第二层阈值初始为一随机数
z=rand(1,159);                            %取输出初始值为1*n的一个随机矩阵  
em=0.00001;                               %最大误差
%******************************学习过程*******************************
for j=1:159   					%bp网络学习的次数times
   ei=0;                               %取网络逼近初始误差平方和为0
   for n=1:times%对n个样本开始学习
       zt1=bpb(j,8);				%bp网络需要学习的函数yt
       y=bpb(j,5:7);						%取输入初始值
       net1=w1*y'-zw1;					%net1为cells*1矩阵
       out=logsig(net1);		%out为cells*1矩阵,logsig函数用一般算式这里可写成out=1./(1+exp(-net1)')
       net2=w2*out-zw2;									
       z(:,j)=net2;							%第a个样本输出即为net2
       det2=zt1-z(:,j)';			    		%输出与期望间的广义误差det2
       det1=((det2*(w2))*out).*(1-out);    %广义误差det1为cells*1矩阵
       w1=w1+det1*y*l;														
       w2=w2+(out*det2)'*l;					%连接权更新
       zw1=-det1*l+zw1;								
       zw2=-(det2)'*l+zw2;               	%两层阈值更新
       ei=ei+power((det2)',2)./2;	      	     %误差平方和
   end
   if ei<em                      %设定学习要求:误差小于0.01
       break;
   end 
end
%测试误差
for j=1:159   
x=bpb(j,5:7);						
net1=w1*x'-zw1;					
out=logsig(net1);		
net2=w2*out-zw2;									
z(j)=net2;
zr(j)=bpb(j,8);			
end
error=(z-zr)./zr;
yb=[1:159];
plot(yb,error);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -