clear all;
close all;
%前向算法
for k=1:1:200
net_1(k)=r(k); %输入层计算
net_2(k)=y(k);
for i=1:2
if -1<=net_i(k)<=1
x_i(k)=net_i(k);
elseif net_i(k)>1
x_i(k)=1;
elseif net_i(k)<-1
x_i(k)=-1;
end
end
%隐含层计算
for j=1:1:3
u_j(k)=0;
for i=1:2
u_j(k)=u_j(k)+x_i(k)*w_ij(k);
end
if j==1
net_1(k)=u_j(k); %P
elseif j==2
net_2(k)=net_2(k-1)+u_j(k); %I
elseif j==3
net_3(k)=u_j(k)-u_j(k-1); %D
end
end
%输出层计算
for j=1:3
u0_j(k)=0;
u0_j(k)=u0_j(k)+net_j(k)*w_j(k);
if -1<u0_j(k)<1
v(k)=u0_j(k);
elseif u0_j(k)>1
v(k)=1;
elseif u0_j(k)<-1
v(k)=-1;
end
end
e(k)=r(k)-y(k);
ee(k)=e(k)*e(k);
end
w_1(0)=0.1;w_2(0)=0.09;w_3(0)=0.2;
w_11=1;w_12=1;w_13=1;w_21=-1;w_22=-1;w_23=-1;
%反向算法
for k=1:200
for n=1:k
Je(n)=Je(n)+ee(k)/200;
for j=1:200
if(i~=j)&&(ee(i)<=ee(j))
emin=ee(i); %计算预定误差最小值
end
end
end
if Je(n)<emin
break
elseif Je(n)<=Je(n-1)
Je(n)=Je(n);
else Je(n)=Je(n-1);
end
for j=1:3 %隐含层至输出层权重值恢复
w_j(n)=w_j(n-1);
end
for j=1:3 %输入层至隐含层权重值恢复
for i=1:2
w_ij(n)=w_ij(n-1);
end
end
end
for j=1:3 %修改权重值
x1=0;
for k=1:200
x1=x1+e(k)*Sgn((y(k+1)-y(k))/(v(k)-v(k-1)))*net_j(k);
end
ddw_j(j)=-x1/200;
end
for j=1:3
for i=1:2
x2=0;
for k=1:200
x2=x2+e(k)*Sgn((y(k+1)-y(k))/(v(k)-v(k-1)))*w_jk(n)*Sgn((net_j(k)-net_j(k-1))/(u_j(k)-u_j(k-1)))*xi(k);
end
dw_j(i)=-x2/200;
end
end
for j=1:3
w_j(n+1)=w_j(n)-ddw_j(j)*0.2; %隐含层至输出层权重值的修改计算
end
for j=1:3
for i=1:2
w_ij(n+1)=w_ij(n)-dw_j(i)*0.2; %输入层至隐含层的权重值的修改计算
end
end
save pidnn1 net
gensim(net,-1)
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【达摩老生出品,必属精品,亲测校正,质量保证】 资源名:PID神经网络前向和反向学习算法_matlab的原程序代码 资源类型:matlab项目全套源码 源码说明: 全部项目源码都是经过测试校正后百分百成功运行的,如果您下载后不能运行可联系我进行指导或者更换。 适合人群:新手及有一定经验的开发人员
资源推荐
资源详情
资源评论
收起资源包目录
PID神经网络前向和反向学习算法_matlab的原程序代码.rar (1个子文件)
pidnn.m 2KB
共 1 条
- 1
资源评论
阿里matlab建模师
- 粉丝: 3224
- 资源: 2782
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功