资源简介
这是非常实用的基于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仿真参数
相关资源
- 读取txt文件内容matlab代码实现
- 细胞图像分割matlab代码
- 基于MP的时频分析MATLAB代码
- WCDMA matlab代码
- 图像降噪Matlab代码
- 圣诞树(matlab代码)
- 心音信号处理分析(附matlab代码)
- Pattern Recognition and Machine Learning(高清
- 均值滤波和FFT频谱分析Matlab代码
- 欧拉放大论文及matlab代码
- GPS信号的码捕获matlab代码.7z
-
Fuzzysimuli
nk有关模糊PID问题概述-自适 - matlab读取SP3文件
- 图像的饱和度,亮度,色调的matlab代
- 肤色检测matlab代码
- 粒子群算法优化pid源码 matlab仿真.ra
- sutton强化学习随书MATLAB代码
- 压缩鬼成像matlab代码
- rbf神经网络求解机器人的运动学逆解
- 压缩感知(Compressed Sensing CS)matlab代
- 基于OFDMA系统的多用户资源分配算法,
- Allan方差分析MATLAB代码,含MPU6050八小
- 均匀球体剖面重力异常正演模拟Matl
- 印章识别matlab代码
- 连续潮流matlab代码
- 线性拟合仿真-最小二乘法、正交回归
- 矩阵填充MATLAB代码
- 大型飞机航拍图处理matlab代码
- LMS语音信号去噪matlab代码
- 卡尔曼滤波MATLAB代码170027
评论
共有 条评论