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
AGRADECIMIENTOS
Quiero agradecer primero a Mi Señor Jesús 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 Nicolás Frausto Morales y Felipa Dávila Rodríguez 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 día las
tesis de ellos.
Quiero externar mi reconocimiento a todos aquellos que aportaron su granito de arena para mi
formación. A los profesores de la Escuela Primaria Urbana No. 13 “Narciso Mendoza”, en especial a
la maestra Guillermina Martínez Órnelas y al Profesor Aurelio López Flores (1980-1986). A los
Profesores de la Escuela Secundaria Federal No. 5 “Emperador Cuahuhtemoc”, en especial al
profesor de Matemáticas Ricardo Galán, al profesor de electrónica Darío, un recuerdo para las
maestras Marisela y Mary, ambas de español (1986-1989). Al personal de la Preparatoria Abierta
“Pedagogía Aplicada” en especial al Lic. Guadalupe Mota Gómez y la maestra Mary Mota Gómez.
Al Instituto Tecnológico de León y las personas que laboran en dicha institución, al M.C. Carlos
Jesús Aguilera Batista, excelente persona. A mi asesor de esta tesis, el Dr. Antonio Zamarrón el cual
se desempeño 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 Hernández, al Ing. José Antonio Martines excelente deportista e
ingeniero. Un reconocimiento al M. C. Julián Rentería Hernández (gracias por su amistad y apoyo), a
Pedro Sosa, asistente en el taller de Hidráulica y Mecánica, a la maestra Susan Onesky (IAAP ahora
Berlitz SLP), a mi compañero Omar Órnelas Lozano, a mis amigas Olga Prado y Ángeles Alvarez
por su agradable compañía 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 Infantería DEM Miguel Ángel Chavero Cevallos, al Capitán I de Infantería DEM
Guadalupe Arias, al sargento II de Infantería Praxedis Guerrero, al Sr. Ernesto Myer de Pesquera
Internacional en Cabo San Lucas BCS, al Ing. Jorge Marmolejo de Plásticos Boston, a Elías Barba de
Torno y Soldadura (7 77 01 08), al Ing. Ignacio Alcalá de Lira de Alumbrado Publico Municipal, al
Ing. Jesús Samano de Maselli Measurement, a mis ex compañeros en Innopack, Refrescos Aga,
Suelas Hulsalite, Suelas Sole, Inoplast y Hafca Proyectos Industriales. Quiero recordar que este
trabajo no hubiera sido posible sin la colaboración 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 colaboración
entre instituciones y departamentos permitirá lograr objetivos mucho mayores que los aquí
presentados.
Creo que faltarían hojas para nombrar las personas que han compartido su vida conmigo y que
forman parte de lo que soy. A todas ellas
GRACIAS
Ingeniería Electromecánica i
Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales
INDICE
PAG.
AGRADECIMIENTOS i
INDICE ii
INDICE DE FIGURAS iv
INDICE DE TABLAS v
PRÓLOGO vi
CAPITULO 1
INTRODUCCIÓN
1.1 DESCRIPCIÓN GENERAL 1
1.2 HIPOTESIS 2
1.3 OBJETIVOS GENERALES 2
1.3.1 OBJETIVOS ESPECIFÏCOS 2
1.3 ALCANCES Y LIMITACIONES 3
REFERENCIAS DE CAPITULO 3
CAPITULO 2
PENDULO INVERTIDO Y REDES NEURONALES ARTIFICIALES
2.1 PRINCIPIOS BÁSICOS DEL SISTEMA PENDULO INVERTIDO 4
2.1.1 MODELADO DE UN PIS 5
2.1.2 DISEÑO DE UN CONTROLADOR PARA EL PIS 7
2.2 REDES NEURONALES ARTIFICIALES 9
2.2.1 BREVE HISTORIA DE LAS RNA´S 11
2.2.2 CARACTERÍSTICAS DE LAS RNA´S 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 LOCALIZACIÓN DE LA MATRIZ ÓPTIMA DE PESOS
MEDIANTE EL MÉTODO 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
CAPITULO 3 PAG.
DESCRIPCION DEL SISTEMA
3.1 RNA´s 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 ADQUISICIÓN DE DATOS DE ENTRENAMIENTO 64
4.3 EMULACION DE LA RNA BP EMPLEANDO MATLAB 67
4.4 ENTRENAMIENTO DE LAS RNA´s 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 Normalización Vector de Entradas
B Programa Vector Condiciones Iniciales en Retardos de Tiempo
INDICE DE FIGURAS
PAG.
Fig. 2.1 Representación de un Péndulo Invertido 4
Fig. 2.2 Péndulo Invertido Simple de base móvil (PIS) 5
Fig. 2.3 Diagramas de cuerpo libre para un PIS 6
Fig. 2.4 Partes Principales de una Neurona Biológica 10
Fig. 2.5 Diferentes métodos de implementación de RNA´s 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 activación más comúnmente empleadas 16
Fig. 2.9 Funciones de salida más empleadas 17
Fig. 2.10 Grafica dirigida de una RNA general 19
Fig. 2.11 Ejemplos de RNA´s con distintas arquitecturas de alimentación 19
Fig. 2.12 Perceptron de una sola capa 22
INDICE DE TABLAS
PAG.
Tabla 3.1 Funciones de entrenamiento disponibles en Matlab para una RNA BP 48
Tabla 3.2 Datos técnicos de la tarjeta PCI6014 de National Instruments 59
Tabla 4.1 Parámetros de entrenamiento empleados en la RNA BP1 69
Tabla 4.2 Parámetros de entrenamiento empleados en la RNA BP2 71
Ingeniería Electromecánica v
Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales
PROLOGO
Es común ver en películas de ciencia ficción situaciones en las que maquinas creadas por el
hombre llegan a tal grado de desarrollo que logran su autonomía, 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
tecnología, es un hecho que día con día se analizan nuevas técnicas encaminadas a emular la
naturaleza en forma artificial. En mi opinión, las computadoras, o alguna herramienta derivada
de estas, tendrán un papel importante en el logro de esta meta.
El hecho de dotar de inteligencia más que de autonomía 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 Técnicas de Computación Suave en el control de sistemas físicos (en especial
mecánicos) reales hemos desarrollado con agrado esta tesis en la cual se aplica una Red
Neuronal Artificial como controladora de un sistema no lineal (péndulo invertido).
Deseando que la presente tesis sea un preámbulo para aplicaciones futuras en control de
sistemas electromecánicos empleando Técnicas de Computación Suave y esperando sea de
utilidad lo aquí presente dejo a su consideración el trabajo.
Atentamente
El Autor
soterios77@hotmail.com
Hoy en día la computadora es tan importante para el ingeniero como lo fue en su momento la
regla de cálculo. Mediante la computadora es posible resolver sistemas complicados de
ecuaciones diferenciales que nos pueden ser útiles para implementar sistemas de control
computarizados. Las milésimas de segundo que le lleva realizar estas operaciones permiten
que ésta pueda ser utilizada para controlar sistemas en tiempo real.
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 años el
control de sistemas lineales se realizaba principalmente mediante reguladores Proporcional,
Integral, derivativo o una combinación de estos. Para el caso de sistemas no lineales, en
especial de varias entradas y salidas, era común utilizar variables de estado. Hoy en día cada
vez es más común utilizar controles “inteligentes” para realizar estas tareas.
La programación para la implementación 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 características de estas
herramientas para la implementación del regulador con RNA`s.
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 función 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 propagación (BP) es capaz de generar la señal de
control que estabiliza un prototipo real del Péndulo Invertido Simple, aprendiendo de un
conjunto de datos que representan el comportamiento deseado.
• Desarrollo de un prototipo PIS (Péndulo Invertido Simple) controlado por una red
neuronal artificial en tiempo real.
• Integrar la RNA BP modelada como controladora del prototipo PIS en tiempo real.
Por otro lado, en este trabajo no se analiza la forma en que influyen cada uno de los
parámetros de diseño 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. Introducción 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 técnicas que le permiten monitorear y controlar fenómenos o procesos. Hasta
hace algunas décadas solo se empleaba lo que se conoce como Teoría de Control Moderna,
pero debido a la creciente complejidad de las tareas a controlar se han investigado nuevas
técnicas de control, una de ellas y de la cual trataremos en este trabajo es empleando
Técnicas de Computación Suave. En este capitulo se muestra información del Péndulo
Invertido, el cual tomaremos como sistema a controlar y se expondrá una breve descripción
de las Redes Neuronales Artificiales (un subconjunto de las técnicas de computación suave)
las cuales nos servirán como elementos controladores.
El Péndulo Invertido es un dispositivo mecánico compuesto básicamente 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 péndulo puede estar montada sobre una base ya sea móvil o
estática, ver figura 2.1.
θ
Barra
F Pivote
Pieza
base
En este trabajo se emplea un péndulo de la forma PIS (figura 2.2) por las ventajas
económicas y de manufactura que presenta su implementación. En dicho prototipo la fuerza
aplicada a la base móvil se realiza a través de una banda de transmisión accionada por un
Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales
El PIS es un sistema no lineal (las ecuaciones que representan dicho sistema son de
naturaleza no lineal), inestable (el péndulo puede volcarse en cualquier momento y en
cualquier dirección) y sub-actuado ya que el péndulo no recibe directamente ninguna señal
de control (la señal de control es aplicada a la base móvil), sin embargo puede ser
modelado como un sistema lineal en torno a la posición de equilibrio para facilitar la
implementación del controlador [1, 5, 11-13].
PIS Banda de
Transmision
Motor Impulsor
Barra
Guía
Superficie de soporte
En la literatura existe una gran cantidad de métodos que permiten obtener el modelo
matemático de un PIS [1, 5, 7, 8, 10, 12, 14-18], en nuestro caso el desarrollo del
modelo matemático tomara como base la metodología 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 actúa sobre la base
móvil, esta es la señal de control. Se determinan las ecuaciones dinámicas que modelan el
sistema, y posteriormente se linealizan en torno al punto en el cual el ángulo del péndulo
θ = π (asumiendo que el péndulo no se mueve mas que unos pocos grados a ambos lados
de la vertical, a la cual se le ha asignado el ángulo π ).
Teoría Básica 5
Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales
P
N
π mx
F
l
bx mlθ
θ mg
x -N
x
-P
Sumando las fuerzas que actúan sobre el carro en dirección horizontal, se obtiene la
siguiente ecuación de movimiento:
** *
M x+bx+ N = F Ec. 2.1
** ** * Ec. 2.2
N = m x + mlθ cos θ − mlθ 2 senθ
** * ** * Ec. 2.3
( M + m ) x + b x + mlθ cos θ − mlθ 2 senθ = F
** ** Ec. 2.4
Psen θ + N cos θ − mgsen θ = ml θ + m x cos θ
Para aislar los términos P y N de la ecuación anterior, se suman los momentos alrededor del
centro de gravedad del péndulo para obtener la ecuación siguiente:
** Ec. 2.5
Plsen θ − Nl cos θ = I θ
Al combinar la ecuación 2.4 con la 2.5 se obtiene la ecuación dinámica del sistema:
**
(M + m ) x + b x − ml φ = u Ec. 2.8
** *
La primer solución al problema de control del sistema Péndulo Invertido fue descrita por
James K. Roberge [14]. Una vez obtenidas las ecuaciones representativas del sistema se
pueden emplear distintos métodos 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 métodos están limitados a que los controladores solo analizan una señal
como salida a controlar del sistema. Si consideramos el ángulo como la salida a observar
del sistema, obtendríamos la siguiente función de transferencia:
Teoría Básica 7
Control de un Péndulo 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 limitación de tener una sola salida controlable podría diseñarse el
controlador empleando variables de estado en la expresión de las ecuaciones dinámicas [1,
2, 6, 10, 13, 17, 18], tomando como base la siguiente representación general [1, 6]:
* Ec. 2.13
X = A • X + B •U
Ec. 2.14
Y = C • X + D •U
⎛ * * ⎞
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 ⎢Φ ⎥
*
⎡ ⎤
⎢ x* ⎥
⎡1 0 0 0 ⎤ ⎢ x ⎥ ⎡ 0 ⎤
y=⎢ ⎥⎢ ⎥ + ⎢ ⎥ u
⎣0 0 1 0 ⎦ ⎢Φ ⎥ ⎣0 ⎦
⎢Φ ⎥
*
⎣ ⎦
observador, etc. [1, 2, 6]. Estas técnicas de control permiten estabilizar mas de un
parámetro del sistema. El éxito en la estabilización del sistema PIS, mediante el controlador
creado con alguna de estas técnicas, dependerá en gran parte de lo cercano que sea el
modelo obtenido en relación a la dinámica actual del sistema. Podemos decir que un control
tradicional, en los casos que se conocen sus ecuaciones dinámicas presentaría la forma
general de la siguiente ecuación [16].
* *
Ft = b1 x + b2 x + b3 Φ + b4 Φ Ec. 2.16
En la cual se asume que la fuerza de control es una función lineal de las cuatro variables de
estado y además con coeficientes constantes.
En los dos métodos mencionados es necesario contar con suficiente conocimiento del
sistema así como realizar un adecuado desarrollo matemático para obtener un modelo
adecuado. Dado que en ocasiones es difícil y en ocasiones casi imposible obtener la
información necesaria para diseñar un sistema de control clásico, se han investigado otras
alternativas, entre ellas podemos mencionar el uso de Redes Neuronales Artificiales [16,
20, 21], Lógica Difusa [18], sistemas híbridos [11] y controles adaptativos [2] .
El interés por crear máquinas que de alguna forma emulen el comportamiento humano tiene
siglos de antigüedad, ya en el siglo primero de nuestra era se realizaban mecanismos
animados, los de Herón de Alejandría [22], y en el siglo XVII Jacques de Vaucason creó el
primer mecanismo que podríamos llamar humanoide [23], aunque no es sino hasta el siglo
XX cuando se presenta una cooperación mas activa entre diferentes ramas de la ciencia que
permitieron hacer mas viable dicha idea.
El tejido nervioso es el más diferenciado del organismo y está constituido por células
nerviosas, fibras nerviosas y la neuroglia, que está formada por varias clases de células. La
célula nerviosa se denomina neurona, que es la unidad funcional del sistema nervioso. Hay
Teoría Básica 9
Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales
Las dendritas son las conexiones de entrada de la neurona. Por su parte el axón es la
"salida" de la neurona y se utiliza para enviar impulsos o señales a otras células nerviosas.
Cuando el axón esta cerca de sus células destino se divide en muchas ramificaciones que
forman sinapsis con el soma o axones de otras células. Esta unión puede ser "inhibidora" o
"excitadora" según el transmisor que las libere [32].
dendritas
soma
soma
dendritas
axon
sinápsis
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
La ventaja que presentan las RNA´s a otros tipos de controladores es que estas aprenden el
funcionamiento deseado mediante ejemplos sin necesidad de un modelado matemático que
represente la tarea a realizar, incluso las RNA´s tienen capacidad de aproximar funciones
no lineales complejas [20, 21, 27, 32, 36].
La primera acción encaminada a emular las neuronas biológicas se dio en 1943 cuando
Warren McCulloch, un neurofisiólogo, y un matemático, Walter Pitts, escribieron un
documento referente a la manera en la que podían 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 organización del comportamiento (The Organization of Behavior), el cual fue
escrito en 1949 [32]. Este trabajo resaltó el hecho de que, las rutas de comunicación
(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 telégrafo o tubos de vacío. En el mismo año, 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 limitación de su
salida binaria solo podía 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 múltiples elementos de adaptación lineal (Multiple ADAptive LINear Elements)
Teoría Básica 11
Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales
[32] y a diferencia del Perceptron incluían un peso de conexión con entrada constante de 1
(sesgo o bias).y empleaba una función de activación bipolar [30].
Durante las siguientes dos décadas hubo un aletargamiento en el desarrollo de las RNA´s y
a principios de los 80´s se presentaron dos aportaciones que nuevamente despertaron el
interés 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 energético, y el otro trabajo fue la
presentación del algoritmo de aprendizaje de Retro propagación empleado en una red
Perceptron de capas Múltiples, propuesto por Verbos [32, 38].
• Procesamiento Paralelo
• Habilidad de generalizar
• Adaptabilidad
• Tolerancia a fallas
El elemento básico de una RNA es la Neurona Artificial (también conocida como; PE por
sus siglas en Ingles, Process Element, elemento de procesamiento básico ó procesador
elemental).
E peso 1
n
t
Σ
Entrada a la salida de la
r neurona neurona
a peso 2
d
a Umbral
s
peso n
n Ec. 2.17
u = ∑ wj y j +θ
j =1
Donde:
u = Valor de la señal de salida de la neurona, regularmente se considera igual al nivel
de activación de la neurona.
w = Peso de la entrada j.
y= Valor de señal de entrada j.
θ = Valor de umbral o sesgo de la función.
n = Numero de entradas a la neurona.
Teoría Básica 13
Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales
y1
w1
wn
yn
NUCLEO DE
NEURONA
Fig.
2.7 Modelo de neurona artificial general [39].
a) sumatoria del producto de los valores de entrada por sus respectivos pesos.
n Ec. 2.18
∑wj =1
j yj
n Ec. 2.19
∏wj =1
j yj
c) Máximo de las entradas pesadas. Solo considera el valor de entrada más fuerte,
previamente multiplicado por su peso correspondiente.
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
activación. Algunas neuronas artificiales pueden encontrarse en un valor de activación
dentro de un conjunto determinado [39].
La función de activación calcula el estado de actividad de una neurona, esta es una función
del valor x proporcionado por la función de entrada (valor de salida en función de entrada).
Las funciones de activación más empleadas se mencionan en seguida, y muestran en la
figura 2.8:
a) Función 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 función.
b) Función Sigmoidea.
Ec. 2.23
f (x ) =
1
− gx
1+ e
Siendo g un valor que afecta la pendiente de la función.
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 función.
d) Función Gausiana
f (x ) = A
−B x
2
Ec. 2.25
e
Siendo A y B un valor que afecta la dispersión de la función.
Por ultimo el elemento de procesamiento esta listo para proporcionar el valor de la señal de
salida u. Esta salida es transferida a otros elementos de procesamiento, o a una conexión de
salida, como corresponda a la estructura de la red.
Si la función de activación 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 están restringidos dentro de un rango: [ 0 , 1 ], [ -1 , 1 ], etc.
Teoría Básica 15
Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales
+1 f (x, a ) +1 f (x, g1 )
1
f (x, a2 ) f (x, g2 )
-1 -1
(a) Función de (b) Función de
Activación lineal Activación Tangente
hiperbólica
+1 f (x, g1 )
+1
f (x, g2 )
f (x, A1 , B )
1
f (x, A 2 , B )
2
u i (t ) = f ( x ) Ec. 2.26
b) La función binaria.
( )=
ui t { 1
0
si u i ( t ) ≥ ξ i
si u i ( t ) < ξ
i
Ec. 2.27
f (x) ui (t )
+1 +1
ui (t ) 0
f (x)
-1 +1 ξi
-1 -1
2.2.4 RNA
Podemos decir que una RNA esta definida por cuatro parámetros [26]:
Teoría Básica 17
Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales
3. El algoritmo de entrenamiento
4. El algoritmo de recuperación
Básicamente, todas las RNA tienen una estructura o topología 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 mayoría 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 envía
información directamente al “mundo exterior”, ya sea a un proceso de cálculo secundario o
la etapa de potencia electrónica de un sistema de control mecánico, 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 Conexión Completa. Cuando no existen todas
las conexiones posibles de una neurona o capa de neuronas se dice que están Parcialmente
Conectadas.
• Auto-asociativas. En estas RNA´s las neuronas de entrada son también las neuronas
de salida.
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
y (t ) RNA con
Realimentación ui (t )
(Feedback)
Teoría Básica 19
Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales
A pesar del entrenamiento, algunas RNA´s nunca aprenden la tarea deseada. Esto puede ser
debido a que los datos de entrada no contienen la información suficiente para producir la
salida esperada. Las RNA´s además 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
memorización se puede evitar no teniendo exceso de PE´s.
Si una RNA no puede resolver un problema, se deben revisar: los datos de entradas y
salidas, el número de capas, el número de elementos por capa, el tipo de conexión entre
capas, las funciones de entrada, activación, salida y de adiestramiento. Por lo regular se
emplea un solo tipo de función para todos los PE´s de una capa, pero esto solo por
conveniencia de programación. 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 numéricos, 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.
Rosenblatt diseño una gran variedad de RNA´s simples conocidas como Perceptrones. Uno
de los Perceptrones más simples estaba compuesto de una sola capa conteniendo varias
neuronas similares a las de McCullon y Pitts pero con la variante de que su función de
entrada añadía un valor de umbral o sesgo. En dichas neuronas los pesos y sesgos podían
ser ajustados para generar un vector de salidas determinado (figura 2.12). La técnica de
Teoría Básica 21
Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales
b (Umbral)
x1
w1
w2 u
x2 Σ wx+b
xn xn
El algoritmo de aprendizaje del Perceptron podría considerarse como una forma simple de
aproximación estocástica.
Si se considera una función de criterio de expectación E[ J (w)] se podría obtener una ley
de aprendizaje de gradiente descendente ideal de la forma mostrada en la siguiente
ecuación:
Mediante estas consideraciones se puede llegar a una forma general del algoritmo
Perceptron que tendría la forma siguiente:
wk +1 = wk + c k ∑ x Ec. 2.29
x∈ X
wm +1 = wm + cx Ec. 2.30
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 modificación en el vector de pesos.
Teoría Básica 23
Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales
multiplicados por los pesos de conexión 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 más de dos clases (
empleando mas de una capa) la forma de actualizar los pesos en la iteración 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
Las redes ADALINE (ADAptive Linear Element) emplean una estructura de una sola
neurona con una función sumatoria y función de transferencia lineal (emplean la estructura
básica 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 técnicamente una RNA.
Existen dos modificaciones básicas que se requieren para convertir la estructura general de
un PE (Ver apartado 2.2.3) en un filtro Adaline. La primera modificación es añadir una
conexión con peso, wo, comúnmente conocida como sesgo. Este término se puede
considerar el peso de una conexión de entrada que siempre tiene valor de 1. La segunda
modificación es añadir una condición 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 inglés). La salida del ALC determina la salida del filtro Adaline.
El procesamiento que realiza el ALC es igual al que realiza el PE típico. El ALC ejecuta un
cálculo de suma de productos entre los vectores de entradas y de pesos, y aplica una
función 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 más propiamente dicho el sesgo. Haciendo el valor de
entrada para el peso del sesgo igual a 1 la ecuación se convierte en
n Ec. 2.36
ut = ∑ w j ∗ x j
j =0
Ó en notación vectorial
u t = wT x Ec. 2.37
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.
1 k =L 2 Ec. 2.38
ε k2 = ∑ε k
L k =1
ε k2 = (d k − wT x k ) Ec. 2.39
2
= d k2 + wT x k x kT w − 2 d k x kT w
Una aproximación para que la ALC encuentre los pesos óptimos es mediante la ubicación
del mínimo en la superficie de pesos ya que una búsqueda puramente aleatoria podría no
ser eficiente.
Teoría Básica 25
Control de un Péndulo 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 dirección 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 mínimo. En este método se
considera implícitamente que la superficie del error es de una forma paraboloide.
Lo que faltaría sería determinar el valor de ∇ ξ w(t) en cada paso sucesivo de iteración.
ε k2 (t ) = (d k − wT (t )x k ) Ec. 2.42
2
3.- Calcular una aproximación de ∇ξ (t), empleando ε k2 (t) como una aproximación 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 ecuación 2.41 empleando la ecuación 2.43
como aproximación del gradiente:
5.- Repetir los pasos 1 al 4 con el siguiente vector de entrada, hasta que el error ha sido
reducido a un valor aceptable.
Una situación especial en el uso de la RNA tipo ADALINE es cuando se cuenta con una
sola señal de entrada, en dicho caso la ALC se arregla en una configuración conocida
como Filtro Transversal. En esta configuración, la señal 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 señal de entrada a la señal de salida
deseada. Esto es, si no se puede obtener un buen ajuste con una cantidad pequeña de
muestras pueden añadirse otras para aumentar la posibilidad. Si en la primera selección de
cantidad de retardos de tiempo se obtiene un buen ajuste de la señal, 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 señal. En este tipo de filtros por lo regular los umbrales o sesgos
son superfluos.
Teoría Básica 27
Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales
Para entrenar una RNA de este tipo, se podría pensar emplear el algoritmo LMS en la capa
de salida, pero ya que dicho algoritmo no permite conocer la aportación de cada capa al
error total es necesaria una modificación 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 análogas de la ALC, no en los valores de salida
bipolar de los filtros Adaline. Por esta razón se ha desarrollado una estrategia de
entrenamiento diferente para la RNA Madaline.
1.- Aplicar un vector de entrenamiento a las entradas de la RNA Madaline y propagar este
hasta las unidades de salida.
2.- Contar el número de valores incorrectos en la capa de salida: llamar a este número el
error.
a) Seleccionar el primer nodo cuya salida análoga 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 término de Disturbancia Mínima.
b) Cambiar los valores en la unidad seleccionada de tal forma que la salida bipolar
de la unidad cambie.
4.- Repetir el paso 3 para todas las capas excepto la capa de entrada.
a) Seleccionar los pares de unidades cuya salida análoga esta mas cercana a cero.
b) Aplicar una corrección 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.
6.- Repetir el paso 5 para todas las capas excepto para la capa de entrada.
La RNA BP fue formalmente definida por Verbos [38], y después por Parker [46],
posteriormente por Rummelhart y McClelland [47]. Este tipo de red esta diseñada para
Teoría Básica 29
Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales
funcionar como red de capas múltiples, con alimentación hacia adelante, empleando el
modo de entrenamiento supervisado.
La señal de error calculada es entonces transmitida hacia atrás 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 porción de
la señal de error total calculada, basada estrictamente en la contribución 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 señal de error que describe su contribución relativa al error total.
Basado en la señal de error recibida, los pesos de conexión 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. Después del entrenamiento, cuando se le presenta un patrón arbitrario de
entrada que contiene ruido o esta incompleto, las unidades en la capa intermedia de la red
responderán con una salida activa si la nueva entrada contiene un patrón que asemeje el
objeto que la unidad individual enseñado a reconocer durante el entrenamiento.
Convencionalmente, las unidades de las capas ocultas tienen una tendencia a inhibir sus
salidas si el patrón de entrada no contiene el objeto el cual fueron entrenadas a reconocer.
Conforme la señal se propaga a través de las diferentes capas en la RNA BP, la actividad
del patrón presente en cada una de las capas superiores se puede considerar como un patrón
con objetos que pueden ser reconocidos por unidades en las capas siguientes. El patrón de
salida generado puede considerarse como una representación 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
hipótesis de que todas las unidades de las capas ocultas de una RNA BP son de alguna
manera asociadas con objetos específicos 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 representación 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.
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 múltiples, con propagación de
las entradas hacia adelante y completamente interconectada en sus capas. Esto significa que
no existen conexiones hacia atrás ni conexiones que alimenten la salida de una capa hacia
otra que no sea la siguiente. Puede existir más de una capa oculta en una RNA BP.
Una RNA es llamada red representativa (mapping network) si esta es capaz de calcular
alguna función de relación entre las entradas y las salidas. Estas son útiles en situaciones
donde se desconoce la función de relación entre las entradas y salidas, en estos casos la alta
capacidad de la RNA para descubrir su propia representación es extremadamente útil.
Si se cuenta con un conjunto de P vectores de parejas, (x1 , u1 ),......(xp , up ), los cuales son
ejemplo de una función representativa u = φ (x) : x ∈ RN , u ∈ RN .
Se puede entrenar una RNA BP para obtener una aproximación O = u´ = φ (x)´. Para
emplear el método 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 ecuación de una línea que mejor aproxima un conjunto
de puntos. Y es una generalización de la regla LMS. Como este caso se asemeja a contar
con no linealidades y dimensiones múltiples, se emplea una versión interactiva del método
simple de los mínimos cuadrados, llamada técnica 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
(
I pj = f jh net hpj ) Ec. 2.47
L
Ec. 2.48
Net opk = ∑ wkjo ∗ I pj + θ ko
j =1
O pk = f k
o
(Net )
o
pk
Teoría Básica 31
Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales
El conjunto de valores de pesos iniciales representan una primera suposición de los pesos
adecuados al problema. El proceso básico de entrenamiento de una BPN esta incluido en la
siguiente descripción:
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.
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: ecuación
2.46
4.- Cambiar a la capa de salida. Calcular el valor de entrada a cada neurona: ecuación 2.48a
Notar que el error para las unidades en la capa oculta se calcula antes que los pesos de
conexión en la capa de salida sean actualizados.
wkjo (t + 1) = wkjo (t ) + ηδ pk
o
∗ i pj Ec. 2.51
Donde ηes el rango de aprendizaje
1 M 2 Ec. 2.53
Ep = ∑ δ pk
2 k =1
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 pequeño
para cada uno de los vectores de entrenamiento, el entrenamiento puede darse por
terminado.
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 serán ignorados.
Teoría Básica 33
Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales
completamente con una clase y entonces cambiar a otra podría hacer a la red olvidar el
entrenamiento original.
Los pesos pueden ser inicializados a valores pequeños y aleatorios, por ejemplo entre +0.5
y -0.5, al igual que los términos de sesgo (o umbrales), Es común emplear los valores de
sesgo como otro peso que esta conectado a una neurona ficticia cuya salida siempre es uno.
De esta manera podría participar del proceso de aprendizaje como peso y ser modificado.
Otra opción es no emplear sesgos, el uso de ellos es opcional.
wkjo (t + 1) = wkjo (t ) + ηδ pk
o
∗ i pj + α∆ p ∗ wkjo (t − 1) Ec. 2.54
Con una ecuación similar se puede encontrar los cambios de pesos en la capa oculta. En la
ecuación el símbolo α es el parámetro de momento y por lo regular es positivo menor que
1. El uso de este término es opcional.
Teoría Básica 35
Control de un Péndulo 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: León, 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 Básicos y Aplicaciones, in Catedra:Informática
aplicada a la Ingeniería de Procesos, M.S. Basualdo, Editor. 2001, Universidad
Tecnológica Nacional
Facultad Regional Rosario: Rosario, Argentina. p. 8-28.
40. Kröse, 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., Aplicación de redes neuronales en la reconstrucción
tridimensional de objetos, in MetrológiaÒptica. 2000, Centro de Investigaciones en
Òptica: León 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.
Teoría Básica 37
CAPITULO 3
DESCRIPCION DEL SISTEMA
PC :
Matlab (Neural Network Toolbox )
Simulink
Real Time Workshop
Real Time Windows Target
Fuente de Voltaje
+12V....-12V
Matlab cuenta con una caja de herramientas (Neural Network Toolboox) que permite
diseñar RNA´s. La implementación en Matlab de una RNA para funciones de control puede
realizarse de tres formas:
• Empleando la Interfase Grafica de Usuario (GUI por sus siglas en ingles) de RNA´s,
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 diseñar
RNA´s permite personalizar la arquitectura y presenta la ventaja de poder emplear
funciones de entrada, de activación y de salida definidas por el usuario o, una combinación
de las ya implementadas en el propio Matlab.
Por último, la tercer forma de diseñar una RNA es mediante la GUI nntool. Esta
herramienta nos permite crear RNA´s de distintas arquitecturas mediante la selección en un
menú de la arquitectura deseada. Para este trabajo se selecciono la GUI nntool para crear
las RNA´s empleadas en el control del PIS.
Para información de como emplear las primeras dos formas de crear RNA´s 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 combinación de:
pesos, operaciones de multiplicación y suma (en este caso realizadas como un producto
entre vectores W*P), el sesgo b, y la función 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 notación
abreviada de RNA´s , las dimensiones de la matriz se muestran debajo de los elementos
matriciales, y se pueden observar en la vista (view) de la RNA creada.
Existen dos clases de neuronas las estáticas (no tiene realimentación o retardos de tiempo) y
las dinámicas (contiene retardos de tiempo). Cada una de ellas presenta requerimientos
distintos en el formato de sus datos de entrada. Existen dos tipos básicos 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 secuénciales el orden es de
gran importancia.
La forma mas simple de simular una RNA se presenta cuando la RNA es estática. 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.
Además 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 secuénciales son presentadas a una RNA como si fueran elementos de un arreglo
de celdas, por ejemplo:
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:
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 interacción entre cada secuencia concurrente y el funcionamiento
de la RNA será como si cada una de las secuencias se presentara a distintas RNA´s
ejecutándose en paralelo.
• Crear vectores o matrices mediante la opción 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.
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 renglón en el vector o matriz de datos correspondiente representa una entrada o
neurona de salida).
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 línea de comandos o espacio de trabajo de Matlab. De
la misma manera si se desea emplear algún 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.
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 Señales 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 señal actual y n-1 valores pasados de dicha señal (siendo n la cantidad de
entradas en la RNA tipo Madaline).
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.
Como se menciona en el apartado 2.2.10, la RNA tipo BP estándar es una RNA entrenada
mediante una generalización de la Regla de Aprendizaje de Widrow-Hoff y dicha regla de
entrenamiento puede aplicarse a RNA´s de capas múltiples y con funciones de salida no
lineales, con la única condición de que sean diferenciables.
El proceso general para implementar una RNA de este tipo requiere cuatro pasos:
La GUI nntool permite crear RNA´s tipo BP con distintas arquitecturas. La arquitectura de
la red BP más empleada es la RNA tipo BP de capas múltiples con prealimentación (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 múltiples con prealimentación es necesario
seleccionar la opción Feed-forward backprop del menú Network Type en la ventana
Create New Network. Al realizar esta acción se despliega la ventana mostrada en la figura
3.6 la cual muestra los parámetros a introducir con el fin de personalizar la RNA.
Fig. 3.6 Ventana desplegada para crear una RNA tipo BP de prealimentación.
La dimensión 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 función de ejecución de la RNA. La función de
ejecución por omisión para la red con prealimentación 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 opción Performance function:). Otras
opciones de funciones de ejecución son MSEREG y SSE. Esta opción determina la forma
en la que los pesos de la RNA son ajustados, para una descripción de la manera en la que
trabajan las opciones MSEREG y SSE se puede ver el Capitulo 5 de [1].
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 renglón (conocido como simulación 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.
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:.
Después de haber personalizado la RNA creada se puede seleccionar la opción Create para
generar en la ventana Network/Data Manager el objeto que emula la RNA BP con los
parámetros 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.
Para entrenar la RNA creada, primero se debe seleccionar dicha RNA en la ventana
Network /Data Manager. Posteriormente se presiona el botón 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 inicialización, parámetros de simulación, 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 fácilmente si se desea exportarlos al espacio de trabajo de Matlab.
Para definir los parámetros que regirán 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.
Después de haber definido los parámetros adecuados es posible activar el botón Train
Network el cual iniciara la ejecución de dicha tarea.
Para verificar que una RNA ha sido entrenada adecuadamente es necesario retornar a la
ventana Network/ Data Manager y seleccionar la opción Simulate… del apartado
Networks Only, dicha opción activara la ventana de la RNA y en ese momento se
selecciona la opción Simulate…, en la ventana desplegada por esta opción 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. Después de hacer las modificaciones pertinentes se
presiona el botón Simulate network ubicado en la parte inferior derecha.
Fig. 3.10 Ventana para introducir los datos a emplear en la simulación de una RNA
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 botón 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 opción Export. De otra
manera la segunda opción Save almacenara los datos en un archivo MAT.
Para limpiar la ventana Network/ Data Manager es necesario seleccionar cada una de las
variables presentes en la ventana y activar la opción 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.
En la ventana Network / Data Manager existe la opción 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 omisión 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.
El periodo de tiempo entre cada una de las muestras se introduce mediante el parámetro
Sample time:, ver figura 3.13. La cantidad de retardos de tiempo a aplicar en la señal 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 más antiguo de la señal y finalizando con el más 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 parámetro Initial condition. La opción Include current
input in output vector permite incluir los valores actuales de la señal en el vector de
salida.
Real-Time Workshop (RTW) es una extensión de capacidades para Simulink y Matlab que
permite compilar y generar automáticamente el código fuente de modelos desarrollados en
Simulink. De esta manera se pueden crear aplicaciones de software en tiempo real.
La forma en que se desarrolla una aplicación con RTW puede observarse en el diagrama de
flujo en la figura 3.14.
Identificación de requerimentos
para las opciones de configuración
de la aplicación.
Ajuste de parámetros
de configuración
Ejecución de la Aplicación
Sí
¿Se requiere ajustar la
configuración?
No
Generar código
No
¿Es correcto el Código?
Sí
Generar código y
un programa ejecutable
No
¿Los resultados imitan
la simulación?
Sí
FIN
Fig. 3.14 Diagrama de flujo para la creación de una aplicación en RTW [2].
Otra forma de verificar los parámetros 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
parámetros correspondientes a un modelo determinado.
Desde la ventana del modelo creado en Simulink se puede generar el código y su archivo
ejecutable mediante la opción Build Model…(ctrl.+B), en el submenú Real-Time
Workshop del menú desplegable Tools. Durante el proceso de compilación 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
descripción de los archivos creados durante la construcción de una aplicación se puede
consultar el capitulo 2 de Getting Started en [2].
Al crear una aplicación 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 ejecución del
programa a realizar por lo que es necesario seleccionar la opción 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 señales generadas durante la ejecución del programa
se puede seleccionar la opción Enable archiving presente en la ventana External Data
Archiving del submenú External Model Control Panel… del menú tools de Simulink.
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 aplicación de tiempo
real, permitiendo visualizar señales, ajustar parámetros y controlar la aplicación en tiempo
real .
La ventana que nos permite emplear bloques de conexión entre la aplicación software y el
sistema físico empleando RTWT se puede acceder en la ventana de librerías 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 señal
disponible en los dispositivos configurados. El tipo de bloque que pueda utilizarse
dependerá del dispositivo seleccionado. Los parámetros de configuración de la señal
seleccionada se pueden modificar en la ventana Block Parameters : Analog Input, figura
3.18. Los parámetros 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
señales 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
señales de entrada, Input range:. Y el tipo de dato a la salida del bloque seleccionado,
Block output signal:.
Para una descripción mas detallada de los tipos de bloque disponibles y sus parámetros de
configuración se puede ver el capitulo 4 de la guía de usuario en [3]. En la misma ventana
Block Parameters: se puede dar de alta alguna de las tarjetas de adquisición de datos
compatible con RTWT, dentro de la opción 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.
La interfaz entre la tarjeta de adquisición 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 características eléctricas idénticas (uno de ellos PNP y el otro NPN) en configuración
emisor-seguidor, con los emisores conectados entre sí (ver figura 3.20).
El motor de c.c. es alimentado a través 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 señal de la tarjeta 6014 con los transistores de potencia. Estos amplifican la señal
en corriente para mover al motor con la velocidad y giro adecuado. El amplificador
operacional se realimenta (a través de R2) del voltaje que le llega al motor para asegurarse
que la señal 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.
Para que el potenciómetro proporcione una señal de tensión proporcional a la posición del
cursor éste se conecta como divisor de tensión. 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 posición del péndulo se monitorea la señal S1 y para la posición de la base móvil
la señal S2.
PARTE ELECTRICA DEL SISTEMA PIS
R3
E1 E3 - 12 V
S1 Cursor en Péndulo
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
El elemento impulsor para desplazar la base móvil 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 móvil) 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 móvil es de 30 cm. aproximadamente. Esta base se
mueve horizontalmente sobre una barra guía para mantenerse en movimiento en un solo
eje.
Motor Impulsor
(M1) Engrane Base móvil Banda de transmisión
Barra Guía
1. Demuth, H. and M. Beale, Neural Networks Toolbox User´s 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 User´s 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, Prácticas de Electrónica. 2001: AlfaOmega
Grupo Editor. 113-119.
6. Maloney, T.J., Electrónica Industrial Moderna. 3ª ed. 1997: Prentice Hall. 338-342.
En este capitulo se describe la implementación del controlador de posición 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 válidos para entrenar la red. También se
describe el proceso de entrenamiento de la red para varios conjuntos de datos.
Para entrenar una RNA BP, empleando técnicas de entrenamiento supervisado, es necesario
contar con información referente al comportamiento del sistema como los son datos de entrada
y salida. En nuestro caso los datos de entrada son las señales provenientes de los sensores de
posición (potenciómetros) y los de salida la señal 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. Además en ella está incluido el algoritmo de la red neuronal
implementado en Matlab-Simulink. La interfaz incluye la tarjeta de adquisición de datos así
como la etapa de potencia que permite accionar al motor. La interfaz es quien permite la
comunicación entre la computadora y el “mundo real”. A través de sus entradas analógicas
recibe la información de los sensores de posición (posición del péndulo θ(τ ) y de la base
móvil x(t)) y mediante su salida analógica envía la señal 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
Para obtener los datos tanto de entrada como de salida se puede emplear uno de los métodos
Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales
Las señales de realimentación en nuestro PIS son una señal de voltaje proporcional a la
posición angular del péndulo y otra proporcional a la posición longitudinal de su base móvil.
La señal de control es el voltaje de alimentación aplicado al motor de corriente directa M1.
Esta señal de control está limitada al rango de +10 a -10 V de la salida analógica de la tarjeta
6014.
Debido a que el cálculo, diseño y selección de los componentes utilizados en el desarrollo del
prototipo están fuera del ámbito de esta tesis no se hará referencia a ellos a menos que sea
necesario.
Sensor RV2
Posición de base móvil (x )
Motor Impulsor
(M1)
Sensor RV1
Angulo de la barra (θ)
Por otro lado, debido a que en nuestro prototipo PIS se presentan tiempos muertos (el motor
M1 no comienza a girar sino hasta después de un voltaje mínimo (± 1.7 Volts) y la banda de
transmisión no es completamente rígida, etc.) su comportamiento es distinto al del PIS ideal
modelado en la sección 2.1.
De acuerdo a Anderson [4], es posible obtener una señal de control (que tienda a equilibrar el
sistema) conociendo los valores de posición angular del péndulo y posición horizontal de la
base móvil así como los de sus respectivas derivadas (ecuación 2.16) [1].
20
-20
-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
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 milésimas de segundo) y en el eje de las
ordenadas la magnitud de voltaje proporcional a las señales de entrada y salida utilizadas
(multiplicado por su factor de conversión para graficarse en unidades adecuadas, ángulo o
desplazamiento lineal).
Como se puede observar el ángulo del péndulo y la posición de la base móvil es oscilatoria y
tienden a crecer a medida que pasa el tiempo. En t = 8 s y 16 s las señales alcanzan una
magnitud importante por lo que es necesario modificar manualmente el ángulo del péndulo
mediante un pequeño empujón en el péndulo para evitar que la base móvil salga de sus limites
de desplazamiento horizontal.
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 señal de control, y otros corresponden a fracciones de tiempo en el cual se
introdujo un impulso para evitar que la base móvil salga de sus límites 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
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
Considerando el comportamiento del controlador PID con filtro, el controlador PID con doble
integrador y sus respetivas señales de control la tarea a imitar por la RNA BP, se procede a
implementar la RNA BP mediante la herramienta nntool de Matlab. Los parámetros
empleados se muestran en las figuras 4.7 y 4.8. Estos corresponden a una RNA BP de
realimentación (RNA BP1) y una RNA BP con retardos de tiempo en sus entradas (RNA
BP2).
Los parámetros mostrados en dichas figuras fueron seleccionados después 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.
Como se puede observar en las figuras 4.9 y 4.10 las dos RNA´s creadas contienen la misma
cantidad de neuronas en la capa de entrada (columna izquierda obscurecida, dos neuronas),
cada una de ellas monitoreando la señal de realimentación correspondiente (RV1 y RV2). La
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 opción Input
delay vector: de la figura 4.8) que le permiten considerar mayor cantidad de información en el
aprendizaje de la función 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 podría no ser capaz de aprender la función deseada, por otro lado un exceso
de elementos podría 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 RNA´s se define la regla de aprendizaje a utilizar, que en este caso es la de
Gradiente Descendente ( Sección 2.2.8.2) por ser la mas simple en caso de desear emular la
RNA en otro ambiente de programación y poder reproducir los resultados obtenidos, tomando
como función de ejecución el Error Medio Cuadrático (Sección 3.1.3.1) que nos permite
observar la convergencia de la RNA.
Al momento de entrenar una RNA BP se debe tener presente que el contenido de los vectores
de entrenamiento determinan la función 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 están 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 función
asimilada por la RNA. Al realizar esta tesis erróneamente 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, aprendían 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 más similar a la tarea deseada. En el Apéndice 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 parámetros que se
utilizaran durante el proceso, una adecuada selección de los parámetros de entrenamiento
permitirá a la RNA BP aprender la tarea deseada (ver sección 2.2.10). Para el entrenamiento
realizado en esta tesis se emplearon los parámetros de entrenamiento mostrados en las tabla
4.1 y 4.2 (por conveniencia esta última se presenta en una página posterior).
Como podemos ver en la figura 4.11 la RNA después de aproximadamente 500 ciclos de
entrenamiento comienza a disminuir su convergencia pero variando sus parámetros 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
De la figura 4.12 podemos observar que la RNA BP1 se comporta como filtro de señal que
como imitadora de la función, siendo mas parecido a la salida deseada el valor de error
obtenido, a pesar de ello la señal 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 RNA´s 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
normalización en el vector de entradas fue el mismo para las RNA BP1 y RNA BP2, ver
Apéndice A. Los parámetros a emplear durante el entrenamiento de la RNA BP2 se presentan
en la tabla 4.2.
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 después del tercer ciclo de entrenamiento
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)
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
Fig. 4.14 Respuesta de la RNA BP2 después 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 parámetros de entrenamiento mostrados en la tabla 4.2 (parte
inferior).
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 desempeñar su función 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 RNA´s de la GUI nntool.
Salida deseada
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 después del cuarto ciclo de entrenamiento
(Datos obtenidos del controlador PID con doble integrador)
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 cuestión al espacio de trabajo de Matlab mediante la opcion
export.
En la figura 4.16 se puede observar la forma en que se implementan las RNA´s 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.
La tarea de control generada por la RNA BP2 aun tiende a exceder los limites de
desplazamiento horizontal de la base móvil por lo que se decide introducir una señal manual
que auxilie a la RNA BP2 en el control del PIS. La señal auxiliar es de +12 o -12 dependiendo
del límite (izquierdo o derecho) que esta a punto de excederse y la dirección de
desplazamiento en la base móvil.
La señal se introduce por otro canal de entrada analógica de la tarjeta PCI 6014 mediante
botones pulsadores en el momento de observar que la base móvil sale de ciertos limites en la
horizontal, dicho limite no es estático sino que el operador que la genera decide en que
momento introducir una señal auxiliar correctora en función de la posición que observa en la
base móvil.
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.
Para auxiliar el control del PIS se modifica la señal que realimenta la posición de la base
móvil 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 péndulo (+3…-3 grados, grafica
superior de figura 4.18), aunque el control de la posición de su base móvil en cierta forma es
descuidado (grafica central superior de figura 4.18), para evitar que la base móvil 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 móvil se mantenga dentro de sus
rangos de desplazamiento. Si la base móvil esta a punto de alcanzar uno de sus limites
horizontales se introduce un pico de voltaje que incline la barra-péndulo en dirección contraria
al limite que se esta a punto de alcanzar, de esta forma la señal de control generada modifica la
dirección de la base móvil.
Para implementar la señal auxiliar como parte del controlador se entreno una RNA con 4
retardos de tiempo en su entrada, en función solo de la posición horizontal de la base móvil, su
única señal de entrada es la posición de la base móvil.
El modelo Real Time Workshop del controlador implementado con las dos RNA´s se presenta
en la figura 4.19. Se observan también algunos bloques de Ganancia para normalizar los
valores de entrada a las RNA´s y también los valores de Ganancia necesarias para convertir las
variaciones de voltaje en unidades de desplazamiento angular o longitudinal, según sea el
caso.
Después de obtener las RNA´s que generan la tarea de control deseada y teniendo ya su
modelo en Simulink se procede a generar y ejecutar la aplicación en Real Time Workshop con
el fin de observar el comportamiento del PIS prototipo ante estas nuevas condiciones.
-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
Posición horizontal Base móvil (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)
Señal 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 señal 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 señal auxiliar
REFERENCIAS DE CAPITULO
1. Chou, S.C.-M., D. Goldberg, and otros, Inverted Pendulum, in Control Systems. 2001,
UBC: Conecticut. p. 6-28.
2. Míguelez García, R., Estudio diseño y desarrollo de una aplicación de tiempo real y de
un simulador para su comprobación. 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.
En este capítulo se presentan los resultados más importantes obtenidos durante el desarrollo de
esta tesis.
5.1 RESULTADOS
A lo largo de este trabajo se desarrollaron varias arquitecturas de RNA´s , sin embargo solo se
muestran las que presentan resultados más relevantes. También se realizó un trabajo arduo con
controladores clásicos como el PID para generar datos de entrada y salida válidos para
entrenar a las RNA´s.
En total se desarrollaron tres controladores con RNA´s. 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.
Se puede observar en la gráfica inferior como la posición de la base móvil casi excede los
limites de desplazamiento horizontal del prototipo, por lo que fue necesario introducir
perturbaciones de forma manual (perturbación 1, 2 y 3) para evitar que esta saliera de sus
márgenes horizontales de operación (+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 variación del ángulo del péndulo respecto a la vertical (gráfica superior de
la figura 5.1) llegó a oscilar hasta +15 y -15 grados cuando los límites de desplazamiento
Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales
De acuerdo a la teoría presentada en el capitulo 2 era de esperarse que con un simple PID no
se pueda controlar por completo al péndulo invertido. Este tipo de controlador sintonizado
correctamente puede llegar a equilibrar al péndulo pero la base móvil se moverá hasta uno de
los extremos ya que el PID solo puede controlar una variable y no dos a la vez (ángulo del
péndulo y posición horizontal de la base móvil).
El segundo controlador utilizado fue con la RNA back-propagation (RNA BP2) que tiene
como característica adicional respecto a la RNA BP1 la inclusión de retardos de tiempo (4
retardos) en sus entradas. Como se mencionó en el capítulo anterior los retardos de tiempo en
las entradas de la red permiten retener mayor cantidad de información durante el proceso de
aprendizaje. Otra característica 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 añadió un filtro digital (figura
4.3) para disminuir el ruido proveniente del sensor del péndulo pensando en que esto podría
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 gráfica superior la
magnitud y frecuencia de oscilación del péndulo disminuyen en forma notable respecto a su
contraparte de la figura 5.1. Sin embargo aún con esta mejoría la respuesta del péndulo no es
adecuada ya que nuevamente es necesario introducir perturbaciones manuales para evitar que
la base móvil salga de su rango de desplazamiento. En la gráfica inferior de la figura 5.2 se
puede ver incluso que la base móvil tiende a llegar con mayor facilidad a los extremos.
Ante estas conclusiones se procedió a buscar la forma de mejorar el controlador PID para
mantener estable tanto al péndulo como la base móvil 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
gráfica superior el comportamiento del péndulo es más estable, aunque a medida que
evoluciona el tiempo la amplitud de la oscilación tiende a crecer (figura 5.3). Este
comportamiento es similar en la base móvil, la magnitud de su oscilación también tiende a
crecer. Ya que la oscilación del péndulo y de la base móvil crecen progresivamente, en t=15
seg. se le “ayuda” manualmente al péndulo con un pequeño empujón para que la base móvil
no llegue a exceder los límites de desplazamiento. Una vez que casi se estabiliza el péndulo
con el empujón éste vuelve a repetir el patrón, aumenta la magnitud de su oscilación a medida
que evoluciona el tiempo.
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 péndulo como a la
pieza móvil, ya no con empujones en el péndulo, 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 información de manera inherente de los pulsos aplicados para corregir la
inestabilidad del péndulo y base móvil. 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 Péndulo Invertido Empleando Redes Neuronales Artificiales
sino que también incluye a la RNA BP2 como ya se explicó en el punto 4.5. La RNA AUX
también tiene cuatro retardos de tiempo en su señal de entrada (posición de la base móvil) al
igual que la RNA BP2, que le permiten considerar la posición y dirección del desplazamiento.
Al utilizar estas dos redes neuronales se logra mantener al péndulo oscilando dentro de un
estrecho margen angular y a la base móvil con pequeños 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 más la RNA AUX
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 implementación
de las RNA´s. También presento algunas propuestas para trabajos futuros con el PIS y las
RNA´s.
6.1 CONCLUSIONES
A través de esta tesis se ha comprobado que las redes neuronales pueden emular el
comportamiento de un controlador PID digital para controlar un péndulo invertido simple. Se
ha visto que si los datos obtenidos para entrenar la red neuronal son erróneos, la red arrojará
resultados erróneos. Si los datos son adecuados, el comportamiento de la red será por lo
general el esperado.
La configuración de la red neuronal es también un punto clave para que una aplicación sea
exitosa. Si los datos de entrenamiento son correctos, pero la arquitectura de la red no es la
adecuada para la aplicación, difícilmente 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 RNA´s permite retener mayor información 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 selección adecuada de
su arquitectura y los parámetros de entrenamiento a utilizar. La información que se le presente
a la RNA se puede modificar mediante normalización de sus valores en las señales de entrada
de tal forma que se pueda resaltar las características más importantes del comportamiento a
aprender. La tarea que aprende la RNA es determinada en gran manera por los atributos mas
activos de la información presentada (valores mayores tendrán mayor peso en la tarea
aprendida).
Además 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 enseñar.
f) Los datos de entrada y salida para entrenar una RNA deben estar fielmente ligados a la
acción y reacción del controlador que se desea emular. El resultado no sería el
esperado si solo se modifican los datos de entrada o de salida sin crear un vínculo
válido entre los dos conjuntos de datos.
6.2 RECOMENDACIONES
En referencia al prototipo recomiendo utilizar otro tipo de sensores para detectar la posición
del péndulo y de la base móvil. Una posible opción puede ser utilizar un encoder el cual
introduce menos ruido que los potenciómetros 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 posición.
Se recomienda también colocar interruptores en los extremos de la barra guía para evitar que
el motor se fuerce innecesariamente en caso de que la base móvil llegue a uno de ellos.
Vale la pena también comentar que es necesario rediseñar la base que soporta al péndulo y
sensor de posición ya que la actual no tiene buen acoplamiento mecánico entre el eje que une
la barra y el sensor de posición. Esta imperfección mecánica altera el valor de la posición
sensada en relación a la posición real del péndulo.
En relación al controlador que aporta los datos de entrenamiento para la RNA recomiendo
utilizar otras técnicas de control para mejorar el comportamiento del PIS. Algunas de estas
técnicas pueden ser control no lineal o variables de estado.
Sería conveniente también experimentar con otras arquitecturas de RNA´s que incluyan
conexiones de realimentación desde las neuronas de salida hacia las neuronas de entrada
(feedback) ya que estas han tenido éxito en otras aplicaciones de control.
Como trabajo futuro propongo que se implementen RNA´s en un procesador digital de señales
(DSP), el cual puede ser programado en lenguaje C ó VisSim (leguanje gráfico). El propósito
sería 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
Técnicas de Computación Suave (Lógica Difusa y Algoritmos Genéticos) 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 involucraría equilibrar en la vertical superior a la barra-
péndulo partiendo de su posición vertical hacia abajo (esto es 180º de la vertical superior).
De la misma forma queda pendiente implementar el control mediante RNA´s de otros sistemas
físicos no lineales tales como el péndulo invertido con dos eslabones, equilibrio de una masa
sostenida por un eslabón, control en la trayectoria de un proyectil, etc. Así como sistemas
mecánicos que involucren información visual, tal como el control de posición de un brazo
mecánico en función de información recabada por medio de visión digital, etc.
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=Señal.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];