1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/Y56Tl5Zt
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
CMAC神经网络具有小脑的机能,因而,被广泛应用于机器人的运动控制。或者反过来说,正是为了机器人的运动控制,Albus构造了CMAC神经系统,以模拟脊椎动物的小脑机能。 正如Albus所说的:“然而,对我来说,CMAC最重要的特征是,它提供了一种认识和理解脑计算的途径,导致了一系列关于智能系统积木的重要见解。”为此,Albus又称CMAC神经网络为小脑算术计算模型(Cerebellar Model ArithmeTIc Computer, CMAC)。
4.部分源码
t=x_train;% 自变量t
y=y1_train;%因变量y
min_in=min(t);%输入自变量最小值
max_in=max(t);%输入自变量最大值
n=numel(t);%自变量的位数
size_n=360;%量化等级,越大精度越高
s=[1:size_n];%S空间,输入量化后的离散空间
train_num=180;%用于训练的样本个数
maxgen=50;%最大迭代次数
mse=zeros(1,maxgen);%均方误差向量
gen=0;%实际迭代次数
eta=1.0;%学习率η
error_goal=0.00001;%误差精度要求
A_star=6;%每个状态对应的关联单元个数
common_unit=5;%相邻关联组有相同关联单元个数
a_num=size_n*A_star-(size_n-1)*common_unit;%关联单元总数
a=ones(1,a_num);% a 向量
w=zeros(1,a_num);% 权值向量
% 获取训练样本 的输入和输出
train_in=zeros(1,train_num);%训练样本输入
train_out=zeros(1,train_num);%训练样本输出
for i=1:train_num
train_in(i)=t(floor((i-1)*n/train_num+1));
train_out(i)=y(floor((i-1)*n/train_num+1));
end
% 开始训练样本
for i=1:maxgen
gen=i;
for j=1:train_num
s_seq=floor((train_in(j)-min_in)/(max_in-min_in)*(size_n-1))+1;%量化空间S的序号
w_seq=(s_seq-1)*(A_star-common_unit)+1;%权值序号
ye(j)=sum(w(w_seq:w_seq+A_star-1));%实际输出
for k=w_seq:w_seq+A_star-1 %修正权值
w(k)=w(k)+eta*(train_out(j)-ye(j))/A_star;
end
end
error=0;
for j=1:train_num
error=error+(train_out(j)-ye(j))^2;
end
mse(i)=error;
if error<error_goal %误差达到目标值,退出训练
break;
end
end
%检验训练好的网络
t2=x_test;% 自变量t
y2=y1_test;%因变量y
n=numel(t2);%自变量的位数
min_in=min(t2);%输入自变量最小值
max_in=max(t2);%输入自变量最大值
n=numel(t2);%自变量的位数
size_n=360;%量化等级,越大精度越高
for i=1:n
s_seq=floor((t2(i)-min_in)/(max_in-min_in)*(size_n-1))+1;%S序号
w_seq=(s_seq-1)*(A_star-common_unit)+1;%权值序号
yp(i)=sum(w(w_seq:w_seq+A_star-1));
end
A_191