资源简介
这是非常实用的基于RBF神经网络的PID控制仿真代码,可以通过参数自适应整定来实现功能,请大家参考!
代码片段和文件信息
clear; clc; %% 参数初始化
lr=0.1;%学习速率
beta=0.05;%动量因子
x=[000]‘;%初始化输入
nn=6;%隐含层节点数
%RBF网络3-6-1结构初始化参数
ci=30*ones(3nn);%节点基函数中心向量
bi=40*ones(nn1);%节点基函数方差
w=10*ones(nn1); %输出层权重
h=zeros(nn1);%隐藏层输出向量
ci_1=ci;ci_3=ci_1;ci_2=ci_1; bi_1=bi;bi_2=bi_1;bi_3=bi_2; w_1=w;w_2=w_1;w_3=w_1;
u_1=0;y_1=0; ec=[000]‘;%误差变化率eceecc
error_1=0;error_2=0;error=0;
% PID 初始参数设置
kp0 = 0.03; ki0 = 0.28; kd0 = 0.03; flag=1;%控制模式flag=0 PID&RBF;flag=1 PID
kp_1=kp0; kd_1=kd0; ki_1=ki0; %pid参数学习率
kp_lr=0.20; kd_lr=0.20; ki_lr=0.20; ts=0.01; %%
for t = 1:1:200 time(t)=t*ts; r(t)=1.0*sign(sin(2*pi*t*ts));%系统参考输入
y(t)=(-0.3*y_1+u_1)/(6+y_1^2);%系统输出
%% 前向传播 %1.计算每个节点RBF的输出
for j=1:1:nn
h(j)=exp(-norm(x-ci(:j))^2/(2*bi(j)*bi(j)));
end
%2. RBF网络输出
ym(t)=w‘*h; %% 反向传播 %1. 输出权重更新计算
d_w=0*w;
for j=1:1:nn
d_w(j)=lr*(y(t)-ym(t))*h(j);
end
w=w_1+d_w+beta*(w_1-w_2); %2. 节点基函数方差更新
d_bi=0*bi;
for j=1:1:nn
d_bi(j)=lr*(y(t)-ym(t))*w(j)*h(j)*(bi(j)^-3)*norm(x-ci(:j))^2;
end
bi=bi_1+ d_bi+beta*(bi_1-bi_2); %3. 节点中心更新
for j=1:1:nn
for i=1:1:3
d_ci(ij)=lr*(y(t)-ym(t))*w(j)*h(j)*(x(i)-ci(ij))*(bi(j)^-2);
end
end
ci=ci_1+d_c
- 上一篇:RBF插值算法Matlab代码
- 下一篇:用GUI实时更改simuli
nk仿真参数
相关资源
- RBF插值算法Matlab代码
- 图像预处理MATLAB代码包括图像去孔洞
- 随机森林matlab代码
-
Simuli
nk仿真_模糊PID控制 -
Simuli
nk仿真_简单PID控制 - capon算法的DOA估计MATLAB代码
- 图像局部提取并保存的Matlab代码实现
- 图像分类的MATLAB代码
- 无线定位的各种经典算法的matlab代码
- 地理加权回归GWRmatlab代码
- 基于DCT变换的数字水印算法matlab代码
- k近邻matlab代码
-
BP神经网络+PID控制simuli
nk仿真 - DBSCAN聚类算法matlab代码
- SMOTE算法 MATLAB代码
- 时间序列预测及matlab代码
- 免疫算法 MATLAB代码
- 模拟退火算法MATLAB实现代码2
- PSO优化PID参数的matlab程序
- 匹配追踪算法OMP matlab代码
- 运用5种不同的梯度增强法进行图像锐
- RBF神经网络matlab程序
- 神经元 自适应 PID MATLAB
- OOK调制方法matlab代码ook.m
- 语音编码Matlab代码及其论文
- 泊松抠图的matlab代码
- radon变换车牌倾斜校正Matlab代码
- 求解二次规划问题的拉格朗日及有效
- 二值化算法:Otsu算法、Bernsen算法、
- 维纳滤波器matlab代码
评论
共有 条评论