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

📄 bpxy.asv

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

%测试误差
for j=1:159   
x=bpb(j,1:4);						
net1=w1*x'-yw1;					
out=logsig(net1);		
net2=w2*out-yw2;									
y(:,j)=net2;
yr(:,j)=bpb(j,5:7)';			
end
error=(y-yr)./yr;
yb=[1:159];
plot(yb,error);

⌨️ 快捷键说明

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