24小时热门版块排行榜    

查看: 712  |  回复: 0

kaiyu

木虫 (小有名气)

[求助] 基于S函数的BP神经网络P I D控制器,S函数封装问题

今天看了论文《基于S函数的BP神经网络P I D控制器S i m u li n k仿真》按照论文上的步骤做总是出问题,请高手帮忙看一下!
%%m文件
function [sys,x0,str,ts]=bp_pids(t,x,u,flag,T,nh,xite,alfa,kF1,kF2)
T=0.001;
nh=5;
xite=0.25;
alfa=0.05;
kF1=1;
kF2=2;
switch flag,
  
  case 0,
    [sys,x0,str,ts]=mdlInitializeSizes(T,nh);
  
  %case 1,
   % sys=mdlDerivatives(t,x,u);
  
  %case 2,
    %sys=mdlUpdate(t,x,u);
  
  case 3,
    sys=mdlOutputs(t,x,u,T,nh,xite,alfa,kF1,kF2);
  
    case{1,2,4,9},sys=[];
   % sys=mdlGetTimeOfNextVarHit(t,x,u);
  %case 9,
    %sys=mdlTerminate(t,x,u);
  
  otherwise
    error(['Unhandled flag = ',num2str(flag)]);
end
function [sys,x0,str,ts]=mdlInitializeSizes(T,nh)
sizes = simsizes;
sizes.NumContStates  = 0;
sizes.NumDiscStates  = 0;
sizes.NumOutputs     = 4+7*nh;
sizes.NumInputs      = 7+14*nh;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;   
sys = simsizes(sizes);
x0  = [];
str = [];
ts  = [T 0];
function sys=mdlDerivatives(t,x,u)
sys = [];
function sys=mdlUpdate(t,x,u)
sys = [];
function sys=mdlOutputs(t,x,u,T,nh,xite,alfa,kFuncl,kFunc2)
wi_2=reshape(u(8:7+4*nh),nh,4);
wO_2=reshape(u(8+4*nh:7+7*nh),3,nh);
wi_1=reshape(u(8+7*nh:7+11*nh),nh,4);
wO_1=reshape(u(8+11*nh:7+14*nh),3,nh);
xi=[u([6,4,1])',1];
xx=[u(1)-u(2);u(1);u(1)+u(3)-2*u(2)];
I=xi*wi_1';
Oh=non_transfun(I,kF1);
K=non_transfun(wo_l*Oh',kF2);
uu=u(7)+K'*xx;
dyu=sign((u(4)-u(5))/(uu-u(7)+0.0000001));
dK=non_transfun(K,3);
delta3=u(1)*dyu*xx.*dK;
wO=wO_1+xite*delta3*Oh+alfa*(wO_1-wO_2)+alfa*(wO_1-wO_2);
dO=2*non_transfun(I,3);
wi=wi_1+xite*(dO.*(delta3'*wO))'*xi+alfa*(wi_1-wi_2);
sys = [uu;K;wi(;wO(];
function sys=mdlGetTimeOfNextVarHit(t,x,u)
sampleTime = 1;   
sys = t + sampleTime;
function sys=mdlTerminate(t,x,u)
sys = [];
function W1=non_transfun(W,key)
switch key
    case 1,W1=(exp(W)-exp(-W))./(exp(W)+exp(-W));
    case 2,W1=exp(W)./(exp(W)+exp(-W));
    case 2,W1=2./(exp(W)+exp(-W)).^2;  
end
文中系统仿真的是y(t)=1.2y(t-1))/(1-0.8e^(-0.1t/T))/(1+y(t-1)^2)+u(t),
出现的问题是:在M文件中是77输入,39输出,在文中mask subsystem中得到2输入,2输出的模块,
(其中输入1为给定信号与对象输出信号的误差e(k),输入2为对象输出信号y(k)。输出1为控制器的输出u(k),
输出2为kp,ki,kd-个权值的变化量。)
我用simulink做出程序,但是还是变量个数有问题?
不知文章是怎么实现的?请高手指点~
基于S函数的BP神经网络P I D控制器,S函数封装问题
NNPID.PNG



[ Last edited by kaiyu on 2013-7-15 at 20:21 ]
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 kaiyu 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 317求调剂 +4 申子申申 2026-03-19 8/400 2026-03-20 11:20 by 申子申申
[考研] 【考研调剂】化学专业 281分,一志愿四川大学,诚心求调剂 +6 吃吃吃才有意义 2026-03-19 6/300 2026-03-20 10:47 by 尽舜尧1
[考研] 304求调剂 +5 曼殊2266 2026-03-18 5/250 2026-03-20 09:00 by ZHANG0tao
[考研] 0703化学调剂 +4 18889395102 2026-03-18 4/200 2026-03-19 16:13 by 30660438
[考研] 085600材料与化工调剂 324分 +10 llllkkkhh 2026-03-18 12/600 2026-03-19 14:33 by llllkkkhh
[考研] 一志愿福大288有机化学,求调剂 +3 小木虫200408204 2026-03-18 3/150 2026-03-19 13:31 by houyaoxu
[考研] 0703化学 305求调剂 +4 FY_yy 2026-03-14 4/200 2026-03-19 05:54 by anny19840123
[考研] 344求调剂 +6 knight344 2026-03-16 7/350 2026-03-18 20:13 by walc
[考研] 【同济软件】软件(085405)考研求调剂 +3 2026eternal 2026-03-18 3/150 2026-03-18 19:09 by 搏击518
[考研] 085601专硕,总分342求调剂,地区不限 +5 share_joy 2026-03-16 5/250 2026-03-18 14:48 by haxia
[考研] 070300化学319求调剂 +6 锦鲤0909 2026-03-17 6/300 2026-03-18 13:22 by Iveryant
[考研] 302求调剂 +10 呼呼呼。。。。 2026-03-17 10/500 2026-03-18 12:45 by Linda Hu
[考研] 277调剂 +5 自由煎饼果子 2026-03-16 6/300 2026-03-17 19:26 by 李leezz
[硕博家园] 湖北工业大学 生命科学与健康学院-课题组招收2026级食品/生物方向硕士 +3 1喜春8 2026-03-17 5/250 2026-03-17 17:18 by ber川cool子
[考研] 275求调剂 +4 太阳花天天开心 2026-03-16 4/200 2026-03-17 10:53 by 功夫疯狂
[考研] 0854控制工程 359求调剂 可跨专业 +3 626776879 2026-03-14 9/450 2026-03-16 17:42 by 626776879
[考研] 318求调剂 +3 Yanyali 2026-03-15 3/150 2026-03-16 16:41 by houyaoxu
[考研] 326求调剂 +3 mlpqaz03 2026-03-15 3/150 2026-03-16 07:33 by Iveryant
[考研] 080500,材料学硕302分求调剂学校 +4 初识可乐 2026-03-14 5/250 2026-03-14 21:08 by peike
[考研] 本科南京大学一志愿川大药学327 +3 麦田耕者 2026-03-14 3/150 2026-03-14 20:04 by 外星文明
信息提示
请填处理意见