You are on page 1of 12

CONTROL INTELIGENTE

ELECTRNICA AUTOMATIZACIN Y CONTROL








Redes Neuronales
Controlador neuronal por modelo de referencia



Integrantes:
Miguel Benalczar
Xavier Falcon
Mauricio Vinueza






Tema: Controlador neuronal por modelo de referencia

Resultados de Aprendizaje

La utilizacin del mtodo por modelo de referencia lo que hace es desarrollar un control neuronal que exige a nuestra
planta a comportarse al sistema utilizado en el modelo de referencia, el cual en este caso es un sistema de primer orden,
esto permite tener un control de cualquier sistema sin tener conocimiento ni aplicar teoras de control moderno.

Descripcin del Problema
Construir un micro controlador por modelo de referencia lineal para el sistema multitanque.

Marco Terico

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

Cdigo generacin de patrones:
tau=20
demanda=15e-2:1e-2:25e-2; %define valores maximos y mnimos de demanda
nivel_real=15e-2:1e-2:25e-2; %define valores maximos y mnimos del nivel real
Pc=combvec(nivel_real,demanda) %Creacin de una matriz, conbinando los valores de
demanda y nivel
size(Pc)
pause
timestep = 0.5;
cont = 0;
Q = length(Pc); %Obtencin del tamao de la matriz Pc
Tc = zeros(1,Q); %Asignacin de columna valores cero

for i=1:Q
demanda_c = Pc(2,i);
nivel0 = Pc(1,i);
sim('LRM_nivel',[0 0.5]);
Tc(1,i) = (nivelf-nivel0)
cont = cont + 1;
cont
end
save LRM Pc Tc
[xmesh,ymesh]=meshgrid(15e-2:1e-2:25e-2,15e-2:1e-2:25e-2)

for i=1:1:size(xmesh,1)
for j=1:1:size(xmesh,2)
xmesh(i,j)
demanda_c=xmesh(i,j)
nivel0=ymesh(i,j)
sim('LRM_nivel',[0 0.5]); %Realiza simulacin de modelo dinmico, ejecuta
modelo de Simulink
zmesh(i,j) = (nivelf-nivel0)
i
size(xmesh,1)
j
end
end
figure(3)
mesh(xmesh,ymesh,zmesh)



El LMR Modelo de referencia lineal permitir la ejecucin del cdigo del programa de generacin de patrones, tomando
como ingreso los valores de demanda_c y tau
Entrenamiento de tnet y obtencin del cnet
%Entrenamiento a tnet con los patrones de entrenamiento del LRM. En el
% programa se configura para que los pesos correspondientes a las capas finales y
que
% constituyen la subred mnet (que identifican al proceso) no se modifiquen. Los
pesos que si
% cambian de valor con el entrenamiento corresponden a las dos capas iniciales
que
% constituyen la subred cnet.
clear all
load tank3 %carga valores de almacenados en tank3
mnet=net
load LRM %carga valores de almacenados en LRM
Pcn=Pc
Tcn=Tc
pause
% %
% % DESIGNING THE NETWORK
% % =====================
% % NEWFF creates weights and biases for a two-layer
% % TANSIG/PURELIN network with 8 TANSIG neurons and 1 output.
S1 = 8;
cnet = newff(minmax(Pc),[S1 1],{'tansig' 'purelin'},'trainlm');
% NETWORK creates a network TNET which is a combination of the
% control network CNET and the model network MNET. Only
% the weights and biases for the model network will be
% adjusted.
numInputs = 2;
numLayers = 4;
tnet = network(numInputs,numLayers);
%Configuracin de las conexiones de red
tnet.biasConnect = [1 1 1 1]';
tnet.inputConnect = [1 0 1 0; 1 0 0 0]';
tnet.layerConnect = [0 0 0 0; 1 0 0 0; 0 1 0 0; 0 0 1 0];
tnet.outputConnect = [0 0 0 1];
tnet.targetConnect = [0 0 0 1];
%Ahora se definen los parmetros de entrada y la capa. La primera entrada
corresponde a
%los estados, y la segunda entrada es la demanda.
tnet.inputs{1}.range = minmax(Pc(1,:));
Fig 2. Modelo de referencia lineal LRM
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.




Fig 3. Control mediante red Neuronal


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 resul tados
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

Fig 4. Variacin del nivel del tanque en funcin de la altura inicial y el caudal de ingreso
0
0.05
0.1
0.15
0.2
0.25
1
2
3
4
5
6
7
x 10
-5
-2
-1
0
1
2
3
x 10
-3
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.

Cdigo generacin de patrones:
LRM_nivel.mdl permitir correr el cdigo de generacin de patrones, debido a que el diagrama de bloques realizado en
simulink devolver valores que van ha ser usados en el programa, estos valores van a ser tomados del bloque nivelf,
adems el parmetro de condicin inicial del integrador tambin es ingresado desde el programa.
Al ejecutar el cdigo del programa obtendremos que:
-1
-0.5
0
0.5
1
-1
-0.5
0
0.5
1
-2
-1
0
1
2
3
x 10
-3
Fig 5. Identificacin del Sistema Aplicando redes neuronales

Fig 6.Variacin de nivel vs. Altura inicial y demanda
Se observa que la variacin de nivel producido por el modelo lineal de referencia (LRM) de la figura 1 est en el rango de
[-3 , 3]e-3 m .

Entrenamiento de tnet y obtencin del cnet
Con el cdigo propuesto se procede a entrenar tnet con los patrones de entrenamiento obtenidos por el modelo lineal
de referencia. Como se puede observar en la figura 6. Podemos revisar que se a realizado un entrenamiento del
controlador mediante redes neuronales.


Fig 7. Entrenamiento tnet mediante red neuronal
Luego de esta ejecucin con la ayuda del comando gensim podremos obtener lo que constituye el bloque de control.
Este comando se lo ejecutara en la consola del Matlab. Una vez obtenido este bloque es necesario armar el diagrama de
la figura 2. Y proceder a simular.


0.15
0.2
0.25
0.15
0.2
0.25
-3
-2
-1
0
1
2
3
x 10
-3





fig 8. Control por modelo de referencia utilizando redes neuronales

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:

Fig9. Sistema Multitanque


Fig10. Pruebas Reales con el controlador neuronal por modelo de referencia en el Sistema Multitanque.



Fig11. Respuesta Real del Controlador


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. 289-
Nnet.pdf

You might also like