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

📄 ssnpr.m

📁 基于Heeb监督的单神经元自适应PID控制器S函数程序
💻 M
字号:
%基HEBB学习算法的单神经元自适应PID控制器的程序
function [sys,x0,str,ts] = ssnpid(t,x,u,flag)
switch flag,
    case 0
        [sys,x0,str,ts] = mdlInitializeSizes;
    case 2
        sys = mdlUpdates(x,u);
    case 3
        sys = mdlOutputs(t,x,u);
    case {1,4,9}
        sys = []
    otherwise
        error(['Unhandled flag=',num2str(flag)]);
end;
%初始化子程序
function [sys,x0,str,ts] = mdlInitializeSizes
sizes = simsizes;%生成size数据结构
sizes.NumContStates = 0;%连续状态数
sizes.NumDiscStates = 2;%离散状态数
sizes.NumOutputs = 1;%输出量个数
sizes.NumInputs = 2;%输入量个数e(k)、(dlt)e(k)
sizes.DirFeedthrough = 1;%是否存在代数循环(1—存在)
sizes.NumSampleTimes = 1;%采样时间个数
sys=simsizes(sizes);%返回size数据结构所包含的信息
x0 = [0;0];%设置处置状态
str = [];%保留变量并置空
ts = [1e-5 0];%采样时间
% when flag=2,updates the discrete states
function sys = mdlUpdates(x,u)
    T=1;
    w=100*pi
    sys = [u(1);(u(2)*T+2*u1-u1_1)/(1+w*T)];    
%sys = [u(1);u(2)];
 % when flag=3,computates the output signals
    function sys = mdlOutputs(t,x,u)
    persistent wkp1_1 wki1_1  u1_1 ;
    xiteP = 0.58;
    xiteI = 1.0;   
    if t==0%初始化KP,KI,KD
        wkp1_1 = 1000;
        wki1_1 = 5000;       
          u1_1 = 0;
    end
    %有监督的Hebb学习算法的权值调整规则
    wki1 = wki1_1+xiteI*x(1)*u1_1*x(2);%I
    wkp1 = wkp1_1+xiteP*x(1)*u1_1*x(1);%P    
    wadd1 = abs(wkp1)+abs(wki1);
    w111 = wki1/wadd1;
    w122 = wkp1/wadd1;  
    w1 = [w111,w122];
    k1 = 0.2;
    u1 = k1*w1*x;
    wkp1_1 = wkp1;
    wki1_1 = wki1;   
    u1_1 = u1;
    sys = u1;
    

⌨️ 快捷键说明

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