You are on page 1of 95

INSTITUTO TECNOLGICO DE LON

INGENIERIA ELECTROMECNICA (EM2)

TESIS PROFESIONAL

TITULO:
CONTROL DE UN PENDULO INVERTIDO EMPLEANDO REDES
NEURONALES ARTIFICIALES

ALUMNO:
CESAR ALEJANDRO FRAUSTO DAVILA
(97240322)

ASESORES:
Dr. ANTONIO ZAMARRON RAMIREZ
M.C. MARTHA ALICIA ROCHA SANCHEZ

LEN, GUANAJUATO A 16 DE DICIEMBRE DEL 2005


Tcnicas de Computacin Suave (IA)

AGRADECIMIENTOS

Quiero agradecer primero a Mi Seor Jess Cristo por haberme criado (Gen. I), haberme mostrado
cosas grandes y maravillosas que nunca imagine (Jer. III), por haberme dado potestad de ser hecho
hijo de Dios (Ev. J. I), a El sea Toda la Gloria y Toda la Honra. Amen (Ap. 21). (Shella).

Quiero agradecer a mis padres Nicols Frausto Morales y Felipa Dvila Rodrguez por el amor, la
paciencia y apoyo que me han demostrado, por su ejemplo, por su amistad, su apoyo, Gracias. A mis
hermanos: Gabriel, a Mario (Siempre en nuestros mejores recuerdos), a Xochitl y Fanny. A mis
sobrinas Tania, Karina y Karen y mis sobrinos Mario y Josu, deseo ardientemente leer un da las
tesis de ellos.

Quiero externar mi reconocimiento a todos aquellos que aportaron su granito de arena para mi
formacin. A los profesores de la Escuela Primaria Urbana No. 13 Narciso Mendoza, en especial a
la maestra Guillermina Martnez rnelas y al Profesor Aurelio Lpez Flores (1980-1986). A los
Profesores de la Escuela Secundaria Federal No. 5 Emperador Cuahuhtemoc, en especial al
profesor de Matemticas Ricardo Galn, al profesor de electrnica Daro, un recuerdo para las
maestras Marisela y Mary, ambas de espaol (1986-1989). Al personal de la Preparatoria Abierta
Pedagoga Aplicada en especial al Lic. Guadalupe Mota Gmez y la maestra Mary Mota Gmez.

Al Instituto Tecnolgico de Len y las personas que laboran en dicha institucin, al M.C. Carlos
Jess Aguilera Batista, excelente persona. A mi asesor de esta tesis, el Dr. Antonio Zamarrn el cual
se desempeo como un excelente director al asignarme la tarea, guiarme, darme las herramientas,
recomendarme las personas adecuadas y en fin, a auxiliarme a terminar con xito esta tesis, Gracias.
Al Lic. Jos Ignacio Gallardo Hernndez, al Ing. Jos Antonio Martines excelente deportista e
ingeniero. Un reconocimiento al M. C. Julin Rentera Hernndez (gracias por su amistad y apoyo), a
Pedro Sosa, asistente en el taller de Hidrulica y Mecnica, a la maestra Susan Onesky (IAAP ahora
Berlitz SLP), a mi compaero Omar rnelas Lozano, a mis amigas Olga Prado y ngeles Alvarez
por su agradable compaa y por mostrarme that mankind is led into the darkness beyond our world
by the inspiration of discovery and the longing to understand.

Deseando xito en todo lo que emprende, al Dr. Francisco Javier Cuevas de la Rosa del Centro de
Investigaciones en ptica, A.C.

Al Coronel de Infantera DEM Miguel ngel Chavero Cevallos, al Capitn I de Infantera DEM
Guadalupe Arias, al sargento II de Infantera Praxedis Guerrero, al Sr. Ernesto Myer de Pesquera
Internacional en Cabo San Lucas BCS, al Ing. Jorge Marmolejo de Plsticos Boston, a Elas Barba de
Torno y Soldadura (7 77 01 08), al Ing. Ignacio Alcal de Lira de Alumbrado Publico Municipal, al
Ing. Jess Samano de Maselli Measurement, a mis ex compaeros en Innopack, Refrescos Aga,
Suelas Hulsalite, Suelas Sole, Inoplast y Hafca Proyectos Industriales. Quiero recordar que este
trabajo no hubiera sido posible sin la colaboracin del Dr. Cuevas del CIO y la M.C. Rocha del Dep.
de Sistemas por lo que estoy seguro que cualquier actividad encaminada a estrechar la colaboracin
entre instituciones y departamentos permitir lograr objetivos mucho mayores que los aqu
presentados.

Creo que faltaran hojas para nombrar las personas que han compartido su vida conmigo y que
forman parte de lo que soy. A todas ellas

GRACIAS

Ingeniera Electromecnica i
Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

INDICE
PAG.

AGRADECIMIENTOS i
INDICE ii
INDICE DE FIGURAS iv
INDICE DE TABLAS v
PRLOGO vi

CAPITULO 1
INTRODUCCIN
1.1 DESCRIPCIN GENERAL 1
1.2 HIPOTESIS 2
1.3 OBJETIVOS GENERALES 2
1.3.1 OBJETIVOS ESPECIFCOS 2
1.3 ALCANCES Y LIMITACIONES 3
REFERENCIAS DE CAPITULO 3

CAPITULO 2
PENDULO INVERTIDO Y REDES NEURONALES ARTIFICIALES
2.1 PRINCIPIOS BSICOS DEL SISTEMA PENDULO INVERTIDO 4
2.1.1 MODELADO DE UN PIS 5
2.1.2 DISEO DE UN CONTROLADOR PARA EL PIS 7
2.2 REDES NEURONALES ARTIFICIALES 9
2.2.1 BREVE HISTORIA DE LAS RNAS 11
2.2.2 CARACTERSTICAS DE LAS RNAS 12
2.2.3 NEURONA ARTIFICIAL 12
2.2.4 RNA 17
2.2.5 ENTRENAMIENTO DE UNA RNA 20
2.2.5.1 ENTRENAMIENTO SUPERVISADO 21
2.2.6 RNA PERCEPTRON 22
2.2.6.1 ENTRENAMIENTO DE UNA RNA TIPO PERCEPTRON 22
2.2.7 RNA TIPO PERCEPTRON DE CAPAS MULTIPLES 24
2.2.8 RNA TIPO ADALINE 24
2.2.8.1 REGLA DE APRENDIZAJE DEL ERROR CUADRATICO MEDIO
LMS (LEAST MEAN SQUARE O LMS) 25
2.2.8.2 LOCALIZACIN DE LA MATRIZ PTIMA DE PESOS
MEDIANTE EL MTODO DE GRADIENTE DESCENDENTE 26
2.2.9 RNA TIPO MADALINE 28
2.2.9.1 ALGORITMO MRII (MADALINE RULE II) 29
2.2.10 RNA TIPO BACKPROPAGATION (BP) 30
2.2.10.1 REGLA DELTA GENERALIZADA (GDR) 31
2.2.10.2 ENTRENAMIENTO DE UNA RNA BP 33
2.2.10.3 PESOS Y PARAMETROS DE APRENDIZAJE 34
REFERENCIAS DEL CAPITULO 35

Instituto Tecnolgico de Len ii


Tcnicas de Computacin Suave (IA)

CAPITULO 3 PAG.
DESCRIPCION DEL SISTEMA
3.1 RNAs EN MATLAB 38
3.1.1 ESTRUCTURA DE LOS DATOS 39
3.1.2 RED MADALINE 40
3.1.2.1 CREACION DE UNA RNA TIPO MADALINE MEDIANTE LA
GUI nntool 41
3.1.2.2 FILTRO LINEAL DE RESPUESTA A IMPULSOS FINITOS 44
3.1.3 RNA TIPO BP 44
3.1.3.1 CREACION DE UNA RNA TIPO BP MEDIANTE LA GUI nntool 44
3.1.4 ENTRENAMIENTO DE UNA RNA 49
3.1.5 EXPORTANDO DATOS A LA VENTANA DE TRABAJO DE MATLAB
50
3.1.6 LIMPIAR LA VENTANA NETWORK / DATA MANAGER 51
3.1.7 IMPORTANDO DATOS DESDE EL ESPACIO DE TRABAJO DE MATLAB 51
3.2 SIMULINK 51
3.2.1 USO DEL BLOQUE TAPPED DELAY 51
3.3 REAL TIME WORKSHOP 53
3.3.1 CONCEPTOS BASICOS 53
3.4 REAL TIME WINDOWS TARGET 56
3.5 TARJETA PCI6014 58
3.6 INTERFASE DE POTENCIA 59
3.7 SISTEMA PIS 59
REFERENCIAS DEL CAPITULO 61

CAPITULO 4
IMPLEMENTACION DEL CONTROLADOR
4.1 PROTOTIPO PIS 63
4.2 ADQUISICIN DE DATOS DE ENTRENAMIENTO 64
4.3 EMULACION DE LA RNA BP EMPLEANDO MATLAB 67
4.4 ENTRENAMIENTO DE LAS RNAs BP 69
4.5 IMPLEMENTACION DE LA RNA BP COMO CONTROLADOR DEL PIS 73
REFERENCIAS DEL CAPITULO 77

CAPITULO 5
RESULTADOS
5.1 RESULTADOS 78

CAPITULO 6
CONCLUSIONES, RECOMENDACIONES Y PROPUESTAS PARA TRABAJOS FUTUROS
6.1 CONCLUSIONES 82
6.2 RECOMENDACIONES 84
6.2 TRABAJOS FUTUROS 85

APENDICE
A Programa Normalizacin Vector de Entradas
B Programa Vector Condiciones Iniciales en Retardos de Tiempo

Ingeniera Electromecnica iii


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

INDICE DE FIGURAS

PAG.
Fig. 2.1 Representacin de un Pndulo Invertido 4
Fig. 2.2 Pndulo Invertido Simple de base mvil (PIS) 5
Fig. 2.3 Diagramas de cuerpo libre para un PIS 6
Fig. 2.4 Partes Principales de una Neurona Biolgica 10
Fig. 2.5 Diferentes mtodos de implementacin de RNAs 11
Fig. 2.6 Modelo McCullon-Pitts de una neurona 13
Fig. 2.7 Modelo de una neurona artificial general 14
Fig. 2.8 Funciones de activacin ms comnmente empleadas 16
Fig. 2.9 Funciones de salida ms empleadas 17
Fig. 2.10 Grafica dirigida de una RNA general 19
Fig. 2.11 Ejemplos de RNAs con distintas arquitecturas de alimentacin 19
Fig. 2.12 Perceptron de una sola capa 22

Fig. 3.1 Diagrama esquemtico del sistema empleado en esta tesis 38


Fig. 3.2 Ventana Network/Data Manager de la GUI nntool 41
Fig. 3.3 Ventana Create New Network 42
Fig. 3.4 Ventana Create New Network para una RNA tipo Adaline o Madaline 43
Fig. 3.5 Diagrama representativo de una Red lineal creada en la GUI nntool 43
Fig. 3.6 Ventana desplegada para crear una RNA tipo BP de prealimentacin 45
Fig. 3.7 RNA BP personalizada 46
Fig. 3.8 Ventana Training Parameters en la opcin Train 47
Fig. 3.9 Ventana con informacin del proceso de entrenamiento en nntool 49
Fig. 3.10 Ventana para introducir los datos a emplear en la simulacin de una RNA 50
Fig. 3.11 Ventana para exportar datos desde nntool 50
Fig. 3.12 Ventana con libreras de bloques en Simulink 52
Fig. 3.13 Parmetros de ajuste para un bloque de retardos de tiempo 52
Fig. 3.14 Diagrama de flujo para la creacin de una aplicacin en RTW 54
Fig. 3.15 Ventana parmetros de configuracin para RTW 55
Fig. 3.16 Ventana para explorar modelos de Simulink 55
Fig. 3.17 Ventana de la caja de herramientas RTWT 57
Fig. 3.18 Ventana de configuracin para una entrada analgica en RTWT 57
Fig. 3.19 Seleccin de tarjeta compatible con RTWT 58
Fig. 3.20 Circuito Elctrico de la interfaz de potencia 60
Fig. 3.21 Sistema motriz del PIS 60

Fig. 4.1 Sistema PIS-Controlador 62


Fig. 4.2 Prototipo del PIS empleado 63
Fig. 4.3 Controlador PID con filtro 65
Fig. 4.4 Respuesta del PIS ante el controlador PID con filtro 65
Fig. 4.5 Controlador PID con filtro y un elemento integrador doble 66
Fig. 4.6 Respuesta del PIS ante el Controlador PID con elemento integrador doble 67
Fig. 4.7 Parmetros empleados para crear la RNA BP1 67
Fig. 4.8 Parmetros empleados para crear la RNA BP2 68

Instituto Tecnolgico de Len iv


Tcnicas de Computacin Suave (IA)

Fig. 4.9 Representacin grafica de la RNA BP1 68


Fig. 4.10 Representacin grafica de la RNA BP2 68
Fig. 4.11 Valores MSE de RNA BP1 durante su entrenamiento 70
Fig. 4.12 Respuesta de la RNA BP1 despus del tercer ciclo de entrenamiento 71
Fig. 4.13 Valores MSE de RNA BP2 durante el cuarto ciclo de entrenamiento
(Datos obtenidos de controlador PID con Filtro) 72
Fig. 4.14 Respuesta de la RNA BP2 despus del cuarto ciclo de entrenamiento
(Datos obtenidos de controlador PID con Filtro) 72
Fig. 4.15 Respuesta de la RNA BP2 despus del cuarto ciclo de entrenamiento
(Datos obtenidos del controlador PID con doble Integrador) 73
Fig. 4.16 Modelo Real Time Workshop de la RNA BP2 74
Fig. 4.17 Control RNA BP2 con seal de correccin auxiliar 75
Fig. 4.18 Respuesta del PIS controlado con RNA BP2 mas la seal auxiliar 76
Fig. 4.19 Controlador Final implementado con RNAs tipo BP 76

Fig. 5.1 Respuesta del PIS ante la RNA BP1 78


Fig. 5.2 Respuesta del PIS ante la RNA BP2
(Datos de Controlador PID con Filtro) 79
Fig. 5.3 Respuesta del PIS ante la RNA BP2
(Datos de Controlador PID con Doble Integrador) 80
Fig. 5.4 Respuesta del PIS controlado por la RNA BP2 mas la RNA AUX 81

INDICE DE TABLAS

PAG.
Tabla 3.1 Funciones de entrenamiento disponibles en Matlab para una RNA BP 48
Tabla 3.2 Datos tcnicos de la tarjeta PCI6014 de National Instruments 59
Tabla 4.1 Parmetros de entrenamiento empleados en la RNA BP1 69
Tabla 4.2 Parmetros de entrenamiento empleados en la RNA BP2 71

Ingeniera Electromecnica v
Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

PROLOGO
Es comn ver en pelculas de ciencia ficcin situaciones en las que maquinas creadas por el
hombre llegan a tal grado de desarrollo que logran su autonoma, y algunos autores son tan
osados que en ocasiones llegan ha dotarlas de cualidades, que por el momento no tienen, tales
como inteligencia, odio, amor, etc. No creo imposible llegar a tal grado de desarrollo en la
tecnologa, es un hecho que da con da se analizan nuevas tcnicas encaminadas a emular la
naturaleza en forma artificial. En mi opinin, las computadoras, o alguna herramienta derivada
de estas, tendrn un papel importante en el logro de esta meta.

Un rea reciente conocida como Tcnicas de Computacin Suave abarca un conjunto de


tcnicas enfocadas a emular la inteligencia de los seres vivos, es increble la cantidad de
trabajos que actualmente se realizan en esta rea con el fin de pulir o mejorar las aplicaciones
denominadas de Inteligencia Artificial.

El hecho de dotar de inteligencia ms que de autonoma a una maquina parece de entrada algo
atractivo para la ciencia, la industria, y aun la misma sociedad, con el fin de atisbar en lo que
es el uso de Tcnicas de Computacin Suave en el control de sistemas fsicos (en especial
mecnicos) reales hemos desarrollado con agrado esta tesis en la cual se aplica una Red
Neuronal Artificial como controladora de un sistema no lineal (pndulo invertido).

Deseando que la presente tesis sea un prembulo para aplicaciones futuras en control de
sistemas electromecnicos empleando Tcnicas de Computacin Suave y esperando sea de
utilidad lo aqu presente dejo a su consideracin el trabajo.

Atentamente
El Autor
soterios77@hotmail.com

Instituto Tecnolgico de Len vi


CAPITULO 1
INTRODUCCION

1.1 DESCRIPCION GENERAL

Hoy en da la computadora es tan importante para el ingeniero como lo fue en su momento la


regla de clculo. Mediante la computadora es posible resolver sistemas complicados de
ecuaciones diferenciales que nos pueden ser tiles para implementar sistemas de control
computarizados. Las milsimas de segundo que le lleva realizar estas operaciones permiten
que sta pueda ser utilizada para controlar sistemas en tiempo real.

Qu tiene de comn el control de la trayectoria en un proyectil, el control de la aceleracin en


un tren levitable, el control de movimiento en las extremidades de un robot con el fin de que
se mantenga erguido o se desplace?, lo mas evidente quizs sea que cada uno de estos sistemas
de control involucran clculos y toma de decisiones rpidas para mantener los centros de masa
de elementos del sistema en la posicin y direccin correcta. La accin del control en un
pndulo invertido es similar a los sistemas mencionados anteriormente.

El tipo de control que se implementa en cada caso depende de varios factores, entre ellos si el
sistema a controlar es lineal o no lineal, estable o inestable, etc. Hasta hace pocos aos el
control de sistemas lineales se realizaba principalmente mediante reguladores Proporcional,
Integral, derivativo o una combinacin de estos. Para el caso de sistemas no lineales, en
especial de varias entradas y salidas, era comn utilizar variables de estado. Hoy en da cada
vez es ms comn utilizar controles inteligentes para realizar estas tareas.

En esta tesis se presenta la implementacin de un regulador mediante Redes Neuronales


Artificiales (RNA) para controlar la posicin (vertical) de un Pndulo Invertido Simple (PIS).
En el capitulo 2 se presenta informacin terica relacionada con la naturaleza fsica del PIS,
as como diferentes configuraciones de las RNA y su forma de entrenamiento, la informacin
presentada en el capitulo 2 referente a RNAs es algo extenso con la finalidad de proporcionar
informacin suficiente sobre las RNAs, compilando informacin que por lo regular solo es
accesible, por el momento, en el idioma ingles.

La programacin para la implementacin del regulador con RNA`s en tiempo real fue
realizado empleando el software MATLAB 7.0, SIMULINK, Real Time Workshop y Real
Time Windows Target. En el capitulo 3 se describen algunas caractersticas de estas
herramientas para la implementacin del regulador con RNA`s.

Los elementos mecnicos y electromecnicos utilizados en el prototipo, as como los


elementos sensores influyen en los datos que se presentan al regulador PID utilizado para
generar los datos de entrenamiento y tambin a la RNA implementada, la forma en la que se
adquieren y manipulan dichos datos se aborda en el capitulo 3.

En el capitulo 4 se implementan en Matlab dos controladores que no equilibran el PIS pero


generan un comportamiento aceptable de este, los cuales generan el conjunto de datos que
Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

representan el comportamiento a imitar. Con auxilio de estos controladores se logra obtener un


comportamiento en el PIS adecuado que se utiliza para entrenar una RNA. As mismo, en el
capitulo 4 se indica la forma en que la RNA se disea, entrena e implementa en un modelo
Real Time Workshop, y posteriormente es auxiliada en forma manual mediante una seal de
voltaje con el fin de mejorar la seal de control, la seal de control auxiliar que se introduce es
monitoreada y posteriormente utilizada para entrenar una RNA que participa en la tarea de
control del PIS, logrando con esto estabilizar el PIS.

Al contar con el modelo Real Time Worshop de una RNA, esta se puede presentar ante
condiciones distintas de las contenidas en su conjunto de entrenamiento, con el fin de observar
si la RNA asimilo o no la funcin requerida, esto se aborda en el capitulo 5. En el capitulo 6 se
exponen las conclusiones y observaciones emanadas de los datos obtenidos y de la experiencia
adquirida durante el desarrollo de la tesis, culminando con algunas propuestas de trabajos
futuros.

1.2 HIPOTESIS

La Red Neuronal Artificial tipo Retro propagacin (BP) es capaz de generar la seal de
control que estabiliza un prototipo real del Pndulo Invertido Simple, aprendiendo de un
conjunto de datos que representan el comportamiento deseado.

1.3 OBJETIVOS GENERALES

Desarrollo de un prototipo PIS (Pndulo Invertido Simple) controlado por una red
neuronal artificial en tiempo real.

Obtener de un PID (Proportional Integral Derivative) los datos de entrenamiento para


alimentacin de la RNA BP como controladora de un prototipo PIS en tiempo real.

1.3.1 OBJETIVOS ESPECFICOS

Obtener el prototipo fsico del sistema PIS a utilizar en la tesis.

Obtener un controlador que genere la seal de control a imitar.

Seleccionar el conjunto de datos de entrenamiento para la RNA BP.

Implementar en software la RNA BP con los toolbox de MatLab.

Entrenar la RNA BP en base al conjunto de datos obtenidos.

Implementar la RNA BP en un modelo de Real Time Workshop.

Integrar la RNA BP modelada como controladora del prototipo PIS en tiempo real.

Objetivos, Alcances y Limitaciones 2


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

1.3 ALCANCES Y LIMITACIONES

En esta tesis se emplea un prototipo de PIS fabricado con elementos disponibles en el


departamento de Electromecnica de esta institucin, algunos de los cuales su comportamiento
es no lineal, por lo que dicho prototipo presenta un comportamiento muy distinto al del
modelo terico. Debido a esto la tarea de control a imitar por la RNA BP no es la que equilibra
el PIS sino que solo tiende a estabilizarlo. Aun as nos permitir observar las cualidades de
aprendizaje presentes en la RNA BP.

Por otro lado, en este trabajo no se analiza la forma en que influyen cada uno de los
parmetros de diseo y entrenamiento de una RNA BP, al ser usadas en aplicaciones de
control, sino que solo se muestra que una RNA BP puede emular y generalizar de forma
aceptable la tarea de control presentada en su conjunto de entrenamiento.

REFERENCIAS DE CAPITULO

1. Furnas, J.M. and R.d. TIME-LIFE, EL INGENIERO. El Ingeniero, ed. C. Cientifica. 1972,
Mexico, DF: Time-Life Inc. 9.
2. Anderson, C.W., Learning to Control an Inverted Pendulum Using Neural Networks. IEEE
Control Systems Magazine, 1989. April 1989: p. 31-37.
3. Wang, D. and J. Huang, A Neural-Network-Based Approximation Method for Discrete-Time
Nonlinear Servomechanism Problem. IEEE Transactions on Neural Networks, 2001. 12: p.
591-597.
4. Cembrano, G. and G. Wells, Aplicaciones del Aprendizaje Neuronal al Control de Robots.
Inteligencia Artificial, 1997. 1: p. 34-40.
5. Freeman, J.A. and D.M. Skapura, Neural Networks: algorithms, applications, and
programming techniques. 1 ed. Computation and Neural Systems, ed. C. Koch. Vol. 1. 1991,
California: Addison Wesley. 45-124,341-371.

Capitulo 1. Introduccin 3
CAPITULO 2
PENDULO INVERTIDO Y REDES NEURONALES ARTIFICIALES

El hombre desde sus inicios ha cohabitado con su entorno y, gran parte de sus acciones han
sido encaminadas a controlar o modificar dicho entorno con el fin de obtener beneficio.
Con el fin de lograr un comportamiento adecuado a sus expectativas, el hombre ha
desarrollado tcnicas que le permiten monitorear y controlar fenmenos o procesos. Hasta
hace algunas dcadas solo se empleaba lo que se conoce como Teora de Control Moderna,
pero debido a la creciente complejidad de las tareas a controlar se han investigado nuevas
tcnicas de control, una de ellas y de la cual trataremos en este trabajo es empleando
Tcnicas de Computacin Suave. En este capitulo se muestra informacin del Pndulo
Invertido, el cual tomaremos como sistema a controlar y se expondr una breve descripcin
de las Redes Neuronales Artificiales (un subconjunto de las tcnicas de computacin suave)
las cuales nos servirn como elementos controladores.

2.1 PRINCIPIOS BSICOS DEL SISTEMA PENDULO INVERTIDO

El Pndulo Invertido es un dispositivo mecnico compuesto bsicamente por una barra que
oscila libremente en un plano, soportada por uno de sus extremos en el cual puede pivotear
libremente [1]. La barra del pndulo puede estar montada sobre una base ya sea mvil o
esttica, ver figura 2.1.


Barra

F Pivote

Pieza
base

Fig. 2.1 Representacin de un Pndulo Invertido.

Para mantener en equilibrio un Pndulo Invertido en su posicin vertical se puede aplicar


una fuerza de control al sistema mediante distintas configuraciones mecnicas entre las
cuales se puede mencionar la del Pndulo Invertido Simple de base mvil (PIS) [1-4], el
Pndulo Invertido Simple de Base Esttica [5-7] y el Pndulo de Furuta [8-10].

En este trabajo se emplea un pndulo de la forma PIS (figura 2.2) por las ventajas
econmicas y de manufactura que presenta su implementacin. En dicho prototipo la fuerza
aplicada a la base mvil se realiza a travs de una banda de transmisin accionada por un
Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

motor elctrico de corriente continua. El movimiento de la base mvil est limitado a un


solo eje por medio de una barra gua y una superficie de soporte.

El PIS es un sistema no lineal (las ecuaciones que representan dicho sistema son de
naturaleza no lineal), inestable (el pndulo puede volcarse en cualquier momento y en
cualquier direccin) y sub-actuado ya que el pndulo no recibe directamente ninguna seal
de control (la seal de control es aplicada a la base mvil), sin embargo puede ser
modelado como un sistema lineal en torno a la posicin de equilibrio para facilitar la
implementacin del controlador [1, 5, 11-13].

PIS Banda de
Transmision
Motor Impulsor

Barra
Gua

Superficie de soporte

Fig. 2.2 Pndulo Invertido Simple de base mvil (PIS)

2.1.1 MODELADO DE UN PIS

En la literatura existe una gran cantidad de mtodos que permiten obtener el modelo
matemtico de un PIS [1, 5, 7, 8, 10, 12, 14-18], en nuestro caso el desarrollo del
modelo matemtico tomara como base la metodologa empleada en el sitio web de The
University of Michigan [17], y se apoya en los diagramas de cuerpo libre mostrados en la
figura 2.3, en dicha figura se considera una fuerza externa, F, que acta sobre la base
mvil, esta es la seal de control. Se determinan las ecuaciones dinmicas que modelan el
sistema, y posteriormente se linealizan en torno al punto en el cual el ngulo del pndulo
= (asumiendo que el pndulo no se mueve mas que unos pocos grados a ambos lados
de la vertical, a la cual se le ha asignado el ngulo ).

Teora Bsica 5
Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

P
N

mx
F

l
bx ml
mg

x -N
x
-P

Fig. 2.3 Diagramas de cuerpo libre para un PIS

En el desarrollo del modelo matemtico se consideran las siguientes variables y constantes


del sistema, los cuales deben expresarse en un sistema de unidades coherente:

M Masa del carro


m Masa del pndulo
b Friccin entre la base mvil y la superficie de desplazamiento
l Longitud del pivote al centro de gravedad del pndulo
I Inercia del pndulo
F Fuerza aplicada al carro
x Posicin de carro
ngulo del pndulo desde la vertical superior
PyN Componentes de la fuerza de reaccin en el punto de pivoteo

Sumando las fuerzas que actan sobre el carro en direccin horizontal, se obtiene la
siguiente ecuacin de movimiento:

** *
M x+bx+ N = F Ec. 2.1

Haciendo lo mismo para el pndulo:

** ** * Ec. 2.2
N = m x + ml cos ml 2 sen

Si se sustituye el valor de N definido en la ecuacin 2.2 dentro de la ecuacin 2.1, se


obtiene la primera ecuacin de movimiento del sistema completo:

** * ** * Ec. 2.3
( M + m ) x + b x + ml cos ml 2 sen = F

Posteriormente se suman las fuerzas que actan perpendiculares al pndulo:

** ** Ec. 2.4
Psen + N cos mgsen = ml + m x cos

Capitulo 2. Pndulo Invertido y Redes Neuronales Artificiales 6


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

Para aislar los trminos P y N de la ecuacin anterior, se suman los momentos alrededor del
centro de gravedad del pndulo para obtener la ecuacin siguiente:

** Ec. 2.5
Plsen Nl cos = I

Al combinar la ecuacin 2.4 con la 2.5 se obtiene la ecuacin dinmica del sistema:

(I + ml ) + mglsen = ml x cos
2
** ** Ec. 2.6

Como se menciono anteriormente, las ecuaciones obtenidas son no lineales y es necesario


linealizarlas en torno a un ngulo = . Asumiendo que = + (donde representa un
ngulo pequeo desde la vertical y que 1 + sen() 1, sen() - y cos() -1)). Por
lo tanto, cos() = -1, sin() = -, y (d /dt)2 = 0. Despus de linealizar se obtienen las
siguientes ecuaciones:

(I + ml ) mgl = ml x Ec. 2.7


** **
2

**
(M + m ) x + b x ml = u Ec. 2.8
** *

(Donde u representa la seal de control o fuerza aplicada)

2.1.2 DISEO DE UN CONTROLADOR PARA EL PIS

La primer solucin al problema de control del sistema Pndulo Invertido fue descrita por
James K. Roberge [14]. Una vez obtenidas las ecuaciones representativas del sistema se
pueden emplear distintos mtodos de control para equilibrar el sistema [1-13, 15, 17, 19],
algunos de ellos trabajan en el dominio de la frecuencia por lo que es necesario obtener la
Transformada de Laplace de las ecuaciones del sistema [1, 4, 6, 9, 17] (suponiendo
condiciones iniciales nulas), lo que da como resultado variables en el dominio de la
variable s ( X(s), U(s) y (s) ):

(I + ml ) (s)s
2 2
mgl ( s ) = ml X ( s ) s 2
Ec. 2.9

Ec. 2.10
(M + m ) X ( s) s 2 + b X ( s) s ml ( s) s 2 = U ( s)
Algunos de estos mtodos estn limitados a que los controladores solo analizan una seal
como salida a controlar del sistema. Si consideramos el ngulo como la salida a observar
del sistema, obtendramos la siguiente funcin de transferencia:

Teora Bsica 7
Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

ml 2
s
(s) = q
Ec. 2.11
b( I + ml 2 ) 3 ( M + m)mgl 2 bmgl
U (s) s 4 + s s s
q q q

Donde,

[ ( )
q = (M + m ) I + ml 2 (ml )
2
] Ec. 2.12

Para salvar esta limitacin de tener una sola salida controlable podra disearse el
controlador empleando variables de estado en la expresin de las ecuaciones dinmicas [1,
2, 6, 10, 13, 17, 18], tomando como base la siguiente representacin general [1, 6]:

* Ec. 2.13
X = A X + B U

Ec. 2.14
Y = C X + D U

Y considerando el vector X compuesto de las siguientes variables:

* *
Ec. 2.15
(x1 , x2 , x3 , x 4 ) = x, x, ,



Se pueden obtener las siguientes matrices de estado:

*
0

0 1 0 0
x
** 0 ( I + ml 2 )b m 2 gl 2 x I + ml 2
0 * 2
x I ( M + m) + Mml 2 I ( M + m) + Mml 2
* = 0 x + I ( M + m) + Mml u
1

0 0 0
mlb mgl ( M + m) ml
0
**
0
*

I ( M + m) + Mml 2 I ( M + m) + Mml 2 I ( M + m) + Mml 2


x*
1 0 0 0 x 0
y= + u
0 0 1 0 0

*

Al tener una representacin matricial con variables de estado es posible disear


controladores empleando distintas tcnicas de control: mediante el ajuste de polos,
empleando una entrada de referencia, empleando realimentacin de estado o mediante un

Capitulo 2. Pndulo Invertido y Redes Neuronales Artificiales 8


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

observador, etc. [1, 2, 6]. Estas tcnicas de control permiten estabilizar mas de un
parmetro del sistema. El xito en la estabilizacin del sistema PIS, mediante el controlador
creado con alguna de estas tcnicas, depender en gran parte de lo cercano que sea el
modelo obtenido en relacin a la dinmica actual del sistema. Podemos decir que un control
tradicional, en los casos que se conocen sus ecuaciones dinmicas presentara la forma
general de la siguiente ecuacin [16].

* *
Ft = b1 x + b2 x + b3 + b4 Ec. 2.16

En la cual se asume que la fuerza de control es una funcin lineal de las cuatro variables de
estado y adems con coeficientes constantes.

En los dos mtodos mencionados es necesario contar con suficiente conocimiento del
sistema as como realizar un adecuado desarrollo matemtico para obtener un modelo
adecuado. Dado que en ocasiones es difcil y en ocasiones casi imposible obtener la
informacin necesaria para disear un sistema de control clsico, se han investigado otras
alternativas, entre ellas podemos mencionar el uso de Redes Neuronales Artificiales [16,
20, 21], Lgica Difusa [18], sistemas hbridos [11] y controles adaptativos [2] .

2.2 REDES NEURONALES ARTIFICIALES

El inters por crear mquinas que de alguna forma emulen el comportamiento humano tiene
siglos de antigedad, ya en el siglo primero de nuestra era se realizaban mecanismos
animados, los de Hern de Alejandra [22], y en el siglo XVII Jacques de Vaucason cre el
primer mecanismo que podramos llamar humanoide [23], aunque no es sino hasta el siglo
XX cuando se presenta una cooperacin mas activa entre diferentes ramas de la ciencia que
permitieron hacer mas viable dicha idea.

Al incrementarse la complejidad de las tareas ha realizar por una mquina se vio la


necesidad de desarrollar nuevas tcnicas que facilitaran el control de dichos mecanismos,
de esta forma surgi la nueva rama de la computacin conocida como computacin suave
(Soft Computing), la cual pretende emular el comportamiento inteligente de los seres vivos
con el fin de dotar de inteligencia a mquinas o procesos [24]. Dentro de la computacin
suave podemos mencionar las tcnicas que emplean: Lgica Difusa, Algoritmos Genticos
y Redes Neuronales Artificiales (RNAs) [25].

Las RNAs tienen su inspiracin en la forma en que se modela el funcionamiento del


cerebro humano [26-33]. , el procesamiento de la informacin que percibe el cerebro
mediante los sentidos es un mecanismo de procesamiento de datos en forma paralela e
involucra fenmenos electro-qumicos.

El tejido nervioso es el ms diferenciado del organismo y est constituido por clulas


nerviosas, fibras nerviosas y la neuroglia, que est formada por varias clases de clulas. La
clula nerviosa se denomina neurona, que es la unidad funcional del sistema nervioso. Hay

Teora Bsica 9
Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

neuronas bipolares, con dos prolongaciones de fibras y multipolares, con numerosas


prolongaciones. Pueden ser neuronas sensoriales, motoras y de asociacin [26-31]. Las
partes principales de una neurona biolgica pueden observarse en la figura 2.4. El tamao y
la forma de las neuronas son variables, pero tienen las mismas subdivisiones bsicas.

El cuerpo de la neurona contiene el ncleo o soma. El soma se encarga de todas las


actividades metablicas de la neurona y recibe la informacin de otras neuronas vecinas a
travs de las conexiones sinpticas.

Las dendritas son las conexiones de entrada de la neurona. Por su parte el axn es la
"salida" de la neurona y se utiliza para enviar impulsos o seales a otras clulas nerviosas.
Cuando el axn esta cerca de sus clulas destino se divide en muchas ramificaciones que
forman sinapsis con el soma o axones de otras clulas. Esta unin puede ser "inhibidora" o
"excitadora" segn el transmisor que las libere [32].

dendritas

soma
soma
dendritas
axon

sinpsis

Fig. 2.4 Partes Principales de una Neurona Biolgica [29].

Los desarrollos obtenidos en las ultimas dcadas en el rea de electrnica y computacin ha


permitido emular la neurona biolgica generando lo que ahora se conoce como neurona
artificial, dicha emulacin actualmente se puede realizar a nivel software o hardware [29,
34, 35], en este trabajo se opto por simular el modelo de la RNA a nivel software. En la
figura 2.5 se muestra una posible clasificacin de los mtodos empleados en la
implementacin de RNAs. La flexibilidad se refiere a las facilidades que ofrece el sistema
para modificar el modelo de RNA, mientras que la eficiencia hace referencia al grado de
adaptacin de la red con la aplicacin en trminos de autonoma, velocidad de clculo y
densidad de empaquetamiento (neuronas artificiales por rea) [35].

Capitulo 2. Pndulo Invertido y Redes Neuronales Artificiales 10


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

EFICIENCIA FLEXIBILIDAD

SIMULADORES SOFTWARE
NEUROCOMPUTADORES
Para PC de uso general

NEUROCOMPUTADORES NEUROCOMPUTADORES PC PC
de uso especifico de uso general Paralela serie
convencional convencional

Matriz de Tarjetas
Neuro Chips Procesadores Coprocesadoras

Neuro Chips
Mixtos Anal. Dig.
A/D

Fig. 2.5 Diferentes mtodos de implementacin de RNAs [35].

La ventaja que presentan las RNAs a otros tipos de controladores es que estas aprenden el
funcionamiento deseado mediante ejemplos sin necesidad de un modelado matemtico que
represente la tarea a realizar, incluso las RNAs tienen capacidad de aproximar funciones
no lineales complejas [20, 21, 27, 32, 36].

2.2.1 BREVE HISTORIA DE LAS RNAS

La primera accin encaminada a emular las neuronas biolgicas se dio en 1943 cuando
Warren McCulloch, un neurofisilogo, y un matemtico, Walter Pitts, escribieron un
documento referente a la manera en la que podan funcionar las neuronas en el cual
consideraron la salida de las neuronas de forma binaria [37].

Para reforzar este concepto de las neuronas y como trabajan fue escrito un libro por Donal
Hebb, La organizacin del comportamiento (The Organization of Behavior), el cual fue
escrito en 1949 [32]. Este trabajo resalt el hecho de que, las rutas de comunicacin
(sinapsis) de las neuronas se fortalecen en el grado en que son empleadas, esto es, en alguna
forma desarrollaban nuevas habilidades [30].

En 1957 Jhon Von Neumann sugiri imitar las funciones simples de las neuronas
empleando relevadores de telgrafo o tubos de vaco. En el mismo ao, Frank Rosenblatt,
comenz a trabajar con el Perceptron. ste era el modelo de una red de neuronas simple
que considera la salida de las neuronas como salida binaria [32]. El Perceptron, que resulto
de estas investigaciones, fue construido en hardware. Posteriormente Minsky y Papert
mostraron las limitaciones que presentaba el Perceptron ya que por la limitacin de su
salida binaria solo poda separar un espacio de muestras en dos clases [33].

En 1959 Bernard Widrow y Marcian Off de Stanford desarrollaron modelos que ellos
llamaron ADALINE y MADALINE. Estos modelos fueron nombrados de esta manera por
el uso de mltiples elementos de adaptacin lineal (Multiple ADAptive LINear Elements)

Teora Bsica 11
Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

[32] y a diferencia del Perceptron incluan un peso de conexin con entrada constante de 1
(sesgo o bias).y empleaba una funcin de activacin bipolar [30].

Durante las siguientes dos dcadas hubo un aletargamiento en el desarrollo de las RNAs y
a principios de los 80s se presentaron dos aportaciones que nuevamente despertaron el
inters de los investigadores, uno de ellos fue el trabajo de Hopfield en el cual aproximaba
el funcionamiento de las neuronas desde el punto de vista energtico, y el otro trabajo fue la
presentacin del algoritmo de aprendizaje de Retro propagacin empleado en una red
Perceptron de capas Mltiples, propuesto por Verbos [32, 38].

2.2.2 CARACTERSTICAS DE LAS RNAS

Las RNAs tienen caractersticas que no se encuentran presentes en el modelo de


computador propuesto por Von Neumann, algunas de estas son [25, 26, 30, 33]:

Procesamiento Paralelo

Calculo y representacin distribuida

Habilidad de aprender Socrticamente (por medio de ejemplos)

Habilidad de generalizar

Adaptabilidad

Tolerancia a fallas

Las conexiones en la RNA almacenan la informacin del patrn de entrenamiento

2.2.3 NEURONA ARTIFICIAL

El elemento bsico de una RNA es la Neurona Artificial (tambin conocida como; PE por
sus siglas en Ingles, Process Element, elemento de procesamiento bsico procesador
elemental).

La neurona artificial o PE propuesto por McCullon y Pitts se puede observar en la figura


2.6 y es una de las ms simples.

Capitulo 2. Pndulo Invertido y Redes Neuronales Artificiales 12


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

E peso 1

n
t


Entrada a la salida de la
r neurona neurona

a peso 2

d
a Umbral

s
peso n

Fig. 2.6 Modelo McCullon-Pitts de una neurona [33].

Se presentan varias seales de entrada a la neurona, y cada una de estas seales es


multiplicada por un valor (peso de conexin). En el caso ms simple (este caso), estos
productos solo son sumados, y alimentados a travs de una funcin de transferencia de
lmites rgidos para finalmente generar un resultado binario. Si la entrada a la neurona es
menor al valor de Umbral entonces la salida ser 0 en caso contrario ser 1 [26, 32, 33]. En
este modelo las conexiones de entrada (flechas) modelan los axnes y dendritas de una
neurona biolgica, los pesos de conexin a las sinapsis, y la funcin de lmites rgidos a la
actividad del soma. Este modelo presenta una gran cantidad de simplificaciones que no
reflejan el verdadero funcionamiento de una neurona biolgica [33]. El modelo
matemtico de la neurona McCulloc-Pitts esta dado por

n Ec. 2.17
u = wj y j +
j =1

Donde:
u = Valor de la seal de salida de la neurona, regularmente se considera igual al nivel
de activacin de la neurona.
w = Peso de la entrada j.
y= Valor de seal de entrada j.
= Valor de umbral o sesgo de la funcin.
n = Numero de entradas a la neurona.

La implementacin de una neurona artificial tambin es posible mediante estructuras de


redes que utilizan otras funciones de sumatoria o diferentes funciones de transferencia, el
caso general se ve representado en la figura 2.7

Teora Bsica 13
Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

y1

w1

Funcin Funcin Funcin


de de de u
entrada activacin salida

wn

yn

NUCLEO DE
NEURONA
Fig.
2.7 Modelo de neurona artificial general [39].

Las funciones de entrada ms empleadas y conocidas son [26, 39]:

a) sumatoria del producto de los valores de entrada por sus respectivos pesos.

n Ec. 2.18
wj =1
j yj

b) Productoria de las entradas pesadas (producto de todos los valores de entrada,


multiplicados por sus correspondientes pesos).

n Ec. 2.19
wj =1
j yj

c) Mximo de las entradas pesadas. Solo considera el valor de entrada ms fuerte,


previamente multiplicado por su peso correspondiente.

max j w j y j ( ) Ec. 2.20

d) Distancia euclidiana.

Ec. 2.21
( )
n 2
y j wij
j =1

Una neurona artificial puede estar activa o inactiva; esto significa que tiene un estado de
activacin. Algunas neuronas artificiales pueden encontrarse en un valor de activacin
dentro de un conjunto determinado [39].

Capitulo 2. Pndulo Invertido y Redes Neuronales Artificiales 14


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

La funcin de activacin calcula el estado de actividad de una neurona, esta es una funcin
del valor x proporcionado por la funcin de entrada (valor de salida en funcin de entrada).
Las funciones de activacin ms empleadas se mencionan en seguida, y muestran en la
figura 2.8:

a) Funcin lineal.

1, x 1 Ec. 2.22
a
1 1
ax, < <
f (x ) = a
x
a

1, x 1a


Siendo a un valor que afecta la pendiente de la funcin.

b) Funcin Sigmoidea.

Ec. 2.23
f (x ) =
1
gx
1+ e
Siendo g un valor que afecta la pendiente de la funcin.

c) Funcin Tangente Hiperblica

gx gx Ec. 2.24
f (x ) = tgh (x ) = gx e gx
e
e +e
Siendo g un valor que afecta la pendiente de la funcin.

d) Funcin Gausiana

f (x ) = A
B x
2
Ec. 2.25
e
Siendo A y B un valor que afecta la dispersin de la funcin.

Por ultimo el elemento de procesamiento esta listo para proporcionar el valor de la seal de
salida u. Esta salida es transferida a otros elementos de procesamiento, o a una conexin de
salida, como corresponda a la estructura de la red.

Si la funcin de activacin est por debajo de un umbral determinado (ver figura 2.6),
ninguna salida se pasa a la neurona siguiente. Normalmente los valores de entrada a una
neurona estn restringidos dentro de un rango: [ 0 , 1 ], [ -1 , 1 ], etc.

Teora Bsica 15
Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

+1 f (x, a ) +1 f (x, g1 )
1

f (x, a2 ) f (x, g2 )

-1 -1
(a) Funcin de (b) Funcin de
Activacin lineal Activacin Tangente
hiperblica

+1 f (x, g1 )
+1

f (x, g2 )
f (x, A1 , B )
1

f (x, A 2 , B )
2

(c) Funcin de (d) Funcin de


Activacin Sigmoidea Activacin Gausiana

Fig. 2.8 Funciones de activacin ms comnmente empleadas

Dos de las funciones de salida ms empleadas son (figura 2.9):

a) La funcin identidad. Donde la salida es la misma que la entrada.

u i (t ) = f ( x ) Ec. 2.26

Siendo ui(t) el valor de la seal de salida de la neurona i en el tiempo t.

b) La funcin binaria.

( )=
ui t { 1
0
si u i ( t ) i
si u i ( t ) <
i
Ec. 2.27

Siendo i el valor de umbral de la neurona i.

Capitulo 2. Pndulo Invertido y Redes Neuronales Artificiales 16


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

f (x) ui (t )

+1 +1

ui (t ) 0
f (x)
-1 +1 i

-1 -1

(a) Funcin (b) Funcin


Identidad Binaria
Fig. 2.9 Funciones de salida ms empleadas

2.2.4 RNA

Una RNA es una estructura de procesamiento paralelo de datos compuesta de PEs o


neuronas, interconectados mediante un gran numero de conexiones (sinapsis) [33, 34], una
RNA se podra considerar una variacin de la idea del Procesamiento Distribuido en
Paralelo ( PDP) [40].

En una RNA los PEs se encuentran agrupados en capas (layers) y altamente


interconectados por medio de sinapsis; de esta forma la estructura posee varias entradas y
salidas, las cuales es comn manejarlas en forma de vectores. Las sinapsis son establecidas
(entrenadas) para reaccionar de una forma determinada a los estmulos de entrada y generar
una salida deseada.

La configuracin de las interconexiones es representada normalmente por medio de


Graficas Dirigidas. Una Grafica Dirigida consiste de nodos ( en el caso de una RNA
representan las neuronas, y las seales de entrada externas) as como flechas direccionadas
(que representan las uniones sinpticas) [41].

Por lo tanto, en una RNA la arquitectura y su dinmica define un elemento aproximador de


salida(s) en base a su(s) entrada(s), en la cual una funcin desconocida f: XY genera las
parejas de muestras observadas (x1, y1), (x2, y2), (x3, y3), .Los datos de muestra modifican
parmetros en las neuronas de la RNA de tal forma que dicha RNA responda en una forma
cercana a la funcin desconocida f. Dicha aproximacin tiende a mejorar conforme se
incrementa la cantidad de muestras [42].

Podemos decir que una RNA esta definida por cuatro parmetros [26]:

1. Tipo de Neurona Artificial (o nodo, cuando se realiza su grafica)

2. Arquitectura de conexin. En relacin a la manera en que esta organizada la


conexin entre las capas de neuronas

Teora Bsica 17
Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

3. El algoritmo de entrenamiento

4. El algoritmo de recuperacin

Como se observa en la figura 2.10, podemos distinguir 3 tipos de capas [39]:

De entrada. Donde se recibe la informacin proveniente de fuentes externas a la


RNA.

Ocultas. Son las que se encuentran en la estructura interna de la RNA y no tienen


contacto directo con el exterior.

De salida. Transfiere la informacin obtenida por la RNA hacia el exterior.

Bsicamente, todas las RNA tienen una estructura o topologa similar a la que se muestra
en la figura 2.10. Existen redes tiles que contienen una sola capa, o aun un solo elemento,
pero la mayora de las aplicaciones requieren redes que al menos tengan los tres tipos de
capa.

La capa de neuronas de entrada recibe los datos ya sea por medio de archivos de entrada o
en aplicaciones de tiempo real directamente de sensores. La capa de salida enva
informacin directamente al mundo exterior, ya sea a un proceso de clculo secundario o
la etapa de potencia electrnica de un sistema de control mecnico, por ejemplo. Entre estas
dos capas puede haber muchas capas ocultas. Estas capas internas contienen neuronas
interconectadas en varias estructuras. La entrada y salida de cada una de estas neuronas
ocultas simplemente alimenta a otras neuronas.

Todas las neuronas correspondientes a una capa pueden estar conectadas con todas las
neuronas de las capas vecinas, esto seria una Conexin Completa. Cuando no existen todas
las conexiones posibles de una neurona o capa de neuronas se dice que estn Parcialmente
Conectadas.

Existen dos clasificaciones importantes de arquitecturas de conexin que se distinguen por


el nmero de conjuntos de entradas y salidas, y la cantidad de capas empleadas [26]:

Auto-asociativas. En estas RNAs las neuronas de entrada son tambin las neuronas
de salida.

Hetero-asociativas. Los conjuntos de neuronas de entrada son distintas a las


neuronas de salida (un ejemplo es el Perceptron y el Perceptron de capas Mltiples)

Capitulo 2. Pndulo Invertido y Redes Neuronales Artificiales 18


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

x1

x2 f (x)
1,1

f (x)
2,1
x3
f (x) f (x)
1,2 s,1

x4 f (x)
2,2

f (x) f (x)
1,3 s,i
x5
f (x)
2, j

x6 f (x)
1,m

xn
n NODOS CAPA DE CAPA CAPA DE
DE ENTRADA OCULTA 1 SALIDA
ENTRADA m neuronas j neuronas s salidas

Fig. 2.10 Grafica dirigida de una RNA general [39].

Considerando la existencia de conexiones de realimentacin se pueden distinguir dos clases


de arquitecturas (tambin mostradas en la figura 2.11) [26]:

Arquitectura de prealimentacin (feedforward). No existe alguna conexin desde las


neuronas de salida hacia las neuronas de entrada. En esta RNA no se almacenan los
valores de salida previos o el estado de activacin de alguna de sus neuronas.
RNA con
prealimentacin
y (t ) (Feedforward) ui (t )

y (t ) RNA con
Realimentacin ui (t )
(Feedback)

Fig. 2.11 Ejemplos de RNAs con distinta arquitectura de alimentacin [25].

Teora Bsica 19
Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

Arquitectura de Realimentacin (feedback). Existen conexiones desde las neuronas


de salida hacia las neuronas de entrada. En este tipo de RNAs es necesario
almacenar los valores previos de salida y los estados de activacin de algunas
neuronas.

La manera en que las neuronas se encuentran conectadas a otras tiene un impacto


significativo en la operacin de la red. Para una clasificacin relacionada con la direccin
del flujo de la informacin y los modelos existentes se puede consultar el articulo de Jain
[33].

2.2.5 ENTRENAMIENTO DE UNA RNA

Una de las caractersticas fundamentales de las RNA es el hecho de que pueden


comportarse como aproximadores universales. El teorema de aproximacin menciona que
debido a la capacidad que posee una RNA para aprender funciones es posible aproximar
cualquier funcin f con una determinada exactitud. El teorema de aproximacin da como
resultado lo siguiente: Establece que existe una RNA determinada que puede aproximar
cualquier funcin, aunque dicho teorema no define como debe construirse dicha RNA, no
dice nada de las dimensiones, cantidad de PEs o capas, que debe contener dicha RNA.

En el diseo de RNAs es posible emplear distintas estructuras que pueden desempear la


misma funcin, cada una de ellas con sus propios parmetros de aprendizaje [25, 26, 31, 32,
36, 43].

Las RNAs son estructuras inherentemente plsticas (realizan modificaciones en algunos


parmetros internos) que aprenden. El proceso de aprendizaje para una determinada RNA
se puede realizar bajo distintas condiciones de aprendizaje y empleando distintos
algoritmos de aprendizaje. Durante el proceso de aprendizaje la RNA debe ajustar sus
valores de pesos y sesgos para aprender la tarea deseada. Para disear un proceso de
aprendizaje se debe contar con un modelo del entorno en el cual la RNA operar,
definiendo lo que es conocido como arquitectura de entrenamiento.

Existen tres arquitecturas principales de entrenamiento: supervisado, sin supervisin e


hbridos. En este trabajo se emplear el entrenamiento supervisado ya que es posible
obtener los datos de entrenamiento necesarios para este tipo de adiestramiento y las RNAs
a emplear en esta tesis pueden ser enseadas empleando entrenamiento supervisado. Para
una definicin de los otros dos tipos de entrenamiento se puede consultar a Jain [33], Krse
[40], Matich [39] y Kasavob [26].

2.2.5.1 ENTRENAMIENTO SUPERVISADO [26]

Capitulo 2. Pndulo Invertido y Redes Neuronales Artificiales 20


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

En el entrenamiento supervisado se le proporciona a la RNA el valor de salida correcto para


cada uno de los patrones de entrada y posteriormente los valores de los pesos de conexin
son modificados de tal forma que la RNA produzca una respuesta en la salida que sea lo
mas cercana posible al valor deseado. Durante el entrenamiento de una red el mismo
conjunto de datos se procesa tantas veces como sea necesario para que el peso de las
conexiones sea el adecuado. Al conjunto de datos que se emplea en el aprendizaje o
entrenamiento se le llama Conjunto de adiestramiento (Training Set).

A pesar del entrenamiento, algunas RNAs nunca aprenden la tarea deseada. Esto puede ser
debido a que los datos de entrada no contienen la informacin suficiente para producir la
salida esperada. Las RNAs adems no convergen si no se tienen los suficientes datos para
generar el aprendizaje. Idealmente, debe haber suficientes datos, de tal forma que parte de
los datos se conserven de respaldo para verificar la respuesta de la RNA ya entrenada,
dichos datos no se le han presentado antes y de esta manera se puede comprobar que la
RNA ha generalizado y no solo memorizado los valores que se le presentaron. La
memorizacin se puede evitar no teniendo exceso de PEs.

Si una RNA no puede resolver un problema, se deben revisar: los datos de entradas y
salidas, el nmero de capas, el nmero de elementos por capa, el tipo de conexin entre
capas, las funciones de entrada, activacin, salida y de adiestramiento. Por lo regular se
emplea un solo tipo de funcin para todos los PEs de una capa, pero esto solo por
conveniencia de programacin. Otra cosa que puede afectar el funcionamiento de una RNA
es la forma en que se le presentan los datos de entrada y salida (codificados o no). Las RNA
solo tratan con datos de entrada numricos, sin embargo, normalmente el formato del dato
puede ser convertido desde el exterior. Adicionalmente, es necesario en ocasiones escalar el
dato, o normalizar este al modelo de la red.

Existen muchas leyes (algoritmos o reglas) empleadas para implementar la adaptacin de


los pesos mediante realimentacin durante el entrenamiento. La ms empleada es la de
propagacin de error hacia atrs o retro-propagacin (Backpropagation) [32].

En la literatura se pueden encontrar una gran variedad de aplicaciones exitosas de RNAs,


entre estas se tienen: reconocimiento de patrones, control de sistemas, procesamiento de
seales, prediccin de eventos, etc.[16, 20, 21, 26, 28-30, 32, 34-36, 39-42, 44]. En esta
tesis se empleara la RNA de Retro propagacin [16] ya que han mostrado resultados
aceptables en aplicaciones de control de sistemas. El algoritmo de entrenamiento a emplear
ser analizado despus de describir dicha RNA. Para tener un mejor conocimiento de la
RNA de retro propagacin primero se vern algunas de sus predecesoras como son la RNA
perceptron y la RNA Adaline.

2.2.6 RNA PERCEPTRON

Rosenblatt diseo una gran variedad de RNAs simples conocidas como Perceptrones. Uno
de los Perceptrones ms simples estaba compuesto de una sola capa conteniendo varias
neuronas similares a las de McCullon y Pitts pero con la variante de que su funcin de
entrada aada un valor de umbral o sesgo. En dichas neuronas los pesos y sesgos podan
ser ajustados para generar un vector de salidas determinado (figura 2.12). La tcnica de

Teora Bsica 21
Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

entrenamiento que empleo Rosenblatt se le conoce como Regla de Aprendizaje Perceptron


[32].

El Perceptron es un algoritmo estocstico de gradiente descendiente que intenta separar


linealmente un conjunto de entrenamiento de n dimensiones. El xito que tuvo el algoritmo
del Perceptron se debi a su Teorema de Convergencia, el cual primeramente mostr
Rosenblatt [42] y establece que una RNA Perceptron podr aprender una tarea si es
linealmente separable y esto lo realizara en una cantidad de iteraciones determinadas.

b (Umbral)
x1
w1

w2 u
x2 wx+b

xn xn

Fig. 2.12 Perceptron de una sola capa

2.2.6.1 ENTRENAMIENTO DE UNA RNA TIPO PERCEPTRON [42]

Teorema de Convergencia del Perceptron. El algoritmo Perceptron puede encontrar una


funcin de discriminacin g i (x ) = xwiT en un nmero finito de iteraciones si el conjunto de
entrenamiento {x1 , K , x m }es linealmente separable.

En general los algoritmos de entrenamiento que cumplen con el teorema de Rosenblatt


actualizan su vector de pesos wi en cada iteracin si la muestra de entrenamiento x Di
(donde Di es la clase de decisin) produce un valor menor a cero para g i (x ) = xwiT , esto es,
si el Perceptron no logra clasificar la muestra x. El Perceptron encuentra un hiperplano de
separacin cuando g i (x ) = xwiT > 0 para toda x Di , y g i (x ) = xwiT < 0 para toda x Di .

El algoritmo de aprendizaje del Perceptron podra considerarse como una forma simple de
aproximacin estocstica.

Si se considera una funcin de criterio de expectacin E[ J (w)] se podra obtener una ley
de aprendizaje de gradiente descendente ideal de la forma mostrada en la siguiente
ecuacin:

wk +1 = wk c k w E [J (wk )] Ec. 2.28

Capitulo 2. Pndulo Invertido y Redes Neuronales Artificiales 22


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

En la ecuacin 2.28 se considera una apropiada secuencia decreciente de factores de


aprendizaje {c k }.

La funcin de densidad probabilstica desconocida p(x) define el operador de expectacin


determinstico E. de tal forma que se pueda estimar el gradiente w E [J (wk )] . La
aproximacin estocstica estima E[J] como una simple variable aleatoria J, la cual depende
solo de lo observado durante la realizacin del proceso de muestreo aleatorio.

Mediante estas consideraciones se puede llegar a una forma general del algoritmo
Perceptron que tendra la forma siguiente:

wk +1 = wk + c k x Ec. 2.29
x X

El cual estima el gradiente descendiente considerando un conjunto de vector de


entrenamiento X.

De tal forma que, clasificando dentro de dos clases, si la muestra de entrenamiento x D1


genera g1 (x ) = xwT < 0 , entonces se incrementa el vector de pesos en la iteracin m+1:

wm +1 = wm + cx Ec. 2.30

Si x D2 genera xwT > 0 , entonces se disminuye el vector de pesos:

wm +1 = wm cx Ec. 2.31

Donde c es una constante. Esto de forma repetida hasta que g1 (x ) = xwT > 0 para todo
x D1 , y g 2 (x ) = xwT > 0 para todo x D2 . Si el Perceptron clasifica correctamente a x
entonces no se realiza ninguna modificacin en el vector de pesos.

2.2.7 RNA TIPO PERCEPTRON DE CAPAS MULTIPLES

Un modelo ms empleado es el Perceptron de Capas Mltiples (similar al esquema


mostrado en la figura 2.10). En el Perceptron de Capas Mltiples la seal de entrada es
alimentada a la capa de entradas (input layer), posteriormente las seales resultantes son
multiplicadas por los pesos de conexin antes de transmitirse a la primer capa oculta
(Hidden layer). Dentro de la primera capa oculta estas seales son sumadas y procesadas
mediante una funcin no lineal. Al momento de que los datos procesados abandonan alguna
de las capas ocultas, nuevamente son multiplicados por los peso de conexin de cada salida,
y vuelven a ser sumados y procesados por la capa oculta siguiente. Finalmente son

Teora Bsica 23
Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

multiplicados por los pesos de conexin de su salida y procesados por ultima vez dentro de
la capa de salida (Output Layer) para producir la salida de la red.

Para el caso en el que el Perceptron clasifique a las muestras dentro de ms de dos clases (
empleando mas de una capa) la forma de actualizar los pesos en la iteracin m+1,
considerando que el Perceptron clasifica a x Di dentro de la clase Dj, donde j es
diferente a i, entonces:

wi (m + 1) = wi (m ) + cx Ec. 2.32

w j (m + 1) = w j (m ) cx Ec. 2.33

wk (m + 1) = wk (m ) para toda k diferente a i y j Ec. 2.34

2.2.8 RNA TIPO ADALINE [32]

Las redes ADALINE (ADAptive Linear Element) emplean una estructura de una sola
neurona con una funcin sumatoria y funcin de transferencia lineal (emplean la estructura
bsica del Perceptron). Esta estructura permite introducir retardos de tiempo en sus
entradas. Un filtro Adaline es un objeto que consiste en un solo elemento de procesamiento
(EP); por lo tanto no es tcnicamente una RNA.

Existen dos modificaciones bsicas que se requieren para convertir la estructura general de
un PE (Ver apartado 2.2.3) en un filtro Adaline. La primera modificacin es aadir una
conexin con peso, wo, comnmente conocida como sesgo. Este trmino se puede
considerar el peso de una conexin de entrada que siempre tiene valor de 1. La segunda
modificacin es aadir una condicin lineal en la salida. La parte del filtro Adaline donde
se pesan las entradas se le conoce como Combinador Lineal Adaptivo (ALC por sus siglas
en ingls). La salida del ALC determina la salida del filtro Adaline.

El procesamiento que realiza el ALC es igual al que realiza el PE tpico. El ALC ejecuta un
clculo de suma de productos entre los vectores de entradas y de pesos, y aplica una
funcin de salida para obtener un solo valor de salida.

n Ec. 2.35
u t = wo + w j x j
j =1

Donde wo es el peso del sesgo, o ms propiamente dicho el sesgo. Haciendo el valor de


entrada para el peso del sesgo igual a 1 la ecuacin se convierte en

n Ec. 2.36
ut = w j x j
j =0

Capitulo 2. Pndulo Invertido y Redes Neuronales Artificiales 24


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

en notacin vectorial

u t = wT x Ec. 2.37

El filtro Adaline ( el ALC) es adaptativo en el sentido de que existe un procedimiento bien


definido para modificar los pesos que permitan al objeto generar el valor de salida correcto
para una entrada determinada. El filtro Adaline (o el ALC) es Lineal debido a que la salida
es una simple funcin lineal del valor de entrada.

2.2.8.1 REGLA DE APRENDIZAJE DEL ERROR CUADRATICO MEDIO LMS


(LEAST MEAN SQUARE O LMS) [32]

Si se tuviera un conjunto de vectores de entrada, xk, cada uno de los cuales con su valor de
salida correcto, dk , mediante el empleo de la regla LMS puede encontrarse el vector de
pesos correcto wk que asocie dichos elementos. Dicha regla puede incrustarse dentro del
mismo elemento, el cual podr auto-adaptarse al momento que sus entradas y salidas
deseadas le sean presentadas. Sus pesos son ajustados cada vez que se le presenta una
pareja de entrada-salida deseada hasta que la ALC genera salidas correctas. Este proceso se
considera un entrenamiento porque no es necesario calcular los valores de los pesos si no
que la misma red los obtiene empleando la regla de aprendizaje.

Si el valor de la salida actual es uk para el vector de entrada k-esimo, entonces el


correspondiente termino de error es k = dk yk , y el error cuadrtico medio, o valor de
error esperado, esta dado por la siguiente ecuacin:

1 k =L 2 Ec. 2.38
k2 = k
L k =1

L es el nmero de vectores de entrada en el conjunto de entrenamiento

Tambin se puede expresar la Regla LMS de la forma siguiente:

k2 = (d k wT x k ) Ec. 2.39
2

= d k2 + wT x k x kT w 2 d k x kT w

2.2.8.2 LOCALIZACIN DE LA MATRIZ PTIMA DE PESOS MEDIANTE EL


MTODO DE GRADIENTE DESCENDENTE [32]

Una aproximacin para que la ALC encuentre los pesos ptimos es mediante la ubicacin
del mnimo en la superficie de pesos ya que una bsqueda puramente aleatoria podra no
ser eficiente.

Teora Bsica 25
Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

Se puede iniciar asignando valores arbitrarios a los pesos. Desde este punto de la superficie
de pesos, se determina la direccin de la pendiente mas inclinada de descenso. Cambiando
los pesos ligeramente de tal manera que el nuevo vector de pesos se dirija hacia la parte
baja de la superficie. Se repite el proceso hasta que se alcance el mnimo. En este mtodo se
considera implcitamente que la superficie del error es de una forma paraboloide.

Regularmente el vector de pesos no se dirige directamente hacia el punto mnimo desde el


inicio del proceso. La seccin trasversal de la superficie paraboloide del error es
usualmente una elipse, de tal manera que el gradiente negativo puede no apuntar
directamente al punto mnimo, por lo menos al inicio. Debido a que el vector de pesos es
variable en este procedimiento, se escribe como una funcin explicita del tiempo de
procesamiento t (time step). El vector de pesos iniciales esta denotado por w(0), y el vector
de pesos en un tiempo determinado t del proceso es w(t). En cada paso, el prximo vector
de pesos esta calculado de acuerdo a la siguiente ecuacin:

w(t + 1) = w(t ) + w(t ) Ec. 2.40

Donde w(t) es el cambio en w en el tiempo t.

En cada punto de la superficie se busca la direccin de la pendiente descendente, por lo que


se requiere calcular el gradiente de la superficie. El negativo del gradiente esta en la
direccin de la pendiente descendente. Para obtener la magnitud del cambio se debe
multiplicar el gradiente por una constante conveniente, , lo cual nos da la siguiente
ecuacin:

w(t + 1) = w(t ) w(t ) Ec. 2.41

Lo que faltara sera determinar el valor de w(t) en cada paso sucesivo de iteracin.

El valor de w(t) puede obtenerse mediante un procedimiento analtico, que sera lo


mismo que definir la forma de la superficie del error. Para evitar esta dificultad, se puede
emplear una aproximacin para el gradiente que puede ser determinado mediante la
informacin que se conoce explcitamente en cada iteracin.

Para cada paso en el proceso de iteracin, se debe ejecutar lo siguiente:

1.- Aplicar un vector de entrada, xk , a la entrada de la red Adaline.


2.- Determinar el valor del error cuadrtico, k2 (t), empleando el valor actual del vector de
pesos,

k2 (t ) = (d k wT (t )x k ) Ec. 2.42
2

Capitulo 2. Pndulo Invertido y Redes Neuronales Artificiales 26


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

3.- Calcular una aproximacin de (t), empleando k2 (t) como una aproximacin de
k2:

k2 (t ) k2 Ec. 2.43
(t ) 2 k (t )x k
2
k

4.- Actualizar el vector de pesos de acuerdo a la ecuacin 2.41 empleando la ecuacin 2.43
como aproximacin del gradiente:

w(t + 1) = w(t ) 2 k x k Ec. 2.44

5.- Repetir los pasos 1 al 4 con el siguiente vector de entrada, hasta que el error ha sido
reducido a un valor aceptable.

La ecuacin 2.44 es una expresin del algoritmo LMS. El parmetro determina la


estabilidad y velocidad de convergencia del vector de pesos en la direccin de un valor de
error mnimo. Los cambios en el vector de pesos debe mantenerse relativamente pequeo
en cada iteracin, si los cambios son demasiado grandes, el vector de pesos podra estar
vagando en la superficie, sin encontrar nunca el mnimo en lugar de resultar en una
convergencia estable hacia este. La funcin del parmetro es prevenir esta situacin.

Una situacin especial en el uso de la RNA tipo ADALINE es cuando se cuenta con una
sola seal de entrada, en dicho caso la ALC se arregla en una configuracin conocida
como Filtro Transversal. En esta configuracin, la seal de entrada es muestreada en varios
puntos en el tiempo, en lugar de tener varios sensores en un solo tiempo.

Para el Filtro Transversal, cada muestra adicional en el tiempo representa otro grado de
libertad que puede ser empleado para ajustar la seal de entrada a la seal de salida
deseada. Esto es, si no se puede obtener un buen ajuste con una cantidad pequea de
muestras pueden aadirse otras para aumentar la posibilidad. Si en la primera seleccin de
cantidad de retardos de tiempo se obtiene un buen ajuste de la seal, es conveniente tratar
con menos retardos, con el fin de observar respuesta y convergencia. Se debe recordar que
se debe esperar al menos n*(cantidad de retardo de tiempo) para que en todas las entradas
del filtro este presente la seal. En este tipo de filtros por lo regular los umbrales o sesgos
son superfluos.

Como se menciono anteriormente no necesariamente una mayor cantidad de retardos


genera una mejor salida, adems de que a mayor cantidad de pesos mayor tiempo de
entrenamiento, existen otros factores que afectan tanto al tiempo de entrenamiento y a la
aceptabilidad de la solucin.

El parmetro es uno de los factores que tiene un efecto significante en el entrenamiento.


Si es demasiado grande, nunca tendr lugar la convergencia, no importa que tan grande

Teora Bsica 27
Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

sea el periodo de entrenamiento. Si la estadstica de la seal de entrada se conoce, es


posible demostrar que el valor de esta restringido al rango de:

1 / max > > 0 Ec. 2.45

Donde max es el mas grande eigenvalor de la matriz R = xk xkt llamada matriz de


correlacin. Si no se conoce la estadstica de la seal, es posible evaluarla por medio de una
aproximacin euristica seleccionando un valor para de tal manera que un peso no cambie
ms que un pequeo porcentaje de su valor actual.

2.2.9 RNA TIPO MADALINE [32]

Madaline es el acrnimo de muchas Adaline (Many Adaline) arregladas en una arquitectura


de mltiples capas, la RNA Madaline se asemeja a la estructura general de las RNA (figura
2.10). En esta configuracin, la Madaline puede ser presentada con un vector de entradas de
grandes dimensiones.

Para entrenar una RNA de este tipo, se podra pensar emplear el algoritmo LMS en la capa
de salida, pero ya que dicho algoritmo no permite conocer la aportacin de cada capa al
error total es necesaria una modificacin a este algoritmo. Debido a que la RNA es
entrenada con patrones de entrada identificados previamente, se conoce el vector de salida
deseado. Lo que no se conoce es la salida deseada en un nodo dado de la capa oculta. El
algoritmo LMS operara en las salidas anlogas de la ALC, no en los valores de salida
bipolar de los filtros Adaline. Por esta razn se ha desarrollado una estrategia de
entrenamiento diferente para la RNA Madaline.

2.2.9.1 ALGORITMO MRII (MADALINE RULE II) [32]

El algoritmo de entrenamiento MRII se asemeja a un proceso de prueba y error con cierta


inteligencia involucrado mediante el uso de un Principio de Disturbancia Mnima. Ya que
la salida de una RNA tipo Madaline es una serie de unidades bipolares debido a su funcin
de salida, el entrenamiento equivale a reducir la cantidad de nodos de salida incorrectos
para cada patrn de entrada de entrenamiento. El Principio de Disturbancia Mnima aplica
la idea de que aquellos nodos que pueden afectar el error de salida mientras incurren los
cambios menores en sus pesos debern tener preferencia en el proceso de entrenamiento.
Este principio esta incorporado en el siguiente algoritmo:

1.- Aplicar un vector de entrenamiento a las entradas de la RNA Madaline y propagar este
hasta las unidades de salida.

2.- Contar el nmero de valores incorrectos en la capa de salida: llamar a este nmero el
error.

Capitulo 2. Pndulo Invertido y Redes Neuronales Artificiales 28


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

3.- Para todas las unidades en la capa de salida,

a) Seleccionar el primer nodo cuya salida anloga esta mas cercana a cero. Este
nodo es precisamente el que puede revertir su salida bipolar con el menor
cambio en su peso, de aqu el trmino de Disturbancia Mnima.

b) Cambiar los valores en la unidad seleccionada de tal forma que la salida bipolar
de la unidad cambie.

c) Propagar el vector de entrada hacia adelante desde la entrada hasta la salida


nuevamente.

d) Si el cambio de peso resulta en una reduccin del nmero de errores, aceptar el


cambio de peso; de otra manera, restaurar el peso original.

4.- Repetir el paso 3 para todas las capas excepto la capa de entrada.

5.- Para todas las unidades en la capa de salida,

a) Seleccionar los pares de unidades cuya salida anloga esta mas cercana a cero.

b) Aplicar una correccin de peso a ambas unidades, con el fin de cambiar la salida
bipolar de cada una.

c) Propagar el vector de entrada hacia adelante desde las entradas hasta las salidas.

d) Si el cambio de pesos resulta en una reduccin del nmero de errores, aceptar el


cambio de pesos; de otra manera restaurar los pesos originales.

6.- Repetir el paso 5 para todas las capas excepto para la capa de entrada.

Si es necesario, la secuencia de los pasos 5 y 6 pueden repetirse con conjuntos de tres


unidades, o de cuatro, o tantas como sean necesarias, hasta que se obtenga un resultado
satisfactorio. Algunas indicaciones preliminares son que grupos de dos unidades son
adecuados para RNAs dimensionadas modestamente con 25 o un valor de unidades por
capa cercano.

Es posible visualizar un mtodo de entrenamiento para la estructura Madaline basado en el


algoritmo LMS; sin embargo, el mtodo consiste en reemplazar la funcin de salida lineal
escaln por una funcin continua diferenciable ( la funcin escaln es discontinua en el
valor 0; por lo tanto no es diferenciable ) [45].

2.2.10 RNA TIPO BACKPROPAGATION (RNA BP) [32]

La RNA BP fue formalmente definida por Verbos [38], y despus por Parker [46],
posteriormente por Rummelhart y McClelland [47]. Este tipo de red esta diseada para

Teora Bsica 29
Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

funcionar como red de capas mltiples, con alimentacin hacia adelante, empleando el
modo de entrenamiento supervisado.

La RNA BP aprende un conjunto predefinido de parejas de entrada-salidas deseadas


empleando un ciclo de dos fases propagacin-adaptacin. Despus de que un patrn de
entrada ha sido aplicado como estimulo a la primera capa de la red, este es propagado a
travs de cada una de las capas siguientes hasta que se genera una salida de la RNA BP.
Este patrn de salida es comparado entonces a la salida deseada y una seal de error se
calcula para cada unidad de la capa de salida.

La seal de error calculada es entonces transmitida hacia atrs desde la capa de salida hasta
cada uno de los nodos de las capas intermedias que contribuyen directamente con la salida.
Sin embargo, cada una de las unidades de las capas intermedias solo recibe una porcin de
la seal de error total calculada, basada estrictamente en la contribucin que cada unidad
hace para la salida original. Este proceso se repite, capa por capa, hasta que cada nodo de la
red ha recibido una seal de error que describe su contribucin relativa al error total.
Basado en la seal de error recibida, los pesos de conexin se actualizan en cada unidad
provocando que la red converja hacia un estado que le permita codificar todos los patrones
de entrenamiento.

Conforme se entrena la RNA BP, los nodos en las capas intermedias se ajustan as mismos
de tal forma que distintos nodos aprenden a reconocer diferentes objetos del espacio total
de entrada. Despus del entrenamiento, cuando se le presenta un patrn arbitrario de
entrada que contiene ruido o esta incompleto, las unidades en la capa intermedia de la red
respondern con una salida activa si la nueva entrada contiene un patrn que asemeje el
objeto que la unidad individual enseado a reconocer durante el entrenamiento.
Convencionalmente, las unidades de las capas ocultas tienen una tendencia a inhibir sus
salidas si el patrn de entrada no contiene el objeto el cual fueron entrenadas a reconocer.

Conforme la seal se propaga a travs de las diferentes capas en la RNA BP, la actividad
del patrn presente en cada una de las capas superiores se puede considerar como un patrn
con objetos que pueden ser reconocidos por unidades en las capas siguientes. El patrn de
salida generado puede considerarse como una representacin de la presencia o ausencia de
muchos objetos combinados en la entrada.

Algunas investigaciones han mostrado que durante el entrenamiento, las RNA BP tienden a
desarrollar relaciones internas entre los nodos como si organizaran los datos de
entrenamiento dentro de clases o patrones [28]. Esta tendencia puede ser extrapolada a la
hiptesis de que todas las unidades de las capas ocultas de una RNA BP son de alguna
manera asociadas con objetos especficos de los patrones de entrada como resultado del
entrenamiento. De esta forma la RNA BP encuentra una forma de representar internamente
los patrones de forma que le permite generar la salida deseada cuando se le proporciona una
entrada de entrenamiento. Esta misma representacin interna puede aplicarse a las entradas
que no se emplearon durante el entrenamiento. La RNA BP puede clasificar estas entradas
desconocidas de acuerdo a los objetos que fueron aprendidos durante el entrenamiento.

Capitulo 2. Pndulo Invertido y Redes Neuronales Artificiales 30


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

2.2.10.1 REGLA DELTA GENERALIZADA (GDR)

El algoritmo que se emplea para entrenar una RNA BP es la Regla Delta Generalizada.
Como se menciono, la RNA BP esta compuesta por capas mltiples, con propagacin de
las entradas hacia adelante y completamente interconectada en sus capas. Esto significa que
no existen conexiones hacia atrs ni conexiones que alimenten la salida de una capa hacia
otra que no sea la siguiente. Puede existir ms de una capa oculta en una RNA BP.

Una RNA es llamada red representativa (mapping network) si esta es capaz de calcular
alguna funcin de relacin entre las entradas y las salidas. Estas son tiles en situaciones
donde se desconoce la funcin de relacin entre las entradas y salidas, en estos casos la alta
capacidad de la RNA para descubrir su propia representacin es extremadamente til.

Si se cuenta con un conjunto de P vectores de parejas, (x1 , u1 ),......(xp , up ), los cuales son
ejemplo de una funcin representativa u = (x) : x RN , u RN .

Se puede entrenar una RNA BP para obtener una aproximacin O = u = (x). Para
emplear el mtodo aqu expuesto es necesario que los vectores de parejas hayan sido
adecuadamente seleccionados y que exista suficiente cantidad de ellos. El algoritmo
asemeja al problema de encontrar la ecuacin de una lnea que mejor aproxima un conjunto
de puntos. Y es una generalizacin de la regla LMS. Como este caso se asemeja a contar
con no linealidades y dimensiones mltiples, se emplea una versin interactiva del mtodo
simple de los mnimos cuadrados, llamada tcnica de gradiente descendente.

Para iniciar se considera un vector de entradas, xp = ( xp1, xp2 , ..... xpN ) T , que se aplica a la
capa de entrada de una RNA BP. Las unidades de la entrada distribuyen los valores a las
unidades de las capas ocultas. La entrada a la red de la unidad oculta j es:

N Ec. 2.46
Net hpj = w hji x pi + jh
i =1

Donde wjih es el peso en la conexin de la unidad de entrada i a la unidad de la capa oculta


j, y jh es el trmino de sesgo o umbral y N es el nmero de entradas. El sper ndice h
refiere a la capa oculta (hidden). Considerando que la activacin de este nodo es igual a la
entrada de la red; entonces, la salida de este nodo ser dada por:

(
I pj = f jh net hpj ) Ec. 2.47

La ecuacin para la salida del nodo ser:

L
Ec. 2.48
Net opk = wkjo I pj + ko
j =1

O pk = f k
o
(Net )
o
pk

Teora Bsica 31
Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

Donde L es el numero de neuronas en la capa oculta y o refiere a objetos en la capa de


salida.

El conjunto de valores de pesos iniciales representan una primera suposicin de los pesos
adecuados al problema. El proceso bsico de entrenamiento de una BPN esta incluido en la
siguiente descripcin:

1. Aplicar un vector de entrada a la red y calcular el correspondiente valor de salida

2. Comparar el valor actual de la salida con la salida deseada correspondiente y


determinar una medida del error.

3. Determinar en que direccin (+ o - ) cambiar cada peso con la finalidad de reducir


el error.

4. Determinar la cantidad a la cual cambiar cada uno de los pesos.

5. Aplicar la correccin a los pesos.

6. Repetir los pasos 1 al 5 con todos los vectores de entrenamiento hasta que el error
para todos los vectores en el conjunto de entrenamiento se reduzca a un valor
aceptable.

2.2.10.2 ENTRENAMIENTO DE UNA RNA BP

1.- Aplicar un vector de entrada, xp = ( xp1 , xp2 ,....., xpN ) T a las unidades de entrada.

2.- Calcular el valor de entrada a cada una de las neuronas en las capas ocultas: ecuacin
2.46

3.- Calcular la salida de la capa oculta: ecuacin 2.47

4.- Cambiar a la capa de salida. Calcular el valor de entrada a cada neurona: ecuacin 2.48a

5.- Calcular la salida: ecuacin 2.48b

6.- Calcular el trmino de error para las unidades de salida:

pko = (y pk o pk ) f ko (Net opk ) Ec. 2.49

7.- Calcular el error para las unidades en la capa oculta:

pjh = f jh (Net hpj ) pko wkjo Ec. 2.50

Capitulo 2. Pndulo Invertido y Redes Neuronales Artificiales 32


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

Notar que el error para las unidades en la capa oculta se calcula antes que los pesos de
conexin en la capa de salida sean actualizados.

8.- Actualizar los pesos en la capa de salida:

wkjo (t + 1) = wkjo (t ) + pk
o
i pj Ec. 2.51
Donde es el rango de aprendizaje

9.- Actualizar los pesos en la capa oculta:

w hji (t + 1) = w hji (t ) + pjh xi Ec. 2.52

El orden de la actualizacin de los pesos en una capa individual no es importante.

Asegurarse de calcular el valor de error:

1 M 2 Ec. 2.53
Ep = pk
2 k =1

Donde M es el nmero de neuronas en la capa de salida.

Ya que esta cantidad es una medida de que tan bien esta aprendiendo (suma de los errores
cuadrados de todas las unidades en la salida). Cuando el error es aceptablemente pequeo
para cada uno de los vectores de entrenamiento, el entrenamiento puede darse por
terminado.

Existen dos funciones de inters:

fko (Netjko ) = Netjko (lineal) donde fko (Netpko ) = 1

fko (Netpko ) = ( 1 + e-Netjko ) -1 (Sigmoide) donde fko (Netpko )= fko (1-Netpko )


= opk(1- opk)

La RNA BP es buena para generalizar, esto quiere decir, dados diferentes vectores de
entrada, siendo todos de la misma clase, una RNA BP aprender a asimilar las similitudes
en los vectores de entrada. Y los datos irrelevantes sern ignorados.

En oposicin a la generalizacin, una RNA BP no puede extrapolar bien, si una RNA BP es


inadecuada o insuficientemente entrenada en una clase particular de vectores de entrada,
posteriores identificaciones de miembros de esta clase podran fracasar. Uno se debe
asegurar que el conjunto de entrenamiento cubra todo el espacio de entradas esperadas. Es
conveniente durante el entrenamiento, seleccionar parejas de entrada-salida de forma
aleatoria en el conjunto de entrenamiento. En algunos casos, el no entrenar la red

Teora Bsica 33
Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

completamente con una clase y entonces cambiar a otra podra hacer a la red olvidar el
entrenamiento original.

2.2.10.3 PESOS Y PARAMETROS DE APRENDIZAJE

Los pesos pueden ser inicializados a valores pequeos y aleatorios, por ejemplo entre +0.5
y -0.5, al igual que los trminos de sesgo (o umbrales), Es comn emplear los valores de
sesgo como otro peso que esta conectado a una neurona ficticia cuya salida siempre es uno.
De esta manera podra participar del proceso de aprendizaje como peso y ser modificado.
Otra opcin es no emplear sesgos, el uso de ellos es opcional.

La seleccin de un valor para el parmetro de factor de aprendizaje, tiene un efecto


significante en la ejecucin de la RNA. Usualmente debe ser un valor pequeo en el orden
de 0.05 a 0.25 para asegurarse que la RNA se dirigir hacia una solucin. Un valor pequeo
del rango de aprendizaje significa que la RNA tendr que hacer un mayor nmero de
iteraciones. Es posible modificar la tasa de aprendizaje conforme el entrenamiento se
desarrolla, aumentando este conforme el error de la red disminuye ayudara por lo regular a
la velocidad de convergencia, mediante el incremento de la dimensin del paso conforme el
error llega al mnimo, pero la red podra rondar muy lejos del valor mnimo actual si el
valor del rango de entrenamiento es demasiado grande.

Otra manera de incrementar la velocidad de convergencia es emplear el mtodo del


momento. Cuando se calcula los valores de cambio para los pesos, se aade una fraccin
del cambio previo. La adicin de este termino tiende a mantener los cambios de los pesos
en una misma direccin, por eso se le llama momento. La ecuacin para los cambios de los
pesos en la capa de salida vendra a ser:

wkjo (t + 1) = wkjo (t ) + pk
o
i pj + p wkjo (t 1) Ec. 2.54

Con una ecuacin similar se puede encontrar los cambios de pesos en la capa oculta. En la
ecuacin el smbolo es el parmetro de momento y por lo regular es positivo menor que
1. El uso de este trmino es opcional.

Una consideracin final es la posibilidad de converger en un mnimo local en el espacio de


los pesos. Una ves que la RNA se establece en un mnimo, ya sea local o global, el
aprendizaje termina. Si se alcanza un mnimo local, el error en la salida de la RNA podra
ser inaceptable. Si el aprendizaje de una RNA cesa antes de alcanzar un error aceptable, un
cambio en la cantidad de nodos ocultos o en los parmetros de aprendizaje por lo regular
soluciona este problema: o simplemente uno podr empezar con otro conjunto distinto de
pesos iniciales. Cuando una RNA alcanza una solucin aceptable, no se puede asegurar
que esta all alcanzado el mnimo global en lugar de un mnimo local.

REFERENCIAS DEL CAPITULO

Capitulo 2. Pndulo Invertido y Redes Neuronales Artificiales 34


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

1. Ogata, K., Ingeniera de Control Moderna. 3 ed. 1998,: Prentice-Hall Hispanoamericana.


786-997.
2. Montoya, L.F.R. and L.A. Z., Chattering Control Design for the Inverted Pendulum, in
Mechanical Engenering. 2001. p. 51-67.
3. Chung, C.C. and J. Hauser, Nonlinear Control of a Swinging Pendulum. Automatica, 1995.
31.
4. Franklin, T., Design and Control of the Inverted Pendulum Cart System. 2002, Virginia
Tech: Virginia. p. 1-9.
5. Shew, W., Inverted Equilibrium of a Vertically Driven Physical Pendulum, in Electrical.
1997, College of Wooster: Wooster.
6. Kuo, B.C., Sistemas Automaticos de Control. 2 ed. 1991, Mexico: CECSA. 243-350.
7. Astrom, K.J. y K. Furuta. Swinging Up a Pendulum By Energy Control. in 13th World
Congress. 1996. San Francisco, California: IFAC.
8. kesson, J., Inverted Pendulum Demonstration Experimental Set Up, in Department of
Automatic Control. 2001, Lund Institute of Technology: Lund. p. 1-6.
9. Chou, S.C.-M., D. Goldberg, and otros, Inverted Pendulum, in Control Systems. 2001,
UBC: Conecticut. p. 6-28.
10. Schreiber, G.u., C. Ott, and G. Hirzinger. Interactive Redundant Robotics:Control of the
Inverted Pendulum
with Nullspace Motion. in International Conference on Intelligent Robots and Systems.
2001. Maui,Hawaii,USA: BMBF MORPHA.
11. Kuo, A.D., The relative roles of feedforward and feedback in the control of rhythmic
movements. Motor Control, 2000. 10: p. 1-10.
12. Kim, S.Y. y M. Hu, Bifurcations and transitions to chaos in an inverted pendulum.
Physical Review, 1998. 58: p. 3028-3035.
13. Lam, J., Control of an Inverted Pendulum. 2000,
http://www.ccec.ece.ucsb.edu/people/smith/.
14. Roberge, J.K., The Mechanical Seal. 1960, Massachusetts Institute of Technology:
Massachusetts.
15. Sobhani, Z.C., Stabilization of an Inverted Pendulum with Base Arcing about a Horizontal
Axis, in Mechanical Engineering. 2003, MASSACHUSETTS INSTITUTE OF
TECHNOLOGY: MASSACHUSETTS.
16. Anderson, C.W., Learning to Control an Inverted Pendulum Using Neural Networks. IEEE
Control Systems Magazine, 1989. April 1989: p. 31-37.
17. Michigan, U.o., Control Tutorials for Matlab. 1997,
www.engin.umich.edu/group/ctm/examples/pend.
18. Vermeiren, L., T.M. Guerra, y Y. Morre, Comparison of dierent fuzzy control laws of an
inverted pendulum in real time. 2000, University of Valenciennes: Valencia. p. 3-15.
19. Mguelez Garca, R., Estudio diseo y desarrollo de una aplicacin de tiempo real y de un
simulador para su comprobacin. 2001, U. Cantabria: Cantabria.
20. Wang, D. y J. Huang, A Neural-Network-Based Approximation Method for Discrete-Time
Nonlinear Servomechanism Problem. IEEE Transactions on Neural Networks, 2001. 12: p.
591-597.
21. Cembrano, G. y G. Wells, Aplicaciones del Aprendizaje Neuronal al Control de Robots.
Inteligencia Artificial, 1997. 1: p. 34-40.
22. Barrientos, A. y otros, Fundamentos de Robtica. 1997: Mc Graw Hill- Interamericana de
Espaa.
23. Groover, M.P. y otros, Industrial Robotics
Technology, Programming and applications. Industrial Robotics, ed. I.E. Series. 1987: Mc.
Graw Hill International. 3-47.

Teora Bsica 35
Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

24. Konar, A., Artificial Intelligence and Soft Computing. 1 ed. 2000, Boca Raton, Florida:
CRC Press. 415-443.
25. Pedrycz, W., Computacional Intelligence: an introduction. 1 ed. Computer Engineering.
1998, Florida USA: CRC PressLLC. 7-35.
26. Kasabov, N.K., Foundations of Neural Networks, Fuzzy Systems, and
Knowledge Engineering. 2 ed. Expert systems (Computer science), ed. B. Book. Vol. 1.
1998, London, England: MIT Press. 251-307.
27. Kosko, B., Neural Networks and Fuzzy Systems: a dynamical systems approach. 1992:
Prentice Hall. 39-110.
28. Hinton, G.E. y T.J. Sejnowski, Neural Networks architectures for AI, in MP2. 1987: Seattle
WA.
29. Pitas, I., Parallel algorithms: for digital image processing, computer vision, and neural
networks. Parallel Computing, ed. 1993: Jhon Wiley and sons. 259-301.
30. Cuevas de la Rosa, Francisco J. y M.S. Girardo, La Neurona Biologica y su
Implementacion Artificial. 1993, CIO: Len, Guanajuato. p. 3-16.
31. Burns, R.S., Advanced Control Engineering. 1 ed. 2001, Woburn,MA: Butterworth-
Heinemann. 347-360.
32. Freeman, J.A. y D.M. Skapura, Neural Networks: algorithms, applications, and
programming techniques. 1 ed. Computation and Neural Systems, ed. C. Koch. Vol. 1.
1991, California: Addison Wesley. 45-124,341-371.
33. Jain, A.K. y J. Mao, Artificial Neural Networks: A tutorial. IEEE Computer, 1996. 18: p.
31-44.
34. Jones, P.C. y S. Tepavich, ADALINE Stabilization of an Inverted Robot Arm. 1997,
www.aracnet.com.
35. Pino, B. y otros, Implementaciones hardware de redes neuronales artificiales. Inteligencia
Artificial, 1997. 1: p. 48-56.
36. Bishop, C.M., Neural Networks for Pattern Recognition. 1 ed. 2003, New York: Oxford
University Press. 116-161.
37. McCulloch, S. y W. Pitts, A logical Calculus of the ideas immanent in nervous activity, in
Mathematicall Biophisycs. 1943. p. 115-133.
38. Werbos, P., Beyond Regression: New Tools for Prediction and Analysis in the Behavioral
Sciences, in Computational Sciences. August 1974, Harvard: Cambridge.
39. Matich, D.J., Redes Neuronales: Conceptos Bsicos y Aplicaciones, in Catedra:Informtica
aplicada a la Ingeniera de Procesos, M.S. Basualdo, Editor. 2001, Universidad
Tecnolgica Nacional
Facultad Regional Rosario: Rosario, Argentina. p. 8-28.
40. Krse, B. y P.V.d. Smagt, An Introduction to Neural Networks. 1996, Amsterdam: The
University of Amsterdam. 15-45.
41. Hu, Y.H. y J.-N. Hwang, Handbook of Neural Networks Signal Processing. The Electrical
Engineering And Applied Signal Processing, ed. A. Poularikas. 2002, USA: CRC Press.
42. Kosko, B., Neural Networks for Siganl Processing. 1992, Englewood Cliffs, New Jersey:
Prentice-Hall. 161-188.
43. Lebbart, L., A. Morineau, and M. Piron, Statistique exploratoire multidimensionnelle. 1995,
Paris: DUNOD. 263-283.
44. Cuevas de la Rosa, Francisco J., Aplicacin de redes neuronales en la reconstruccin
tridimensional de objetos, in Metrolgiaptica. 2000, Centro de Investigaciones en
ptica: Len Guanajuato.
45. Winter, R. y B. Widrow. MADALINE RULE II: A training algorithm for neural networks.
in Second International Conference on Neural Networks. 1988. San Diego,CA.
46. Parker, D.B., Learning logic. 1985, MIT: Cambridge.

Capitulo 2. Pndulo Invertido y Redes Neuronales Artificiales 36


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

47. McClelland, J. y D. Rumelhart, Explorations in Parallel Distributed Processing. Vol. 1-2.


1986, Cambridge, MA: MIT Press.

Teora Bsica 37
CAPITULO 3
DESCRIPCION DEL SISTEMA

En la implementacin del sistema se emplea una combinacin de elementos software y


hardware, ver figura 3.1.

PC :
Matlab (Neural Network Toolbox )
Simulink
Real Time Workshop
Real Time Windows Target
Fuente de Voltaje
+12V....-12V

Tarjeta de Adquisicin Sistema PIS


Interfaz de
de Datos
Potencia
PCI6014

Fig. 3.1 Diagrama esquemtico del sistema empleado en esta tesis.

Para la implementacin de las RNAs empleadas en el control del pndulo invertido se


utiliza la caja de herramientas Neural Networks Toolbox de Matlab 7.0 (en adelante Matlab
7.0 ser nombrado Matlab). La interfaz para la adquisicin y envo de datos desde el
software hacia el mundo real es la tarjeta de adquisicin de datos PCI6014 de National
Instruments. Para la implementacin del control en tiempo real y su comunicacin con la
tarjeta PCI6014 se utilizan las siguientes herramientas de software: Simulink, Real Time
Windows Target y Real Time Workshop de Matlab. Debido a las limitaciones de tensin y
corriente de salida que maneja la tarjeta PCI6014 es necesario implementar una interfaz de
potencia (mediante transistores y amplificadores operacionales), para proporcionar la
tensin y corriente necesaria tanto para el motor de c.c. como para los potencimetros
utilizados en la realimentacin.

3.1 RNAS EN MATLAB [1].

Matlab cuenta con una caja de herramientas (Neural Network Toolboox) que permite
disear RNAs. La implementacin en Matlab de una RNA para funciones de control puede
realizarse de tres formas:

Mediante cdigo desde la lnea de comandos o desde el espacio de trabajo de


Matlab (workspace),.
Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

Utilizando el conjunto de bloques incluidos en el toolbox de Control Systems de


Neural Networks Blockset en Simulink.

Empleando la Interfase Grafica de Usuario (GUI por sus siglas en ingles) de RNAs,
la cual se puede desplegar empleando el comando nntool (Neural Network
Toolbox).

Al crear una RNA mediante el espacio de trabajo de Matlab es necesario introducir los
comandos adecuados para obtener la arquitectura deseada en la RNA. Esta forma de disear
RNAs permite personalizar la arquitectura y presenta la ventaja de poder emplear
funciones de entrada, de activacin y de salida definidas por el usuario o, una combinacin
de las ya implementadas en el propio Matlab.

Empleando el conjunto de bloques en Control Systems se puede seleccionar una de las


opciones de RNAs ya diseadas para controlar sistemas, la desventaja de esta herramienta
es que para la versin de Matlab 7.0 y anteriores no es posible generar el cdigo necesario
para ejecutarla en tiempo real mediante Real Time Workshop o Real Time Windows Target.

Por ltimo, la tercer forma de disear una RNA es mediante la GUI nntool. Esta
herramienta nos permite crear RNAs de distintas arquitecturas mediante la seleccin en un
men de la arquitectura deseada. Para este trabajo se selecciono la GUI nntool para crear
las RNAs empleadas en el control del PIS.

Para informacin de como emplear las primeras dos formas de crear RNAs en Matlab se
puede consultar el Manual de Usuario de Neural Networks Toolbox [1].

Cuando se crea una RNA en Matlab, las capas generadas incluyen la combinacin de:
pesos, operaciones de multiplicacin y suma (en este caso realizadas como un producto
entre vectores W*P), el sesgo b, y la funcin de transferencia f. El arreglo de entradas (el
vector P) no se considera parte de la capa, por lo que ser necesario crear el vector
correspondiente, si es que se desea emular la RNA creada. Cuando se emplea la notacin
abreviada de RNAs , las dimensiones de la matriz se muestran debajo de los elementos
matriciales, y se pueden observar en la vista (view) de la RNA creada.

3.1.1 ESTRUCTURA DE LOS DATOS

Existen dos clases de neuronas las estticas (no tiene realimentacin o retardos de tiempo) y
las dinmicas (contiene retardos de tiempo). Cada una de ellas presenta requerimientos
distintos en el formato de sus datos de entrada. Existen dos tipos bsicos de vectores de
entradas: aquellos que son concurrentes (ocurren al mismo tiempo, su secuencia de tiempo
no importa), y aquellos que suceden de forma secuencial con respecto al tiempo. Para los
vectores concurrentes, el orden no importa, para los vectores secunciales el orden es de
gran importancia.

Software y Hardware empleado 39


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

La forma mas simple de simular una RNA se presenta cuando la RNA es esttica. En este
caso no es necesario tomar precauciones respecto a si el vector de entradas ocurre en una
secuencia de tiempo determinada, y las entradas se pueden tratar como concurrentes.
Adems se puede simplificar el problema asumiendo que la RNA tiene solo un vector de
entrada.

Cuando una RNA contiene retardos de tiempo, la entrada a la RNA debe ser normalmente
una secuencia de vectores de entrada que ocurren con un determinado orden de tiempo. Las
entradas secunciales son presentadas a una RNA como si fueran elementos de un arreglo
de celdas, por ejemplo:

P = {y1 y2 K y N } Ec. 3.1

Al introducir de esta manera la entrada, la RNA produce un arreglo de celdas conteniendo


una secuencia de salidas. Al no asignar una condicin inicial a los retardos de tiempo
empleados en una RNA, Matlab asume que son cero.

En el caso especial que se desee simular la respuesta de la RNA con secuencias distintas y
al mismo tiempo, la RNA se podr confrontar con un conjunto concurrente de secuencias.
En este caso la entrada ser un arreglo de celdas, donde cada elemento del arreglo contiene
los elementos de cada secuencia que ocurre al mismo tiempo, por ejemplo, para dos
secuencias distintas:

P = {[y1,t1 y1,t 2 ] [y 2 ,t 1 y 2 ,t 2 ] K [y N ,t 1 y N ,t 2 ]} Ec. 3.2

La salida que se obtendr ser de tal forma que la primera columna de cada matriz
contendr la secuencia de salida producida por la primera secuencia de entrada, y as
sucesivamente. No existe interaccin entre cada secuencia concurrente y el funcionamiento
de la RNA ser como si cada una de las secuencias se presentara a distintas RNAs
ejecutndose en paralelo.

3.1.2 RED MADALINE

Como se menciona en el apartado 2.2.8.1, cuando se emplea la regla LMS (tambin


conocida como Regla Widrow-Hoff) para entrenar una RNA tipo Madaline, esta permite
aumentar el potencial de la RNA en su aplicacin al poder manipular la colocacin de la
frontera de decisin en la clasificacin de sus patrones de entrenamiento. En Matlab se
emplea dicha regla de aprendizaje por omisin al crear una RNA Adaline o Madaline
(comando en Matlab: learnwh). En la GUI nntool solo es posible crear RNAs Madaline de
una sola capa, esto debido a que cualquier RNA Madaline compuesta por varias capas
lineales siempre puede ser sustituida por una RNA equivalente compuesta de una sola capa
lineal.

Capitulo 3. Descripcin del Sistema 40


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

3.1.2.1 CREACION DE UNA RNA TIPO MADALINE MEDIANTE LA GUI nntool

Para acceder a la GUI de RNAs es necesario introducir el comando nntool en el espacio de


trabajo de Matlab, lo que permite acceder a la ventana Administradora de RNAs
(Network/ Data Manager) mostrada en la figura 3.2.

Fig. 3.2 Ventana Network/Data Manager de la GUI nntool.

La GUI nntool, permite:

Crear una RNA nueva mediante la opcin New Network

Crear vectores o matrices mediante la opcin New Data. Los datos de los vectores o
matrices pueden ser ya sea de entradas, salidas deseadas, valores para retardos de
tiempo empleados en las entradas, valores para los retardos de tiempo empleados en
las capas ocultas o de salida, valores de salidas, o valores de error.

Importar vectores o matrices de datos desde el espacio de trabajo de Matlab o desde


un archivo almacenado en algn dispositivo de memoria mediante la opcin
Import

Exportar datos al espacio de trabajo de Matlab o almacenar estos datos en algn


dispositivo de memoria presente en el sistema utilizando la opcin Export

Cuando ya se cuenta con una RNA en el administrador se puede: observar su


diagrama representativo (View), Eliminarla (Delete), inicializar sus pesos

Software y Hardware empleado 41


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

(Initialize), Simular la RNA previamente entrenada (Simulate), entrenar una


RNA creada o definida en el administrador de RNAs (Train) o adaptar
(actualizar) los pesos y sesgos de una RNAs previamente entrenada (Adapt).

La opcin Simulate.. toma los valores de un vector de entradas previamente definido en la


ventana Network/Data Manager y genera la salida correspondiente de la RNA.

Al activar la opcin New Network se despliega la ventana Create New Network


(mostrada en la figura 3.3), la cual permite seleccionar la arquitectura deseada para la nueva
RNA.

Fig. 3.3 Ventana Create New Network

La ventana Create New Network permite introducir los parmetros necesarios


dependiendo del tipo de RNA a crear. Los parmetros a considerar en la creacin de una
RNA tipo Madaline se pueden observar al seleccionar la opcin Linear Layer (design)
contenida en el men Network Type. Dichos parmetros se pueden observar en la figura
3.4.

En la ventana Create New Network desplegada se puede introducir: el nombre de la RNA


a crear (en el espacio Network Name), los valores para los datos de entradas (en el espacio
Input data), y de salidas deseadas (en el espacio Target data). La introduccin de los
datos de entradas y salidas deseadas puede realizarse de manera manual en el espacio
correspondiente o extrayendo estos de algn vector o matriz de datos previamente
declarado en la ventana Network/Data Manager mediante los men desplegables Set to
imput y Set to target.

Capitulo 3. Descripcin del Sistema 42


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

Figura 3.4 Ventana Create New Network para una RNA tipo Adaline o Madaline.

El formato del elemento que contenga los datos de entradas y de salidas deseadas definir
la cantidad de entradas a la RNA y la cantidad de neuronas lineales empleadas en la capa de
salida (cada rengln en el vector o matriz de datos correspondiente representa una entrada o
neurona de salida).

Despus de introducir los datos de valores de entrada y de salida deseados se puede


observar la RNA (mediante la opcin View) o crearla y colocarla en la ventana
Network/Data Manager (mediante la opcin Create). En la figura 3.5 se muestra una
RNA tipo Madaline de cuatro entradas y dos neuronas lineales.

Fig. 3.5 Diagrama representativo de una Red lineal creada en la GUI nntool.

La GUI tiene su propio espacio de trabajo en la memoria del sistema el cual esta ubicado
fuera del espacio de trabajo de Matlab. Debido a esto, cuando se emplea una GUI, se deben
exportar los resultados de la GUI a la lnea de comandos o espacio de trabajo de Matlab. De
la misma manera si se desea emplear algn valor del espacio de trabajo de Matlab se deben
Importar dichos datos.

Una vez que se ha creado una RNA y la ventana Network/Data Manager se encuentra
activa, se puede, observar la RNA, entrenar, simular y exportar los resultados finales al
espacio de trabajo de Matlab.

Software y Hardware empleado 43


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

3.1.2.2 FILTRO LINEAL DE RESPUESTA A IMPULSOS FINITOS

Para hacer uso pleno de la funcionalidad de una RNA tipo Madaline se requiere emplear un
conjunto de retardos de tiempo (en Matlab Tapped Delay Line, TDL) de tal forma que se
convierta esta RNA en un filtro adaptativo. En el campo del Procesamiento de Seales a
dicho filtro se le conoce como Filtro Lineal de Respuesta a Impulsos Finitos (FIR por sus
siglas en ingles). De esta forma el vector de entradas a la RNA esta conformado por el
valor de la seal actual y n-1 valores pasados de dicha seal (siendo n la cantidad de
entradas en la RNA tipo Madaline).

La salida de una RNA Madaline modificada de esta forma seria la siguiente:

R Ec. 3.3
u (t ) = w1,i u (t i + 1) + b
i =1

donde:
R es la cantidad de entradas a la RNA
t es el ciclo actual de muestreo, t-1 seria el ciclo anterior.

3.1.3 RNA TIPO BP

Como se menciona en el apartado 2.2.10, la RNA tipo BP estndar es una RNA entrenada
mediante una generalizacin de la Regla de Aprendizaje de Widrow-Hoff y dicha regla de
entrenamiento puede aplicarse a RNAs de capas mltiples y con funciones de salida no
lineales, con la nica condicin de que sean diferenciables.

El proceso general para implementar una RNA de este tipo requiere cuatro pasos:

Adquisicin de datos de entrenamiento


Creacin de la red
Entrenamiento de la red
Simulacin de la respuesta de la red ante nuevas entradas

3.1.3.1 CREACION DE UNA RNA TIPO BP MEDIANTE LA GUI nntool

La GUI nntool permite crear RNAs tipo BP con distintas arquitecturas. La arquitectura de
la red BP ms empleada es la RNA tipo BP de capas mltiples con prealimentacin (Feed-
Forward Backpropagation), otra de ellas empleada en esta tesis es la RNA BP con retardos
de tiempo.

Para crear una RNA tipo BP de capas mltiples con prealimentacin es necesario
seleccionar la opcin Feed-forward backprop del men Network Type en la ventana
Create New Network. Al realizar esta accin se despliega la ventana mostrada en la figura
3.6 la cual muestra los parmetros a introducir con el fin de personalizar la RNA.

Capitulo 3. Descripcin del Sistema 44


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

Fig. 3.6 Ventana desplegada para crear una RNA tipo BP de prealimentacin.

El primer dato a introducir con el fin de personalizar la RNA BP es el nombre que se le


asignara, esto dentro del espacio Network Name:, Matlab le asigna un nombre por omisin
(ejemplo: network1).

El rea Network Type: adems de mostrar un men para la seleccin de la arquitectura,


cuenta con sub-mens que permiten personalizar la arquitectura seleccionada. El primero
de ellos, Input ranges:, permite definir los limites de los valores en las seales de entrada.
Estos valores pueden ser asignados automticamente por Matlab, ubicando los valores
mximo y mnimo de un vector previamente declarado como de entradas en la ventana
Network/Data Manager.

La dimensin del vector de entradas debe ser: dos columnas, una para el limite inferior y
otra para el limite superior, y la misma cantidad de renglones como de entradas que se
hallan declarado en el espacio Number of layers:. El numero de nodos en la capa de
entrada ser la cantidad introducida en el espacio Number of layers:.

Durante el entrenamiento de una RNA BP los pesos y sesgos son ajustados de forma
interactiva de tal forma que se minimice la funcin de ejecucin de la RNA. La funcin de
ejecucin por omisin para la red con prealimentacin es la del error medio al cuadrado
(MSE por sus siglas en ingles), esto es: el error cuadrado promedio entre las salidas de la
red u y las salidas deseadas t (ver figura 3.7 en la opcin Performance function:). Otras
opciones de funciones de ejecucin son MSEREG y SSE. Esta opcin determina la forma
en la que los pesos de la RNA son ajustados, para una descripcin de la manera en la que
trabajan las opciones MSEREG y SSE se puede ver el Capitulo 5 de [1].

Software y Hardware empleado 45


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

Fig. 3.7 RNA BP personalizada

En el entrenamiento de una RNA BP el formato de las entradas puede ser como un solo
vector o una matriz que agrupe un conjunto de vectores de entrada en el cual cada elemento
de entrada ocupa un rengln (conocido como simulacin por lotes).

Para entrenar una RNA BP se requiere de vectores que contengan las entradas a la RNA y
los valores correctos de las salidas correspondientes.

Al disear una BP se puede seleccionar la funcin de transferencia a emplear tanto en la


capa oculta como en la de salida.

La seleccin de funcin de transferencia a utilizar, se realiza dentro del espacio Propiedades


de capas (Properties for:) en el men Transfer Function: (ver figura 3.7). las posibles
opciones son tres: Funcin Lineal (PURELIN, figura 1.8a), Tangente Sigmoidea
(TANSIG, figura 1.8b) y Sigmoidea Logartmica (LOGSIG, figura 1.8c).

En el men Properties for: la capa Layer 1 representa la capa oculta y Layer 2 la capa de
salida de la RNA BP creada. De la misma forma se puede definir el numero de neuronas en
la capa seleccionada dentro del espacio en blanco Number of neurons:.

El algoritmo a emplear para la etapa de entrenamiento se selecciona en el men Training


function:(ver figura 3.7), como se menciona anteriormente la RNA BP estndar es la que
empla una generalizacin de la Regla de Aprendizaje de Widrow-Hoff (en este caso la
opcin TRAINGD) la cual actualiza los pesos y sesgos de la RNA en la direccin en la
cual la funcin de ejecucin (Performance function:) disminuye mas rpidamente.

Existen siete parmetros de entrenamiento asociados con el entrenamiento de gradiente

Capitulo 3. Descripcin del Sistema 46


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

descendente, ver figura 3.8.

El parmetro lr (learning rate) es un factor de entrenamiento que multiplica el gradiente


negativo de la funcin de ejecucin, y determina la magnitud de los cambios a realizar en
los pesos y sesgos de la RNA BP.

La opcin show determina la cantidad de iteraciones del algoritmo antes de desplegar su


estado actual (se le puede asignar el valor NaN para anular dicho despliegue).

La opcin epochs determina la cantidad de iteraciones a realizar antes de parar el


entrenamiento.

El entrenamiento podra parar antes de realizar la cantidad de iteraciones determinadas en


epochs si el valor de la funcin de ejecucin toma un valor menor al del parmetro goal, si
el valor del gradiente es menor al valor introducido en mingrad, o si el tiempo de
entrenamiento es mayor que el consignado en el espacio time (en segundos).

El parmetro max_fail esta relacionado con tcnicas de optimizacin del paro de


entrenamiento.

Fig. 3.8 Ventana Training Parameters en la opcin Train.

Despus de haber personalizado la RNA creada se puede seleccionar la opcin Create para
generar en la ventana Network/Data Manager el objeto que emula la RNA BP con los
parmetros introducidos. Estando lista para inicializar sus pesos (Initialize), entrenarse
(Train), simularse (simulate) actualizarse (adapt).

En la tabla 3.1 se muestran los algoritmos de entrenamiento disponible para una RNA BP.

Software y Hardware empleado 47


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

Tabla 3.1 Funciones de entrenamiento disponibles en Matlab para una RNA BP

Funcin Matlab Descripcin


TRAINGD Los pesos y sesgos de la RNA se actualizan en la direccin del gradiente
negativo de la funcin de ejecucin. Respuesta lenta.

TRAINGDM Los pesos y sesgos de la RNA se actualizan en la direccin del gradiente


negativo de la funcin de ejecucin. Se emplea un nuevo parmetro
(momento) que permite esquivar mnimos locales. De esta forma la
actualizacin es funcin del ltimo cambio realizado y del gradiente.

TRAINGDA Se emplea un factor de entrenamiento variable. El factor de


entrenamiento se establece en base a las magnitudes de error
obtenidas en la iteracin actual y anterior. De igual forma los cambios
en pesos y sesgos son funcin sus valores actuales y anteriores.

TRAINGDX Es similar al entrenamiento TRAINGDA con la diferencia que en este


mtodo se emplea adems un parmetro de momento.

TRAINR Actualizacin incremental de orden aleatorio.

TRAINRP Retro propagacin con Resiliencia. Emplea el signo de la derivada de la


funcin de ejecucin para determinar el cambio en los pesos y sesgos,
la magnitud de la derivada no se considera.

TRAINCGF En los algoritmos de gradiente descendente conjugado se realiza una


bsqueda a lo largo de direcciones conjugadas de decremento del
gradiente para determinar la magnitud del cambio en los pesos y
sesgos. En este caso se emplea la actualizacin mediante el mtodo
Fletcher-Reeves, en el cual se determina la direccin del cambio en
base a la direccin de bsqueda de descenso de gradiente actual con la
anterior.

TRAINCGP Mtodo de gradiente descendente conjugado con el algoritmo Polak-


Ribire.

TRAINCGB Mtodo de gradiente descendente conjugado empleando el mtodo de


reestablecimiento de direccin de bsqueda Powell-Beale.

TRAINSCG Emplea un gradiente conjugado escalado. Es el nico algoritmo de


gradiente conjugado que no requiere una lnea de bsqueda.

TRAINBFG Emplea mtodos de Newton para el calculo de las actualizaciones.


Requiere almacenar una aproximacin de la matriz Hessiana.

TRAINOSS Mtodo de la secante de un paso. Es una combinacin de los mtodos


de gradiente conjugado y Newton.

TRAINLM Algoritmo de Levenberg-Marquardt. Emplea modificaciones para


disminuir el uso de memoria.

TRAINBR Regulacin Bayesiana. Modificacin al algoritmo Levenberg-Marquardt.

Capitulo 3. Descripcin del Sistema 48


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

3.1.4 ENTRENAMIENTO DE UNA RNA

Para entrenar la RNA creada, primero se debe seleccionar dicha RNA en la ventana
Network /Data Manager. Posteriormente se presiona el botn Train. Al hacer esto se
activa una nueva ventana con el titulo Network:Nombre de la RNA, vea la figura 3.8.

Dicha ventana permite observar datos concernientes al estado de la RNA, tal como valores
de inicializacin, parmetros de simulacin, y su arquitectura. La tecla Train contiene
opciones que permiten definir los datos de entrada y salida mediante la ventana Training
Info, figura 3.9. En dicha ventana se puede observar en el rea de Training Results que el
archivo con los datos de salida y errores tienen incluido al inicio el nombre de la RNA. Esto
permite identificarlos fcilmente si se desea exportarlos al espacio de trabajo de Matlab.

Fig. 3.9 Ventana con informacin del proceso de entrenamiento en nntool.

Para definir los parmetros que regirn durante el entrenamiento, tal como numero de
pocas, y error final es necesario dirigirse a la ventana Training Parameters que cuenta
con apartados que permiten definir dichos valores, figura 3.8.

Despus de haber definido los parmetros adecuados es posible activar el botn Train
Network el cual iniciara la ejecucin de dicha tarea.

Para verificar que una RNA ha sido entrenada adecuadamente es necesario retornar a la
ventana Network/ Data Manager y seleccionar la opcin Simulate del apartado
Networks Only, dicha opcin activara la ventana de la RNA y en ese momento se
selecciona la opcin Simulate, en la ventana desplegada por esta opcin se puede
modificar el nombre del archivo que almacena los datos de salida, as como los valores de
entrada y su origen, figura 3.10. Despus de hacer las modificaciones pertinentes se
presiona el botn Simulate network ubicado en la parte inferior derecha.

Software y Hardware empleado 49


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

Fig. 3.10 Ventana para introducir los datos a emplear en la simulacin de una RNA

3.1.5 EXPORTANDO DATOS A LA VENTANA DE TRABAJO DE MATLAB

Para exportar los datos generados por una RNA con destino el espacio de trabajo de Matlab
es necesario retornar a la pantalla Network / Data Manager, figura 3.2. Al estar en la
ventana Network / Data Manager se puede seleccionar los datos que se desea sean
exportados al espacio de trabajo de Matlab y seleccionar el botn Export lo cual dar las
opciones Export o Save from Network / Data Manager, figura 3.11. Si solo se desea
exportar los datos al espacio de trabajo de Matlab se selecciona la opcin Export. De otra
manera la segunda opcin Save almacenara los datos en un archivo MAT.

Fig. 3.11 Ventana para exportar datos desde nntool

Capitulo 3. Descripcin del Sistema 50


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

3.1.6 LIMPIAR LA VENTANA NETWORK / DATA MANAGER

Para limpiar la ventana Network/ Data Manager es necesario seleccionar cada una de las
variables presentes en la ventana y activar la opcin Delete, ver figura 3.2. De otra manera
ser necesario salir de Matlab, para volver a emplear el comando nntool y generar una
ventana limpia.

3.1.7 IMPORTANDO DATOS DESDE EL ESPACIO DE TRABAJO DE MATLAB

En la ventana Network / Data Manager existe la opcin Import la cual permite importar
los datos de una variable ubicada en el espacio de trabajos de Matlab o en un archivo de
unidad disco y generar su variable en la ventana Network / Data Manager, durante este
proceso se le puede asignar un nombre distinto a la variable generada en la ventana
Network/ Data Manager.

3.2 SIMULINK

Para crear en Simulink el modelo de una RNA creada en la caja de herramientas nntool y
previamente exportarla al espacio de trabajo de Matlab, se emplea el comando
gensim(net,tm) donde net es el nombre de la RNA a la cual se le desea generar su modelo y
tm es el tiempo de muestreo del bloque a generar, el valor por omisin para el tiempo de
muestreo es de -1, esto es muestreo continuo y es aplicable solo cuando la RNA no
contiene retardos de tiempo en alguna de sus capas.

3.2.1 USO DEL BLOQUE TAPPED DELAY

El bloque Tapped Delay puede encontrarse en la ventana Simulink Library Browser


dentro de la librera Discrete, figura 3.12. Este bloque nos permite retardar una seal
escalar durante mltiples periodos de muestreo y retorna todos los valores correspondientes
a los retardos.

El periodo de tiempo entre cada una de las muestras se introduce mediante el parmetro
Sample time:, ver figura 3.13. La cantidad de retardos de tiempo a aplicar en la seal se
introduce en el espacio Numbers of delays:. El bloque recibe una entrada escalar y genera
una salida por cada retardo de tiempo. El orden en los elementos del vector de salida se
determina en la lista de opciones Order output vector starting whit:. Las dos opciones
posibles son Oldest que ordena los elementos del vector de salida comenzando con la el
valor ms antiguo de la seal y finalizando con el ms actual y Newest que los ordena
comenzando de forma contraria. Los valores en la salida del bloque para el primer periodo
de muestreo se especifica en el parmetro Initial condition. La opcin Include current
input in output vector permite incluir los valores actuales de la seal en el vector de
salida.

Software y Hardware empleado 51


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

Fig. 3.12 Ventana con libreras de bloques en Simulink

Fig. 3.13 Parmetros de ajuste para un bloque de retardos de tiempo

Capitulo 3. Descripcin del Sistema 52


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

3.3 REAL TIME WORKSHOP [2]

Real-Time Workshop (RTW) es una extensin de capacidades para Simulink y Matlab que
permite compilar y generar automticamente el cdigo fuente de modelos desarrollados en
Simulink. De esta manera se pueden crear aplicaciones de software en tiempo real.

Algunos de los principales componentes y objetos que maneja RTW son:

El Generador de Cdigo Simulink (Simulink Code Generator), el cual


automticamente genera el cdigo C que representa exactamente al modelo
desarrollado en Simulink

El Creador de Proceso (Make Process), el Creador de Proceso permite construir


aplicaciones con especificaciones particulares en la compilacin y conexin del
cdigo generado.

Modo Externo de Simulink (Simulink External Mode), permite la comunicacin


entre Simulink y un modelo que se este ejecutando en tiempo real. Mediante esta
opcin se puede ajustar algunos parmetros de ejecucin, de almacenamiento de
datos, y observar el modelo mediante la ventana de Simulink.

Soporte de Dispositivos (Targeting Support), mediante esta herramienta se pueden


emplear una gran variedad de drivers incluidos dentro de RTW que permiten disear
aplicaciones para ejecutarse en dispositivos o plataformas ya declaradas en RTW. Se
puede emplear una gran variedad de tarjetas de adquisicin de datos de terceros
fabricantes, en nuestro caso la tarjeta PCI6014 de National Instruments.

3.3.1 DESARROLLO DE UNA APLICACIN EN RTW

La forma en que se desarrolla una aplicacin con RTW puede observarse en el diagrama de
flujo en la figura 3.14.

En primer lugar se deben determinar los parmetros adecuados de configuracin referentes


a la ejecucin del programa, al hardware a emplear, a la optimizacin de las tareas y a
parmetros de RTW. Para realizar esto se utiliza la ventana Configuration Parameter la
cual se puede acceder en el men Simulation de Simulink. La modificacin de los
parmetros de configuracin afectara el comportamiento de un modelo en la simulacin y
en la generacin de su cdigo. Para una lista y descripcin de las posibles opciones de
configuracin se puede consultar el capitulo 2 del manual Getting Started [2].

Despus de introducir los parmetros adecuados de configuracin es conveniente ejecutar


la aplicacin en forma de prueba antes de genera el cdigo fuente. En la ventana del
modelo (Simulink) se puede elegir la opcin Model Advisor del men Tools que permite
ejecutar en modo de prueba un modelo y generar un reporte con los parmetros de
configuracin as como diagnostico de eficiencia en sus tareas.

Software y Hardware empleado 53


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

Identificacin de requerimentos
para las opciones de configuracin
de la aplicacin.

Ajuste de parmetros
de configuracin

Ejecucin de la Aplicacin

S
Se requiere ajustar la
configuracin?

No

Generar cdigo

No
Es correcto el Cdigo?

Generar cdigo y
un programa ejecutable

Verificar el programa ejecutable

No
Los resultados imitan
la simulacin?

Guardar los valores de configuracin

FIN

Fig. 3.14 Diagrama de flujo para la creacin de una aplicacin en RTW [2].

Despus de obtener un comportamiento adecuado en la ejecucin del modelo se puede


proceder a generar el cdigo del modelo, es probable que se desee solo generar el cdigo
del modelo sin necesidad de generar su archivo ejecutable, esto se puede realizar mediante
la seleccin de la opcin Generate code only de la ventana Configuration Parameters, en
el men Real-Time Workshop, figura 3.15. De esta forma se puede analizar si la respuesta
del modelo compilado es la adecuada o si es necesario realizar modificaciones. Si la
respuesta es la adecuada se puede proceder a crear el archivo ejecutable. Para esto se
emplea la opcin Build presente en la ventana Configuration Parameter, de esta forma se
crean los archivos necesarios dentro del directorio de trabajo. La mayora de las
aplicaciones realizadas en Simulink requieren modificar el tipo de solucionador (Solver
options: Type) que indica el algoritmo a emplear durante la ejecucin de tareas.

Capitulo 3. Descripcin del Sistema 54


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

Fig. 3.15 Ventana parmetros de configuracin para RTW.

Otra forma de verificar los parmetros pero en forma individual para cada uno de los
elementos del modelo es mediante la ventana Model Explorer ubicada en el men View en
Simulink, ver figura 3.16. Mediante esta ventana se pueden analizar, modificar y guardar
parmetros correspondientes a un modelo determinado.

Fig. 3.16 Ventana para explorar modelos de Simulink.

Desde la ventana del modelo creado en Simulink se puede generar el cdigo y su archivo
ejecutable mediante la opcin Build Model(ctrl.+B), en el submen Real-Time

Software y Hardware empleado 55


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

Workshop del men desplegable Tools. Durante el proceso de compilacin se crean una
gran variedad de archivos temporales y otros requeridos por RTW, estos son colocados
dentro del directorio de trabajo en una carpeta con el nombre del modelo. Para una lista y
descripcin de los archivos creados durante la construccin de una aplicacin se puede
consultar el capitulo 2 de Getting Started en [2].

Al crear una aplicacin particular se requiere especificar el elemento final que la ejecutara
(System Target), RTW cuenta con algunas configuraciones ya definidas de tal manera que
al seleccionar alguna de ellas se realizan los ajustes adecuados en los elementos a emplear,
en este trabajo se utilizara Real-Time Window Target como ambiente de ejecucin del
programa a realizar por lo que es necesario seleccionar la opcin rtwin.tlc del men RTW
system target file en la ventana Configuration Parameters. Si se desea monitorear o
almacenar en un archivo alguna de las seales generadas durante la ejecucin del programa
se puede seleccionar la opcin Enable archiving presente en la ventana External Data
Archiving del submen External Model Control Panel del men tools de Simulink.

Despus de generar el archivo de la aplicacin en tiempo real es necesario habilitar la


opcion External del men Simulation en Simulink para poder ejecutarlo. Existen
parmetros de los bloques empleados en el modelo que pueden ser actualizados durante su
ejecucin, otros requieren parar la aplicacin para ser modificados y posteriormente volver
a generar la aplicacin de tiempo real (Build) ya que son parte de la estructura del cdigo
generado.

3.4 REAL TIME WINDOWS TARGET [3]

Real Time Windows Target (RTWT) es una caja de herramientas de Matlab que permite
extender las habilidades de Simulink, de tal forma que los modelos generados en Simulink
puedan ser empleados como interfase grafica entre el usuario y una aplicacin de tiempo
real, permitiendo visualizar seales, ajustar parmetros y controlar la aplicacin en tiempo
real .

La ventana que nos permite emplear bloques de conexin entre la aplicacin software y el
sistema fsico empleando RTWT se puede acceder en la ventana de libreras de Simulink
(Simulink Library Browser), figura 3.17, en el submen Real-Time Windows Target.
En la ventana de bloques de RTWT se puede seleccionar alguna de los canales de seal
disponible en los dispositivos configurados. El tipo de bloque que pueda utilizarse
depender del dispositivo seleccionado. Los parmetros de configuracin de la seal
seleccionada se pueden modificar en la ventana Block Parameters : Analog Input, figura
3.18. Los parmetros comunes en una gran cantidad de tarjetas son: El tiempo de muestreo
(Sample Time:), que determinara la frecuencia con la que se realizan las mediciones en las
seales de entrada o salida y la unidad de tiempo que se emplea es el segundo.

El numero de entrada o salida que se pretende emplear, Input channels:, por si existen
varios canales de entrada o salida en el dispositivo seleccionado. El rango de valores en las
seales de entrada, Input range:. Y el tipo de dato a la salida del bloque seleccionado,
Block output signal:.

Capitulo 3. Descripcin del Sistema 56


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

Fig. 3.17 Ventana de la caja de herramientas RTWT.

Fig. 3.18 Ventana de configuracin para una entrada analgica en RTWT.

Para una descripcin mas detallada de los tipos de bloque disponibles y sus parmetros de
configuracin se puede ver el capitulo 4 de la gua de usuario en [3]. En la misma ventana
Block Parameters: se puede dar de alta alguna de las tarjetas de adquisicin de datos
compatible con RTWT, dentro de la opcin Install new board se puede seleccionar alguna
de las tarjetas de terceros fabricantes, figura 3.19, dentro de este men se puede seleccionar
la tarjeta PCI-6014 de National Instruments empleada en esta tesis.

Software y Hardware empleado 57


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

Fig. 3.19 Seleccin de tarjeta compatible con RTWT.

3.5 TARJETA PCI6014

En la computadora es posible tener dispositivos para la adquisicin de datos de forma


sencilla. Estos se pueden instalar a travs de los puertos de comunicacin estndar
PCI/PXI, USB, RS232, etc. La forma en que convierten estos dispositivos las seales
analgicas a digitales esta basado en el teorema de Nyquist. De acuerdo a este teorema el
periodo de muestreo debe ser el doble de la frecuencia mayor encontrada en la seal a
examinar para que sta pueda ser reconstruida posteriormente sin prdida de informacin.
A la mitad de la frecuencia de muestreo se le conoce como frecuencia de Nyquist.
Tericamente, es posible recuperar informacin de una seal cuya frecuencia sea cercana o
menor al valor de la frecuencia de Nyquist [4].

La tarjeta PCI6014 de National Instruments es una herramienta utilizada para la


adquisicin de datos. Puede ser usada, entre otras aplicaciones, como lectora de seales
proveniente de sensores ya que cuenta con 16 entradas analgicas de 16 bits a una
frecuencia mxima de muestreo de 200 KHz. Estas y otras caractersticas tcnicas de la
tarjeta se encuentran en la Tabla 3.2.

La conexin elctrica entre la tarjeta PCI6014 y el PIS se realizaron empleando un bloque


de conexiones CB-68LPR de National Instruments adecuado para este tipo de tarjetas ya
que cuenta con 68 bornes de conexin. El cable de conexin entre la tarjeta y el bloque de
conexiones fue un cable blindado SH68-68-EP.

Capitulo 3. Descripcin del Sistema 58


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

Tabla 3.2 Datos tcnicos de la tarjeta PCI6014 de National Instruments [4].

Tarjeta PCI 6014 (National Instruments)


Tipo de Bus Entradas Resolucin de Mximo rango Rango de Salidas
Analgicas la entrada de muestreo entradas Analgicas
entrada
PCI 16 16 bits 200 kS/s 0.05 a 10 2
V

Resolucin de Mximo rango Rango de Entradas/ Contadores Exactitud en


la salida de muestreo salida Salidas rango
salida Digitales 10 V
16 bits 10kS/s 10 V 8 2 - 24 bits 3.835 mV

3.6 INTERFAZ DE POTENCIA

La interfaz entre la tarjeta de adquisicin de datos y el motor de c.c. del PIS se realiza
mediante un amplificador de corriente lineal implementado con un amplificador
operacional (CI 1) y transistores BJT (T1 y T2). En el circuito se emplean dos transistores
con caractersticas elctricas idnticas (uno de ellos PNP y el otro NPN) en configuracin
emisor-seguidor, con los emisores conectados entre s (ver figura 3.20).

El motor de c.c. es alimentado a travs de los transistores BJT. Cuando el control del PIS
requiere que el motor gire en un sentido y a cierta velocidad, el amplificador operacional
acopla la seal de la tarjeta 6014 con los transistores de potencia. Estos amplifican la seal
en corriente para mover al motor con la velocidad y giro adecuado. El amplificador
operacional se realimenta (a travs de R2) del voltaje que le llega al motor para asegurarse
que la seal recibida de la tarjeta se transfiera fielmente al motor. La corriente que
proporcionan los transistores al motor son tomados de una fuente de voltaje adicional. Esta
fuente de voltaje proporciona un voltaje de +V=12 V. y V=-12 V a 3 amperios.

Con la finalidad de mantener un voltaje de alimentacin constante en los sensores de


posicin S1 y S2 se utiliz un diodo Zener. Como referencia para la seleccin del diodo
zener y su resistencia limitadora de corriente R3 se puede consultar a Zbar [5].

3.7 SISTEMA PIS

Para convertir el movimiento oscilatorio del pndulo y el movimiento lineal de la base en


una seal elctrica observable se emplearon dos potencimetros, RV1 y RV2
respectivamente, tal como se muestra en la figura 3.20. El potencimetro es un elemento
resistivo con un contacto mvil (cursor) que puede ser posicionado en cualquier lugar a lo
largo del elemento resistivo. La posicin deseada se logra mediante un vstago que est
unido por un extremo al cursor y por otro hacia el mecanismo que lo mueve. La relacin
posicin angular/resistencia de RV1 y RV2 es lineal, es decir, la resistencia del
potencimetro est distribuida de manera uniforme en toda la carrera que recorre el cursor.

Software y Hardware empleado 59


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

Para que el potencimetro proporcione una seal de tensin proporcional a la posicin del
cursor ste se conecta como divisor de tensin. La terminal de uno de los extremos se
conecta al voltaje fijo regulado por R3 y DZ1 y la del otro extremo a tierra. De la terminal
central con respecto a tierra se obtiene el voltaje proporcional al ngulo de giro. Para
conocer la posicin del pndulo se monitorea la seal S1 y para la posicin de la base mvil
la seal S2.
PARTE ELECTRICA DEL SISTEMA PIS
R3

DZ1 RV1 RV2


S1 S2
E1 +12 V
E2 Seal de entrada

E1 E3 - 12 V

S1 Cursor en Pndulo
R2 S2 Cursor en base

CI1 LM741
R1 T1 R1 10 K
E2 10 K
R2
CI1 R3 120
M1
T1 TIP31
T2
T2 TIP32

DZ1 10 V

M1 Motor 12 VCD

E3

Fig. 3.20 Circuito elctrico de la interfaz de potencia

El elemento impulsor para desplazar la base mvil del PIS es un motor de corriente directa
de 12 V y 1 A. Para transformar el movimiento giratorio del motor a un movimiento lineal
(y permita el desplazamiento horizontal de la base mvil) se ha utilizado un engrane y una
banda dentada como se puede observar en la figura 3.21. La carrera (longitud de
movimiento horizontal) del la base mvil es de 30 cm. aproximadamente. Esta base se
mueve horizontalmente sobre una barra gua para mantenerse en movimiento en un solo
eje.

Motor Impulsor
(M1) Engrane Base mvil Banda de transmisin
Barra Gua

Fig. 3.21 Sistema motriz del PIS

Capitulo 3. Descripcin del Sistema 60


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

REFERENCIAS DEL CAPITULO

1. Demuth, H. and M. Beale, Neural Networks Toolbox Users Guide. Version 4 ed. 2000,
Natick,MA: The MathWorks,Inc. 1-208.
2. MathWorks, Getting Started whit Real-Time Worshop For Use Whit Simulink. Version 6
ed. 2004, Natick, MA: The Mathworks, Inc. 1_1-3_51.
3. MathWorks, Real-Time Windows Target Users Guide. Version 2 ed. 2004, Natick,MA:
The Mathworks, Inc.
4. Instruments, N., The Measurement and Automation, in Catalog 2004. 2004, National
Instruments: Austin, Tx.
5. Zbar, P.B., A.P. Malvino, and M.A. Miller, Prcticas de Electrnica. 2001: AlfaOmega
Grupo Editor. 113-119.
6. Maloney, T.J., Electrnica Industrial Moderna. 3 ed. 1997: Prentice Hall. 338-342.

Software y Hardware empleado 61


CAPITULO 4
IMPLEMENTACION DEL CONTROLADOR

En este capitulo se describe la implementacin del controlador de posicin del PIS utilizando
redes neuronales. Se presenta el comportamiento del prototipo utilizando un controlador PID y
la forma en que ste se modific para generar datos vlidos para entrenar la red. Tambin se
describe el proceso de entrenamiento de la red para varios conjuntos de datos.

Para entrenar una RNA BP, empleando tcnicas de entrenamiento supervisado, es necesario
contar con informacin referente al comportamiento del sistema como los son datos de entrada
y salida. En nuestro caso los datos de entrada son las seales provenientes de los sensores de
posicin (potencimetros) y los de salida la seal de voltaje que se inyecta al motor de c.d. En
la figura 4.1 se presenta un esquema de los elementos utilizados en el prototipo desarrollado
as como el flujo de datos entre ellos. La computadora es utilizada para monitorear, procesar y
pos-procesar los datos. Adems en ella est incluido el algoritmo de la red neuronal
implementado en Matlab-Simulink. La interfaz incluye la tarjeta de adquisicin de datos as
como la etapa de potencia que permite accionar al motor. La interfaz es quien permite la
comunicacin entre la computadora y el mundo real. A travs de sus entradas analgicas
recibe la informacin de los sensores de posicin (posicin del pndulo ( ) y de la base
mvil x(t)) y mediante su salida analgica enva la seal de voltaje v(t) al motor del sistema
motriz.

PROTOTIPO

PIS
Sistema Motriz (t)
(t+1)
v(t) M

x(t) x(t+1)

INTERFAZ

PC :
Ejecuta Controlador:
PID o RNA

Almacena y Despliegua
datos

Fig. 4.1 Esquema de los elementos del prototipo PIS

Para obtener los datos tanto de entrada como de salida se puede emplear uno de los mtodos
Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

encontrados en la literatura, por ejemplo:

Empleando valores generados en un programa simulador ejecutado en una


computadora [1, 2],

Mediante la variacin manual del voltaje de alimentacin del motor [3] o

Mediante el monitoreo del sistema PIS-Controlador empleando un regulador


Proporcional-Integral-Derivativo (PID) [1], o algn otro de los controladores como los
presentados en el apartado 2.1.2.

4.1 PROTOTIPO PIS

En la figura 4.2 se presenta el prototipo desarrollado para implementar el sistema de control


con redes neuronales. Se compone bsicamente de un sistema elctrico-electrnico y un
sistema mecnico. El primero de ellos est compuesto por las fuentes de alimentacin, bloque
de conexiones, interfaz de potencia, motor y sensores de posicin. El segundo lo compone la
base mvil, el pndulo, banda, poleas y barra gua.

Las seales de realimentacin en nuestro PIS son una seal de voltaje proporcional a la
posicin angular del pndulo y otra proporcional a la posicin longitudinal de su base mvil.
La seal de control es el voltaje de alimentacin aplicado al motor de corriente directa M1.
Esta seal de control est limitada al rango de +10 a -10 V de la salida analgica de la tarjeta
6014.

Debido a que el clculo, diseo y seleccin de los componentes utilizados en el desarrollo del
prototipo estn fuera del mbito de esta tesis no se har referencia a ellos a menos que sea
necesario.

Fuente de Voltaje Bloque de conexiones


+12V...-12V Interfaz de Potncia CB-69LPR

Barra del PIS

Sensor RV2
Posicin de base mvil (x )
Motor Impulsor
(M1)

Sensor RV1
Angulo de la barra ()

Adquisicin de datos. Creacin, entrenamiento e implementacin de la RNA BP 63


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

Fig. 4.2 Prototipo del PIS empleado.

Para desarrollar el modelo matemtico de un PIS regularmente se hacen las siguientes


consideraciones:

La longitud del desplazamiento horizontal de la base mvil es infinita (en nuestro


prototipo es de 30 cm.).

El rango de voltaje que puede tener la seal de alimentacin al motor impulsor es


infinito (en nuestro caso est limitado a +10 -10 V).

La friccin, regularmente desconocida, que existe entre el cursor y la resistencia de los


sensores de posicin (RV1 y RV2) se desprecia.

El centro de masa de la barra-pndulo se puede encontrar ubicado en una posicin


distinta a la geomtrica debido a la no homogeneidad del material.

El plano en el cual se desplaza la base mvil puede no ser perfectamente perpendicular


al plano en el cual se realiza la oscilacin.

Por otro lado, debido a que en nuestro prototipo PIS se presentan tiempos muertos (el motor
M1 no comienza a girar sino hasta despus de un voltaje mnimo ( 1.7 Volts) y la banda de
transmisin no es completamente rgida, etc.) su comportamiento es distinto al del PIS ideal
modelado en la seccin 2.1.

4.2 ADQUISICIN DE DATOS DE ENTRENAMIENTO

Mediante la variacin manual del voltaje de alimentacin de M1 es posible controlar la


posicin de la base mvil, de tal forma que se logre el equilibro del pndulo, actuando de
forma similar a cuando se mueve el brazo para equilibrar una escoba (barra del PIS) apoyada
sobre la palma de la mano (base mvil).

En primera instancia se intento obtener los datos de entrenamiento modificando manualmente


la alimentacin del motor impulsor M1, empleando una palanca de control de juegos de video,
y monitoreando el voltaje presente en los cursores de los potencimetros RV1 y RV2, esto con
el fin de mantener en equilibrio la barra y obtener los valores correspondientes con respecto al
tiempo (t). Sin embargo esta opcin fue descartada por lo difcil que es adquirir la habilidad
para estabilizar el PIS. Debido a esto, en esta tesis se emplea un procedimiento similar al
mostrado por Chou [1], esto es, empleando un controlador clsico y ajustando sus parmetros
mediante prueba y error hasta lograr un comportamiento aceptable.

De acuerdo a Anderson [4], es posible obtener una seal de control (que tienda a equilibrar el

Capitulo 4. Implementacin del controlador 64


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

sistema) conociendo los valores de posicin angular del pndulo y posicin horizontal de la
base mvil as como los de sus respectivas derivadas (ecuacin 2.16) [1].

Siguiendo el ejemplo de Chou [1], se procede a implementar un controlador con el regulador


proporcional, integral, y derivativo (PID) en Simulink, como se muestra en la figura 4.3. En
este controlador la seal de posicin angular de la Barra-Pndulo se filtra para reducir el ruido
inherente de la entrada analgica de la tarjeta.

Fig. 4.3 Controlador PID con filtro


Grados (180= Pi radianes)

Posicin angular de la barra-pndulo ( Referencia cero en vertical )

20

-20

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2


tiempo (ms) 4
x 10

Posicin horizontal Base mvil ( Respecto a centro de superficie de apoyo )


10
cm (100 cm = 1 m)

-5

-10
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
tiempo (ms) 4
x 10
Salida controlador PID con Filtro
Posteriormente se trunca a valores de +10......-10 V
50
Volts

-50
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
tiempo (ms) 4
x 10

Adquisicin de datos. Creacin, entrenamiento e implementacin de la RNA BP 65


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

Fig. 4.4 Respuesta del PIS utilizando el controlador PID con filtro

La respuesta del sistema utilizando el controlador PID con filtro se presenta en la figura 4.4.
En el eje x se encuentra la escala del tiempo (en milsimas de segundo) y en el eje de las
ordenadas la magnitud de voltaje proporcional a las seales de entrada y salida utilizadas
(multiplicado por su factor de conversin para graficarse en unidades adecuadas, ngulo o
desplazamiento lineal).

Como se puede observar el ngulo del pndulo y la posicin de la base mvil es oscilatoria y
tienden a crecer a medida que pasa el tiempo. En t = 8 s y 16 s las seales alcanzan una
magnitud importante por lo que es necesario modificar manualmente el ngulo del pndulo
mediante un pequeo empujn en el pndulo para evitar que la base mvil salga de sus limites
de desplazamiento horizontal.

Mediante prueba y error se decide aadir reguladores integrales y derivativos en paralelo al


controlador mostrado en la figura 4.3, logrando una mejora en la tarea de control al colocar
dos integradores en paralelo con los elementos anteriormente empleados, tomando el
controlador la forma final mostrada en la figura 4.5.

Fig. 4.5 Controlador PID con filtro y un elemento doble integrador

El comportamiento del PIS con el controlador PID con filtro y elemento doble integrador se
muestra en la figura 4.6.

Dentro del conjunto de valores que se obtienen al controlar el prototipo PIS mediante los
reguladores proporcionales, integrales y derivativos existen datos que corresponden a
diferentes condiciones, algunos de ellos corresponden a periodos donde el prototipo ha estado
expuesto solo a la seal de control, y otros corresponden a fracciones de tiempo en el cual se
introdujo un impulso para evitar que la base mvil salga de sus lmites en la horizontal (ver
grafica 1 de la figura 4.6).

El mejor comportamiento de la RNA como imitadora del controlador es cuando los datos de

Capitulo 4. Implementacin del controlador 66


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

entrenamiento corresponden a segmentos de tiempo en el cual el prototipo esta expuesto solo a


la accin del controlador.
Posicin angular de la barra-pndulo (Referenciua cero en vertical)
Grados (180 = Pi radianes)
perturbacin
20 introducida

-20 Periodo de actuacin de solo el controlador

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2


tiempo (ms) 4
x 10
Posicin horizontal Base mvil (Respecto a centro de superficie de apoyo)
15
10
cm (100 cm = 1 m )

5
0
-5
-10
-15
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
tiempo (ms) 4
x 10
Salida controlador PID con doble integrador
Posteriormente se trunca a valores +10 ... -10 V
50
Volts

-50
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
tiempo (ms) 4
x 10
Fig. 4.6 Respuesta del PIS ante un controlador PID con doble integrador

4.3 EMULACION DE LA RNA BP EMPLEANDO MATLAB

Considerando el comportamiento del controlador PID con filtro, el controlador PID con doble
integrador y sus respetivas seales de control la tarea a imitar por la RNA BP, se procede a
implementar la RNA BP mediante la herramienta nntool de Matlab. Los parmetros
empleados se muestran en las figuras 4.7 y 4.8. Estos corresponden a una RNA BP de
realimentacin (RNA BP1) y una RNA BP con retardos de tiempo en sus entradas (RNA
BP2).

Adquisicin de datos. Creacin, entrenamiento e implementacin de la RNA BP 67


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

Fig. 4.7 Parmetros empleados para crear la RNA BP1

Fig. 4.8 Parmetros empleados para crear la RNA BP2

Los parmetros mostrados en dichas figuras fueron seleccionados despus de probar con
distinta cantidad de neuronas en la capa de entrada (layer 1), empleando las funciones de
transferencia disponibles en la ventana Create New Network / Transfer Function: y
analizando el proceso de aprendizaje de la RNA. En las figuras 4.9 y 4.10 se muestran las
representaciones graficas generadas por Matlab correspondientes a las RNA BP1 y RNA BP2.

Fig. 4.9 Representacin grafica de la RNA BP1

Fig. 4.10 Representacin grafica de la RNA BP2

Como se puede observar en las figuras 4.9 y 4.10 las dos RNAs creadas contienen la misma
cantidad de neuronas en la capa de entrada (columna izquierda obscurecida, dos neuronas),
cada una de ellas monitoreando la seal de realimentacin correspondiente (RV1 y RV2). La

Capitulo 4. Implementacin del controlador 68


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

RNA BP1 tiene mayor cantidad de neuronas en la capa oculta (14 neuronas) que la RNA BP2
(7 neuronas), pero la RNA BP2 tiene 4 retardos de tiempo en sus entradas (ver la opcin Input
delay vector: de la figura 4.8) que le permiten considerar mayor cantidad de informacin en el
aprendizaje de la funcin a imitar, al contar con una cantidad menor de elementos de
aprendizaje (neuronas en cualquiera de las capas o retardos de tiempo en alguna de sus
neuronas) la RNA podra no ser capaz de aprender la funcin deseada, por otro lado un exceso
de elementos podra provocar que la RNA solo memorice los datos presentados durante su
entrenamiento. La arquitectura seleccionada en este caso presenta un comportamiento
adecuado en su aprendizaje.

Al crear las RNAs se define la regla de aprendizaje a utilizar, que en este caso es la de
Gradiente Descendente ( Seccin 2.2.8.2) por ser la mas simple en caso de desear emular la
RNA en otro ambiente de programacin y poder reproducir los resultados obtenidos, tomando
como funcin de ejecucin el Error Medio Cuadrtico (Seccin 3.1.3.1) que nos permite
observar la convergencia de la RNA.

4.4 ENTRENAMIENTO DE LAS RNAs BP

Cuando se cuenta con un conjunto de datos que representan el comportamiento deseado y se


define la arquitectura de RNA BP que se empleara para aprender la tarea, lo que sigue a
continuacin es seleccionar el conjunto de datos que contengan la informacin necesaria para
identificar la tarea a imitar. La informacin puede ser presentada en la forma adquirida por la
interfaz o pueden normalizarse sus valores para resaltar los atributos de inters que
predominaran durante el entrenamiento. En el Apndice A se presenta el programa Matlab que
normaliza el rango de valores del vector de entrenamiento empleado en este caso.

Al momento de entrenar una RNA BP se debe tener presente que el contenido de los vectores
de entrenamiento determinan la funcin aprendida por la RNA. Para el caso de una RNA que
no contiene retardos de tiempo no es tan importante el orden de los elementos del vector de
entrenamiento (pares entrada-salida deseada), pero para el caso en que estn presentes retardos
de tiempo (RNA BP2), tanto el orden de los elementos en el vector de entrenamiento como los
valores iniciales que se le asignan a dichos retardo son cruciales para determinar la funcin
asimilada por la RNA. Al realizar esta tesis errneamente se le asignaban condiciones iniciales
con valor 0 a los retardos de tiempo y el valor de error MSE obtenible en el entrenamiento de
las RNA BP1 y RNA BP2 no se diferenciaban significativamente, esto es, aprendan una tarea
muy similar. Creando un nuevo conjunto de datos que representen las condiciones iniciales en
los retardos de tiempo de la RNA BP2 (los cuales corresponden a los datos empleados en el
conjunto de entrenamiento) y empleando este como condiciones iniciales de los retardos es
posible lograr un aprendizaje ms similar a la tarea deseada. En el Apndice B se presenta el
programa empleado para generar el arreglo de vectores de las condiciones iniciales de los
retardos de tiempo.

Para llevar a cabo el entrenamiento de la RNA BP es necesario definir los parmetros que se
utilizaran durante el proceso, una adecuada seleccin de los parmetros de entrenamiento
permitir a la RNA BP aprender la tarea deseada (ver seccin 2.2.10). Para el entrenamiento
realizado en esta tesis se emplearon los parmetros de entrenamiento mostrados en las tabla

Adquisicin de datos. Creacin, entrenamiento e implementacin de la RNA BP 69


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

4.1 y 4.2 (por conveniencia esta ltima se presenta en una pgina posterior).

Tabla 4.1 Parmetros de entrenamiento empleados en la RNA BP1

Datos controlador PID con filtro

Ciclo pocas Meta MSE Factor de MSE


Aprendizaje Valor Ultimo Figura
1 1000 0 0.1 83.62
2 3000 0 0.01 59.45 4.11
3 3000 0 0.005 58.39
TOTAL EPOCAS 7000
Al seleccionar de manera inadecuada el factor de entrenamiento se puede presentar un
comportamiento no deseado en la convergencia de la RNA, un factor de entrenamiento
inadecuado puede provocar que la RNA detenga su convergencia y comience a oscilar dentro
de un rango de valores [5]. Los valores del error medio cuadrtico (Mean Square Error MSE)
obtenido de la RNA BP1 durante su entrenamiento se presentan en la figura 4.11.

El entrenamiento de la RNA BP1 puede detenerse en un valor determinado de su valor MSE,


en esta tesis se considera adecuado el valor de error obtenido al finalizar su tercer ciclo de
entrenamiento el cual presenta la salida y error mostrados en la figura 4.12. El entrenamiento
es detenido en este punto ya que haciendo modificaciones en los parmetros de entrenamiento
y aumentando la cantidad de ciclos no se observa una disminucin relevante en el valor de
error de la RNA BP1 ( grafica inferior de figura 4.12).

Como podemos ver en la figura 4.11 la RNA despus de aproximadamente 500 ciclos de
entrenamiento comienza a disminuir su convergencia pero variando sus parmetros de
entrenamiento (tabla 4.1) aun se logra disminuir el valor de MSE ( hasta obtener un valor final
de 58.39).

2
MSE en ultimo ciclo: 58.3911 , Meta: 0
10
Valor Mean Square Error

1
10

0
10
0 1000 2000 3000 4000 5000 6000 7000
Epocas

Fig. 4.11 Valores MSE de RNA BP1 durante su entrenamiento

De la figura 4.12 podemos observar que la RNA BP1 se comporta como filtro de seal que

Capitulo 4. Implementacin del controlador 70


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

como imitadora de la funcin, siendo mas parecido a la salida deseada el valor de error
obtenido, a pesar de ello la seal de control que genera presenta un comportamiento aceptable
en el PIS.

Para el entrenamiento de la RNA BP2 se emplearon los dos conjuntos de datos obtenidos,
tanto del controlador PID con filtro como del controlador PID con doble integrador, con el fin
de obtener dos RNAs cada una de ellas emulando el comportamiento presentado en su
conjunto de entrenamiento. El conjunto de valores de entrada-salida deseada obtenidos por el
controlador PID con filtro fue el mismo que el empleado para entrenar la RNA BP1, la
normalizacin en el vector de entradas fue el mismo para las RNA BP1 y RNA BP2, ver
Apndice A. Los parmetros a emplear durante el entrenamiento de la RNA BP2 se presentan
en la tabla 4.2.

Salida deseada (Salida Control PID con filtro)


40
20
Volts

0
-20

-40
0 500 1000 1500 2000 2500 3000 3500 4000
4000 patrones de salida deseada
Salida RNA BP1 ante sus patrones de entrenamiento
40

20
Volts

-20

-40
0 500 1000 1500 2000 2500 3000 3500 4000
Error obtenido en la RNA BP1 con el conjunto de entrenamiento
20

-20
0 500 1000 1500 2000 2500 3000 3500 4000

Fig. 4.12 Respuesta de la RNA BP1 despus del tercer ciclo de entrenamiento

Tabla 4.2 Parmetros de entrenamiento empleados en la RNA BP2

Datos controlador PID con filtro

Ciclo pocas Meta MSE Factor de MSE


Aprendizaje Valor Ultimo Figura
1 1000 0 0.01 80.49
2 2000 0 0.0005 62.09
3 2000 0 0.0003 59.62
4 2000 0 0.0003 25.22 4.13
TOTAL EPOCAS 7000

Adquisicin de datos. Creacin, entrenamiento e implementacin de la RNA BP 71


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

Datos controlador PID con doble integrador .


1 1000 0 0.01 28.72
2 3000 0 0.005 21.14
3 10000 0 0.003 7.50
TOTAL EPOCAS 14000

El comportamiento en el valor MSE de la RNA BP2 durante su cuarto ciclo de entrenamiento


empleando el conjunto de valores obtenidos por el controlador PID con filtro se muestra en la
figura 4.13.

MSE en ultimo ciclo 25.2226, Meta: 0


4
10

3
10
Valor Mean Square Error

2
10

1
10

0
10
0 200 400 600 800 1000 1200 1400 1600 1800 2000
Epocas

Fig. 4.13 Valores MSE de RNA BP2 durante el cuarto ciclo de entrenamiento
(Datos obtenidos de controlador PID con Filtro)

El entrenamiento de la RNA BP2 puede detenerse en un valor determinado de su MSE, en esta


tesis se considera adecuado el valor de error obtenido al finalizar su cuarto ciclo de
entrenamiento el cual presenta la salida y error en su salida mostrados en la figura 4.14, ya
que una mayor cantidad de ciclos o modificaciones en sus parmetros de entrenamiento, solo
provocan una ligera disminucin en su error de salida (grafica inferior de figura 4.14).

Capitulo 4. Implementacin del controlador 72


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

Salida deseada (Salida Control PID con filtro)


40
20

Volts
0
-20
-40
0 500 1000 1500 2000 2500 3000 3500 4000
4000 patrones de salida deseada
Salida RNA BP1 ante sus patrones de entrenamiento
40

20
Volts

-20

-40
0 500 1000 1500 2000 2500 3000 3500 4000
Error obtenido en la RNA BP1 con el conjunto de entrenamiento

10

-10

0 500 1000 1500 2000 2500 3000 3500 4000

Fig. 4.14 Respuesta de la RNA BP2 despus del cuarto ciclo de entrenamiento
(Datos obtenidos del controlador PID con filtro)

Para entrenar la RNA BP2 empleando el conjunto de datos obtenidos del controlador PID con
doble integrador se utilizaron los parmetros de entrenamiento mostrados en la tabla 4.2 (parte
inferior).

La respuesta de la RNA ante el conjunto de entrenamiento y la magnitud del error en su salida


ante cada entrada de entrenamiento despus del tercer ciclo de entrenamiento se presenta en la
figura 4.15.

De la figura 4.15 podemos ver que a pesar de que el error en la salida oscila entre +5-5
aprox. La salida que genera la RNA (grafica central de figura 4.15) es muy parecida a la salida
deseada (figura superior), de esto podemos considerar que el aprendizaje de la RNA es
aceptable.

Cuando consideramos que la RNA ha asimilado la tarea que se desea realice, solo resta
presentarla ante condiciones distintas y de esta forma comprobar que la RNA puede
generalizar su respuesta y desempear su funcin como controlador. Para esto, Matlab cuenta
con las herramientas Simulink y Real Time Windows Target que permiten crear el modelo que
emula la RNA creada y entrenada con el administrador de RNAs de la GUI nntool.

Adquisicin de datos. Creacin, entrenamiento e implementacin de la RNA BP 73


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

Salida deseada

Salida PID con Integrador Doble


20

10

-10

-20
0 500 1000 1500 2000 2500 3000
Salida RNA BP2
15

10
Salida RNA BP2

-5

-10

-15
0 500 1000 1500 2000 2500 3000
Error despues de 14000 epocas
Salida deseada - Salida RNA BP2

10

-5

-10
0 500 1000 1500 2000 2500 3000

Fig. 4.15 Respuesta de la RNA BP2 despus del cuarto ciclo de entrenamiento
(Datos obtenidos del controlador PID con doble integrador)

4.5 IMPLEMENTACION DE LA RNA BP COMO CONTROLADOR DEL PIS

Como se menciono en el capitulo 3, el espacio de memoria que emplea nntool es distinto al del
espacio de trabajo de Matlab, debido a esto para emplear una RNA creada con nntool, primero
es necesario exportar la RNA en cuestin al espacio de trabajo de Matlab mediante la opcion
export.

Cuando Matlab reconoce la RNA en su espacio de trabajo, es posible generar su modelo de


simulink mediante el comando gensim (Nombre_RNA, Ts), para este trabajo se le asigno un
Ts (tiempo de muestreo) de 0.001 segundos al modelo generado. Esto nos permite tener el
mismo periodo de muestreo en los elementos empleados en el modelo Real Time Workshop.

En la figura 4.16 se puede observar la forma en que se implementan las RNAs utilizadas
dentro del modelo Real Time Workshop, el elemento obscuro ( RNA BP) de esta figura
corresponde a la RNA BP2 pero un modelo similar se obtiene para cada una de las RNA
generadas con nntool.

Capitulo 4. Implementacin del controlador 74


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

Fig. 4.16 Modelo Real Time Workshop de RNA BP2

Al tener el modelo en simulink podemos generar el modelo de Real Time Workshop


(mediante la opcion cntrl-B), el cual nos permite interactuar con el prototipo utilizando la
tarjeta PCI-6014. De esta forma se puede probar la RNA ante distintas condiciones del
prototipo PIS.

La tarea de control generada por la RNA BP2 aun tiende a exceder los limites de
desplazamiento horizontal de la base mvil por lo que se decide introducir una seal manual
que auxilie a la RNA BP2 en el control del PIS. La seal auxiliar es de +12 o -12 dependiendo
del lmite (izquierdo o derecho) que esta a punto de excederse y la direccin de
desplazamiento en la base mvil.

La seal se introduce por otro canal de entrada analgica de la tarjeta PCI 6014 mediante
botones pulsadores en el momento de observar que la base mvil sale de ciertos limites en la
horizontal, dicho limite no es esttico sino que el operador que la genera decide en que
momento introducir una seal auxiliar correctora en funcin de la posicin que observa en la
base mvil.

En la figura 4.17 se observa el modelo Real Time Workshop que se emplea para realizar la
tarea de control de forma auxiliada y en la figura 4.18 podemos ver el comportamiento del PIS
frente a estas condiciones.

Adquisicin de datos. Creacin, entrenamiento e implementacin de la RNA BP 75


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

Fig. 4.17 Control RNA BP2 con seal de correccin auxiliar

Para auxiliar el control del PIS se modifica la seal que realimenta la posicin de la base
mvil atenuando el efecto de esta ( bloque Gain2 de figura 4.17), de tal forma que la RNA
BP2 tiende a poner nfasis en el control del ngulo del pndulo (+3-3 grados, grafica
superior de figura 4.18), aunque el control de la posicin de su base mvil en cierta forma es
descuidado (grafica central superior de figura 4.18), para evitar que la base mvil salga de
cierto rango se introducen los picos de voltaje en forma manual (grafica central inferior de
figura 4.18) los cuales generan las perturbaciones convenientes en el ngulo de la barra
(grafica superior de figura 4.18), permitiendo que la base mvil se mantenga dentro de sus
rangos de desplazamiento. Si la base mvil esta a punto de alcanzar uno de sus limites
horizontales se introduce un pico de voltaje que incline la barra-pndulo en direccin contraria
al limite que se esta a punto de alcanzar, de esta forma la seal de control generada modifica la
direccin de la base mvil.

Para implementar la seal auxiliar como parte del controlador se entreno una RNA con 4
retardos de tiempo en su entrada, en funcin solo de la posicin horizontal de la base mvil, su
nica seal de entrada es la posicin de la base mvil.

Realizando un procedimiento de entrenamiento similar al utilizado para entrenar la RNA BP2


se obtiene la RNA BP AUX que genera la seal auxiliar de control del PIS. Se puede entrenar
la misma RNA BP2 para que aprenda el comportamiento conjunto de su salida y la seal de
control auxiliar (adaptacin de su tarea aprendida), pero por limitaciones de tiempo se decide
entrenar una RNA AUX que genere la seal auxiliar correctora e implementarla
conjuntamente con la RNA BP2 ya obtenida.

El modelo Real Time Workshop del controlador implementado con las dos RNAs se presenta
en la figura 4.19. Se observan tambin algunos bloques de Ganancia para normalizar los
valores de entrada a las RNAs y tambin los valores de Ganancia necesarias para convertir las
variaciones de voltaje en unidades de desplazamiento angular o longitudinal, segn sea el
caso.

Despus de obtener las RNAs que generan la tarea de control deseada y teniendo ya su

Capitulo 4. Implementacin del controlador 76


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

modelo en Simulink se procede a generar y ejecutar la aplicacin en Real Time Workshop con
el fin de observar el comportamiento del PIS prototipo ante estas nuevas condiciones.

Grados (180 = Pi radianes) Posicin angular de la barra-pndulo (Referencia cero en vertical)


10

-10
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
tiempo (ms) 4
x 10
Posicin horizontal Base mvil (Respecto a centro en superficie de apoyo)
cm (100 cm = 1 m)

10

-10

0 2000 4000 6000 8000 10000 12000 14000 16000 18000 20000
tiempo (ms)
Seal correctora auxiliar
20
Volts

-20
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
tiempo (ms) 4
x 10
Salida de RNA BP2 mas seal correctora
40

20
Volts

-20
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
tiempo (ms) 4
x 10
Fig. 4.18 PIS controlado con RNA BP2 mas seal auxiliar

Adquisicin de datos. Creacin, entrenamiento e implementacin de la RNA BP 77


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

Fig. 4.19 Controlador Final implementado con RNAs tipo BP

REFERENCIAS DE CAPITULO

1. Chou, S.C.-M., D. Goldberg, and otros, Inverted Pendulum, in Control Systems. 2001,
UBC: Conecticut. p. 6-28.
2. Mguelez Garca, R., Estudio diseo y desarrollo de una aplicacin de tiempo real y de
un simulador para su comprobacin. 2001, U. Cantabria: Cantabria.
3. Jones, P.C. and S. Tepavich, ADALINE Stabilization of an Inverted Robot Arm. 1997,
www.aracnet.com.
4. Anderson, C.W., Learning to Control an Inverted Pendulum Using Neural Networks.
IEEE Control Systems Magazine, 1989. April 1989: p. 31-37.
5. Freeman, J.A. and D.M. Skapura, Neural Networks: algorithms, applications, and
programming techniques. 1 ed. Computation and Neural Systems, ed. C. Koch. Vol. 1.
1991, California: Addison Wesley. 45-124,341-371.

Capitulo 4. Implementacin del controlador 78


CAPITULO 5
RESULTADOS

En este captulo se presentan los resultados ms importantes obtenidos durante el desarrollo de


esta tesis.

5.1 RESULTADOS

A lo largo de este trabajo se desarrollaron varias arquitecturas de RNAs , sin embargo solo se
muestran las que presentan resultados ms relevantes. Tambin se realiz un trabajo arduo con
controladores clsicos como el PID para generar datos de entrada y salida vlidos para
entrenar a las RNAs.

En total se desarrollaron tres controladores con RNAs. El primero de ellos fue con una RNA
back-propagation (RNA BP1) entrenada con datos obtenidos del PIS controlado mediante un
controlador PID sencillo. En la figura 5.1 se muestra el comportamiento del prototipo PIS con
la RNA BP1 actuando como controlador.

Fig. 5.1 Respuesta del PIS ante la RNA BP1

Se puede observar en la grfica inferior como la posicin de la base mvil casi excede los
limites de desplazamiento horizontal del prototipo, por lo que fue necesario introducir
perturbaciones de forma manual (perturbacin 1, 2 y 3) para evitar que esta saliera de sus
mrgenes horizontales de operacin (+15-15 cm). Este comportamiento en cierta forma es
el que se esperaba ya que cuando se implement el controlador con el PID los resultados eran
muy similares. La variacin del ngulo del pndulo respecto a la vertical (grfica superior de
la figura 5.1) lleg a oscilar hasta +15 y -15 grados cuando los lmites de desplazamiento
Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

horizontal de la base mvil fueron casi alcanzados. Intentando mejorar la respuesta se


utilizaron otras funciones de transferencia (sigmoidea, tangente sigmoidea y lineal) en la RNA
adems de otras cantidades de neuronas en su capa oculta pero desafortunadamente no se
obtuvo mejora.

De acuerdo a la teora presentada en el capitulo 2 era de esperarse que con un simple PID no
se pueda controlar por completo al pndulo invertido. Este tipo de controlador sintonizado
correctamente puede llegar a equilibrar al pndulo pero la base mvil se mover hasta uno de
los extremos ya que el PID solo puede controlar una variable y no dos a la vez (ngulo del
pndulo y posicin horizontal de la base mvil).

El segundo controlador utilizado fue con la RNA back-propagation (RNA BP2) que tiene
como caracterstica adicional respecto a la RNA BP1 la inclusin de retardos de tiempo (4
retardos) en sus entradas. Como se mencion en el captulo anterior los retardos de tiempo en
las entradas de la red permiten retener mayor cantidad de informacin durante el proceso de
aprendizaje. Otra caracterstica es que la RNA BP2 solo tiene 7 neuronas en la capa oculta
contra 14 que tiene la RNA BP1.

Los datos para entrenar esta RNA se obtuvieron del mismo controlador PID utilizado para la
RNA BP1. El nico cambio que se realiz fue que al PID se le aadi un filtro digital (figura
4.3) para disminuir el ruido proveniente del sensor del pndulo pensando en que esto podra
mejorar la respuesta. En la figura 5.2 se presentan los resultados en tiempo real del prototipo
PIS implementado con la RNA BP2. Como se puede observar de la grfica superior la
magnitud y frecuencia de oscilacin del pndulo disminuyen en forma notable respecto a su
contraparte de la figura 5.1. Sin embargo an con esta mejora la respuesta del pndulo no es
adecuada ya que nuevamente es necesario introducir perturbaciones manuales para evitar que
la base mvil salga de su rango de desplazamiento. En la grfica inferior de la figura 5.2 se
puede ver incluso que la base mvil tiende a llegar con mayor facilidad a los extremos.

Fig. 5.2 Respuesta del PIS ante la RNA BP2

Cesar Alejandro Frausto Davila (97240322) 79


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

(Datos de Controlador PID con Filtro)


Despus de la implementacin de las dos RNAs anteriores (RNA BP1 y BP2) fue fcil
constatar por experiencia propia que las redes neuronales pueden imitar el comportamiento de
un controlador y quedando bastante claro que si los datos de entrenamiento de antemano no
representan el comportamiento deseado de un sistema, la red neuronal empleada en este caso,
por s misma no lo mejorar.

Ante estas conclusiones se procedi a buscar la forma de mejorar el controlador PID para
mantener estable tanto al pndulo como la base mvil del PIS. En la figura 5.3 se presenta el
nuevo comportamiento del PIS con la RNA PB2 entrenada con datos obtenidos de un
controlador PID con filtro y doble integrador (figura 4.5). Como se puede apreciar en la
grfica superior el comportamiento del pndulo es ms estable, aunque a medida que
evoluciona el tiempo la amplitud de la oscilacin tiende a crecer (figura 5.3). Este
comportamiento es similar en la base mvil, la magnitud de su oscilacin tambin tiende a
crecer. Ya que la oscilacin del pndulo y de la base mvil crecen progresivamente, en t=15
seg. se le ayuda manualmente al pndulo con un pequeo empujn para que la base mvil
no llegue a exceder los lmites de desplazamiento. Una vez que casi se estabiliza el pndulo
con el empujn ste vuelve a repetir el patrn, aumenta la magnitud de su oscilacin a medida
que evoluciona el tiempo.

Fig. 5.3 Respuesta del PIS ante la RNA BP2


(Datos de Controlador PID con doble Integrador)

De este ltimo experimento surge la idea de ayudar a la RNA BP2, entrenada con datos
obtenidos del controlador PID con doble integrador, a estabilizar tanto al pndulo como a la
pieza mvil, ya no con empujones en el pndulo, sino con pulsos de voltaje aplicados
directamente al controlador en forma manual. La ventaja de aplicar estos pulsos directamente
al controlador es que los datos de entrada y salida que se obtienen para entrenar la RNA
contienen informacin de manera inherente de los pulsos aplicados para corregir la
inestabilidad del pndulo y base mvil. Los resultados en este experimento dependen hasta
cierto punto de la habilidad de la persona que est aplicando los pulsos de voltaje. A la RNA
entrenada con estos datos se le ha asignado en este trabajo con el nombre de RNA AUX.

El controlador con RNA en este experimento no solo est implementado con la RNA AUX

Capitulo 5. Resultados 80
Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

sino que tambin incluye a la RNA BP2 como ya se explic en el punto 4.5. La RNA AUX
tambin tiene cuatro retardos de tiempo en su seal de entrada (posicin de la base mvil) al
igual que la RNA BP2, que le permiten considerar la posicin y direccin del desplazamiento.
Al utilizar estas dos redes neuronales se logra mantener al pndulo oscilando dentro de un
estrecho margen angular y a la base mvil con pequeos desplazamientos, siendo estos los
efectos deseados (aunque no los ptimos) en el PIS.

La respuesta del PIS con el controlador compuesto de la RNA BP2, entrenada con datos
generados por los reguladores PID con doble integrador, y la RNA AUX, entrenada con datos
generados manualmente, se presenta en la figura 5.4

Fig. 5.4 Respuesta del PIS controlado por la RNA BP2 ms la RNA AUX

Se puede observar que la magnitud de la oscilacin en el pndulo y la base mvil han


mejorado bastante y que durante los 20 segundos que muestra la grfica no se ve una aparente
tendencia hacia el desequilibrio.

Cesar Alejandro Frausto Davila (97240322) 81


CAPITULO 6
CONCLUSIONES, RECOMENDACIONES Y PROPUESTAS PARA
TRABAJOS FUTUROS

En este capitulo presento las conclusiones emanadas de los resultados obtenidos, as como
algunas recomendaciones para aquellas personas que quieran seguir trabajando con el PIS
utilizando las redes neuronales como medio de control. Estas recomendaciones las he separado
en aquellas que se relacionan con el prototipo y las que tienen que ver con la implementacin
de las RNAs. Tambin presento algunas propuestas para trabajos futuros con el PIS y las
RNAs.

6.1 CONCLUSIONES

El pndulo invertido simple es por naturaleza un sistema inestable y no lineal. Si adems a


esto le aadimos que los componentes utilizados para su construccin tambin son no lineales
(motor de c.d., banda flexible, friccin, etc) el pndulo invertido en su conjunto es un sistema
relativamente complejo. Esto sin considerar que los componentes elctricos y electrnicos
utilizados para su control tambin influyen de manera importante (cambio de parmetros
debido a la temperatura, ruido electromagntico, etc.).

Generalmente la simulacin de un sistema de control automtico (como el PIS) nos ayuda


mucho para la implementacin prctica. Mientras ms completo sea el modelo a simular, es
decir que incluya la funcin de transferencia de cada uno de los componentes elctricos,
electrnicos y mecnicos, etc., los resultados de la simulacin estarn ms cerca de la realidad.
Sin embargo no siempre es posible conocer con exactitud la funcin de transferencia de los
componentes y mucho menos de todo el sistema por lo que es necesario utilizar herramientas
diferentes a las tradicionalmente conocidas para desarrollar el control. Una de estas
herramientas son las redes neuronales. Estas no necesitan conocer de manera directa el
comportamiento de cada uno de los componentes del sistema para emular al sistema en su
conjunto. Lo nico que necesitan son datos para aprender el comportamiento deseado del
sistema. Tambin es cierto y obvio que las redes neuronales tienen sus limitantes, ya que no
pueden presentar un comportamiento que no se les ha enseado. Aunque tambin existen
redes neuronales con arquitectura relativamente complicada que continuamente estn
aprendiendo.

A travs de esta tesis se ha comprobado que las redes neuronales pueden emular el
comportamiento de un controlador PID digital para controlar un pndulo invertido simple. Se
ha visto que si los datos obtenidos para entrenar la red neuronal son errneos, la red arrojar
resultados errneos. Si los datos son adecuados, el comportamiento de la red ser por lo
general el esperado.

Los datos para entrenar la red no necesariamente deben de provenir de controladores


automticos, sino que tambin pueden tener su origen en manipulaciones externas a stos, tal
Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

como se present en el ltimo experimento de la seccin de resultados de este captulo, en el


que fue necesario aplicar pulsos de tensin en forma manual para auxiliar al control en su
tarea.

La configuracin de la red neuronal es tambin un punto clave para que una aplicacin sea
exitosa. Si los datos de entrenamiento son correctos, pero la arquitectura de la red no es la
adecuada para la aplicacin, difcilmente la red neuronal se comportar como se espera. Como
pudimos observar de las figuras 5.1 a 5.4, el hecho de utilizar retardos de tiempo en las
entradas de las RNAs permite retener mayor informacin en el momento del entrenamiento
repercutiendo en un mejor aprendizaje de la tarea deseada. En resumen, el grado de xito que
se obtiene en el proceso de entrenamiento de una RNA depende de una seleccin adecuada de
su arquitectura y los parmetros de entrenamiento a utilizar. La informacin que se le presente
a la RNA se puede modificar mediante normalizacin de sus valores en las seales de entrada
de tal forma que se pueda resaltar las caractersticas ms importantes del comportamiento a
aprender. La tarea que aprende la RNA es determinada en gran manera por los atributos mas
activos de la informacin presentada (valores mayores tendrn mayor peso en la tarea
aprendida).

Adems de los puntos anteriores el desarrollo de la tesis deja en claro las siguientes
conclusiones:

a) Las redes neuronales pueden llegar a aprender lo que uno les quiera ensear.

b) Existen diferentes arquitecturas de RNAs, la utilizacin de una de ellas en especfico


depende del tipo de aplicacin y datos a procesar.

c) El Matlab y Simulink son herramientas computacionales que facilitan el aprendizaje y


la implementacin de las RNAs.

d) Los retardos de tiempo en la entrada de las RNAs pueden facilitar la retencin de


mayor cantidad de informacin durante el proceso de aprendizaje.

e) Las RNAs pueden procesar la informacin de un sistema de control sin necesidad de


conocer su modelo matemtico o funcin de transferencia.

f) Los datos de entrada y salida para entrenar una RNA deben estar fielmente ligados a la
accin y reaccin del controlador que se desea emular. El resultado no sera el
esperado si solo se modifican los datos de entrada o de salida sin crear un vnculo
vlido entre los dos conjuntos de datos.

g) Un controlador PID es incapaz de controlar un sistema de pndulo invertido ya que por


definicin solo puede tener una entrada y una salida de datos. En el sistema de pndulo
invertido se tienen dos variables de entrada y dos de salida. Las dos variables de salida
estn acopladas por lo que es difcil modificar una sin afectar a la otra.

Cesar Alejandro Frausto Davila (97240322) 83


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

6.2 RECOMENDACIONES

En referencia al prototipo recomiendo utilizar otro tipo de sensores para detectar la posicin
del pndulo y de la base mvil. Una posible opcin puede ser utilizar un encoder el cual
introduce menos ruido que los potencimetros empleados. Aunque vale la pena decir que al
utilizar los encoder ser necesario utilizar una etapa adicional en el control para convertir los
pulsos a valores de posicin.

Se recomienda tambin colocar interruptores en los extremos de la barra gua para evitar que
el motor se fuerce innecesariamente en caso de que la base mvil llegue a uno de ellos.

Vale la pena tambin comentar que es necesario redisear la base que soporta al pndulo y
sensor de posicin ya que la actual no tiene buen acoplamiento mecnico entre el eje que une
la barra y el sensor de posicin. Esta imperfeccin mecnica altera el valor de la posicin
sensada en relacin a la posicin real del pndulo.

En relacin al controlador que aporta los datos de entrenamiento para la RNA recomiendo
utilizar otras tcnicas de control para mejorar el comportamiento del PIS. Algunas de estas
tcnicas pueden ser control no lineal o variables de estado.

Sera conveniente tambin experimentar con otras arquitecturas de RNAs que incluyan
conexiones de realimentacin desde las neuronas de salida hacia las neuronas de entrada
(feedback) ya que estas han tenido xito en otras aplicaciones de control.

De la misma forma es conveniente hacer un anlisis de los parmetros de arquitectura y


entrenamiento empleados en este caso, con el fin de optimizar tanto el diseo de la RNA como
su proceso de entrenamiento.

Otra recomendacin es desarrollar un modelo matemtico del PIS y realizar un anlisis de


estabilidad que nos permita localizar sus polos y ceros con la finalidad de ubicar los lmites de
estabilidad del sistema en su conjunto. Esto nos ayudara a decidir si es necesario incluir en el
control algn tipo de compensador (en adelanto o atraso) para modificar la posicin de los
polos y ceros del sistema y mejorar el comportamiento de la planta.

Capitulo 6. Conclusiones, Recomendaciones y Trabajos futuros. 84


Control de un Pndulo Invertido Empleando Redes Neuronales Artificiales

6.3 TRABAJOS FUTUROS

Como trabajo futuro propongo que se implementen RNAs en un procesador digital de seales
(DSP), el cual puede ser programado en lenguaje C VisSim (leguanje grfico). El propsito
sera prescindir de la computadora una vez programado el DSP para aplicaciones donde el
espacio es un factor importante.

Al contar con el prototipo PIS, otro trabajo futuro es hacer uso de otras herramientas de las
Tcnicas de Computacin Suave (Lgica Difusa y Algoritmos Genticos) e implementarlas
como controladores en tiempo real de este prototipo.

Para el PIS, como trabajo futuro queda el implementar otra tarea de control complementaria a
la realizada en este trabajo, la cual involucrara equilibrar en la vertical superior a la barra-
pndulo partiendo de su posicin vertical hacia abajo (esto es 180 de la vertical superior).

De la misma forma queda pendiente implementar el control mediante RNAs de otros sistemas
fsicos no lineales tales como el pndulo invertido con dos eslabones, equilibrio de una masa
sostenida por un eslabn, control en la trayectoria de un proyectil, etc. As como sistemas
mecnicos que involucren informacin visual, tal como el control de posicin de un brazo
mecnico en funcin de informacin recabada por medio de visin digital, etc.

Cesar Alejandro Frausto Davila (97240322) 85


APENDICE

A
* * Programa Normalizador de entradas a RNA BP * *

A2=PISF_0.signals(1).values(7001:10000);
B2=PISF_0.signals(2).values(7001:10000);
C2=PISF_0.signals(3).values(7001:10000);
AA1=A2';
BB1=B2';
CC1=C2';
AAA=(AA1/0.05);
BBB=(BB1/2);
CCC=(CC1);
x_teta=[AAA;BBB];
v_deseado=[CCC];

B
* * Programa genera el arreglo de vectores correspondientes a los 4 retardos de tiempo
empleados en la RNA BP2 * *

A2=Seal.signals(1).values(7001:10000);
B2=PISF_0.signals(2).values(7001:10000);
C2=PISF_0.signals(3).values(7001:10000);
D11=([PISF_0.signals(1).values(6996:9995)])/0.05;
D12=([PISF_0.signals(1).values(6997:9996)])/0.05;
D13=([PISF_0.signals(1).values(6998:9997)])/0.05;
D14=([PISF_0.signals(1).values(6999:9998)])/0.05;
D15=([PISF_0.signals(1).values(7000:9999)])/0.05;
D121=([PISF_0.signals(2).values(6996:9995)])/2;
D122=([PISF_0.signals(2).values(6997:9996)])/2;
D123=([PISF_0.signals(2).values(6998:9997)])/2;
D124=([PISF_0.signals(2).values(6999:9998)])/2;
D125=([PISF_0.signals(2).values(7000:9999)])/2;
DA1=[D15';D125'];
DB1=[D14';D124'];
DC1=[D13';D123'];
DE1=[D12';D122'];
DF1=[D11';D121'];
AA1=A2';
BB1=B2';
CC1=C2';
AAA=(AA1/0.05);
BBB=(BB1/2);
CCC=(CC1);
x_teta=[AAA;BBB];
v_deseado=[CCC];

You might also like