Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Control Inteligente
Control Inteligente
Redes Neuronales
Controlador neuronal por modelo de referencia
Integrantes:
Miguel Benalczar
Xavier Falcon
Mauricio Vinueza
El control de sistemas por modelo de referencia consiste en disear un sistema que modifique el comportamiento
natural de la planta con el objetivo que se aproxime a la respuesta que tiene un modelo de referencia establecido. En
este esquema de control se supone que el diseador tiene el suficiente conocimiento del sistema como para definir el
comportamiento deseado por medio de un modelo.
El modelo de referencia usado en este caso es el de un sistema de primer orden que se caracteriza por una constante de
tiempo y una ganancia unitaria.
Fig1
Como se puede observar en la figura los patrones de entrenamiento se utilizan para entrenar una red global tnet que
est a su vez conformada por mnet que es la subred de salida y se obtiene mediante identificacin del proceso a
controlar y la red cnet que se obtiene luego de haber entrenado la red global tnet con patrones de la LRM.
En este entrenamiento y obtencin de los patrones el error que se produce entre el modelo de referencia lineal y el del
control representado por la cnet o red neuronal de control y la mnet o red neuronal de identificacin permite ajustar
tanto los pesos y los bias de la red neuronal de control en tanto que los pesos y el bias de la red neuronal de modelo no
son alterados.
Con este proceso se extrae la red neuronal de control que controla la planta multitanque.
Procedimiento
En esta seccin se podrn encontrar los cdigos de los programas que permitirn resolver el problema del tanque con 2
variables, las cuales son nivel y caudal.
Programa de Identificacin con redes neuronales del sistema del tanque de dos variables (nivel y caudal mnet)
% Identificacin de un proceso de variacin de nivel en un tanque
% Una funcion de caudal q y de altura anterior x(dos variables)
% Ecuacion dinmica a identificar
% AdH/dt=q-C1 H ^alfa1
alfa1=0.29;
C1=5.66e-5;
A= 25*3.5e-4; % area del tanque
%Obtencion de los patrones de entrenamiento
x=0.01:1e-2:25e-2; % son los valores posibles de altura H
q=0.1e-4:0.1e-5:0.6e-4; % caudal de ingreso al tanque
p=combvec(x,q) %Conbinacin de datos x y q en matriz p
deltaT= 0.5; % intervalo de muestreo
deltaxv=[];
%Actualizacin de datos aplicando la ecuacin
for i=1:1:length(p)
x_c=p(1,i);
q_c=p(2,i)
deltax=(q_c/A-C1/A*x_c^alfa1)*deltaT;
deltaxv=[deltaxv deltax];
end
% grafico de la variacin de la altura vs altura inicial y caudal de
% entrada
[x_g,q_g]=meshgrid(0.01:1e-2:25e-2,0.1e-4:0.1e-5:0.6e-4)
fq=q_g/A;
fx=C1/A*x_g.^alfa1;
f=(fq-fx)*deltaT;
figure(1)
mesh(x_g,q_g,f)
% calculo de transformaciones de normalizacion
xn=1-2*(max(x)-x)/(max(x)-min(x))
qn=1-2*(max(q)-q)/(max(q)-min(q))
% target=deltaxv;maxt=max(target);mint=min(target);
% tn=1-2*(maxt-target)/(maxt-mint)
tn=deltaxv
% save ec_normlz maxt mint
p=combvec(xn,qn)
pause
% create a FFN
% net=newff(minmax(p),[8,1],{'tansig','purelin'},'traingd');
net=newff(minmax(p),[8,1],{'tansig','purelin'},'trainlm');
% Ingreso de parmetros para entrenamiento
net.trainParam.show = 50;
net.trainParam.lr = 0.01;
net.trainParam.epochs = 3000;
net.trainParam.goal = (0.00001)^2;
% Entrenamiento de la red
[net,tr]=train(net,p,tn);
% comprobacion de resultados
[xn,qn]=meshgrid(-1:0.05:1,-1:0.05:1)
for i=1:1:size(xn,1)
for j=1:1:size(xn,2)
clc
xn(i,j)
zss(i,j)=sim(net,[xn(i,j);qn(i,j)]);
i
size(x,1)
j
end
end
figure(3)
mesh(xn,qn,zss)
save tank3 net
tnet.inputs{2}.range = minmax(Pc(2,:));
%A continuacin se define el tamao de cada capa y las funciones de
%transferencia
tnet.layers{1}.size = S1;
tnet.layers{1}.transferFcn = 'tansig';
tnet.layers{2}.size = 1;
tnet.layers{2}.transferFcn = 'purelin';
tnet.layers{3}.size = 8;
tnet.layers{3}.transferFcn = 'tansig';
tnet.layers{4}.size = 1;
tnet.layers{4}.transferFcn = 'purelin';
%Se utilizar la funcion de entrenamiento trainbfg
%para minimizar el error cuadrtico medio.
tnet.performFcn = 'mse';
tnet.trainFcn = 'trainbfg';
tnet.trainParam.min_grad =1e-8
tnet.IW{1,1} = cnet.IW{1,1}(:,1);% son los estados de la planta
tnet.inputWeights{1,1}.learn = 1;
tnet.IW{1,2} = cnet.IW{1,1}(:,2);% Es la demanda o valor deseado
tnet.inputWeights{1,2}.learn = 1;
tnet.b{1} = cnet.b{1};
tnet.biases{1}.learn = 1;
tnet.b{2} = cnet.b{2};
tnet.biases{2}.learn = 1;
tnet.LW{2,1} = cnet.LW{2,1};
tnet.layerWeights{2,1}.learn = 1;
tnet.IW{3,1} = mnet.IW{1,1}(:,1); % Son los estados de la planta
tnet.inputWeights{3,1}.learn = 0;
tnet.LW{3,2} = mnet.IW{1,1}(:,2); % es la seal de control
tnet.layerWeights{3,2}.learn = 0;
tnet.b{3} = mnet.b{1};
tnet.biases{3}.learn = 0;
tnet.LW{4,3} = mnet.LW{2,1};
tnet.layerWeights{4,3}.learn = 0;
tnet.b{4} = mnet.b{2};
tnet.biases{4}.learn = 0;
%
% TRAINING THE NETWORK
% ====================
%
% We will use TRAIN to train the control network so that
% a typical error is 0.002 radians (0.11 deg) for the Q
% 2-element target vectors.
tnet.trainParam.show = 50; % Frequency of progress displays (in epochs).
tnet.trainParam.epochs = 1000; % Maximum number of epochs to train.
tnet.trainParam.goal = 0.0002^2; % Sum-squared error goal.
% Training begins...please wait...
[tnet,tr] = train(tnet,{Pc(1,:); Pc(2,:)},{Tc});
...and finally finishes.
% Now we take the trained weights and put them back in the
% control network.
cnet.IW{1,1}(:,1) = tnet.IW{1,1};
cnet.IW{1,1}(:,2) = tnet.IW{1,2};
cnet.b{1} = tnet.b{1};
cnet.b{2} = tnet.b{2};
cnet.LW{2,1} = tnet.LW{2,1};
save control cnet
Para poder visualizar el esquema de control es necesario generar el bloque de control de red neuronal, con el cual vamos a
poder realizar la simulacin respectiva de diagramas de bloques en simulink. Para esto ejecutamos en consola el comando
gensim(cnet ,0.5), y armamos el siguiente diagrama.
Anlisis de Resultados
Para poder realizar la correcta simulacin del tanque con 2 variables (nivel y caudal) es necesario seguir el orden de los
programas que se ha expuesto en la parte de procedimiento. A continuacin se podr observar grficas y resultados
obtenidos dentro de la simulacin de cada uno de estos cdigos.
Programa de Identificacin con redes neuronales del sistema del tanque de dos variables (nivel y caudal mnet)
Al ejecutar el cdigo del programa obtendremos
-3
x 10
3
-1
-2
7
6
0.25
5
-5
x 10
0.2
4
0.15
3
0.1
2
0.05
1
Fig 4. Variacin del nivel del tanque en funcin de la altura inicial y el caudal de ingreso
En la figura 3. Se puede observar la variacin del nivel con respecto a un caudal de ingreso inicial, A esta grfica se la
considera como el funcionamiento del proceso a controlar. Tomando en cuenta que la vlvula de salida se encuentra
completamente abierta. En la figura 4. Se puede revisar la identificacin realizada con redes neuronales.
-3
x 10
3
2
1
0
-1
-2
1
0.5
1
0.5
0
0
-0.5
-0.5
-1
-1
-3
x 10
3
2
1
0
-1
-2
-3
0.25
0.25
0.2
0.2
0.15
0.15
Como se puede observar, la respuesta es muy cercana al SP establecido, y se verifica que sigue un modelo de primer
orden, como se fij al momento del diseo del modelo de referencia inicial.
Pruebas en el laboratorio:
Fig10. Pruebas Reales con el controlador neuronal por modelo de referencia en el Sistema Multitanque.
El tiempo de establecimiento es un poco lento sin embargo el sistema responde bien pues su control no tiene sobre
impulsos y su cercana aunque no llega a cero el error de estado estacionario, es muy cercano a este.
Bibliografa
S. Baruch, J.M. Flores, F. Nava, I.R Ramirez, and B. Nenkova, "An Adavanced Neura! Network Topology and
Learning, Applied for Identification and Control of a D.c. Motor", in Frac. of the First Int. IEEE Symposium on
Intelligent Systems, Varna, Bulgaria, Sept., 2002, pp. 289Nnet.pdf