Anda di halaman 1dari 7

SIMULACIN DE IDENTIFICADORES A TRAVS DE REDES NEURONALES Y CONTROL INVERSO GENERALIZADO, USANDO SIMULINK Y MATLAB

Ing. Jos Guillermo Guarnizo M. joguiguma@ ieee.org Ing. Juan Carlos Lpez R. wittolfr@yahoo.ca

LINEA DE INVESTIGACIN EN FUENTES ALTERNATIVAS DE ENERGIA LIFAE FACULTAD DE INGENERIA UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS

Abstract En el presente artculo se presentar la construccin de una estructura en Simulink de Matlab 7.0 que permita el entrenamiento de redes neuronales para la identificacin, y el control de sistemas dinmicos, en interfaz con comandos del toolbox Neural Network, por medio de un GUIDE, aplicado en el caso particular de un reductor de tensin continua, con el fin de obtener un identificador neuronal de tensin, y un controlador inverso generalizado. Utilizando el toolbox Real Time de Matlab 7.0. I.

T = T1 +T2
(1) Seal cuadrada de periodo fijo, presentada en la figura 1, donde en T1 habr amplitud alta, que permita que un dispositivo de conmutacin (Mosfet, IGBT), entre en saturacin [4], y en T2 la seal ser cero, permitiendo al dispositivo de conmutacin entrar en corte [4].

INTRODUCCIN

Matlab a travs de su toolbox de Neural Networks, permite la aplicacin de redes neuronales para distintos campos de la ingeniera, entre ellos la identificacin y el control de sistemas dinmicos. En esta rama de la ingeniera el uso de redes neuronales es bastante til debido a su capacidad de adaptacin al comportamiento de sistemas dinmicos, en especial a sistemas no lineales o susceptibles a perturbaciones [1]; por lo cual son usadas para el desarrollo de identificadores y controladores para esta clase de sistemas, con la gran ventaja que no es necesaria la obtencin de un modelo matemtico del sistema a identificar, o a controlar [2]. A continuacin se presentar la simulacin de la identificacin de un reductor de tensin, y su posterior control por medio de un control neuronal inverso generalizado (control neuronal diferente a los existentes en el toolbox Neural Control), utilizando los comandos de cdigo del toolbox neural networks de Matlab, y Simulink. II.

Fig. 1. Seal de periodo T para conmutacin.

Es claro que entre mayor sea T1, mayor ser la energa almacenada pro la inductancia, y mayor la tensin de salida, para determinar de una forma aproximada el valor de T1 se tiene que:

=
(2)

T1 T
(3)

Vo = *Vi

En la figura 2 se puede observar un modelo circuital de un reductor de tensin.

REDUCTOR DE TENSIN

El reductor de tensin, es un circuito comnmente utilizado en la industria con el fin de reducir un nivel de tensin continua a un valor inferior, buscando un mnimo de prdidas en la reduccin. Esto es logrado mediante el principio de manipulacin del tiempo, que consiste en permitir el paso de la corriente de la fuente primaria Vi (tiempo T1), momento en el cual un dispositivo inductivo acumular la energa de la fuente primaria, y posteriormente cerrar este paso (tiempo T2), momento en el que el dispositivo inductivo liberar la energa almacenada, y esta se transformar, por medio de un filtro, en una seal de tensin continua Vo, menor que Vi [3]. De esta manera se tiene un periodo constante:

Fig 2.Circuito de un reductor de tensin.

Donde Vi corresponde fuente primaria, que suministra la tensin de entrada, L al valor de inductancia, con RL la resistencia interna de prdidas, C la capacitancia del filtro de salida Rs una resistencia de sangra para evitar acumulacin de energa en la inductancia, a falta de carga de la salida [3], y R la carga de salida. Analizando por separado el comportamiento del circuito en los tiempos T1 y T2, y promediando estos modelos, se encuentra la siguiente representacin en

variables de estado del comportamiento del sistema [3]:

Donde iL es la corriente a travs de la inductancia Rron la resistencia de prdidas del dispositivo de conmutacin y VD la tensin de cada del diodo. Los valores obtenidos mediante el diseo [4], se presentan en la tabla 1. TABLA 1 Valores de diseo.

di L * L = * vi * iL * ( RL dv0 dt v = iL 0 dt Rol

Con el fin de solucionar el problema de la no separabilidad lineal [7], se desarrollo el perceptron multicapa, presentado en la figura 5, en el que una capa consiste de mltiples perceptrones que (4) comparten las mismas entradas, y cuyas salidas sern + Rron ) v0 (1 ) * vDentradas de la capa siguiente [5], entrenado las (5) mediante el algoritmo de Back propagation [5].

L C Rron Vi Vd Rs

1*10 3 H
1 * 10 3 f 0.5. 24V 0.7V 24
Fig 4. [6] Perceptrn.

Fig 5. [6] Perceptrn multicapa..

Fig 3.Modelo en Simulink del reductor de tensin.

Es necesario obtener patrones de entrada y salida para el entrenamiento de una red neuronal, una vez entrenada, los valores de los pesos y los umbrales por capa se representa de manera matricial, como se observa a continuacin.

En la figura 3 se presenta en modelo de variables de estado implementado en Simulink, a partir de (4) y (5) y utilizando los valores presentados en la tabla 1, se puede observar que la carga es variable, su valor nominal es de 1.5, con el fin de determinar una corriente nominal de 8A [3]. III.

w1,1 w 2 ,1 w= ws ,1
(7)

w1, 2 w2 , 2 ws , 2

...

w1, r w2 ,r ws , r

REDES NEURONALES

Las redes neuronales son modelos computacionales, inspirados en el comportamiento del cerebro, su modelo ms bsico es el perceptron [5], presentado en la figura 4, y consiste en un determinado nmero de entradas pr , sus valores son multiplicados por pesos w1,r, donde cada una de estas seales llega a un sumador, donde se suman todas mas una seal umbral b, la suma total es procesada pro una funcin de activacin, alguna veces de naturaleza no lineal [6], de esta manera obteniendo la salida de la neurona, presentada en (6).

Donde cada fila corresponde a una neurona, y cada columna a una entrada, dando un total de s neuronas por r entradas en cada capa, para los umbrales:

b1 b b = 2 bs
(8) Si lo que se desea es la identificacin o el control de sistemas, es necesario el uso de redes neuronales dinmicas, estas necesitan de vectores de regresin [8] en las entradas de la red neuronal, y del set de datos de entrada para el entrenamiento, con el fin de

a = f ( w1,1 * p1 + w1, 2 * p2 +... + w1, r * pr + b)


(6)

identificar la evolucin de la dinmica del sistema en el paso del tiempo. IV.

CONTROL NEURONAL INVERSO GENERALIZADO

Por medio de una red neuronal, aproxima la dinmica inversa del proceso. Dada la dinmica de un sistema, expresada de la forma:

y (t +1) = S (u (t ))

este caso, para que el nmero de tiempos de muestra sea el mismo. Si se toman 1000 muestras, a un periodo de muestreo de los archivos To File de 0.1, producir 10000 patrones entrada-salida para el entrenamiento de la red neuronal. Durante la adquisicin la carga vara aleatoriamente entre 0 y 25, y la seal del actuador, que corresponde al de la ecuacin (2) (ciclo til de la seal de conmutacin), tomar valores aleatorios entre 0 y 1.

(9) La red neuronal aprende la dinmica de la forma [5]:

u (t ) = S 1 ( y (t +1))
(10) Esto se logra, para el caso del reductor planteado, determinando como conjunto de datos de entrada de la red neuronal controladora, la dinmica de tensin, mientras que la salida de la red neuronal, sera la seal del actuador, el controlador es presentado en la figura 6.

Fig7. Adquisicin de datos para la identificacin del modelo.

Fig 6. Control Neuronal Inverso Generalizado.

V.

MATLAB Y SIMULINK PARA IDENTIFICACIN Y CONTROL DE SISTEMAS DINAMICOS

Como primera medida, es necesario que todos los archivos ac presentados se encuentren dentro de la misma carpeta, y que esta carpeta sea la sealada por el Current Directory de Matlab, por defecto es la carpeta work. Desarrollado en Matlab 7.0. En La figura 7 se presenta un archivo de Simulink, para la adquisicin de datos de entrenamiento de un identificador de tensin del modelo de reductor de tensin presentado en la figura 3, los datos sern almacenados por los bloques to File en archivos que posteriormente pueden ser llamados por un .m, y almacenados en el workspace. El archivo entrada, que almacenara los datos de la entrada de la red neuronal, recibir los distintos vectores de regresin, para este caso particular, se toma la seal de tensin y 4 retardos, y actuador y 3 retardos, como se observa en la figura 8, se debe programar el mismo periodo de muestreo para cada uno de los bloques de retardo, recomendando el valor de -1, ya que un periodo de muestreo muy alto podra generar la prdida de datos de transcientes, importantes en una identificacin El archivo salida To File, ubicado en el caso de identificacin de tensin en la salida de tensin del conversor, tomar muestras de salida de tensin del sistema a identificar, equivalentes con las entradas muestreadas del Entrada To File, es necesario que ambos tengan el mismo periodo de muestreo, 0.1 en

Fig 8. Generador de vectores de regresin para datos de entrada de red neuronal .

En la figura 9 se presenta el archivo de Simulink para el entrenamiento y posterior funcionamiento de la red neuronal identificadora. El bloque llamado imitadora contiene a la red neuronal implementada sobre el simulink, que puede ser observada en la figura 10.

Fig 9. Simulink Para el entrenamiento y posterior funcionamiento de la red neuronal identificadora.

Como se puede observar en la figura 10, la red neuronal en simulink consta del bloque Gain, el cual almacena la matriz de pesos de la capa, presentada en (7), el archivo constant almacena los umbrales, estos van al sumador y la salida entra en la funcin de activacin. Es necesario configurar la propiedad Multiplication del bloque Gain, de la forma Matriz (K*u), con el fin que tome la seal multiplexada de las diferentes entradas que llegan a la entrada del bloque Gain, para que sean multiplicadas por su correspondiente matriz w de ganancias.
Fig

automticamente el Simulink de adquisicin de datos de la figura 7 y el de entrenamiento y simulacin de la red neuronal de la figura 9.

Fig. 12. GUIDE para el entrenamiento de la red neuronal.

TABLA 2. CODIGO PARA LLAMAR ARCHIVOS SIMULINK function model_open(handles) % Make sure the diagram is still open if isempty(find_system('Name','imitador_dinamico2e ntradas')), open_system('imitador_dinamico2entradas'); %Carga Simulink de adquisicin de datos end if isempty(find_system('Name','imitador_dinamico_p lanta2entradas')), open_system('imitador_dinamico_planta2entradas' ); %Carga Simulink de entrenamiento y %simulacin end Los eventos que ocurran en el momento de pulsar el botn llamado Entrenar del guide, son programados despus de la funcin function pushbutton1_Callback(hObject, eventdata, handles). Los presentados en la tabla 3, cargan el nmero de neuronas en la capa oculta, el nmero de pocas de entrenamiento y el periodo de las pocas a presentar de error cuadrtico medio [5] del entrenamiento, posterior a esto, por medio de los comandos: Load Entrada Load salida Cargan los datos de entrada y salida adquiridos anteriormente, estos se presentan como lo muestra la figura 13, donde cada fila corresponde a una entrada, y la columna corresponde a la muestra en el tiempo. TABLA 3. CODIGO PARA CARGAR LOS DATOS DIGITADOS EN LOS EDIT DEL GUIDE NewStrVal = get(hObject, 'String'); NewVal = str2double(NewStrVal); nl = str2double(get(handles.edit5,'String')); ep = str2double(get(handles.edit6,'String')); sh = str2double(get(handles.edit7,'String')); Como no en todos los casos la matriz completa nos interesa, se toman simplemente las filas que formen el vector de regresin de entrada de la red neuronal, en este punto es de suma importancia que tantas entradas se tomen para el entrenamiento, sern las mismas entradas de la red neuronal de la figura 10.

10. Interior del subsistema Identificadora. Con red neuronal Implementada en el Simulink

Las etiquetas de los bloques Gain y Constant deben ser escritas en el espacio Gain, despus de esto, en el edit masc/parameters del subsistema Imitadora, deben configurarse, como se muestra en la figura 11, con el fin que al ser entrenada la red neuronal, los pesos y valores umbrales logren ser ubicados y almacenados en sus respectivos bloques.

Fig 11. Editor de parmetros de la mscara para el subsistema Imitadora.

Con los patrones de entrada y salida recopilados en el Simulink presentado en la figura 7, es necesario entrenar la red neuronal, a travs de los comandos del toolbox Neural Netwrok, por medio de un archivo de texto .m, para logra esto se crea una interfaz con un GUIDE (ver [9] para su construccin), como el que se presenta en la figura 12. Es recomendable que en el Block Properties/Callbacks/OpenFCN del subsistema imitadora el archivo GUIDE este configurado para que al darle doble clic al subsistema, el GUIDE aparezca y produzca el entrenamiento de la red neuronal. En la tabla 2 se presenta el segmento de cdigo, que al ejecutar el archivo .m del GUIDE, abre

en el subsistema Imitadora, como se hizo con anterioridad.

Fig. 13. Formato de los datos de entrada para el entrenamiento de la red neuronal. Fig 14. Segmento de cdigo para manipular resultados del entrenamiento

TABLA 4. CODIGO DEL ENTRENAMEINTO DE LA RED NEURONAL net=newff(minmax(D),[nl,1],{'tansig','purelin'},'trainlm'); net.trainParam.show = sh; net.trainParam.epochs = ep; net = init(net); [net,tr]=train(net,D,t); La lnea 1 de la tabla 4 inicializa la red neuronal, newff(minmax(D) corresponde a los datos de entrada de la red, [nl,1] donde nl ser el nmero de neuronas en la capa oculta, y 1 el nmero de neuronas de la capa de salida, {'tansig','purelin'} corresponden a las funciones de activacin de la capa oculta y de salida respectivamente, donde deben ser las mismas de la red neuronal de la figura 10, trainlm es una de las funciones de entrenamiento tipo Bakc propagation existentes en el toolbox Neural Network de Matlab 7.0, sh es utilizado para indicar cada cuantas pocas presenta el MSE [5] del entrenamiento, mientras que ep, el nmero de pocas a entrenar la red, train entrena la red neuronal, teniendo como patrn de entrada la matriz D y de salida el vector . En la figura 14 se puede observar el segmento de cdigo siguiente, donde el comando mat2str convierte las matrices obtenidas en el entrenamiento, a string,; handles. Declara variables globales y set(handles.edit1,'String',..) devuelve las matrices de los pesos y umbrales obtenidos, a las ventanas dispuestas en el GUIDE. En la lnea de cdigo function pushbutton2_Callback(hObject, eventdata, handles) se presentan los eventos ocurridos al pulsar el botn salvar del GUIDE, donde la lnea de cdigo: model_open(handles) Carga las variables globales, y las lneas:
set(handles.edit1,'String',handles.bias1) set_param('imitador_dinamico2entradas/Imitadora','B1', get(handles.edit1,'String' )) set(handles.edit2,'String',handles.bias2) set_param('imitador_dinamico2entradas/Imitadora','B2', get(handles.edit2,'String' )) set(handles.edit3,'String',handles.pesos1) set_param('imitador_dinamico2entradas/Imitadora','P1', get(handles.edit3,'String' )) set(handles.edit4,'String',handles.pesos2) set_param('imitador_dinamico2entradas/Imitadora','P2', get(handles.edit4,'String' ))

En la figura 15 se presenta la evolucin del MSE [5] o error cuadrtico medio con el entrenamiento de la red neuronal identificadora de tensin, con 25 pocas de entrenamiento y 5 neuronas en la capa oculta.

Fig 15. Grafica del MSE desarrollado durante el entrenamiento de la red identificadora de tensin.

En la figura 16 se observa la simulacin de la red neuronal identificadora, y el resultado obtenido.

Fig. 16. Resultados de la simulacin.

Almacenan las matrices de pesos y umbrales encontrados, en los bloques gain y Constant, editados

Con este desarrollo para el entrenamiento de redes neuronales para identificacin de sistemas dinmicos, puede ser entrenado un control inverso generalizado, como se observa en las figuras 17 y 18, se toman como entradas de la red neuronal la tensin, la corriente y el error entre la referencia y la salida del sistema, cada una con su respectivo vector de regresin, y como salida para el entrenamiento de la red neuronal, estar la seal del actuador. En la figura 19 se observa la configuracin del controlador neuronal inverso generalizado, y en la figura 20, la red neuronal controladora, que esta dentro del subsistema Imitadora, con su respectivo generador de vector de regresin.. La saturacin es con el fin de no permitir que a la seal del actuador llegue un valor diferente entre 0 y 1, ya que esto no tendra sentido fsico en el sistema. Como el periodo

de muestreo de los datos de entrenamiento fue de 0.1, es recomendable que el periodo de muestreo del saturador sea similar, esto con el fin de evitar inestabilidad en la planta. Es de recordar el tomar en el archivo .m del GUIDE

Fig. 20. Red Neuronal Para control inverso.

la matriz de datos de entrada con las entradas deseadas, y que ese nmero corresponda al nmero de entradas de la red neuronal de la figura 20, de lo contrario en el momento de correr la simulacin con la red neuronal entrenada, habr un error de dimensin en el bloque Gain. Despus de entrenar la red neuronal con 50000 patrones entrada-salida, 25 pocas de entrenamiento y un error cuadrtico medio que converge en 0.0025 la simulacin obtuvo el resultado presentado en la figura 21.
Fig. 17. Toma de datos para entrenamiento de control neuronal inverso generalizado.

Donde la lnea azul corresponde a la salida del reductor de tensin, y la lnea verde corresponde a la referencia.

Fig. 21. Resultado de la simulacin del controlador Inverso.

VI. CONCLUSIONES Simulink se convierte en una gran herramienta que, combinada con toolbox como Neural Networks, por intermedio de un archivo GUIDE, permite el desarrollo de diferentes aplicaciones, como lo es, en este caso, el uso de redes neuronales a la identificacin y el control de sistemas. Usando este desarrollo, se puede simular el comportamiento de un identificador de tensin, para un reductor, as mismo, se simula un controlador inverso generalizado para el reductor de tensin, presentando para ambos casos, resultados satisfactorios. Esta herramienta es igualmente verstil, ya que permite variar parmetros como el nmero de patrones para el entrenamiento, las funciones de activacin, el nmero de neuronas en la capa oculta, diferentes variaciones del algoritmo de Back Propagation para el entrenamiento, o la construccin de un algoritmo propio, as como aplicar los conceptos ya revisados para la implementacin de otro tipo de redes neuronales, en diferentes clases de usos. VII. AGRADECIMIENTOS

Fig. 18. Generador de vector de regresin para los datos de entrada.

Fig. 19. Simulink para el entrenamiento y la simulacin del control neuronal inverso

Este proyecto fue desarrollado en la Lnea de Investigacin de Fuentes Alternativas de Energa LIFAE, de la facultad de ingenieras de la Universidad Distrital Francisco Jos de Caldas. Agradecimientos a: Ing. Jos Jairo Soriano, Ing. Javier Guacaneme y a Ing. Cesar Trujillo; profesores de la facultad de Ingeniera de la universidad Distrital Francisco Jos de Caldas, por sus diferentes aportes en el desarrollo de este trabajo. VIII. BIBLIOGRAFIA [1]. I. Petrovic, A. Magzan, N. Peric, J.Matusko, Neural Control of Boots Converters Input Current, Zagreb Croatia,2005. [2]. L. Boquete, R Barea, Control Neuronal, Departamento de Electrnica, Universidad de Alcal, 1998. [3]. R. Ericcson, D. Maksimovic, Fundamental of Power Electronics, Kluwer Academic Publisher, University of Colorado, 2001. [4] V.. Gabriunas, Apuntes de Electronica, Universidad Distrital Francisco Jos de Caldas, Bogota D.C, Colombia, 1999. [5] P. Isasi, I. Galvn, Redes Neuronales Artificiales Un Enfoque Prctico, Prentice Hall. 2004. [6] M. Hagan, H. Demuth, O. De Jesus, An Introduction to the Use of NeuralNetworks in Control Systems, Oklahoma State University, University of Colorado, 2005. [7] S. Graubard., El Nuevo Debate Sobre la Inteligencia Artificial. Ed. Gedisa. 1993. [8] M. Norgaard, O. Ravn, N.K. Poulsen, L.K.Hansen, Neural Networks for Modelling and Control of Dynamic Systems, Springer, Technical University of Denmark. [9] Matlab 7.0 Help. GUIDE GETTING STARTED Jos Guillermo Guarnizo Marn. Ingeniero Electrnico Universidad Distrital Francisco Jos de Caldas (2006). Student Member IEEE (2006). Miembro de la Lnea de Investigacin en Fuentes Alternativas de Energa LIFAE (2005). Estudiante Maestra Automatizacin industrial universidad nacional de Colombia (2006). joguiguma@ieee.org. Juan Carlos Lpez Rodriguz. Ingeniero Electrnico Universidad Distrital Francisco Jos de Caldas (2006). Miembro de la Lnea de Investigacin en Fuentes Alternativas de Energa LIFAE (2005). wittolfr@yahoo.ca

Anda mungkin juga menyukai