习题
根据所学过的BP网络设计及改进方案设计实现模糊控制规则为T = int((e+ec)/2)的模糊神经网络控制器,其中输入变量e和ec的变化范围分别是:e = int[-2, 2],ec = int[-2, 2]。网络设计的目标误差为 0.001。
背景
这个题目,很明显输入矢量和目标矢量是
P = [-2 -2 -2 -2 -2 -1 -1 -1 -1 -1 0 0 0 0 0 1 1 1 1 1 2 2 2 2 2;
-2 -1 0 1 2 -2 -1 0 1 2 -2 -1 0 1 2 -2 -1 0 1 2 -2 -1 0 1 2 ];
T = [-2 -2 -1 -1 0 -2 -1 -1 0 0 -1 -1 0 0 1 -1 0 0 1 1 0 0 1 1 2];
疑问
题目最后,要求
验证,采用插值法选取多于训练时的输入,对所设计的网络进行验证,给出验证的A与T值。
这里怎么插值?、
外插值的话,神经网络只对内部有泛化能力,外部插值没有意义。
内部插值的话,e和ec只能是整数啊?这个能插值嘛?
题目的这个意思我搞不明白。求赐教!
附带作业的matlab代码
clc;
P = [-2 -2 -2 -2 -2 -1 -1 -1 -1 -1 0 0 0 0 0 1 1 1 1 1 2 2 2 2 2;
-2 -1 0 1 2 -2 -1 0 1 2 -2 -1 0 1 2 -2 -1 0 1 2 -2 -1 0 1 2 ];
T = [-2 -2 -1 -1 0 -2 -1 -1 0 0 -1 -1 0 0 1 -1 0 0 1 1 0 0 1 1 2];
[R,Q] = size(P);
[S2,Q] = size(T);
S1 =9;
%[W1] = rands(S1,R);
%[B1] = rands(S1,1);
%[W2] = rands(S2,S1);
%[B2] = rands(S2,1);
net = newff(minmax(P),[S1,1],{'tansig','purelin'},'trainlm');
%net.iw{1,1}=W1;net.b{1}=B1;
%net.lw{2,1}=W2;net.b{2}=B2;
%net=initnw(net,1);
net.iw{1,1}=W1;
net.b{1}=B1;
net.lw{2,1}=W2;
net.b{2}=B2;
net.trainParam.epochs = 20000;
net.trainParam.goal = 1e-003;
net.trainParam.min_grad = 1e-10;
net.trainParam.lr = 0.12;
%net.trainParam.lr_inc = 1.06;
%net.trainParam.lr_dec = 0.7;
net = train(net,P,T);
W1_=net.iw{1,1}
B1_=net.b{1}
W2_=net.lw{2,1}
B2_ = net.b{2}
A = sim(net,P)