声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3999|回复: 19

[综合讨论] 求助高手:现NAN数

[复制链接]
发表于 2006-7-18 11:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
求助各位高手,应用BP网络实现对PID自调整的程序中,总是出现NAN数是怎么回事啊,恳请指点,谢谢

[ 本帖最后由 ericlin 于 2006-7-18 19:01 编辑 ]
回复
分享到:

使用道具 举报

发表于 2006-7-18 18:48 | 显示全部楼层
是divided by zero 了吧
 楼主| 发表于 2006-7-20 10:14 | 显示全部楼层
没有啊,但是另外的一个模型是对的阿,这个模型在SIMULINK仿真是正确的,但是用程序编写就是不对了,BP网络学习了几秒后就停止了,不知道怎么回事,恳请高手深入指点,谢谢
发表于 2006-7-21 12:04 | 显示全部楼层
“BP网络学习了几秒后就停止了”
可能原因:1。已经达到目标误差;2,达到最大训练步数,但无法达到目标误差。
 楼主| 发表于 2006-7-21 16:09 | 显示全部楼层
如果出现这两种原因怎么去改进阿,还请ericlin教授指点一下,谢谢

[ 本帖最后由 微微 于 2006-7-21 16:12 编辑 ]
发表于 2006-8-10 16:58 | 显示全部楼层
不是啊,它会告诉你具体什么原因的,如果已经达到目标误差就很好啊,不用改进。如果无法达到目标误差就增加训练步数,或者试试其他训练方法,要具体看你这方面的程序了,还有也有可能是其他原因的。看系统的提示语是什么啊?
 楼主| 发表于 2006-8-11 10:28 | 显示全部楼层
我是用M函数编程的,只有图形的显示,看不出来是什么系统的提示阿,这样该怎么办呢,还请指点一下阿,谢谢
发表于 2006-8-11 13:17 | 显示全部楼层
贴出程序给大家看看吧,也许会有人帮你。
 楼主| 发表于 2006-8-12 15:37 | 显示全部楼层
%BP based PID Control
clear all;
close all;

xite=0.20;
alfa=0.05;

S=1; %Step type

IN=4;H=5;Out=3;  %NN Structure
if S==1  %Step Signal
    wi =[ 0.4501    0.2621    0.1154   -0.0943;
   -0.2689   -0.0435    0.2919    0.4355;
    0.1068   -0.4815    0.4218    0.4169;
   -0.0140    0.3214    0.2382   -0.0897;
    0.3913   -0.0553   -0.3237    0.3936];

   

wi=0.50*rands(H,IN);
wi_1=wi;wi_2=wi;wi_3=wi;
wo= [-0.4421   -0.4901   -0.3013   -0.3012   -0.0549;
   -0.1471   -0.3611    0.1038   -0.4847    0.4318;
    0.3132   -0.2972   -0.2278    0.2468   -0.0340];

wo_1=wo;wo_2=wo;wo_3=wo;
end




x=[0,0,0];
du_1=0;
u_1=0;u_2=0;u_3=0;u_4=0;u_5=0;
y_1=0;y_2=0;y_3=0;

Oh=zeros(H,1);    %Output from NN middle layer
I=Oh;             %Input to NN middle layer
error_2=0;
error_1=0;

ts=0.001;
for k=1:1:6000
time(k)=k*ts;

if S==1
   rin(k)=1.0;
elseif S==2
   rin(k)=sin(1*2*pi*k*ts);
end


ts=0.001;                  
sys=tf(659.0559*0.2,[5,0,329530]);
dsys=c2d(sys,ts,'z');  
  [num,den]=tfdata(dsys,'v');   

yout(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2

error(k)=rin(k)-yout(k);

xi=[rin(k),yout(k),error(k),1];

x(1)=error(k)-error_1;
x(2)=error(k);
x(3)=error(k)-2*error_1+error_2;

epid=[x(1);x(2);x(3)];
I=xi*wi';
for j=1:1:H
    Oh(j)=(exp(I(j))-exp(-I(j)))/(exp(I(j))+exp(-I(j))); %Middle Layer
end
K=wo*Oh;             %Output Layer
for l=1:1:Out
    K(l)=exp(K(l))/(exp(K(l))+exp(-K(l)));        %Getting kp,ki,kd
end
kp(k)=K(1);ki(k)=K(2);kd(k)=K(3);
Kpid=[kp(k),ki(k),kd(k)];

du(k)=Kpid*epid;
u(k)=u_1+du(k);

dyu(k)=sign((yout(k)-y_1)/(du(k)-du_1+0.0001));

%Output layer
for j=1:1:Out
    dK(j)=2/(exp(K(j))+exp(-K(j)))^2;
end
for l=1:1:Out
    delta3(l)=error(k)*dyu(k)*epid(l)*dK(l);
end

for l=1:1:Out
   for i=1:1:H
       d_wo=xite*delta3(l)*Oh(i)+alfa*(wo_1-wo_2);
   end
end
    wo=wo_1+d_wo+alfa*(wo_1-wo_2);
%Hidden layer
for i=1:1:H
    dO(i)=4/(exp(I(i))+exp(-I(i)))^2;
end
    segma=delta3*wo;
for i=1:1:H
   delta2(i)=dO(i)*segma(i);
end

d_wi=xite*delta2'*xi;
wi=wi_1+d_wi+alfa*(wi_1-wi_2);

%Parameters Update
du_1=du(k);
u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k);   
y_2=y_1;y_1=yout(k);
   
wo_3=wo_2;
wo_2=wo_1;
wo_1=wo;
   
wi_3=wi_2;
wi_2=wi_1;
wi_1=wi;

error_2=error_1;
error_1=error(k);
end
figure(1);
plot(time,rin,'r',time,yout,'b');
xlabel('time(s)');ylabel('rin,yout');
figure(2);
plot(time,error,'r');
xlabel('time(s)');ylabel('error');
figure(3);
plot(time,u,'r');
xlabel('time(s)');ylabel('u');
figure(4);
subplot(311);
plot(time,kp,'r');
xlabel('time(s)');ylabel('kp');
subplot(312);
plot(time,ki,'g');
xlabel('time(s)');ylabel('ki');
subplot(313);
plot(time,kd,'b');
xlabel('time(s)');ylabel('kd');
 楼主| 发表于 2006-8-12 15:39 | 显示全部楼层
还请各位高手帮忙看一下程序哪处出错了,怎么运行总是不对呢
发表于 2006-8-15 18:13 | 显示全部楼层
我运行了一下上面的程序,没有什么错误
最后结果为四张图
 楼主| 发表于 2006-8-15 20:08 | 显示全部楼层
谢谢happy教授!!但是运行的结果你觉得怎么样,四张图不对,在鼠标点击到程序中显示的结果是都是NAN,比如wi,明明是给定的值,但是当鼠标移动到程序中的这个部分是,还是出现NAN字样,一直没有找出原因。
发表于 2006-8-16 10:26 | 显示全部楼层
原帖由 微微 于 2006-8-15 20:08 发表
谢谢happy教授!!但是运行的结果你觉得怎么样,四张图不对,在鼠标点击到程序中显示的结果是都是NAN,比如wi,明明是给定的值,但是当鼠标移动到程序中的这个部分是,还是出现NAN字样,一直没有找出原因。

  1. wi=wi_1+d_wi+alfa*(wi_1-wi_2);
复制代码


这个式子又没有可能为0呢?
另外最初的wi你也是随机给出的
 楼主| 发表于 2006-8-17 09:12 | 显示全部楼层
谢谢happy 教授的关注。
是阿,我也不明白是怎么回事,图形的输出肯定是不对的,所以一直没有解决。
发表于 2006-8-17 17:30 | 显示全部楼层
我又重新运行了一下,还是没有看到你说的NAN
下面试运行结果
1.GIF
2.GIF
3.GIF
4.GIF

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-14 15:01 , Processed in 0.076922 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表