Está en la página 1de 193

UNIVERSIDAD TECNOLOGICA METROPOLITANA

FACULTAD DE INGENIERIA
ESCUELA DE ELECTRONICA

“Aplicación de Redes Neuronales


Artificiales como aproximador de
funciones para el control de nivel de
lı́quido”

Trabajo de titulación para optar al tı́tulo de


Ingeniero en Electrónica

Alumnos : Rubén Cárdenas Fuentealba

Daniel Toro Zamorano


Profesor Guı́a : Luis Escobar Arrué

SANTIAGO - CHILE
2010
NOTA OBTENIDA:

Firma y Timbre autoridad responsable

III
Agradecimientos

En memoria de nuestro profesor guı́a: Luis Escobar Arrué

Con mucho cariño para mis padres que me han apoyado y entregado su
comprensión.

Agradezco al Doctor Juan Negroni y a don Eric Stemberg quienes han


corregido minuciosamente este trabajo y nos han dado la posibilidad de
mejorarlo. A don Juan Duarte Jefe de la carrera Ingenierı́a en Electrónica.

A nuestros compañeros que han seguido junto a nosotros durante la


elaboración de nuestro proyecto de tı́tulo y a todos aquellos que han hecho
posible este trabajo.

Daniel Toro Z.

Agradezco en primer lugar a mis padres y a mi abuela por su apoyo, cariño,


comprensión y paciencia que me han entregado, ya que sin ellos no hubiese
sido posible llegar a estas instancias.

A la familia de mis compañeros que participaron en este trabajo, ya que


también ellos siempre nos apoyaron.

A todos los profesores del departamento de electricidad, especialmente a los


profesores Juan Negroni, Juan Duarte y Eric Stemberg quienes corrigieron el
presente trabajo.

Rubén Cárdenas F.

Damos gracias también a la señora Teresa Ahumada y a los funcionarios del


pañol de electrónica.

IV
Resumen

Problemas como el reconocimiento de voz, reconocimiento de patrones,


procesamiento de imágenes son problemas que debido a su complejidad
motivaron el desarrollo de diversas técnicas que buscan emular la forma en que
el cerebro resuelve estos problemas, es ası́ como nace el estudio de las redes
neuronales artificiales (RNA). Estas se basan en la arquitectura del cerebro,
en el cual millones de pequeños elementos de computo, llamados neuronas,
conectadas entre si forman un sistema denominado red neuronal el cual es un
poderoso procesador. Las RNA, al igual que las neuronas cerebrales procesan
la información tomando los datos en forma paralela, lo que permite una mayor
rapidez en el manejo de la información.

Actualmente ha surgido diversas aplicaciones en diferentes áreas como son


la economı́a, electrónica, control de procesos, modelamiento de sistemas
dinámicos, etc.

Para mostrar una aplicación de las RNA en control se implementó una maqueta
de pruebas (anexo A). Esta consiste en un sistema de almacenamiento de
lı́quido donde el objetivo es mantener un nivel constante. La funcionalidad de
la RNA en la maqueta fue controlar el nivel de liquido.

Utilizando la misma maqueta se diseñó e implementó un controlador clásico


(anexo C) el que se utilizó como referencia para comparar los resultados
obtenidos con la RNA.

V
Índice general

Agradecimientos IV

Resumen V

Abstract VI

Índice de figuras XI

Índice de tablas XVIII

Introducción 1

Estado de la técnica . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1. Fundamentos de Redes Neuronales 8

1.1. La Neurona Biológica . . . . . . . . . . . . . . . . . . . . . . . . 8

1.2. Redes Neuronales Artificiales (RNA) . . . . . . . . . . . . . . . . 12

1.3. Funciones de activación . . . . . . . . . . . . . . . . . . . . . . . 14

1.3.1. Limitador Fuerte (Hardlim) . . . . . . . . . . . . . . . . . 14

1.3.2. Limitador Fuerte Simétrico (Hardlims) . . . . . . . . . . . 15

VI
1.3.3. Lineal Positiva (Poslin) . . . . . . . . . . . . . . . . . . . . 16

1.3.4. Lineal (Purelin) . . . . . . . . . . . . . . . . . . . . . . . . 16

1.3.5. Lineal Saturado (Satlin) . . . . . . . . . . . . . . . . . . . 17

1.3.6. Lineal Saturado Simétrico (Satlins) . . . . . . . . . . . . . 18

1.3.7. Transferencia Sigmoidal (Logsig) . . . . . . . . . . . . . . 18

1.3.8. Tangente Hiperbolica (Tansig) . . . . . . . . . . . . . . . . 19

1.4. Separabilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

1.5. Aprendizaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

1.5.1. Aprendizaje supervisado . . . . . . . . . . . . . . . . . . 26

1.5.2. Aprendizaje no Supervisado o Autoorganizado . . . . . . 28

1.6. Arquitecturas de Redes Neuronales Artificiales . . . . . . . . . . 29

1.6.1. Perceptrón simple . . . . . . . . . . . . . . . . . . . . . . 29

1.6.2. Perceptrón multicapa . . . . . . . . . . . . . . . . . . . . 37

2. Control Neuronal 49

2.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

2.2. Control Clásico . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

2.2.1. Sistemas de Control Dinámico . . . . . . . . . . . . . . . 50

2.2.2. Clasificación de sistemas . . . . . . . . . . . . . . . . . . 51

2.2.3. Función de transferencia . . . . . . . . . . . . . . . . . . 51

2.2.4. Respuesta temporal de los sistemas . . . . . . . . . . . . 52

2.2.5. Tipos de controladores . . . . . . . . . . . . . . . . . . . 53

2.3. Control Discreto . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

VII
2.3.1. La Transformada Z . . . . . . . . . . . . . . . . . . . . . . 56

2.3.2. Control PID Discreto . . . . . . . . . . . . . . . . . . . . . 57

2.4. Arquitecturas de Control Neuronal . . . . . . . . . . . . . . . . . 59

2.4.1. Control Indirecto . . . . . . . . . . . . . . . . . . . . . . . 62

2.4.2. Control Directo . . . . . . . . . . . . . . . . . . . . . . . . 65

3. Simulación de RNA mediante Matlab 69

3.1. Algoritmo BP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

3.1.1. Vectores de Entrenamiento, Validación y Test . . . . . . . 70

3.1.2. Mı́nimos locales y globales . . . . . . . . . . . . . . . . . 70

3.1.3. Formas de Implementación del Algoritmo Backpropagation 71

3.2. Aproximación de Funciones . . . . . . . . . . . . . . . . . . . . . 72

3.2.1. Diseño de una RNA para la aproximación de una función 72

3.3. Variaciones del Algoritmo Backpropagation . . . . . . . . . . . . 90

3.3.1. Técnica heurı́stica . . . . . . . . . . . . . . . . . . . . . . 90

3.3.2. Técnicas de Optimización Numérica . . . . . . . . . . . . 91

3.3.3. Comparación de los Algoritmos de Entrenamiento . . . . 92

3.4. Memoria distribuida . . . . . . . . . . . . . . . . . . . . . . . . . 104

3.5. Modelado de un Controlador . . . . . . . . . . . . . . . . . . . . 108

4. Implementación de Redes Neuronales 113

4.1. Función de la Red en el sistema de control de nivel . . . . . . . 113

4.2. Modulo de adquisición de Datos . . . . . . . . . . . . . . . . . . 114

4.2.1. Envı́o de datos al computador . . . . . . . . . . . . . . . 114

VIII
4.2.2. Aplicación de captura de datos mediante Visual Basic . . 115

4.2.3. Procesamiento de los datos capturados en Matlab . . . . 116

4.3. Modelado del controlador P con una Red Neuronal . . . . . . . . 116

4.4. Modelado del controlador PI con una Red Neuronal . . . . . . . 121

5. Conclusiones 126

ANEXOS 128

A. Construcción Maqueta 129

B. Modelo Actuador, Sensor y Estanque 140

C. Diseño de Controlador 144

D. Programas Utilizados 147

D.1. Códigos en utilizados en el capitulo 3 . . . . . . . . . . . . . . . 147

D.1.1. Programa para la aproximación de la función h = 1 − e−t 147

D.1.2. Programa para la aproximación de la función h = e−t sen(t) 149

D.1.3. Programa para demostración de la memoria distribuida . 152

D.1.4. Programa para copia del controlador PI . . . . . . . . . . 153

D.2. Códigos utilizados en el capitulo 4 . . . . . . . . . . . . . . . . . 154

D.2.1. Programa en Matlab para la copia del controlador P . . . 154

D.2.2. Programa en Matlab para la copia del controlador PI . . . 155

D.2.3. Programa en C para la implementación del controlador P 157

D.2.4. Programa en C para la implementación del controlador PI 158

IX
D.3. Programa sensor de nivel . . . . . . . . . . . . . . . . . . . . . . 160

E. Esquemáticos de circuitos utilizados 163

F. Planos de Conexiones 166

G. Imágenes del actuador, sensor, tableros y maqueta 170

Bibliografı́a 172

X
Índice de figuras

1.1. Neurona Biológica. . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.2. Membrana Neuronal. . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.3. Función de Activación. . . . . . . . . . . . . . . . . . . . . . . . . 11

1.4. Modelo básico de una RNA. . . . . . . . . . . . . . . . . . . . . . 12

1.5. Red neuronal multicapa. . . . . . . . . . . . . . . . . . . . . . . . 14

1.6. Función de Activación Hardlim. . . . . . . . . . . . . . . . . . . . 15

1.7. Función de Activación Hardlims. . . . . . . . . . . . . . . . . . . 15

1.8. Función de Activación Poslin. . . . . . . . . . . . . . . . . . . . . 16

1.9. Función de Activación Purelin. . . . . . . . . . . . . . . . . . . . 17

1.10.Función de Activación Satlin. . . . . . . . . . . . . . . . . . . . . 17

1.11.Función de Activación Satlins. . . . . . . . . . . . . . . . . . . . . 18

1.12.Función de Activación Logsig. . . . . . . . . . . . . . . . . . . . . 19

1.13.Función de Activación Tangente Hiperbólica. . . . . . . . . . . . 19

1.14.Ejemplo de separabilidad. . . . . . . . . . . . . . . . . . . . . . . 21

1.15.Conjuntos linealmente separables. . . . . . . . . . . . . . . . . . 22

1.16.Modelo neuronal introduciendo el parámetro bias. . . . . . . . . 23

1.17.Resultado de la introducción del parámetro bias. . . . . . . . . . 24

XI
1.18.Esquema aprendizaje supervisado. . . . . . . . . . . . . . . . . . 26

1.19.Esquema aprendizaje no supervisado. . . . . . . . . . . . . . . . 28

1.20.Modelo del perceptrón simple. . . . . . . . . . . . . . . . . . . . 30

1.21.Regiones separadas por un perceptrón simple. . . . . . . . . . . 31

1.22.Diagrama de flujo del aprendizaje del perceptrón. . . . . . . . . . 33

1.23.Gráfica de la función OR. . . . . . . . . . . . . . . . . . . . . . . 34

1.24.Clasificación a partir de los valores aleatorios. . . . . . . . . . . 35

1.25.Clasificación después del aprendizaje. . . . . . . . . . . . . . . . 36

1.26.Gráfica de la función XOR. . . . . . . . . . . . . . . . . . . . . . 37

1.27.Clasificación de la función XOR. . . . . . . . . . . . . . . . . . . 37

1.28.Esquema perceptrón multicapa. . . . . . . . . . . . . . . . . . . 38

1.29.Propagación de patrones de entrada. . . . . . . . . . . . . . . . 41

1.30.Diagrama de flujo algoritmo backpropagation. . . . . . . . . . . . 44

2.1. Sistema de lazo cerrado. . . . . . . . . . . . . . . . . . . . . . . 50

2.2. Bloque de sistema lineal invariante en el tiempo. . . . . . . . . . 52

2.3. Bloque control neuronal basado en modelo completo. . . . . . . 63

2.4. Bloque control neuronal basado en modelo inverso. . . . . . . . 64

2.5. Bloque de untosintonización con una red neuronal. . . . . . . . . 64

2.6. Bloque de control neuronal basado en le modelo de un controlador. 65

2.7. Bloque de control neuronal libre de modelo. . . . . . . . . . . . . 66

2.8. Bloque de control neuronal basado en un modelo. . . . . . . . . 67

2.9. Bloque de control neuronal robusto. . . . . . . . . . . . . . . . . 68

XII
3.1. Gráfica de mı́nimos locales y globales. . . . . . . . . . . . . . . . 71

3.2. Gráfica de la función a aproximar. . . . . . . . . . . . . . . . . . 75

3.3. Comportamiento del Error en función de las épocas para dos


neuronas ocultas. . . . . . . . . . . . . . . . . . . . . . . . . . . 77

3.4. Gráfica función original y aproximada con dos neuronas ocultas. 78

3.5. Comportamiento del Error en función de las épocas para tres


neuronas ocultas. . . . . . . . . . . . . . . . . . . . . . . . . . . 78

3.6. Gráfica función original y aproximada con tres neuronas ocultas. 79

3.7. Comportamiento del Error en función de las épocas para cuatro


neuronas ocultas. . . . . . . . . . . . . . . . . . . . . . . . . . . 79

3.8. Gráfica función original y aproximada con cuatro neuronas ocultas. 80

3.9. Comportamiento del Error en función de las épocas para cinco


neuronas ocultas. . . . . . . . . . . . . . . . . . . . . . . . . . . 80

3.10.Gráfica función original y aproximada con cinco neuronas ocultas. 81

3.11.Comportamiento del Error en función de las épocas para seis


neuronas ocultas. . . . . . . . . . . . . . . . . . . . . . . . . . . 81

3.12.Gráfica función original y aproximada con seis neuronas ocultas. 82

3.13.Comportamiento del Error en función de las épocas para siete


neuronas ocultas. . . . . . . . . . . . . . . . . . . . . . . . . . . 82

3.14.Gráfica función original y aproximada con siete neuronas ocultas. 83

3.15.Comportamiento del Error en función de las épocas ocho


neuronas ocultas. . . . . . . . . . . . . . . . . . . . . . . . . . . 83

3.16.Gráfica función original y aproximada con ocho neuronas ocultas. 84

3.17.Comportamiento del Error en función de las épocas para nueve


neuronas ocultas. . . . . . . . . . . . . . . . . . . . . . . . . . . 84

XIII
3.18.Gráfica función original y aproximada con nueve neuronas ocultas. 85

3.19.Comportamiento del Error en función de las épocas para diez


neuronas ocultas. . . . . . . . . . . . . . . . . . . . . . . . . . . 85

3.20.Gráfica función original y aproximada con diez neuronas ocultas. 86

3.21.Error final en función del número de neuronas. . . . . . . . . . . 87

3.22.Aproximación después de 1000 épocas de entrenamiento. . . . 87

3.23.Aproximación después de 2000 épocas de entrenamiento. . . . 88

3.24.Aproximación después de 3000 épocas de entrenamiento. . . . 88

3.25.Aproximación después de 4000 épocas de entrenamiento. . . . 88

3.26.Aproximación después de 5000 épocas de entrenamiento. . . . 89

3.27.Aproximación después de 5366 épocas de entrenamiento. . . . 89

3.28.Gráfica de la función a aproximar. . . . . . . . . . . . . . . . . . 93

3.29.Mı́nimo error para traingdm. . . . . . . . . . . . . . . . . . . . . . 95

3.30.Curva aproximada con mı́nimo error para traingdm. . . . . . . . 95

3.31.Mı́nimo error para traingda. . . . . . . . . . . . . . . . . . . . . . 97

3.32.Curva aproximada con mı́nimo error para traingda. . . . . . . . . 97

3.33.Mı́nimo error para traingdx. . . . . . . . . . . . . . . . . . . . . . 99

3.34.Curva aproximada con mı́nimo error para traingdx. . . . . . . . . 99

3.35.Mı́nimo error para trainrp. . . . . . . . . . . . . . . . . . . . . . . 101

3.36.Curva aproximada con mı́nimo error para trainrp. . . . . . . . . . 101

3.37.Mı́nimo error para trainlm. . . . . . . . . . . . . . . . . . . . . . . 103

3.38.Curva aproximada con mı́nimo error para trainlm. . . . . . . . . . 103

3.39.Diagrama de bloques para demostración de memoria distribuida. 105

XIV
3.40.Curva de respuesta de la red con todas las neuronas. . . . . . . 105

3.41.Curva de respuesta de la red sin la neurona dos. . . . . . . . . . 106

3.42.Curva de respuesta de la red sin la neurona cuatro. . . . . . . . 106

3.43.Curva de respuesta de la red sin la neurona seis. . . . . . . . . . 107

3.44.Curva de respuesta de la red sin la neurona ocho. . . . . . . . . 107

3.45.Curva de respuesta de la red sin las neurona tres y nueve. . . . 107

3.46.Salida del controlador P en función del error de entrada. . . . . . 109

3.47.Diagrama de bloques para la extracción de datos. . . . . . . . . 109

3.48.Comparación de las respuestas del control P y red neuronal. . . 110

3.49.Esquema de la topologı́a de la red neuronal. . . . . . . . . . . . 111

3.50.Diagrama de bloques para la simulación de la red neuronal. . . . 111

3.51.Respuestas para un sistema ideal aplicando control P y control


neuronal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

3.52.Respuestas para un sistema con ruido aplicando control P y


control neuronal. . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

4.1. Ubicación del controlador dentro la planta. . . . . . . . . . . . . . 114

4.2. Interfaz gráfica para captura de datos . . . . . . . . . . . . . . . 115

4.3. Curva de salida del control en función del error de entrada. . . . 117

4.4. Acercamiento de la curva de error. . . . . . . . . . . . . . . . . . 117

4.5. Curvas de error real y error aproximado. . . . . . . . . . . . . . . 118

4.6. Respuestas control proporcional y control neuronal. . . . . . . . 119

4.7. Diagrama de bloque para la red neuronal. . . . . . . . . . . . . . 119

4.8. Respuestas control proporcional y control neuronal sobre la planta.120

XV
4.9. Curvas de error real y error aproximado. . . . . . . . . . . . . . . 121

4.10.Esquema de la red neuronal para modelado del controlador PI. . 122

4.11.Respuestas control PI y control neuronal. . . . . . . . . . . . . . 123

4.12.Respuestas PI digital y control neuronal sobre la planta. . . . . . 123

4.13.Respuesta control PI digital. . . . . . . . . . . . . . . . . . . . . . 124

4.14.Respuesta control neuronal. . . . . . . . . . . . . . . . . . . . . . 124

A.1. Relación altura vs caudal. . . . . . . . . . . . . . . . . . . . . . . 130

A.2. Porcentaje de apertura en función de la corriente . . . . . . . . . 132

A.3. Medidas sensor ultrasónico . . . . . . . . . . . . . . . . . . . . . 133

A.4. Ancho del pulso en función de la distancia . . . . . . . . . . . . . 134

A.5. Respuesta deseada. . . . . . . . . . . . . . . . . . . . . . . . . . 137

A.6. Respuesta entregada con falla en la construcción . . . . . . . . 138

A.7. Estanque inicial . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138

A.8. Estanque modificado . . . . . . . . . . . . . . . . . . . . . . . . . 139

B.1. Respuesta estática . . . . . . . . . . . . . . . . . . . . . . . . . . 141

B.2. Respuesta Dinámica . . . . . . . . . . . . . . . . . . . . . . . . . 141

B.3. Esquema del estanque utilizado . . . . . . . . . . . . . . . . . . 142

E.1. Esquemático generador de corriente . . . . . . . . . . . . . . . . 163

E.2. Esquemático circuito normalizador de señal . . . . . . . . . . . . 164

E.3. Esquemático fuente de tensión continua . . . . . . . . . . . . . . 165

F.1. Esquemático circuito normalizador de señal . . . . . . . . . . . . 167

XVI
F.2. Esquemático fuente de tensión continua . . . . . . . . . . . . . . 168

F.3. Esquemático generador de corriente . . . . . . . . . . . . . . . . 169

G.1. Módulo actuador con generador de corriente y electroválvula


proporcional. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170

G.2. Módulo sensor de nivel. . . . . . . . . . . . . . . . . . . . . . . . 170

G.3. Tableros de almacenamiento. a) tablero alimentación general,


b) tablero controlador y generador de corriente, c) tablero
alimentación continua. . . . . . . . . . . . . . . . . . . . . . . . . 171

G.4. Maqueta final. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171

XVII
Índice de tablas

1.1. Funciones de Activación. . . . . . . . . . . . . . . . . . . . . . . 20

1.2. Regiones de separabilidad según número de capas. . . . . . . . 24

1.3. Tabla función lógica OR. . . . . . . . . . . . . . . . . . . . . . . . 34

1.4. Tabla aprendizaje función lógica OR. . . . . . . . . . . . . . . . . 35

2.1. Tabla de transformaciones de continua a discreta. . . . . . . . . 59

3.1. Resumen de topologı́a y error para primera prueba. . . . . . . . 76

3.2. Resumen de topologı́a y error para segunda prueba. . . . . . . . 76

3.3. Resumen de topologı́a y error para tercera prueba. . . . . . . . . 77

3.4. Resumen resultados para Traingdm. . . . . . . . . . . . . . . . . 94

3.5. Resumen resultados para Traingda. . . . . . . . . . . . . . . . . 96

3.6. Resumen resultados para Traingdx. . . . . . . . . . . . . . . . . 98

3.7. Resumen resultados para Trainrp. . . . . . . . . . . . . . . . . . 100

3.8. Resumen resultados para Trainlm. . . . . . . . . . . . . . . . . . 102

3.9. Resumen parámetros para controlador P neuronal. . . . . . . . . 110

4.1. Resumen parámetros para controlador P neuronal . . . . . . . . 118

4.2. Resumen parámetros para controlador PI neuronal. . . . . . . . 122

XVIII
4.3. Comparación de resultados obtenidos para los controladores P
y PI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

A.1. Caracterı́sticas bomba centrifuga . . . . . . . . . . . . . . . . . . 130

A.2. Caracterı́sticas mecánicas electroválvula proporcional . . . . . . 131

A.3. Caracterı́sticas eléctricas electroválvula proporcional . . . . . . . 132

A.4. Caracterı́sticas sensor ultrasónico . . . . . . . . . . . . . . . . . 133

B.1. Caracterı́sticas sensor y actuador . . . . . . . . . . . . . . . . . 143

XIX
Introducción

En la actualidad los microprocesadores cuentan con una elevada capacidad


de procesamiento de información, pudiendo realizar complicadas operaciones
matemáticas en tiempos muy reducidos, sin embargo, a pesar de esta
caracterı́stica, ciertas operaciones como son por ejemplo el reconocimiento
de patrones, reconocimiento del habla, procesamiento de datos en entornos
ruidosos se tornan complicadas, exigiendo muchos recursos del microproce-
sador y un tiempo de procesamiento muy largo. Estas mismas operaciones
son menos complicadas de realizar para el cerebro humano, esto se debe a la
diferencia que existe en la forma de procesar la información.

A diferencia de un computador el cerebro está constituido por millones de


elementos básicos de procesamiento, llamados neuronas, las cuales están
interconectadas formando una compleja red de procesamiento, denominada
red neuronal. Se puede decir que la neurona es un pequeño procesador,
lento y sencillo, pero que al conectarse con otras formando una red trabajan
en forma paralela, constituyendo un sistema de procesamiento enorme. Es
debido a esta caracterı́stica del cerebro que surgió la idea de crear sistemas
de procesamiento basados en la arquitectura cerebral, y es por esta razón que
nace el estudio de las redes neuronales artificiales (RNA).

Las redes neuronales artificiales son una forma de emular ciertas caracterı́sti-
cas propias del cerebro, como la capacidad de memorizar y de asociar hechos.
Si se examinan con atención aquellos problemas que no pueden expresarse a
través de un algoritmo, se observará que todos ellos tienen una caracterı́stica
en común: la experiencia. El hombre es capaz de resolver estas situaciones
acudiendo a la experiencia adquirida.

En la actualidad las redes neuronales artificiales se han aplicado en diversas

1
áreas como son: las finanzas, la electrónica, computación, automatización de
procesos, identificación de sistemas dinámicos, etc.

En el presente trabajo se desarrolla un controlador basado en la capacidad de


las redes neuronales artificiales de trabajar como aproximadores universales
de funciones. Para esto se implementó una maqueta de control de nivel en la
que es aplicado el controlador neuronal. Esta maqueta también permitirá el
desarrollo de otros trabajos en el laboratorio de control automático.

El trabajo está estructurado de la siguiente forma:

En el capitulo 1 se presentan los fundamentos matemáticos que explican las


redes neuronales artificiales y las distintas arquitecturas existentes.

En el capitulo 2 se describen brevemente las técnicas de control clásico


y las arquitecturas de control neuronal.

En el capitulo 3 se desarrollan simulaciones en Matlab basadas en los


distintos algoritmos de entrenamiento de las redes neuronales artificiales y se
modela un controlador.

En el capitulo 4 se implementa el controlador neuronal y se muestran


los resultados obtenidos en forma practica al aplicarlo sobre la maqueta
de pruebas y se realiza una comparación con un controlador PI discreto
desarrollado en el anexo C.

2
Estado de la técnica

El estudio de las redes neuronales artificiales data de principios del siglo XX,
la primera implementación de una red neuronal fue desarrollada por Russell
en 1913 y consistı́a en un sistema hidráulico. Pero fue en la década del 40
donde el estudio de las redes neuronales cobró fuerza con los aportes de
Warren McCulloch y Walter Pitts quienes desarrollaron un modelo matemático
basado en que las neuronas operan mediante impulsos binarios, el cual
introduce el concepto de una función de paso por umbral. Posteriormente
Donald Hebb (1949) desarrollo un procedimiento matemático de aprendizaje
que actualmente lleva su nombre (aprendizaje Hebbiano).

En 1957 Frank Rosenblantt basándose en el modelo de McCulloch-Pitts


desarrollo un modelo al que llamó Perceptrón el cual incluı́a aprendizaje. Este
ajustaba los pesos de las conexiones de entrada y salida en proporción al error
entre la salida deseada y la salida obtenida. En ese mismo año Kolmogorov
enunció el teorema que motivó la aplicación de las redes neuronales como
aproximadores universales de funciones.

En el año 1960 Bernard Widrow y Marcial Hoff desarrollaron el modelo Adaline


(ADAptative LINear Elements). Esta fue la primera red neuronal aplicada a un
problema real (filtros adaptativos para eliminar ecos en las lı́neas telefónicas)
que se ha utilizado comercialmente durante varias décadas.

Steinbuch (1963) fue uno de los primeros investigadores en desarrollo de


métodos de codificación de información. Las redes de Steinbuch se aplicaron al
reconocimiento de escritura a mano distorsionada, mecanismos de diagnostico
de fallos de maquinarias y control de multiples procesos en producción.

En 1968 Longuet y Higgins crearon un sistema de ecuaciones codificadas para


almacenar y recuperar una secuencia de señales.

A comienzos de la década del 70 Teuvo Kohonen se centro en investigaciones


sobre memoria asociativa y matrices de correlación. Unos años mas tarde

3
extendió el modelo de memoria asociativa lineal y desarrollo un sistema de
aprendizaje competitivo.

En el año 1982 Hopfield desarrolló un modelo que tenı́a la capacidad de


trabajar con varias neuronas y permite conexiones recurrentes, es decir todas
las neuronas están conectadas entre ellas mismas, pero siempre dentro de
la misma capa. Esta red funciona como una memoria asociativa, esto quiere
decir que es capaz de recuperar patrones almacenados a partir de información
incompleta sobre los de entrada o incluso a partir de patrones con ruido.

Actualmente existen diversas aplicaciones comerciales donde son aplicadas


las redes neuronales artificiales. A continuación se detallan algunas de estas.

Clasificación de patrones.
Fraudes de tarjeta de crédito: diversos bancos y compañı́as de tarjetas
de crédito como American Express, Mellon Bank y First American Bank
utilizan las RNA para detectar fraudes con sus tarjetas de crédito.

Reconocimiento de caracteres impresos: Empresas como Veryfone han


desarrollado circuitos integrados especı́ficos para un lector de números
de talones bancarios donde se emplea un chip neuronal analógico
diseñado por Synaptics o un escáner con forma de bolı́grafo traductor
y lector.

Reconocimiento de caracteres manuscritos: la empresa HNC comerciliza


un producto de RNA mediante el cual se pueden leer formularios rellenos
a mano.

Reconocimiento del habla: la empresa Sensory circuits comercializa


desde 1995 la serie de circuitos integrados para reconocimiento del
habla RSC que implementan una combinación de algoritmos neuronales
y estadı́sticos en un único chip.

Control de calidad: la multinacional europea Philips usa redes neuronales


en la evaluación de ruido en radio casetes de automóviles, ası́ como
otras empresas las usan en la detecciones de niveles de contaminantes

4
en plantas quı́micas, la clasificación de anomalı́as en altavoces y la
evaluación del grado de pureza del zumo de naranja.

Prospecciones petrolı́feras: compañı́as petrolı́feras como Arco, Texaco


las emplean para determinar la localización de bolsas subterráneas de
gas y petróleo.

Control y optimización
Fabricación de celulosa y papel: Siemens ha aplicado redes a la
optimización del proceso de fabricación de celulosa en la planta de
Celulose do Caima en Portugal.

Hornos de fundiciones: la empresa Neural Applications Corp. posiciona


de forma precisa el electrodo de un horno de arco de voltaje empleado
en la fundición de acero.

Industria de semiconductores: Kopin Corp ha empleado RNA para


controlar el espesor de la capa de dopantes y su concentración, con
lo que ha conseguido reducir los defectos en la fabricación de células
solares. Intel también las utiliza en la manufactura de circuitos integrados
para modelar, monitorizar o controlar los procesos altamente no lineales
relacionados con la manufactura de semiconductores.

Control de procesos quı́micos: las RNA se utilizan para reducir residuos,


aumentar la calidad el producto, incrementar el rendimiento de la planta,
predecir rendimientos y detectar fallos.

Aplicaciones militares
Guiado automático de misiles: se emplean RNA analógicas para el
guiado automático de misiles y otras aplicaciones militares debido a que
las RNA presentan enormes ventajas cuando se requiere una rápida
toma de decisiones.

Combate aéreo: el avión de combate táctico avanzado LOCKHEED’S


YF-22 analiza datos de situaciones de vuelo normal y de combate para
poder proporcionar ayuda al piloto en el manejo del avión ante inminentes

5
acciones enemigas.

Otras aplicaciones
Predicción: en este campo las redes neuronales proporcionan un
excelente resultado, por ejemplo, en la predicción de consumo eléctrico,
gas y flujo de rı́os.

Fallos en motores eléctricos: la empresa Siemens ha desarrollado un


sistema neuronal capaz de predecir los fallos de grandes motores de
inducción. El porcentaje de aciertos en dicha predicción resulta ser de un
90 frente al 30 obtenido anteriormente con otras técnicas

Conducir camiones: el procedimiento para conducir marcha atrás un


camión con remolque es un problema altamente no lineal. Se utilizó una
RNA que aprendiera por si misma a conducir hacia atrás el vehı́culo con
su remolque, empleando datos de la simulación por computador de un
camión.

Automoción: Ford Motor Co ha desarrollado el primer vehı́culo de


emisiones ultra bajas empleando redes neuronales. General Motors ha
empleado RNA para modelar las preferencias de sus clientes lo cual sirve
de información a sus ingenieros para poder diseñar nuevos modelos.

Aplicaciones biomedicas: algunas aplicaciones biomedicas de las RNA


son, el estudio de secuencias de aminoacidos en proteinas, nucleótidos
en ADN y ARN, clasificación de señales electrocardiográficas y elec-
troencefalográficas, etc.

6
Objetivos

Objetivo General

Diseñar e Implementar una maqueta de control de nivel de lı́quidos por medio


de redes neuronales artificiales para el desarrollo en laboratorio de control
automático.

Objetivos Especı́ficos

Conocer la teorı́a de las redes neuronales artificiales.

Diseñar el controlador neuronal utilizando una arquitectura perceptrón


multicapa con algoritmo de entrenamiento backpropagation.

Desarrollar por medio de simulaciones en Matlab un control basado en


Redes Neuronal Artificiales.

Diseñar e implementar un control clásico para realizar comparaciones


con el controlador neuronal.

Implementar el hardware necesario para el funcionamiento del contro-


lador neuronal.

7
Capı́tulo 1

Fundamentos de Redes
Neuronales

1.1. La Neurona Biológica

Las neuronas son un tipo de célula altamente especializada que componen el


sistema nervioso, puede haber aproximadamente cien millones de ellas. Estas
al agruparse en capas constituyen un sistema con funcionalidad propia.

8
ramificaciones
terminales

Figura 1.1: Neurona Biológica.

Las neuronas son un tipo de células del sistema nervioso cuya principal
caracterı́stica es la excitabilidad de su membrana plasmática.

Una neurona biológica esta compuesta por los siguientes elementos:

Definición 1.1.1
Dendritas: Son un gran número de ramificaciones de entrada, que propagan
los impulsos electroquı́micos al interior de la neurona.

Definición 1.1.2
Axón: Fibra larga que propaga un impulso electroquı́mico desde el cuerpo de
la célula o núcleo al resto de las neuronas a través de sus terminales.

Definición 1.1.3
Sinapsis: Corresponde a la conexión de dos neuronas, una neurona envı́a la
información a través del axón y otra neurona recibe la información a través de la
dendrita, de esta forma el proceso de sinapsis se convierte en un amplificador
o reductor de la señal.

9
Definición 1.1.4
Soma: Es el cuerpo celular de la neurona.

Definición 1.1.5
Núcleo: Almacena la información de las señales de entrada.

En la figura (1.1) se muestra una representación de la neurona biológica.

Otro tipo de células se conocen como las receptoras, éstas se diferencian


porque no reciben información a través de la sinapsis, sino que la reciben
directamente de estı́mulos. Los estı́mulos son el mecanismo de contacto con
el mundo exterior.

En resumen, se puede decir que las neuronas cumplen con las siguientes
funciones:

Recoger la información que llega a ellas por medio de impulsos desde


otras neuronas o desde receptores.

Integran esta información en un código de activación propio de la célula.

Transmite la información codificada en forma de impulsos a través de sus


axones.

A través de las ramificaciones el axón realiza la distribución espacial de


los mensajes.

En sus terminales transmite los impulsos a las neuronas subsiguientes o


a las células efectoras.

La generación de la señal nerviosa esta determinada por la membrana


neuronal y los iones presentes a ambos lados de ella, esta contiene canales
iónicos que impiden o permiten el paso de iones de sodio Na+ , potasio K + y
calcio Ca2+ . Lo descrito anteriormente se muestra en la figura (1.2).

10
Na +
-60mV K+
+ -
Ca +
+ -
-
+ -
+ -
-
+ -
+

Figura 1.2: Membrana Neuronal.

Al tener una concentración alta de iones de K + en su interior, y mayor aún


de Na+ en el exterior se establece una diferencia de potencial de -60mV.
Al producirse un gran número de excitaciones, la suma de los potenciales
positivos generados puede elevar el potencial de la neurona por encima de los
-45mV (umbral de disparo), en ese momento se abren los canales de sodio, de
modo que los iones Na+ entran masivamente provocando la despolarización
brusca de la neurona, que pasa de un potencial de reposo de -60mV a 50mV,
como se puede ver en la figura (1.3). Luego de esto la neurona vuelve a su
estado de reposo de -60mV, generando un potencial de acción que se propaga
a través del axón dando lugar a la transmisión eléctrica de la señal nerviosa.

50mV
Potencial deAcción

1ms

t(ms)

Periodo Refractario

-45mV Umbral deDisparo

-60mV Potencial deReposo

Polarización Despolarización Hiperpolarización

Figura 1.3: Función de Activación.

11
1.2. Redes Neuronales Artificiales (RNA)

Las redes neuronales artificiales buscan emular el comportamiento de las


redes neuronas biológicas con el fin de obtener alguna de las caracterı́sticas
de ésta, como lo son el paralelismo de cálculo, la memoria distribuida y
la adaptabilidad al entorno. El elemento básico de una RNA es la neurona
artificial, cada uno de estos elementos recoge la información de n entradas
con una función de agregración g : Rn → R. La salida total es generada a
partir de una función f : R → R llamada función de activación.

La figura (1.4) muestra el modelo básico de una neurona artificial.

x1 w1

Funciónde
Activación
x2 w2 y
Señalesde
f( )
Salida
Entrada
. . Sumador
. .
. .
xn wn
PesosSinápticos

Figura 1.4: Modelo básico de una RNA.

Este modelo está constituido por los elementos definidos a continuación:

Definición 1.2.1
Entradas (Xi ): Provienen del exterior o de las neuronas a las que está conec-
tada, éstas pueden tomar valores binarios o continuos.

Definición 1.2.2
Pesos sinápticos (Wi ): Son las intensidades de la sinapsis que conectan dos
neuronas, amplificando o reduciendo la señal de entrada para ser evaluada en
la función de activación.

12
Definición 1.2.3
Función de activación (f ): Produce la señal de salida de la neurona, esto
lo hace en función de la suma ponderada de las entradas con los pesos
sinápticos.

Definición 1.2.4
Función de salida (y): Proporciona la salida global, al igual que la entrada,
ésta puede tomar valores binarios o continuos.

y = f (w1 x1 + w2 x2 + ... + wn xn )

(1.1)
n
!
X
y=f Wi Xi
i=1

La ecuación anterior indica que la neurona toma todas las entradas


(x1 , x2 , ..., xn ), estas son ponderadas con las ganancias o pesos sinápticos
(w1 , w2 , ..., wn ), luego se suman y el resultado es evaluado en la función de
activación de la que dependerá el valor de salida.

Un conjunto de elementos básicos forman un sistema global de proceso, el cual


se divide en tres secciones definidas como capas: capa de entrada, capa oculta
y capa de salida, donde cada una está compuesta por un número determinado
de neuronas. Cada capa cumple una función distinta, y estas interconectadas
entre si forman una red neuronal artificial.

Definición 1.2.5
Capa de entrada: Es aquella que está compuesta por neuronas que reciben
datos del entorno. Estas no actúan como neuronas propiamente tal, sino que
se encargan de recibir los patrones de entrada y propagar esas señales a las
neuronas de la capa siguiente.

Definición 1.2.6
Capas ocultas: Son aquellas que no tienen contacto con el medio exterior, sus
elementos pueden tener diferentes conexiones.

13
Definición 1.2.7
Capa de salida: Es aquella cuyas neuronas proporcionan la respuesta de la
red neuronal.

Señal Señal
Entrada Salida

. . .
. . .
. . .

Capa de Primera Segunda Capa de


Entrada capa oculta capa oculta Salida

Figura 1.5: Red neuronal multicapa.

1.3. Funciones de activación

La función de activación proporciona la salida de la neurona, que puede ser


lineal o no lineal y que es escogida según las caracterı́sticas del problema. A
continuación se presentan las distintas funciones de activación (f ).

1.3.1. Limitador Fuerte (Hardlim)

Esta función permite que la neurona clasifique las entradas en dos categorı́as
diferentes. La salida de esta función puede ser una constante positiva o cero.
Esta función posee una discontinuidad en un punto que imposibilita de derivada
en dicho punto.

14


 1 si p ≥ 0
a= (1.2)
0 si p < 0

0.9

0.8

Funcion de Activacion (a)


0.7

0.6

0.5

0.4

0.3

0.2

0.1

0
−10 −8 −6 −4 −2 0 2 4 6 8 10
p

Figura 1.6: Función de Activación Hardlim.

1.3.2. Limitador Fuerte Simétrico (Hardlims)

Corresponde a una modificación de la función anterior, ésta varı́a en su salida


entre 1 y -1.



 1 si p ≥ 0
a= (1.3)
 −1 si p < 0

0.8

0.6
Funcion de Activacion (a)

0.4

0.2

−0.2

−0.4

−0.6

−0.8

−1
−10 −8 −6 −4 −2 0 2 4 6 8 10
p

Figura 1.7: Función de Activación Hardlims.

15
1.3.3. Lineal Positiva (Poslin)

Función lineal cuya salida es igual a la entrada a partir del cero.



 0 si p < 0
a= (1.4)
p si p ≥ 0

10

7
Funcion de Activacion (a)

0
−10 −8 −6 −4 −2 0 2 4 6 8 10
p

Figura 1.8: Función de Activación Poslin.

1.3.4. Lineal (Purelin)

La salida de la función de activación lineal es igual a su entrada.

a=p (1.5)

16
10

Funcion de Activacion (a)


4

−2

−4

−6

−8

−10
−10 −8 −6 −4 −2 0 2 4 6 8 10
p

Figura 1.9: Función de Activación Purelin.

1.3.5. Lineal Saturado (Satlin)

Corresponde a una función de activación lineal saturada en 1.





 0 si p < 0


a= p si 0 ≤ p ≤ 1 (1.6)




1 si p > 1

0.9

0.8
Funcion de Activacion (a)

0.7

0.6

0.5

0.4

0.3

0.2

0.1

0
−4 −3 −2 −1 0 1 2 3 4
p

Figura 1.10: Función de Activación Satlin.

17
1.3.6. Lineal Saturado Simétrico (Satlins)

Corresponde a una función de activación lineal saturada antes del -1 y después


del 1, siendo proporcional a la entrada entre -1 y 1.





 −1 si p < −1


a= p si −1 ≤ p ≤ 1 (1.7)




1 si p > 1

0.8

0.6
Funcion de Activacion (a)

0.4

0.2

−0.2

−0.4

−0.6

−0.8

−1
−4 −3 −2 −1 0 1 2 3 4
p

Figura 1.11: Función de Activación Satlins.

1.3.7. Transferencia Sigmoidal (Logsig)

Esta función toma los valores de entrada, los cuales pueden tomar cualquier
valor p ∈ R, y restringe la salida a valores entre cero y uno.

1
a= (1.8)
1 + e−p

18
1

0.9

0.8

Funcion de Activacion (a)


0.7

0.6

0.5

0.4

0.3

0.2

0.1

0
−4 −3 −2 −1 0 1 2 3 4
p

Figura 1.12: Función de Activación Logsig.

1.3.8. Tangente Hiperbolica (Tansig)

Al igual que la función sigmoidal posee una entrada de p ∈ R y su salida varia


entre menos uno y uno.

ep − e−p
a= (1.9)
ep + e−p

0.8

0.6
Funcion de Activacion (a)

0.4

0.2

−0.2

−0.4

−0.6

−0.8

−1
−4 −3 −2 −1 0 1 2 3 4
p

Figura 1.13: Función de Activación Tangente Hiperbólica.

En la tabla (1.1) se resumen las distintas funciones de activación utilizadas en


redes neuronales.

19
Relación
Nombre Icono Función
Entrada/Salida

a=0p<0
Limitador Fuerte Hardlim
a=1p≥1

Limitador Fuerte a = −1 p < 0


Hardlims
Simétrico a = +1 p ≥ 1

a=0p<0
Lineal Positiva Poslin
a=pp≥0

Lineal a=p Purelin

a=0p<0
Lineal Positiva a=p0≤p≤1 Satlin
a=1p>1

a = 0 p < −1
Lineal Positiva
a = p −1 ≤ p ≤ 1 Satlins
Simétrico
a = +1 p > 1

Sigmoidal 1
a= Logsig
Logaritmico 1 + e−p

Tangente
ep − e−p
Sigmoidal a= Tansig
ep + e−p
Hiperbólica

Tabla 1.1: Funciones de Activación.

1.4. Separabilidad

Una de las caracterı́sticas de las RNA es su capacidad para clasificar


determinados patrones. Para esto la red neuronal divide el espacio en regiones

20
separadas por hiperplanos, lo que implica que puede resolver problemas que
sean linealmente separables. Se dice que dos conjuntos de puntos A y B
en un espacio n-dimensional son linealmente separables si existen n + 1
números reales (W1 , ..., Wn+1 ) tales que cada punto (X1 , ..., Xn ) ∈ A satisface
Pn Pn
i=1 wi xi ≥ wn+1 , y que cada punto (X1 , ..., Xn ) ∈ B satisface i=1 wi xi <
wn+1.

Con una neurona con dos entradas es posible separar un plano en dos
regiones mediante una recta que pasa por el origen, como se muestra en
la figura (1.14). Utilizando la función de activación Hardlim se obtendrán dos
posibles valores de salida 1 ó 0, lo que permite discriminar si un valor pertenece
o no a una determinada región.
x2

x1 w1
X
X
X
y X
f( )
X x1
w2 X
x2

Figura 1.14: Ejemplo de separabilidad.

Para el modelo de la figura (1.14), la ecuación (1.1) toma la siguiente forma:

y = f (w1 x1 + w2 x2 ) (1.10)

el argumento de la función será el siguiente:

p = w1 x1 + w2 x2 (1.11)

Por tanto, la función de salida será:



 1 si w1 x1 + w2 x2 ≥ 0
y= (1.12)
0 si w1 x1 + w2 x2 < 0

21
Situando x1 y x2 sobre los ejes de abscisas y ordenadas en el plano se obtiene:

w1 x1 + w2 x2 = 0 (1.13)

w1
x2 = − x1 (1.14)
w2

En la figura (1.15) se muestran dos patrones distintos distribuidos de tal forma


que permiten una separabilidad lineal entre ellos. Con el modelo de la figura
(1.14) no es posible realizar la clasificación de estos dos patrones, debido a
que la recta formada por los parámetros de la red pasa por el origen del plano.

x2

X
X
X
X
X
X

x1

Figura 1.15: Conjuntos linealmente separables.

Para poder solucionar esto, es necesario desplazar la recta que pasa por
el origen. Esto se consigue introduciendo el parámetro denominado bias o
umbral b, donde este parámetro es una constante que desplaza la recta desde
el origen. De esta forma la salida de la neurona queda determinada por la
siguiente ecuación.

y = f (w1x1 + w2 x2 + ... + wn xn + b)

(1.15)
n
!
X
y=f Wi Xi + b
i=1

Al introducir el parámetro bias el modelo neuronal queda como se muestra en


la figura (1.16). Este modelo fue desarrollado en la década de los cuarenta por
Warren Mc Culloch y Walter Pitts, y sirvió de base para estudios posteriores.

22
x1 w1
b
Funciónde
Activación
x2 w2 y
Señalesde
f( )
Salida
Entrada
. . Sumador
. .
. .
xn wn
PesosSinápticos

Figura 1.16: Modelo neuronal introduciendo el parámetro bias.

Por lo tanto, utilizando una función de activación Hardlim se obtiene lo


siguiente:

y = f (w1 x1 + w2 x2 + b) (1.16)

p = w1 x1 + w2 x2 + b (1.17)

Por tanto, la función de salida será:



 1 si w1 x1 + w2 x2 ≥ −b
y= (1.18)
0 si w1 x1 + w2 x2 < −b

Situando x1 y x2 sobre los ejes de abscisas y ordenadas en el plano se obtiene:

w1 x1 + w2 x2 = −b (1.19)

La recta que permite separar estos patrones esta definida por la siguiente
ecuación.

w1 b
x2 = − x1 − (1.20)
w2 w2

23
La separación de las dos regiones queda ilustrada en la figura (1.17).

x1 w1 x2

y
f( ) X
X
w2 X
X
x2
X
X
b
x1

Figura 1.17: Resultado de la introducción del parámetro bias.

Como se mostró en el modelo de la figura (1.17) se puede discriminar entre


patrones que sean linealmente separables, pero las limitaciones aparecen
cuando los elementos no cumplen con esta propiedad. La solución consiste en
formar una red con más capas, aumentando ası́ las regiones de separabilidad.
En la tabla (1.2) se muestra como al aumentar las capas aumentan éstas
regiones.

Formas de
Regiones de Problema de la Clases con
Estructuras Regiones más
Decisión XOR Mezcladas
Generales
1Capa

Medio plano A B
A

limitado por un
B
B A
hiperplano
2Capas

Regiones A B
A

Cerradas o
B
B A
Convexas

Complegidad
3Capas

Arbitraria A B
A

Limitada por el
B
B A
Número de
Neuronas

Tabla 1.2: Regiones de separabilidad según número de capas.

24
1.5. Aprendizaje

El aprendizaje en las redes neuronales está definido como el proceso mediante


el cual se ajustan ciertos parámetros de la red para lograr obtener una salida
correcta. Los parámetros de la red serán ajustados dependiendo del tipo de
aprendizaje.

Según el esquema de aprendizaje de la red es el tipo de problemas que ésta


es capaz de resolver.

Uno de los pioneros en los modelos de aprendizaje en redes neuronales fue


Donald Hebb (1949), quien realizó la siguiente postulación.

“Cuando un axón de una celda A está suficientemente cerca


como para conseguir excitar a una celda B y repetida o persisten-
temente toma parte en su activación, algún proceso de crecimiento
o cambio metabólico tiene lugares en una o ambas celdas, de tal
forma que la eficiencia de A, cuando la celda a activar es B, au-
menta.”

El modelo Hebbiano se basa en las formas de aprendizaje en donde la


modificación de los pesos es proporcional al producto de una entrada (xi ) por
la salida de la neurona (yi ). La siguiente expresión corresponde al modelo
matemático de la regla de Hebb.

∆wji = εyj xi (1.21)

Donde

ε: parámetro llamado ritmo de aprendizaje, y su valor está entre cero y uno.


i: ı́ndice del vector de la capa de entrada.
j: ı́ndice del vector de la capa de salida

25
actual anterior
wji = wji + ∆wji (1.22)

Dentro de los tipos de aprendizaje que existen se pueden destacar dos: el


aprendizaje supervisado y el aprendizaje no supervisado o autoorganizado.

1.5.1. Aprendizaje supervisado

En este tipo de aprendizaje se tienen patrones de entrada con una salida


deseada correspondiente a cada patrón. Se ingresan los patrones que son
procesados por la red obteniendo una salida relativa, esta salida es comparada
con la salida deseada del patrón de entrenamiento. Si existe una diferencia
significativa los pesos de las neuronas se ajustaran en gran medida, en caso
contrario el ajuste será menor. Este procedimiento es realizado hasta que la
salida sea igual o de un valor muy cercano (dependiendo del algoritmo de
entrenamiento) a la salida esperada por el patrón de entrenamiento.
Patrón de Entrada

Patrón de Salida
Salida Obtenida

Red Neuronal

Figura 1.18: Esquema aprendizaje supervisado.

En este tipo de aprendizaje se suelen considerar tres formas, que dan lugar a
los siguientes aprendizajes supervisados:

1. Aprendizaje por corrección de error.

2. Aprendizaje por refuerzo.

3. Aprendizaje estocástico.

26
1. Aprendizaje por corrección de error

Consiste en ajustar los pesos de las conexiones de la red en función de


la diferencia entre los valores deseados y los obtenidos en la salida de la
red, es decir, en función del error cometido en la salida.

Una regla o algoritmo es el siguiente:

∆wji = αyi(dj − yj ) (1.23)

Siendo:

∆wji : Variación del peso de la conexión ente las neuronas i y j.


yi : Valor de la salida de la neurona i.
dj : Valor de salida deseado para la neurona j.
yj : Valor de salida obtenido para la neurona j.
α : Factor de aprendizaje (0 < α ≤ 1) que regula la velocidad del
aprendizaje.

2. Aprendizaje por refuerzo

En el aprendizaje por refuerzo la función del supervisor se reduce a


indicar mediante una señal de refuerzo si la salida obtenida en la red
se ajusta a la deseada (éxito = +1 o fracaso = −1), y en función de ello
se ajustan los pesos basándose en un mecanismo de probabilidades.

3. Aprendizaje estocástico

Este tipo de aprendizaje consiste básicamente en realizar cambios


aleatorios en los valores de los pesos de las conexiones de la red y
evaluar su efecto a partir del objetivo deseado y de distribuciones de
probabilidad.

27
1.5.2. Aprendizaje no Supervisado o Autoorganizado

Este tipo de aprendizaje, a diferencia del aprendizaje supervisado, entrega a


la red los patrones de entrenamiento sin incorporar la respuesta que se desea.
La propia red va modificando los pesos a partir de información interna.

Es llamado también sistema autoorganizado ya que para su ajuste solo


depende de los valores de entrada.

Ajuste
Patrón de Entrada

Salida Obtenida
Red Neuronal

Figura 1.19: Esquema aprendizaje no supervisado.

En cuanto a los algoritmos de aprendizaje no supervisado, se suelen


considerar dos tipos:

1. Aprendizaje hebbiano.

2. Aprendizaje competitivo y comparativo.

1. Aprendizaje hebbiano

El aprendizaje hebbiano consiste en el ajuste de los pesos de las


conexiones de acuerdo con la correlación de los valores de activación
de las neuronas conectadas, según se muestra en la ecuación (1.21).

2. Aprendizaje competitivo y cooperativo

En dicho aprendizaje suele decirse que las neuronas compiten y


cooperan unas con otras con el fin de llevar a cabo una tarea dada.

28
La competición ente neuronas se realiza en todas las capas de la red,
existiendo en estas neuronas conexiones recurrentes de autoexcitación y
conexiones de inhibición por parte de neuronas vecinas. Si el aprendizaje
es cooperativo, estas conexiones con las vecinas serán de excitación.

1.6. Arquitecturas de Redes Neuronales Artifi-

ciales

La arquitectura se define como la estructura de las conexiones de una


red neuronal. Dependiendo del tipo de arquitectura que posea la red es el
comportamiento que ésta posee.

Se distinguen dos tipos de arquitecturas que están relacionadas con el tipo de


conexión de las capas, estas pueden ser redes monocapa que son aquellas
compuestas por una única capa de neuronas y las redes multicapa que están
compuestas por varias capas de neuronas.

Dentro de los tipos de redes neuronales existentes se pueden destacar el


perceptrón simple, perceptrón multicapa.

1.6.1. Perceptrón simple

La red tipo perceptrón simple fue desarrollada por Rosenblatt a finales de


la década del cincuenta. Para la implementación de esta red Rosenblatt se
basó en el sistema sensorial de los animales en donde la información recibida
pasa a través de continuas capas de neuronas.

Para su funcionamiento esta red se compone de dos capas, una capa de


entrada y una capa de salida. La información ingresa a través de la capa de
entrada, luego esta información es ponderada por los pesos sinápticos para
posteriormente realizar la suma de estas entradas ponderadas y finalmente el

29
resultado de esta suma es comparado con un valor umbral.

x1 w1

x2 w2 y

w3
x3
b

Figura 1.20: Modelo del perceptrón simple.

En la figura (1.20), Xi representa las entradas a la neurona, los pesos


sinápticos están definidos por Wi , b corresponde al umbral, bias o ganancia
y se utiliza como factor de comparación para producir la salida (este factor
produce el desplazamiento de la recta).

La función de salida o activación para este tipo de red es de tipo escalón, la


cual puede ser una hardlim (ecuación 1.2) tomando valores entre cero y uno
o una hardlims (ecuación 1.3) tomando valores entre menos uno y uno. La
elección de la función de activación depende del tipo de salida que se espere
para la red.

Para un perceptrón simple la salida queda definida por la ecuación (1.24).

n
!
X
y=f Wi Xi + b (1.24)
i=1

Una caracterı́stica del perceptrón es que tiene la capacidad de separar dos


regiones por una lı́nea recta o hiperplano, lo que le da la facultad de resolver
problemas linealmente separables.

El hiperplano que separa las regiones está definido por los pesos sinápticos y
desplazado por el umbral de la función de activación.

Para un perceptrón con dos entradas, se puede obtener una recta definida por
la siguiente ecuación que generara dos regiones, tal como se muestra en la
figura (1.21).

30
w1 x1 + w2 x2 + b = 0 (1.25)

x2
X 1
0

X
X

x1

Figura 1.21: Regiones separadas por un perceptrón simple.

El aprendizaje del perceptrón es de tipo supervisado especificamente por


corrección de error, por lo que, basándose en la definición de este tipo de
aprendizaje, ajusta los pesos en proporción a la diferencia existente entre la
salida actual de la red y la salida deseada, con el objetivo de minimizar el error
actual de la red.

El algoritmo de aprendizaje del perceptrón puede describirse de la siguiente


forma:

1. Se inicia la matriz de peso Wi y el valor de la ganancia b o umbral en


forma aleatoria.

2. Se presentan patrones de entrenamiento a la entrada de la red en forma


de pares entrada salida (Xi , Si ), donde X corresponde al vector de
entrada y S al vector de salida esperada para cada patrón.

3. Se calcula la salida de la red por medio de la ecuación (1.15).

Donde f puede ser una función hardlim o hardlims.

4. Se compara un vector de salida Y producida por el patrón de entrada con


la salida deseada S para ese patrón.

31
si Y = S entonces los pesos se mantienen

si Y 6= S entonces los pesos se actualizan mediante la siguiente


expresión.

Error = S − Y (1.26)

W actual = W anterior + Error ∗ X (1.27)

bactual = banterior + Error (1.28)

5. El proceso se repite hasta que se obtiene la salida deseada para todos


los patrones de entrada.

El algoritmo descrito anteriormente se puede graficar en el siguiente diagrama


de flujo.

32
Inicializar Pesos y
Ganancias

Se Presentan Patrones
de Entrenamiento

Se Calcula la Salida

Si
Y=S

No

Error = S- Y

Wnuevo = Want+Error*X

Bnuevo = Bant + Error

No
Todos los Pesos
y Umbrales
Actualizados

Si

Fin del Proceso de


Aprendizaje

Figura 1.22: Diagrama de flujo del aprendizaje del perceptrón.

Existe un gran número de lı́neas rectas que pueden separar los patrones
de una categorı́a de los patrones de otra. Para lograr el hiperplano final
es necesario presentar los patrones de entrenamiento en forma iterativa y
desarrollar el algoritmo, hasta que los pesos se ajusten.

Para aclarar más el concepto del perceptrón simple a continuación se presenta


un ejemplo de la utilización de este para clasificar las salidas de la función
lógica OR.

33
x1 x2 s
0 0 0
0 1 1
1 0 1
1 1 1

Tabla 1.3: Tabla función lógica OR.

La representación gráfica de la función OR se muestra en la figura (1.23).

x2
X 1
0

X (1,0) X (1,1)

(0,0) (0,1)
X
x1

Figura 1.23: Gráfica de la función OR.

Para el desarrollo de este sistema se utiliza una neurona con dos entradas
que corresponden a las entradas binarias de la función, posteriormente se
llevarán a cabo los pasos mencionados en el algoritmo de aprendizaje, esto
es inicializar los pesos sinápticos y el umbral en forma aleatoria.

w1 = 0,5
w2 = 0,3
b = 0,5

Con los valores elegidos en forma aleatoria se obtiene una clasificación


incorrecta del patrón de salida, como se aprecia en la figura (1.24).

34
x2
X 1
0

X (1,0) X (1,1)

(0,0) (0,1)
X
x1

Figura 1.24: Clasificación a partir de los valores aleatorios.

Para corregir este problema los pesos y el umbral deberán ser actualizados
según las ecuaciones (1.28) y (1.27).

La tabla (1.4) resume el procedimiento seguido por el algoritmo de aprendizaje.

x1 x2 s y = f (w1 x1 + w2 x2 + b) Error = s − y w1 Nuevo w2 Nuevo b Nuevo

0 0 0 1 -1 0,5 0,3 -0,5


0 1 1 0 1 0,5 1,3 0,5
1 0 1 1 0 0,5 1,3 0,5
1 1 1 1 0 0,5 1,3 0,5
0 0 0 1 -1 0,5 1,3 -0,5
0 1 1 1 0 0,5 1,3 -0,5
1 0 1 0 1 1,5 1,3 0,5
1 1 1 1 0 1,5 1,3 0,5
0 0 0 1 -1 1,5 1,3 -0,5
0 1 1 1 0 1,5 1,3 -0,5
1 0 1 1 0 1,5 1,3 -0,5
1 1 1 1 0 1,5 1,3 -0,5
0 0 0 0 0 1,5 1,3 -0,5
0 1 1 1 0 1,5 1,3 -0,5
1 0 1 1 0 1,5 1,3 -0,5
1 1 1 1 0 1,5 1,3 -0,5

Tabla 1.4: Tabla aprendizaje función lógica OR.

35
Una vez finalizado el proceso de aprendizaje, los valores obtenidos para los
pesos y el umbral son los siguientes:

w1 = 1,5
w2 = 1,3
b = −0,5

Con estos valores se obtiene un hiperplano que clasifica correctamente los


patrones de salida de la función lógica OR, tal como se muestra en la figura
(1.25).

x2
x1 w 1 = 1.5 X 1
0
y
X (1,0) X (1,1)
w 2 = 1.3
x2

b = -0.5
(0,0) (0,1)
X
x1

Figura 1.25: Clasificación después del aprendizaje.

La ecuación de la recta para este ejemplo es:

1,5 (−0,5)
x2 = − x1 −
1,3 1,3

Rosemblatt demostró que si la función a representar es linealmente separable,


este algoritmo siempre converge en un tiempo finito y con independencia de
los pesos de partida. Por otra parte, si la función no es linealmente separable
el proceso de entrenamiento oscilará.

El perceptrón simple es capaz de resolver problemas de clasificación e


implementar funciones lógicas, como por ejemplo, la función OR, pero es
incapaz de implementar funciones como la función lógica XOR, mostrada en
la figura (1.26).

36
x2
X 1
0

X (1,0) (1,1)

(0,0) (0,1)
X
x1

Figura 1.26: Gráfica de la función XOR.

Las limitaciones de las redes de una sola capa hicieron que se plantearse la
necesidad de implementar redes en las que se aumentase el número de capas,
es decir, introducir capas intermediarias o capas ocultas.

La capa intermedia realiza una proyección de los patrones de entrada en un


cubo cuya dimensión viene dada por el número de unidades de la capa oculta.
Se trata de realizar una proyección en la que resulten separables linealmente
los patrones de entrada de manera que la unidad de salida pueda realizar una
clasificación correcta tal como se muestra en la figura (1.27).

x2
X 1
0

X (1,0) (1,1)

(0,0) (0,1)
X
x1

Figura 1.27: Clasificación de la función XOR.

1.6.2. Perceptrón multicapa

El Perceptrón multicapa es una red unidireccional (feedforward), donde la


información circula en un único sentido, desde las neuronas de la capa de

37
entrada hacia las neuronas de la capa de salida. Cada sensor de entrada
está conectado con las neuronas de la segunda capa, y cada neurona
de la segunda capa está conectada con las neuronas de la tercera capa,
ası́ sucesivamente. Las neuronas de la capa de salida están conectadas
solamente con las neuronas de la última capa oculta. De esta manera se logra
implementar cualquier función con el grado de precisión deseado.

Señal Señal
Entrada Salida

. . .
. . .
. . .

Capa de Primera Segunda Capa de


Entrada capa oculta capa oculta Salida

Figura 1.28: Esquema perceptrón multicapa.

La salida de la figura (1.28) se obtiene a partir de la ecuación (1.29).

 
n2 n1 n0
! !
wmk xm + u1m + u2k + u3j 
X X X
yi = f  wji f wkj f (1.29)
j=1 k=1 m=1

Al realizar un diseño de la arquitectura de la red es necesario determinar


el número de neuronas, el número de capas y la función de activación a
emplear, ésta se elige basándose en el recorrido deseado. Para determinar
estos parámetros es necesario definir previamente la cantidad de variables de
entrada y las de salida.

El número de neuronas que se utilizarán en la red dependerá en gran medida


del tipo de problema a resolver y por lo tanto, la cantidad de datos a tomar
debe ser tal que represente el problema a tratar.

38
Las funciones de activación más utilizadas son la función sigmoidal y la
función tangente hiperbólica. Dichas funciones poseen como imagen un rango
continuo de valores dentro de los intervalos [0,1] y [-1,1] respectivamente.

1.6.2.1. Propagación de Patrones de Entrada

El perceptrón multicapa es un tipo de red de aprendizaje supervisado, que


emplea un ciclo de propagación-adaptación de dos fases. Una vez que se ha
aplicado un patrón a la entrada de la red como estimulo, este se propaga desde
la primera capa a través de las capas superiores de la red, hasta generar la
salida.

Para un perceptrón multicapa con


c: ı́ndice de la capa.
i: ı́ndice de las neuronas de la capa c.
j: ı́ndice de las neuronas de la capa c + 1.
m: cantidad de capas.
nc : cantidad de neuronas en la capa c, para (c = 1, 2, ..., m).
U c = (uci ): vector de umbrales de las neuronas, para (c = 2, ..., m).
aci : activación de la neurona i de la capa c.
W c = (wijc ): matriz de pesos asociada a las conexiones de la capa c a la capa
c + 1 para (c = 1, 2, ..., m − 1).
wijc : representa el peso de la conexión de la neurona i a la neurona j.

Activación de las neuronas de la capa de entrada a1i . Las neuronas de


la capa de entrada se encargan de transmitir hacia la red las señales
recibidas del exterior.

a1i = xi (1.30)

Para (i = 1, 2, ..., n1 )

39
Donde X = (x1 , x2 , ..., xn ) representa el patrón de entrada a la red

Activación de las neuronas de la capa oculta c (aci ). Las neuronas


ocultas de la red procesan la información recibida aplicando la función
de activación f a la suma de los productos que recibe por sus
correspondientes pesos.

 
nX
c−1

aci = f  c−1 c−1


wji aj + uci  (1.31)
j=1

Para i = (1, 2, ..., nc ) y c = (2, 3, ..., m − 1)


Donde ac−1
j son las activaciones de las neuronas de la capa c − 1

Activación de las neuronas de la capa de salida (am


i ). La activación de

estas neuronas viene dada por la función de activación f aplicada a la


suma de los productos de la entrada que recibe por sus correspondientes
pesos.

 
nc−1
am m−1 m−1
um
X
yi = i =f wji aj + i
 (1.32)
j=1

Para i = (1, 2, ..., nc )


Donde Y = (y1 , y2 , ..., ync ) es el vector salida de la red.

Para aclarar los puntos anteriores, se desarrollará un ejemplo para un


perceptrón multicapa con una capa oculta con dos neuronas y una capa de
salida con una neurona y dos entradas.

Sean x1 y x2 las variables de entrada a la red, w los pesos sinápticos de las


entradas a la capa oculta, v los pesos sinápticos de la capa oculta a la capa de
salida, u los umbrales y a las activaciones de las funciones.

40
u 11
w 11
x1 v1 u3
w 12
y

w 21
x2 v2
w 22
u 22

Figura 1.29: Propagación de patrones de entrada.

Activación de las neuronas de entrada:

a11 = x1

a12 = x2

Activación de las neuronas ocultas

a21 = f (w11 a11 + w21 a12 + u21 )

a22 = f (w12 a11 + w22 a12 + u22 )

Activación de la neurona de salida

y = a31 = f (v1 a21 + v2 a22 + u3 )

Después del entrenamiento, cuando se presente un conjunto arbitrario de


valores de entrada que contengan ruido o que estén incompletos, las unidades
de las capas ocultas de la red responderán con una salida activa si la nueva
entrada contiene valores que se asemejen a aquellas caracterı́sticas que las
unidades individuales hayan aprendido a reconocer durante su entrenamiento.

1.6.2.2. Algoritmo de Retro Propagación o Backpropagation

Este algoritmo de aprendizaje es del tipo supervisado, por lo tanto se busca


una diferencia mı́nima entre las salidas de la red y las salidas deseadas. Las

41
señales de error se transmiten hacia atrás, partiendo de la capa de salida,
hacia todos los nodos de la capa intermedia que contribuyan directamente
a la salida. Sin embargo, las unidades de la capa intermedia sólo reciben
una fracción de la señal total de error, basándose aproximadamente en la
contribución relativa que haya aportado la unidad a la salida original.

La función error se define como:

N
1 X
E= e(n) (1.33)
N n=1

Donde N es el numero de muestra y e(n) es el error cometido por la red para


un patrón n, dado por:

nc
1X
e(n) = (si (n) − yi (n))2 (1.34)
2 i=1

Siendo Y = (y1 , y2 , ..., ync ) el vector de salida de la red y S = (s1 , s2 , ..., snc ) el
vector de salida deseada por el patrón n.

El algoritmo backpropagation se basa en buscar el mı́nimo de la función error.


Para esto utiliza el método de descenso de gradiente, el cual consiste en seguir
la dirección negativa del gradiente de la función error.

∂e(n)
∆p wj = −α (1.35)
∂wj

Aplicando la regla de la cadena a la expresión anterior queda como:

∂e(n) ∂e(n) ∂y
= (1.36)
∂wj ∂y ∂wj

Y de esta forma se obtiene

∂e(n)
= −(s(n) − y(n)) (1.37)
∂y

42
∂y
= xj (1.38)
∂wj

En definitiva el ajuste de los pesos se realiza por medio de la siguiente


expresión conocida como regla delta

∆p wj = α(s(n) − y(n))xj (1.39)

Los pesos son actualizados según la siguiente regla:

∂e(n)
w(n) = w(n − 1) − α (1.40)
∂w

Donde e(n) es el error para el patrón n y α es la razón o taza de aprendizaje,


parámetro que influye en la magnitud del desplazamiento en la superficie del
error.

El algoritmo de aprendizaje de backpropagation se resume en los siguientes


pasos.

1. Se inician los pesos y umbrales de la red en forma aleatoria.

2. Se ingresa un patrón de entrenamiento n perteneciente a (X(n), S(n)) y


se propaga hacia la salida de la red.

3. Para un patrón n se evalúa el error cuadrático cometido por la red.

4. Se aplica la regla delta generalizada para modificar los pesos y umbrales.

5. Se evalúan todos los patrones de entrenamiento completando de esta


manera un ciclo de aprendizaje.

6. Se evalúa el error de entrenamiento total E.

7. Se repite el algoritmo m ciclos de aprendizaje hasta alcanzar el mı́nimo


del error de entrenamiento.

43
Los pasos anteriores se representan mediante el diagrama de flujo mostrado
en la figura (1.30).

Inicializar Pesos y
Umbrales

Se Evalúa un patron de
Entrenamiento X(n),S(n)

Se Evalúa el Error
Cuadrático Medio

Regla Delta
Generalizada para los
Pesos y Umbrales

No Se Propagaron
todos los
Patrones

Si

Se evalùa el Error de
Entrenamiento E

Se Realizaron No
los m ciclos
de aprendizaje

Si

Fin del Proceso de


Aprendizaje

Figura 1.30: Diagrama de flujo algoritmo backpropagation.

1.6.2.3. Regla Delta Generalizada

La regla delta generalizada consiste en aplica el método del gradiente a los


pesos y umbrales de la arquitectura de la red.

44
1.6.2.3.1. Actualización de pesos de la capa de salida

Usando el método de descenso de gradiente siguiendo la dirección


negativa del gradiente.

m−1 m−1 ∂e(n)


wji = wji (n − 1) − α m−1 (1.41)
∂wji
m−1
Donde wji corresponde al peso de la conexión de la neurona j de la capa
m − 1 a la neurona i de la capa de salida.

Las salidas deseadas Si (n) para la red son constantes que no dependen del
m−1
peso. El peso wji solo afecta a la neurona de salida i, yi (n) tenemos que:

∂e(n) ∂yi (n)


m−1 = −(si (n) − yi (n)) m−1 (1.42)
∂wji ∂wji

A este punto, hay que calcular la derivada de la neurona de salida i, yi(n)


m−1
respecto al peso wji .

Aplicando la regla de la cadena tenemos:

 
nX
∂yi (n) m−1
m−1 m−1
m−1 = f ′
wji aj + um
i
 am−1 (n)
j (1.43)
∂wji j=1

Se define el término δ asociado a la neurona i de la capa de salida y al patrón


n.

 
nX
m−1

δim (n) = −(si (n) − yi (n))f ′  m−1 m−1


wji aj + um
i
 (1.44)
j=1

Reemplazando en la ecuación (1.42) el valor de la derivada de la neurona de


salida yi (n) dado por la ecuación (1.43) y de acuerdo con el valor δim (n) definido
en la ecuación (1.44) se obtiene:

∂e(n) m m−1
m−1 = δi (n)aj (n) (1.45)
∂wji

45
m−1
Finalmente, reemplazando la derivada del error e(n) respecto al peso wji
obtenida en la ecuación (1.45) se obtiene la ley para modificar dicho peso:

m−1 m−1
wji (n) = wji (n − 1) − αδim (n)am−1
j (n) (1.46)

Para i = (1, 2, ..., nc ) y j = (1, 2, ..., nc )

La ley de aprendizaje obtenida anteriormente para modificar los pesos de la


última capa puede generalizarse para los umbrales de las neuronas de salida
de acuerdo a la siguiente expresión.

um m m
i (n) = ui (n − 1) + αδi (n) (1.47)

Para i = (1, 2, ..., nc )

1.6.2.3.2. Actualizaciones de los pesos de capas ocultas

m−2
Sea wkj (n) el peso de la conexión de la neurona k de la capa m − 2
a la neurona j de la capa m − 1, con el método de descenso de gradiente
dicho peso es:

m−2 m−2 ∂e(n)


wkj (n) = wkj (n − 1) + α m−2 (1.48)
∂wkj

m−2
Para este caso el peso wkj (n) influyen todas las salidas de la red, por tanto
la derivada del error e(n) respecto de dicho peso viene dada por las suma de
las derivadas para cada una de las salidas de la red:

nm
∂e(n) X ∂yi (n)
m−2 = − (si (n) − yi (n)) m−2 (1.49)
∂wkj j=1 ∂wkj

m−2
Para calcular la derivada de la salida yi (n) respecto al peso wkj (n) se tiene
que:

46
 
nm−1 m−1
∂yi (n) m  m−1 ∂aj (n)
′
X m−1 m−1
m−2 = f wji aj + ui wji m−2 (1.50)
∂wkj j=1 ∂wkj

Sustituyendo este valor en la ecuación (1.49) se obtiene

nm m−1
∂e(n) m m−1 ∂aj
X
m−2 = δi (n)w ji m−2 (1.51)
∂wkj i=1 ∂wkj

Aplicando la regla de la cadena se obtiene:

nX
∂am−1 m−2
!
j m−2 m−2
m−2 = f

wkj ak + um−1
j am−2
k (n) (1.52)
∂wkj k=1

Se define el valor δ para las neuronas de la capa m − 1 como:

nX
m−2
! nm
δjm−1 (n) = f ′ m−2 m−2
ak + um−1 δim (n)wji
m−1
X
wkj j (1.53)
k=1 i=1

Con las expresiones anteriores se obtiene:

∂e(n) m−1
m−2 = δi (n)akm−2 (n) (1.54)
∂wkj

m−2
La ley de aprendizaje para modificar el peso wkj (n) viene dada por:

m−2 m−2
wkj (n) = wkj (n − 1) + αδjm−1 (n)am−2
k (n) (1.55)

Para k = (1, 2, ..., nm−2 ), j = 1, 2, ..., nm−1

Generalizando la ley para los pesos de la capa c a la capa c + 1 se tiene que:

c c
wkj (n) = wkj (n − 1) + αδjc+1 (n)ack (n) (1.56)

k = (1, 2, ..., nc ), j = 1, 2, ..., nc+1 y c = 1, 2, ..., m − 2

Donde ack (n) es la activación de la neurona k de la capa c para el patrón n,


δjc+1(n) viene dado por:

47
nc
! nc+1
δjc+1(n) = f ′ c c c
δic+2 (n)wji
c
X X
wkj ak + uj (1.57)
k=1 i=1

La ley de aprendizaje para los umbrales de la red viene dada por:

uc+1 c+1 c+1


j (n) = wj (n − 1) + αδj (n) (1.58)

Para (j = 1, 2, ..., nc+1), y c = 1, 2, ..., m − 2

48
Capı́tulo 2

Control Neuronal

2.1. Introducción

Un sistema o proceso está formado por un conjunto de elementos relaciona-


dos entre sı́ que ofrecen señales de salida en función de señales o datos de
entrada.

El aspecto más importante de un sistema es el conocimiento de su dinámica,


es decir, cómo se comporta la señal de salida frente a una variación de
la señal de entrada. Un conocimiento preciso de la relación entrada/salida
permite predecir la respuesta del sistema y seleccionar la acción de control
adecuada para mejorarla.

Un sistema de control se define como el conjunto de elementos que inter-


actúan para conseguir que la salida de un proceso se comporte tal y como se
desea, mediante la aplicación de una acción de control.

Existen varias clasificaciones dentro de los sistemas de control, estos pueden


ser sistemas control clásico, control digital y en las últimas décadas se utilizan

49
técnicas basadas en lógica difusa, redes neuronales, etc. En las siguientes
secciones se describen los sistemas de control clásico, control digital y
neuronal.

2.2. Control Clásico

2.2.1. Sistemas de Control Dinámico

Un sistema dinámico es aquel en el cual al variar sus entradas se producirá una


variación en las salidas que será progresiva en el tiempo. Se pueden distinguir
dos tipos de control en un sistema: Sistema de control en lazo abierto y sistema
de control en lazo cerrado.

Sistema de control en lazo abierto


En este tipo de sistemas, la salida no tiene efecto alguno sobre la acción
de control.

Sistema de control en lazo cerrado.


En los sistemas de control en lazo cerrado, la señal de salida tiene efecto
sobre la acción de control. A este efecto se le denomina realimentación.
Entrada de Señal de Señal de Variable
Referencia Error Control Controlada

Detector de Planta o
Controlador
Error Proceso

Elemento de
Medida

Figura 2.1: Sistema de lazo cerrado.

La señal controlada debe realimentarse y compararse con la entrada


de referencia, tras lo cual se envı́a a través del sistema una señal de
control, que será proporcional a la diferencia encontrada entre la señal

50
de entrada y la señal medida a la salida, con el objetivo de corregir el
error o desviación que pudiera existir.

La principal ventaja de los sistemas de control en lazo cerrado es que


el uso de la realimentación hace al conjunto menos sensible a las
perturbaciones externas y a las variaciones de los parámetros internos
que los sistemas en lazo abierto.

2.2.2. Clasificación de sistemas

Los sistemas pueden clasificarse en sistemas lineales y no lineales; otra


posible clasificación los divide en sistemas variantes o invariantes en el tiempo.

Sistemas Lineales
Son aquellos que pueden describirse mediante ecuaciones diferenciales
lineales. La propiedad más importante es que admiten el principio de
superposición. Esta propiedad puede utilizarse para determinar de un
modo experimental si un sistema es o no lineal.

Sistemas No Lineales
Estos sistemas se caracterizan por utilizar ecuaciones diferenciales
no lineales. La mayorı́a de los sistemas son linealizables a tramos
(circunstancia que se utiliza para poder caracterizar un sistema no lineal
como uno lineal en un entorno determinado).

2.2.3. Función de transferencia

En general, cualquier sistema lineal invariante en el tiempo (SLIT) puede


modelarse mediante una ecuación diferencial de la forma:

ao y (n) +a1 y (n−1) +a2 y (n−2) +...+an y = bo x(m) +b1 x(m−1) +b2 x(m−2) +...+bm x (2.1)

51
donde:

(n) dn y
y = n; (n ≥ m) (2.2)
dt

Esta ecuación diferencial relaciona la señal de salida y(t) de un sistema con


la señal de entrada x(t) al mismo, y permite, mediante su resolución, conocer
la respuesta de dicho sistema a una señal de entrada determinada. A esta
ecuación diferencial se le denomina ecuación caracterı́stica del sistema.

La función de transferencia de un sistema lineal invariante en el tiempo se


obtiene aplicando la transformada de Laplace de la ecuación caracterı́stica del
sistema, con condiciones iniciales nulas.

Aplicando Laplace en condiciones iniciales nulas:

Y (s) bo x(m) + b1 x(m−1) + b2 x(m−2) + ... + bm x


G(s) = = (n ≥ m) (2.3)
X(s) ao y (n) + a1 y (n−1) + a2 y (n−2) + ... + an y

Modelo del sistema

X(s) Y(s)
SLIT

Figura 2.2: Bloque de sistema lineal invariante en el tiempo.

La función de transferencia contiene toda la información de la dinámica del


sistema.

2.2.4. Respuesta temporal de los sistemas

La respuesta temporal de un sistema lineal invariante en el tiempo puede


descomponerse en dos partes: la respuesta transitoria y la respuesta
permanente. De este modo, si denominamos c(t) a la expresión de la respuesta
temporal:

52
c(t) = ct (t) + css (t) (2.4)

donde:
ct (t) : Respuesta Transitoria.
css (t) : Respuesta Permanente.

La respuesta transitoria es originada por la propia caracterı́stica dinámica del


sistema y determina el comportamiento de este durante la transición de algún
estado inicial hasta el estado final.

La respuesta permanente depende fundamentalmente de la señal de ex-


citación al sistema y, si el sistema es estable, es la respuesta que perdura
cuando el tiempo crece infinitamente.

2.2.5. Tipos de controladores

El control es el elemento encargado de procesar la señal de error y generar una


señal encargada de disminuir el valor de dicha señal de error con el objetivo
de lograr la máxima precisión posible del sistema de control. El procedimiento
mediante el cual el controlador genera la señal de control se denomina acción
de control.

Los controles tı́picos en sistemas de control son:

Control Proporcional (P).

Control Proporcional Integral (PI).

Control Proporcional Derivativo (PD).

Control Proporcional Integral Derivativo (PID).

53
2.2.5.1. Control Proporcional (P)

Para un controlador con una única acción proporcional, la relación entre la


salida del controlador u(t) y la señal del error e(t) es:

u(t) = Kp e(t) (2.5)

la cual, utilizando la transformada de Laplace, se convierte en:

U(s) = Kp E(s) (2.6)

De las ecuaciones anteriores se puede observar claramente que el controlador


proporcional es utilizado para controlar teniendo en cuenta el presente, es
decir, el error actual es multiplicado por una ganancia constante Kp y aplicado
al actuador.

2.2.5.2. Control Proporcional Integral (PI)

Para un controlador integral, el valor de la salida de la acción de control u(s)


se cambia a una relación proporcional a la integral del error, es decir:
Z t
u(t) = Ki e(t)dt (2.7)
0

donde Ki es una ganancia ajustable. La función de transferencia del


controlador integral es:
U(s) Ki
= (2.8)
E(s) s

Al contrario que el controlador proporcional, el integral pretende controlar


teniendo en cuenta el pasado debido a que el error es integrado hasta el tiempo
actual multiplicado por una ganancia.

Por lo tanto, para un controlador proporcional-integral, la acción de control se


define mediante:
Kp Z t
u(t) = Kp e(t) + e(t)dt (2.9)
Ti 0

54
siendo la función de transferencia del controlador:

U(s) 1
 
= Kp 1 + (2.10)
E(s) Ti s

donde Ti es el tiempo integral.

2.2.5.3. Control Proporcional Derivativo (PD)

se define mediante:
de(t)
u(t) = Kp e(t) + Kp Td (2.11)
dt

donde Td es una constante denominada tiempo derivativo. Esta acción tiene


carácter de previsión, lo que hace más rápida la acción de control, aunque tiene
la desventaja importante que amplifica las señales de ruido y puede provocar
saturación en el actuador. La acción de control derivativa nunca se utiliza por
sı́ sola, debido a que sólo es eficaz durante perı́odos transitorios. La función
transferencia de un controlador PD resulta:

U(s)
= Kp (1 + Td s) (2.12)
E(s)

Cuando una acción de control derivativa se agrega a un controlador pro-


porcional, permite obtener un controlador de alta sensibilidad, es decir que
responde a la velocidad del cambio del error y produce una corrección signi-
ficativa antes de que la magnitud del error se vuelva demasiado grande.

2.2.5.4. Control Proporcional Integral Derivativo (PID)

Esta acción combinada reúne las ventajas de cada una de las tres acciones de
control individuales. La ecuación de un controlador con esta acción combinada
se obtiene mediante:

Kp t de(t)
Z
u(t) = Kp e(t) + e(t)dt + Kp Td (2.13)
Ti 0 dt

55
su función de transferencia es:

U(s) 1
 
= Kp 1 + + Td s (2.14)
E(s) Ti s

2.3. Control Discreto

Una señal en tiempo continuo es aquella que se define sobre un intervalo


continuo de tiempo. La amplitud puede tener un intervalo continuo de valores
o solamente un número finito de valores distintos.

Una señal en tiempo discreto es aquella en la cual la variable independiente t


está cuantificada. Esta se puede generar muestreando una señal analógica en
valores discretos de tiempo.

Las señales en tiempo discreto surgen si el sistema involucra la operación


de muestreo de señales en tiempo continuo. La señal muestreada es
x(0), x(T ), x(2T ), ..., donde T es el periodo de muestreo. Dicha secuencia de
valores que surge de la operación de muestreo normalmente se escribe como
x(kT ). La secuencia de números se escribe como x(k), donde el argumento
k indica el orden en el que se presentan los números en la secuencia, por
ejemplo, x(0), x(1), x(2). Aunque x(k) es una secuencia de números, ésta se
puede considerar como una señal muestreada de x(t) cuando el periodo de
muestreo T es 1 segundo.

2.3.1. La Transformada Z

La transformada z de una función del tiempo x(t), donde t es positivo, o de


la secuencia de valores x(kT ), donde k adopta valores de cero o de enteros
positivos y T es el periodo de muestreo, se define mediante la siguiente
ecuación:

X
X(z) = Z[x(t)] = Z[x(k)] = x(kT )z −k (2.15)
k=0

56
Para una secuencia de números x(k), la transformada z se define como

X
X(z) = Z[x(k)] = x(k)z −k (2.16)
k=0

2.3.2. Control PID Discreto

El controlador PID en el dominio del tiempo descrito por la ecuación (2.13) es


llevado a la forma discreta por el siguiente método

El parámetro derivativo de la ecuación (2.13) resulta

de(t)
D(t) = Kp Td (2.17)
dt

e(k) − e(k − 1)
D(k) = Kp Td (2.18)
T

Relizando la misma operación anterior para el factor integrador se obtiene

Kp t
Z
I(t) = e(t)dt (2.19)
Ti 0

T k−1
X
I(k) = Kp e(i) (2.20)
Ti i=0

La siguiente ecuación muestra la discretización en el tiempo:


( )
Td I(k − 1) T
m(k) = Kp e(k) + [e(k) − e(k − 1)] + + e(k) (2.21)
T Kc Ti

La función de transferencia de un controlador PID análogo es:

U(s) 1
 
P ID(s) = = Kp 1 + + Td s (2.22)
E(s) Ti s

Esta función de transferencia es llevada al dominio de z aplicando una


transformación bilineal unı́voca entre el dominio s a z. Esta transformación se
define como:
2 1 − z −1 2 z−1
s= = (2.23)
T 1 + z −1 T z+1

57
Reemplazando la ecuación anterior en el PID análogo se obtiene la siguiente
expresión:
a0 + a1 z −1 + a2 z −2
G(z) = (2.24)
1 − z −1

Donde:
T 2Tv
 
a0 = k 1 + + (2.25)
2Tn T

T 4Tv
 
a1 = k − (2.26)
Tn T

T 2Tv
 
a2 = k + −1 (2.27)
2Tn T

En la tabla (2.1) se resume las transformaciones de continua a discreta para


los distintos tipos de controladores:

58
Tipo de
Regu- G(s) G(z) (Transformación bilineal)
lador

a0 + a1 z −1
G(z) =
1 + z −1
PD G(s) = k(1 + sTz )    
2Tz 2Tz
a0 = k 1 + ; a1 = k 1 −
T T

 
1 1 + Tn s a0 + a1 z −1
G(s) = k 1 + = G(z) =
sTn sTi 1 − z −1
PI    
Tn T T
Ti = a0 = k 1 + ; a1 = k −1
k 2Tn 2Tn

 
1 a0 + a1 z −1 + a2 z −2
G(s) = k 1 + + sTv G(z) =
sTn 1 − z −1
   
PID (1 + Tn s)(1 + Tv s) T 2Tv T 4Tv
G(s) ≈ a0 = k 1 + + ; a1 = k −
TsTi 2Tn T Tn T
 
Tn T 2Tv
Ti = a0 = k + −1
k 2Tn T

Tabla 2.1: Tabla de transformaciones de continua a discreta.

2.4. Arquitecturas de Control Neuronal

El reciente y considerable interés en el control neuronal ha generado un


número de propuestas y de esquemas diferentes para el diseño de sistemas
de control que usan redes neuronales artificiales.

Las redes neuronales tienen caracterı́sticas que las hacen muy interesantes
en el modelado de sistemas dinámicos, estos son una combinación de
elementos relacionados entre si que actúan para alcanzar un determinado
objetivo, como la capacidad de aproximar funciones no lineales con precisiones

59
arbitrariamente pequeñas y la posibilidad de permitir el diseño de controladores
utilizando diversas metodologı́as.

Para aplicaciones en las industrias de procesos, lo más relevante tiene que


ver con el uso de redes neuronales como identificadores de procesos o como
sistemas que optimizan el funcionamiento de un controlador.

Para el modelado de un sistema dinámico, el cual depende de la variable


tiempo, se puede emplear una red neuronal dinámica. Dependiendo del
conocimiento que se tenga sobre el proceso, se puede utilizar uno de los tres
tipos de modelos, estos modelos son los siguientes:

Modelos de caja blanca: Corresponde a situaciones en las que se


conoce perfectamente el modelo, por lo que se puede representar
mediante leyes fı́sicas.

Modelos de caja gris: Existe un conocimiento fı́sico parcial del sistema,


por lo que hay una serie de parámetros que se deben estimar en función
de datos experimentales.

Modelos de caja negra: No se conoce nada del comportamiento interno


del sistema y, por tanto, el modelo se construye únicamente en función
de las muestras de entrada y salida tomadas del mismo. Los parámetros
del modelo se ajustan a partir de un conjunto de medidas reales que
caracterizan el comportamiento del proceso a modelar.

Las redes neuronales dinámicas son generalmente modelos de caja negra


y, en algunos casos, de caja gris cuando se tenga algún conocimiento del
proceso que se modela.

Las ventajas de las redes neuronales para el modelado de sistemas dinámicos


son:

Son modelos no lineales, puesto que la función de activación es no lineal.

60
Son dinámicos si incluyen conexiones recurrentes, o permanentes si no
las incluyen.

Son modelos paramétricos y los parámetros corresponden a los pesos


de las conexiones entre neuronas.

Son modelos adaptativos, puesto que la aparición de nuevos datos


permite el reaprendizaje de los parámetros adaptando los valores
anteriores a los datos actuales.

Son tolerantes a fallos, ya que su comportamiento está distribuido


entre todos los parámetros. Ası́, cuando alguno de ellos es incorrecto,
el resultado global se degrada, pero no deja al modelo inoperante,
necesariamente.

Son inherentemente paralelos, cosa que permite una implementación


eficiente.

A continuación se presentan dos clasificaciones para el diseño de un


controlador neuronal.

Control neuronal indirecto.

Control neuronal directo.

Una forma de generalizar los tipos de control neuronal es ver el entrenamiento


de la red como un problema de optimización no lineal en el cual se trata de
encontrar la mejor representación de una red que minimiza una función objetivo
J(w), donde w representa los pesos de la red, como se describe en [15]. Lo
anterior se muestra en la siguiente expresión.

NN : minw J(w) (2.28)

61
NN : indica que el problema de optimización se basa en una red neuronal
(neural network).
minw : representa la minimización de la función objetivo.

2.4.1. Control Indirecto

Este esquema de control neuronal no envı́a una señal de control directamente


al proceso, sino que una red neuronal se usa como indicador de las
caracterı́sticas del proceso.

Existen distintos tipos de control indirecto, los que se mencionan a contin-


uación.

2.4.1.1. Control neuronal basado en modelo completo

Este modelo se basa en imitar un proceso a partir de sus entradas y salidas,


como por ejemplo modelar un proceso SISO (Single Input Single Output).
La red neuronal intenta emular un proceso existente a partir de suministrarle
tanto los datos de entrada y salida del proceso, para realizar esto se utiliza un
método de aprendizaje supervisado.

Con este tipo de modelo se produce una función de transferencia no lineal


discreta en el tiempo. Esto conduce a un a estructura de modelo que puede
ser descrita matemáticamente por la siguiente ecuación:

NN : minw F {yp − yn (w, ...)} (2.29)

Donde:
up : señal de entrada a la red.
yp : Salida a la planta
yn : Salida de la red neuronal
w : Pesos sinápticos de la red neuronal

62
F : Función que mide el rendimiento del proceso

Una vez desarrollado el modelo del proceso utilizando una red neuronal, se
puede desarrollar un controlador basado en este modelo.

up yp
Planta

Entrenamiento

Red Neuronal
yn

Figura 2.3: Bloque control neuronal basado en modelo completo.

2.4.1.2. Control neuronal basado en modelo inverso

Mediante una red neuronal es posible desarrollar el modelo inverso de un


proceso, esto es, la salida del proceso se utiliza como entrada a la red, y la
salida de esta corresponde a la entrada del proceso, como se muestra en la
figura (2.4). Matemáticamente se puede expresar de la siguiente forma:

NN : minw F {up − yn (w, ...)} (2.30)

Donde:
up : entradas a la planta
yn : salida red neuronal
yp : salida de la planta y entrada a la red neuronal.

Si el proceso se comporta monotónicamente como una función hacia


delante en estado estable se puede obtener un modelo inverso del proceso.
Posteriormente desarrollar un control sobre este modelo.

63
up yp
Planta

Entrenamiento

Red Neuronal
yn

Figura 2.4: Bloque control neuronal basado en modelo inverso.

2.4.1.3. Autosintonización con una red neuronal

Las redes neuronales pueden ser utilizadas para estimar los parámetros de
sintonización o ajuste de un controlador existente conocido previamente. Este
procedimiento se conoce como autosintonización. En la ecuación (2.31) se
formula el problema de la optimización del controlador.

NN : minw F {η − ηn (w, ...)} (2.31)

Donde:
η : Parámetros objetivos del controlador
ηn : Parámetros predichos por la red neuronal

Entrenamiento

Red Neuronal

r yp
Modelo o
Controlador
uc Proceso
+
-

Figura 2.5: Bloque de untosintonización con una red neuronal.

64
2.4.2. Control Directo

En el control directo una red neuronal es la encargada de calcular la acción


de control que hay que aplicar al proceso para que se alcance el objetivo de
control deseado.

Existen distintos tipos de control directo, los que se mencionan a continuación.

2.4.2.1. Modelo de un Controlador

Este esquema de control consiste en modelar un controlador ya existente. La


entrada al controlador corresponde a la entrada de entrenamiento de la red,
ası́ mismo la salida del controlador corresponde a salida esperada de la red.
El diseño de este neurocontrol puede ser expresado de la siguiente forma:

NN : minw F {yc − yn (w, ...)} (2.32)

Donde
uc : entrada al controlador.
yc : salida de un controlador existente.
yn : salida red neuronal.

La figura (2.6) nuestra el esquema del modelo de controlador.

uc yc
Controlador

Entrenamiento

Red Neuronal
yn

Figura 2.6: Bloque de control neuronal basado en le modelo de un controlador.

65
2.4.2.2. Diseño de un control neuronal libre de modelo

Este control se caracteriza por controlar y operar un proceso sin tener un


modelo detallado de la dinámica de éste, sino que basa su aprendizaje en
el control generado por un operador humano.

La expresión que describe este modelo es la siguiente:

NN : minw F {y − yp (un , ...)}, un = N(w, ...) (2.33)

Donde:
r : señal de referencia.
y : valores esperados.
yp : Salida de la planta.
un : salida de la red neuronal.
N : red neuronal en función de los pesos w.

La caracterı́stica en esta estructura de control adaptativo es que el modelo


del proceso no es conocido previamente y tampoco es muy explı́cito durante
el diseño del controlador. Esta técnica para el diseño de controladores es
frecuentemente denominada como aprendizaje reforzado.

Entrenamiento

r yn yp
Red Neuronal Planta
+
-

Figura 2.7: Bloque de control neuronal libre de modelo.

2.4.2.3. Diseño de un control neuronal basado en un modelo

Este tipo de control neuronal, a diferencia del caso anterior, tiene como
principal caracterı́stica el basarse en el modelo de la planta. Esto tiene como

66
ventaja que cualquier falla que pueda ocurrir en el diseño del control no
afectará directamente a la planta real sino que ocurrirá en un modelo de la
planta. Esto se representa según la ecuación (2.34)

NN : minw F {y − ym (un , ...)}, un = N(w, ...) (2.34)

Donde:
y : valores esperados.
ym : Es la salida del modelo.

Como se observa en la figura (2.8), el proceso es reemplazado por un modelo.

Si no se tiene el modelo del proceso se puede utilizar otra red neuronal para
modelar la dinámica de la planta. Una vez obtenido el modelo este puede ser
usado para el diseño del controlador.

Entrenamiento

r un ym
Red Neuronal Modelo
+
-

Figura 2.8: Bloque de control neuronal basado en un modelo.

2.4.2.4. Diseño de un control neuronal basado en un modelo robusto

Para el control neuronal basado en un modelo robusto se utiliza una familia de


modelos del proceso, esto permite contrarrestar la desventaja que presenta el
modelo anterior en el cual es necesario volver a entrenar la red ya sea aún a
pequeños cambios de criterio de control:

Cambios en el peso de la red de control

Control aplicado a procesos homólogos pero diferentes

67
Una familia se agrupa por modelos que:

Presentan los mismos niveles de ruido

Según número de parámetros del proceso

La expresión que representa a este modelo es la siguiente:

NN : minw F {y − ymj (un , ...)}, un = N(w, ...), ∀ mj ∈ M (2.35)

Donde:
y : valores esperados.
ymj : Es la salida del modelo.
mj : Es el j-ésimo miembro de la familia M.
M : conjuntos de modelos.

El proceso a controlar debe estar dentro de la familia de procesos que se


especificaron en el diseño, pero al ser un control robusto, podrá abarcar otros
procesos con similares caracterı́sticas.

Entrenamiento

r un ymj
Red Neuronal Modelos
+
-

Figura 2.9: Bloque de control neuronal robusto.

Un control neuronal basado en un modelo preciso, tendrá un mayor rendimien-


to siempre que sea aplicado a un proceso cuyo modelo permanezca fijo. Mien-
tras que un control robusto puede no alcanzar niveles de rendimiento tan eleva-
dos, pero es menos sensible a los cambios y perturbaciones que se produzcan
en el proceso.

68
Capı́tulo 3

Simulación de RNA mediante


Matlab

3.1. Algoritmo BP

El algoritmo Backpropagation busca actualizar los parámetros de la red en la


dirección negativa del gradiente con el objetivo de lograr una generalización
de los patrones de salida. Por generalización se entiende la capacidad de la
red de dar una respuesta correcta ante patrones de entrada que no han sido
empleados en su entrenamiento.

Durante el proceso de entrenamiento se considera un error de aprendizaje


calculado a partir del error medio cuadrático, este puede reducirse realizando
más iteraciones. Sin embargo, mas iteraciones pueden provocar que el
sistema se ajuste demasiado a las particularidades de los patrones empleados
en el entrenamiento, en este momento no está generalizando sino que
está memorizando los patrones del conjunto de aprendizaje lo que se
denomina sobreaprendizaje o sobreajuste.

Una red debe entrenarse hasta antes del punto en el cual pierde su capacidad
de generalizar, para evitar pasar de este punto se utilizan tres conjuntos de

69
vectores durante el entrenamiento, estos conjuntos se definen a continuación:

3.1.1. Vectores de Entrenamiento, Validación y Test

Definición 3.1.1
Conjunto de entrenamiento: Conjunto de datos entrada/salida al que se
aplicarán los algoritmos de aprendizaje supervisado para el correcto ajuste
de los parámetros de la red.

Definición 3.1.2
Conjunto de validación: Conjunto de datos entrada/salida no contenidos en
el conjunto de entrenamiento que puede utilizarse para realizar un seguimiento
del rendimiento de la red mientras se realiza el entrenamiento. El error de la red
sobre este conjunto de datos puede utilizarse para detener el entrenamiento
en el momento oportuno y evitar problemas de sobreentrenamiento.

Definición 3.1.3
Conjunto de test: Conjunto de datos de entrada/salida que se utiliza para
verificar el rendimiento de la red una vez concluido el proceso de aprendizaje.

3.1.2. Mı́nimos locales y globales

La superficie de la función error consta tanto de mı́nimos locales como


globales. Al utilizar el método del gradiente para encontrar el mı́nimo de la
función se corre el riesgo de caer en un mı́nimo local. Una vez que la red
se asiente en un mı́nimo, sea local o global, el aprendizaje se detiene. Si
se ha alcanzado un mı́nimo local el error de la salida de la red puede seguir
siendo alto, una solución a este problema es agregar más neuronas ocultas,
de esta forma la red adquiere una mayor cantidad de parámetros libres y
pueda conseguir una mayor representabilidad del problema. En la figura (3.1)

70
se observa el comportamiento de el error en función del peso W, mostrando
tanto mı́nimos locales como globales.

Error

Mínimo Local

Mínimo Local

Mínimo Global

Figura 3.1: Gráfica de mı́nimos locales y globales.

3.1.3. Formas de Implementación del Algoritmo Backpropa-


gation

El algoritmo Backpropagation es posible implementarlo de dos formas distin-


tas: modo incremental o secuencial, modo batch o por lotes.

Modo Incremental

En modo incremental los pesos y bias son actualizados para cada una de las
entradas aplicadas. La función de error se considera de la siguiente forma:

m
1X
e= (Yj − Yjm )2 (3.1)
2 j=1

Modo Batch

Utilizando este modo los parámetros de la red son actualizados luego de


que todas las muestras de entrada son aplicadas a al red. De esta forma la
función de error utilizada corresponde al promedio del la función de error medio
cuadrático.

71
N X m
1 X
E= (Yij − Yjm )2 (3.2)
N i=1 j=1

3.2. Aproximación de Funciones

Utilizando una red multicapa con el número suficiente de neuronas en una sola
capa oculta que tienen como función de transferencia una función sigmoidal
y con una función de transferencia lineal en la neurona de salida se puede
aproximar cualquier función continua f de Rn en R con el grado de precisión
deseado. El resultado clásico que motivó la aplicación de las redes neuronales
como aproximadores universales de funciones fue el teorema de Kolmogorov
establecido en 1957.

Cuando se aplica el perceptrón multicapa a un problema real para aproximar


una función continua y no se consigue la precisión deseada es porque no se
ha conseguido una determinación adecuada de los pesos sinápticos de la red
o no se ha utilizado el número apropiado de neuronas en la capa oculta.

3.2.1. Diseño de una RNA para la aproximación de una


función

Como caso práctico se plantea la aproximación de una función mediante la


arquitectura de perceptron multicapa con aprendizaje basado en algoritmo
del gradiente descendiente. La función de Matlab que permite trabajar con
este algoritmo para el entrenamiento de la red es traingd. A continuación se
describe esta función y algunos de sus parámetros.

Traingd: función que trabaja con el algoritmo de pasos descendientes, que


actualiza pesos y ganancias variándolos en la dirección negativa del gradiente
de la función error. Es un algoritmo de aprendizaje muy lento.

72
Los siguientes comandos se utilizaron para el ejemplo de la creación de una
red neuronal multicapa:

Newff: Crea una nueva red multicapa feedforward

Newff(PR,[S1 S2...SN],TF1 TF2...TFN,BTF,BLF,PF)


PR: Matriz Rx2 con los valores mı́nimos y máximos de los R elementos
de entrada.
Si: Tamaño de la capa i.
TFi: Función de activación de la capa i.
BTF: Algoritmo de entrenamiento de retropropagación.
BLF: Función de aprendizaje de los parámetros.
PF: Función a optimizar.

init: Inicializa pesos y umbrales para una red neuronal


net = init(net)

Train: Entrena una red neuronal.

[net,tr,Y,E,Pf,Af] = train(net,P,T,Pi,Ai,VV,TV)
net: red neuronal.
P: Entradas.
T: Salidas (targets).
Pi: Condiciones iniciales de retardo de las entradas (cero por defecto).
Ai: Condiciones iniciales de retardo de las capas (cero por defecto).
VV: Estructura de los vectores de validación.
TV: Estructura de los vectores de test.

La función train devuelve los siguientes parámetros:

net: Red neuronal.


TR: Histórico del entrenamiento.
Y: Salidas de la red.
E: Errores de la red.

73
Pf: Condiciones finales de retardo de las entradas.
Af: Condiciones finales de retardo de las capas.

Sim: Simula el funcionamiento del modelo de redes neuronales.

[y,Pf,Af,E,perf] = sim(net,P,Pi,Ai,T)
net: Red neuronal.
P: Entradas.
Pi,Ai: Condiciones iniciales de los retardos.
T: Salidas (targets).

La función Sim devuelve:

Y: Salidas de la red.
Pf,Af: Condiciones finales de los retardos.
E: Errores de la red.
Perf: Comportamiento de la red.

Matlab permite ajustar a un valor determinado algunos parámetros que influyen


en el entrenamiento de la red. Los parámetros que se ajustan en este caso son:

net.trainParam.Epochs: Máximo número de iteraciones para obtener


convergencia.

net.trainParam.Goal: Error máximo permitido.

La función que se utilizará como ejemplo de aproximación es la siguiente:

h = 1 − e−t (3.3)

74
1

0.9

0.8

0.7

0.6

Altura
0.5

0.4

0.3

0.2

0.1

0
0 1 2 3 4 5 6 7
Tiempo

Figura 3.2: Gráfica de la función a aproximar.

En la figura (3.2) la gráfica está compuesta por 100 pares de Entrada/Salida,


de este total se utilizará el 50 % como vector de entrenamiento, 25 % de vector
de validación y 25 % de vector de test.

Para aproximar la función se utilizó un perceptron multicapa con tres capas.


Se varió la cantidad de neuronas de la capa oculta desde dos a diez neuronas,
con el fin de comparar los resultados para las distintas topologı́as.

Los parámetros net.trainParam.Epochs y net.trainParam.Goal son ajustados


es 10000 y 0.001 respectivamente.

En la tablas (3.1),(3.2) y (3.3) se resumen los resultados obtenidos para tres


pruebas realizadas.

75
Topologı́a Error Final
21 0.001000
31 0.001000
41 0.004331
51 0.001000
61 0.002196
71 0.001000
81 0.001865
91 0.001050
10 1 0.001000

Tabla 3.1: Resumen de topologı́a y error para primera prueba.

Topologı́a Error Final


21 0.001000
31 0.001000
41 0.002716
51 0.001000
61 0.001763
71 0.001000
81 0.001000
91 0.001000
10 1 0.001000

Tabla 3.2: Resumen de topologı́a y error para segunda prueba.

76
Topologı́a Error Final
21 0.001000
31 0.004355
41 0.001000
51 0.003520
61 0.002035
71 0.001000
81 0.001000
91 0.001000
10 1 0.001741

Tabla 3.3: Resumen de topologı́a y error para tercera prueba.

Las siguientes figuras muestran el comportamiento del error en función de


las épocas de entrenamiento y el resultado de la función aproximada para la
primera prueba realizada (tabla 3.1).
−1
10
Entrenamiento
Validación
Test
Objetivo

−2
10
Error cuadrático

−3
10

−4
10
0 1000 2000 3000 4000 5000 6000
Épocas

Figura 3.3: Comportamiento del Error en función de las épocas para dos neuronas
ocultas.

77
1.4

1.2

0.8

Altura
0.6

0.4

0.2

0
0 1 2 3 4 5 6 7
Tiempo

Figura 3.4: Gráfica función original y aproximada con dos neuronas ocultas.

Para el diseño de dos neuronas en la capa oculta se obtiene un error de 0,001


que alcanza el valor esperado (figura 3.3). En la figura (3.4) se observa que el
resultado obtenido se aproxima a la función original.

0
10
Entrenamiento
Validación
Test
Objetivo

−1
10
Error cuadrático

−2
10

−3
10

−4
10
0 1000 2000 3000 4000 5000 6000 7000 8000 9000
Épocas

Figura 3.5: Comportamiento del Error en función de las épocas para tres neuronas
ocultas.

78
1.4

1.2

0.8

Altura
0.6

0.4

0.2

0
0 1 2 3 4 5 6 7
Tiempo

Figura 3.6: Gráfica función original y aproximada con tres neuronas ocultas.

Para el diseño de tres neuronas en la capa oculta se obtiene un error de 0,001


que alcanza el valor esperado (figura 3.5). En la figura (3.6) se observa que el
resultado obtenido se aleja levemente de la función original.

1
10
Entrenamiento
Validación
Test
Objetivo

0
10
Error cuadrático

−1
10

−2
10

−3
10
0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000
Épocas

Figura 3.7: Comportamiento del Error en función de las épocas para cuatro neuronas
ocultas.

79
1.4

1.2

0.8

Altura
0.6

0.4

0.2

0
0 1 2 3 4 5 6 7
Tiempo

Figura 3.8: Gráfica función original y aproximada con cuatro neuronas ocultas.

Para el diseño de cuatro neuronas en la capa oculta se obtiene un error de


0,004331, valor que se aleja del valor esperado (figura 3.7). En la figura (3.8)
se observa que el resultado obtenido no se asemeja la función original.

1
10
Entrenamiento
Validación
Test
Objetivo

0
10
Error cuadrático

−1
10

−2
10

−3
10
0 500 1000 1500 2000 2500 3000 3500 4000
Épocas

Figura 3.9: Comportamiento del Error en función de las épocas para cinco neuronas
ocultas.

80
1.4

1.2

0.8

Altura
0.6

0.4

0.2

0
0 1 2 3 4 5 6 7
Tiempo

Figura 3.10: Gráfica función original y aproximada con cinco neuronas ocultas.

Para el diseño de cinco neuronas en la capa oculta se obtiene un error de


0,001 que alcanza el valor esperado (figura 3.9), sin embargo en la figura
(3.10) se observa que el resultado obtenido no es una buena aproximación de
la función original.

0
10
Entrenamiento
Validación
Test
Objetivo

−1
10
Error cuadrático

−2
10

−3
10
0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000
Épocas

Figura 3.11: Comportamiento del Error en función de las épocas para seis neuronas
ocultas.

81
1.4

1.2

0.8

Altura
0.6

0.4

0.2

0
0 1 2 3 4 5 6 7
Tiempo

Figura 3.12: Gráfica función original y aproximada con seis neuronas ocultas.

Para el diseño de seis neuronas en la capa oculta se obtiene un error de


0,002196 que no alcanza el valor esperado (figura 3.11), debido a esto el
resultado de la aproximación no es el correcto (figura 3.12).

0
10
Entrenamiento
Validación
Test
Objetivo

−1
10
Error cuadrático

−2
10

−3
10

−4
10
0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000
Épocas

Figura 3.13: Comportamiento del Error en función de las épocas para siete neuronas
ocultas.

82
1.4

1.2

0.8

Altura
0.6

0.4

0.2

0
0 1 2 3 4 5 6 7
Tiempo

Figura 3.14: Gráfica función original y aproximada con siete neuronas ocultas.

Para el diseño de siete neuronas en la capa oculta se obtiene un error de


0,001 que alcanza el valor esperado (figura 3.13), pero la función aproximada
se aleja aún mas de la función original (figura 3.14).

0
10
Entrenamiento
Validación
Test
Objetivo

−1
10
Error cuadrático

−2
10

−3
10
0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000
Épocas

Figura 3.15: Comportamiento del Error en función de las épocas ocho neuronas
ocultas.

83
1.4

1.2

0.8

Altura
0.6

0.4

0.2

0
0 1 2 3 4 5 6 7
Tiempo

Figura 3.16: Gráfica función original y aproximada con ocho neuronas ocultas.

Para el diseño de ocho neuronas en la capa oculta se obtiene un error que


dista levemente del esperado, alcanzando un valor de 0,001865 (figura 3.15).
En la figura (3.16) se observa que el resultado obtenido de la aproximación no
es el más óptimo.

1
10
Entrenamiento
Validación
Test
Objetivo
0
10

−1
10
Error cuadrático

−2
10

−3
10

−4
10
0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000
Épocas

Figura 3.17: Comportamiento del Error en función de las épocas para nueve neuronas
ocultas.

84
1.4

1.2

0.8

Altura
0.6

0.4

0.2

0
0 1 2 3 4 5 6 7
Tiempo

Figura 3.18: Gráfica función original y aproximada con nueve neuronas ocultas.

Para el diseño de nueve neuronas en la capa oculta el error obtenido es de


0,001050, valor que es muy proximo al esperado (figura 3.17). En la figura
(3.18) se observa que la gráfica aproximada se desvı́a levemente de la función
original.

0
10
Entrenamiento
Validación
Test
Objetivo

−1
10
Error cuadrático

−2
10

−3
10

−4
10
0 1000 2000 3000 4000 5000 6000 7000 8000 9000
Épocas

Figura 3.19: Comportamiento del Error en función de las épocas para diez neuronas
ocultas.

85
1.4

1.2

0.8

Altura
0.6

0.4

0.2

0
0 1 2 3 4 5 6 7
Tiempo

Figura 3.20: Gráfica función original y aproximada con diez neuronas ocultas.

Para el diseño de diez neuronas en la capa oculta se obtiene un error de 0,001


que alcanza el valor esperado (figura 3.19), pero la figura (3.20) se observa
que el resultado obtenido no se aproxima completamente a la función original.

En la tabla (3.1) se observa que para un número pequeño de neuronas ocultas


se logró obtener el mı́nimo error aceptado, también se observa que a medida
que se aumentó el número de neuronas ocultas el error fue creciendo, para
luego disminuir alcanzando nuevamente el valor objetivo, sin embargo en las
gráficas de la función aproximada se ve que el resultado no es el más óptimo al
aumentar el número de neuronas, lo anterior muestra que no siempre un error
menor implica una mejor aproximación. Por lo tanto, la topologı́a que mejor
logró aproximar la función fue la formada por dos neuronas ocultas, mostrada
en la figura (3.4).

La figura (3.21) muestra como varió el error después del entrenamiento al


aumentar el número de neuronas en la capa oculta.

86
−3
x 10
4.5

3.5

Error Final
2.5

1.5

0.5
2 3 4 5 6 7 8 9 10
Numero de Neuronas

Figura 3.21: Error final en función del número de neuronas.

Para observar mejor el comportamiento del proceso de aprendizaje de la red


se tomó la topologı́a que entrego la mejor aproximación para la función y se
desarrollo su entrenamiento mostrando el resultado obtenido por cada 1000
épocas.
1

0.9

0.8

0.7

0.6
Altura

0.5

0.4

0.3

0.2

0.1

0
0 1 2 3 4 5 6 7
Tiempo

Figura 3.22: Aproximación después de 1000 épocas de entrenamiento.

87
1.4

1.2

0.8

Altura
0.6

0.4

0.2

0
0 1 2 3 4 5 6 7
Tiempo

Figura 3.23: Aproximación después de 2000 épocas de entrenamiento.

1.4

1.2

0.8
Altura

0.6

0.4

0.2

0
0 1 2 3 4 5 6 7
Tiempo

Figura 3.24: Aproximación después de 3000 épocas de entrenamiento.

1.4

1.2

0.8
Altura

0.6

0.4

0.2

0
0 1 2 3 4 5 6 7
Tiempo

Figura 3.25: Aproximación después de 4000 épocas de entrenamiento.

88
1.4

1.2

0.8

Altura
0.6

0.4

0.2

0
0 1 2 3 4 5 6 7
Tiempo

Figura 3.26: Aproximación después de 5000 épocas de entrenamiento.

1.4

1.2

0.8
Altura

0.6

0.4

0.2

0
0 1 2 3 4 5 6 7
Tiempo

Figura 3.27: Aproximación después de 5366 épocas de entrenamiento.

En las figuras (3.22) a (3.27) se observa que en las primeras 2000 épocas de
entrenamiento la aproximación de la función no logra acercarse al patrón de
la función original. A medida que aumentan las épocas de entrenamiento los
valores de los pesos se van ajustando por lo que la función aproximada se va
acercando cada vez más a la función original. Después de las 4000 épocas de
entrenamiento se logra observar que la aproximación es cada vez mejor.

89
3.3. Variaciones del Algoritmo Backpropagation

Las variaciones del algoritmo de gradiente descendiente caen en dos


categorı́as: la primera categorı́a utiliza técnicas heurı́sticas, la segunda
categorı́a utiliza técnicas de optimización numérica.

3.3.1. Técnica heurı́stica

Se denomina heurı́stica a la capacidad de un sistema para realizar de forma


inmediata innovaciones positivas para sus fines.

Algunas funciones de Matlab que utilizan esta técnica son las siguientes:

Traingdm: Es una variante del algoritmo original el cual utiliza un


coeficiente de momento que interviene en el proceso de actualización
de los pesos. Este algoritmo responde no solo al gradiente local sino
que también a las cambios recientes en la superficie de error. Permite
a la red ignorar pequeños cambios en la superficie de error, actuando
como un filtro pasabajos. Sin momento la red puede caer en un mı́nimo
local. Este algoritmo depende de dos parámetros: lr que indica la taza de
aprendizaje y mc que almacena el valor de momento que será utilizado.
Si el error de la red en una iteración dada, excede el valor del error en la
iteración anterior, en un valor mayor al definido por un radio de cobertura
dado, que generalmente esta en un valor de 1.04, los nuevos pesos y
bias son descartados y el coeficiente de momento mc es fijado en cero.

Traingda: El algoritmo traingd emplea una taza de aprendizaje constante


durante el entrenamiento, una taza de aprendizaje muy pequeña torna
lento el aprendizaje, pero si se incrementa demasiado el aprendizaje
puede tornarse inestable y crear divergencia. Por el contrario, traing-
da emplea una taza de aprendizaje adaptativa durante el proceso de
entrenamiento. Si el nuevo error calculado excede al error anterior en

90
un valor mayor al establecido por el parámetro max perf inc, normal-
mente ajustado en 1.04, los nuevos pesos y bias son descartados, man-
teniéndose los valores anteriores y disminuyendo la taza de aprendizaje
ponderándola por un valor ajustado normalmente en 0.7. Si el nuevo error
es menor que el error anterior la taza de aprendizaje es incrementada. Su
gran desventaja es que los pesos iniciales varı́an muy poco aunque se
encuentren distantes de los valores de convergencia.

Traingdx: La función traingdx combina la tasa de aprendizaje adaptativa


con el coeficiente de momento.

Trainrp: En este algoritmo solamente el signo de la derivada es utilizado


para determinar la dirección de actualización de los parámetros libres de
la red, la magnitud de las derivadas no tiene efecto en la actualización. La
magnitud en el cambio de cada peso es determinado por separado. Si la
derivada es cero el valor actualizado se conserva; si los pesos continúan
cambiando en la misma dirección durante varias iteraciones, la magnitud
de cambios de los pesos se decrementa.

3.3.2. Técnicas de Optimización Numérica

Dentro de esta clasificación se encuentran algoritmos basados en diferentes


técnicas de optimización, como lo es el algoritmo del gradiente conjugado, el
algoritmo de quasi-newton y el algoritmo de Levenberg-Marquardt, este ultimo
es uno de los que presenta una mayor velocidad de convergencia.

El algoritmo de Levenberg-Marquardt ofrece un método iterativo con velocidad


de convergencia adaptativa para la optimización de modelos no lineales
basados en el error cuadrático medio. Requiere más uso de memoria ya que el
algoritmo realiza una aproximación de la matriz de segundas derivadas (matriz
Hessiana) usando las primeras derivadas, y con esta información calcula el
cambio en los pesos sinápticos.

91
Como la función de error tiene la forma de suma de cuadrados la matriz
Hessiana se puede aproximar como:

H = JT J (3.4)

el gradiente es calculado con:

g = JT e (3.5)

donde J es la matriz del jacobiano que contiene la primera derivada del error
de la red con respecto a los pesos y bias y e es el vector de error de la red.

El algoritmo está descrito por la siguiente ecuación:

h i−1
Wk+1 = Wk − J T J + µI JT e (3.6)

La ecuación (3.6) se aproxima al método del descenso de gradiente si µ es muy


grande, y se aproxima al método de Newton si µ = 0. La función de matlab que
ejecuta este algoritmo es trainlm.

La eficiencia de cada algoritmo depende de la aplicación especı́fica y


el tamaño de la red. Para la aproximación de funciones el algoritmo de
Levenberg-Marquardt, trainlm, es muy eficiente para redes con no más de unos
centenares de parámetros, aunque su requerimiento de memoria es alto. Para
problemas de clasificación el algoritmo de retropropagación flexible (resilent
backpropagation), trainrp, parece el más eficiente.

3.3.3. Comparación de los Algoritmos de Entrenamiento

Con el objetivo de comparar el comportamiento de los algoritmos expuestos


en la sección anterior se realizó la aproximación de la siguiente función:

92
h = e−t sen(t) (3.7)

0.8

0.6

0.4

Altura
0.2

−0.2

−0.4
0 2 4 6 8 10 12 14 16 18 20
Tiempo

Figura 3.28: Gráfica de la función a aproximar.

Para la aproximación de la función se fueron probando diferentes topologı́as


para cada algoritmo de entrenamiento. La función está compuesta por 600
pares entrada/salida, tomando el 50 % del total para el entrenamiento, 25 % para
validación y 25 % para test. Los resultado obtenidos para cada algoritmo se
resumen en las tablas (3.4) a (3.8), en estas se muestra la topologı́a utilizada,
el tiempo que demoró el entrenamiento (t ent), el número de épocas y el error
final alcanzado. También se muestran las gráficas del error en función de las
épocas de entrenamiento y las gráficas de las aproximaciones resultantes con
cada algoritmo para la topologı́a que alcanzó el menor error.

93
Topologı́a t ent épocas Error Final
21 11.344 2000 0.015300
51 11.953 2000 0.027190
10 1 14.125 2000 0.015679
30 1 22.922 2000 0.021577
50 1 0.437 11 0.693716
231 13.656 2000 0.012931
531 14.203 2000 0.022976
10 3 1 17.609 2000 0.017187
30 3 1 26.547 2000 0.017609
50 3 1 37.312 2000 0.018660
271 15.812 2000 0.012717
571 0.438 23 0.289880
10 7 1 18.984 2000 0.019546
30 7 1 0.547 19 0.212684
50 7 1 0.625 20 0.341578
2 20 1 0.375 11 1.179927
5 20 1 22.797 2000 0.014929
10 20 1 0.437 12 0.863646
30 20 1 0.516 13 0.659896
50 20 1 0.578 13 1.796927
2 40 1 32.172 2000 0.013486
5 40 1 33.078 2000 0.018043
10 40 1 0.484 9 9.075659
30 40 1 0.500 9 18.186717
50 40 1 0.562 9 5.998508

Tabla 3.4: Resumen resultados para Traingdm.

94
0
10
Entrenamiento
Validación
Test
Objetivo

−1
10

Error cuadrático
−2
10

−3
10

−4
10
0 200 400 600 800 1000 1200 1400 1600 1800 2000
Épocas

Figura 3.29: Mı́nimo error para traingdm.

0.8

0.6

0.4
Altura

0.2

−0.2

−0.4
0 2 4 6 8 10 12 14 16 18 20
Tiempo

Figura 3.30: Curva aproximada con mı́nimo error para traingdm.

Para el algoritmo de entrenamiento Traingdm se obtuvieron los resultados


mostrados en la tabla (3.4), donde se rescata que la topologı́a con la que se
logra un menor error es con 2 neuronas en la primera capa oculta y 7 neuronas
en la segunda capa oculta dando un error final de 0,012717, el resultado de
este entrenamiento se muestra en la figura (3.29) donde se observa que se
cumplieron los 2000 ciclos de entrenamiento pero no se logra el error objetivo
de 0,0001. En la figura (3.30) se muestra la función original (linea azul) y el
resultado obtenido con la aproximación mediante la red neuronal (linea roja
segmentada), en el cual se observa que el resultado no es el esperado.

95
Topologı́a t ent épocas Error Final
21 0.766 123 0.017304
51 0.782 111 0.019866
10 1 0.828 97 0.018244
30 1 2.266 180 0.021790
50 1 1.593 80 0.053244
231 0.906 109 0.018961
531 1.078 124 0.022699
10 3 1 1.063 112 0.019871
30 3 1 1.610 106 0.009644
50 3 1 2.266 110 0.009567
271 0.953 100 0.009785
571 0.985 97 0.021488
10 7 1 1.125 101 0.024108
30 7 1 1.922 117 0.011988
50 7 1 2.156 101 0.013162
2 20 1 1.110 85 0.029025
5 20 1 1.235 91 0.033128
10 20 1 1.375 92 0.013879
30 20 1 1.781 90 0.028890
50 20 1 2.265 91 0.021883
2 40 1 1.313 71 0.016171
5 40 1 1.328 67 0.026092
10 40 1 1.515 74 0.035228
30 40 1 2.094 79 0.038184
50 40 1 2.313 69 0.031216

Tabla 3.5: Resumen resultados para Traingda.

96
0
10
Entrenamiento
Validación
Test
Objetivo

−1
10

Error cuadrático
−2
10

−3
10

−4
10
0 20 40 60 80 100 120
Épocas

Figura 3.31: Mı́nimo error para traingda.

0.8

0.6

0.4
Altura

0.2

−0.2

−0.4
0 2 4 6 8 10 12 14 16 18 20
Tiempo

Figura 3.32: Curva aproximada con mı́nimo error para traingda.

Para el algoritmo de entrenamiento Traingda se obtuvieron los resultados


mostrados en la tabla (3.5), donde se rescata que la topologı́a con la que se
logra un menor error es con 50 neuronas en la primera capa oculta y 3 neuronas
en la segunda capa oculta dando un error final de 0,009567, el resultado de
este entrenamiento se muestra en la figura (3.31) donde se observa que no
se cumplieron los 2000 ciclos de entrenamiento debido a que se detuvo el
entrenamiento por el conjunto de validación de esta forma no se logra el error
objetivo de 0,0001. En la figura (3.32) se muestra la función original (linea azul)
y el resultado obtenido con la aproximación mediante la red neuronal (linea roja
segmentada), en el cual se observa que el resultado no es el esperado.

97
Topologı́a t ent épocas Error Final
21 0.968 164 0.013900
51 0.359 26 0.043445
10 1 1.156 144 0.014808
30 1 1.828 139 0.013348
50 1 2.125 117 0.022896
231 0.578 48 0.032652
531 0.453 31 0.086013
10 3 1 1.562 174 0.010141
30 3 1 2.234 155 0.009667
50 3 1 0.969 38 0.020143
271 0.391 19 0.073785
571 0.406 23 0.126897
10 7 1 1.563 150 0.008605
30 7 1 2.188 147 0.009832
50 7 1 3.187 158 0.012527
2 20 1 1.500 130 0.007488
5 20 1 1.828 138 0.014039
10 20 1 2.000 133 0.015547
30 20 1 2.453 124 0.005489
50 20 1 3.578 145 0.006534
2 40 1 0.438 11 0.300600
5 40 1 2.172 119 0.017663
10 40 1 2.672 137 0.018818
30 40 1 3.016 121 0.011462
50 40 1 4.235 135 0.010314

Tabla 3.6: Resumen resultados para Traingdx.

98
0
10
Entrenamiento
Validación
Test
Objetivo

−1
10

Error cuadrático
−2
10

−3
10

−4
10
0 20 40 60 80 100 120 140
Épocas

Figura 3.33: Mı́nimo error para traingdx.

0.8

0.6

0.4
Altura

0.2

−0.2

−0.4
0 2 4 6 8 10 12 14 16 18 20
Tiempo

Figura 3.34: Curva aproximada con mı́nimo error para traingdx.

Para el algoritmo de entrenamiento Traingdx se obtuvieron los resultados


mostrados en la tabla (3.6), donde se rescata que la topologı́a con la que
se logra un menor error es con 30 neuronas en la primera capa oculta y
20 neuronas en la segunda capa oculta dando un error final de 0,005489,
el resultado de este entrenamiento se muestra en la figura (3.33) donde se
observa que no se cumplieron los 2000 ciclos de entrenamiento debido a que
se detuvo el entrenamiento por el conjunto de validación de esta forma no
se logra el error objetivo de 0,0001. En la figura (3.34) se muestra la función
original (linea azul) y el resultado obtenido con la aproximación mediante la
red neuronal (linea roja segmentada), en el cual se observa que el resultado
no es el esperado.

99
Topologı́a t ent épocas Error Final
21 0.421 34 0.012846
51 1.031 149 0.003303
10 1 1.218 155 0.003100
30 1 10.562 833 0.000192
50 1 6.156 344 0.000100
231 7.797 1137 0.004471
531 14.734 2000 0.004666
10 3 1 1.922 197 0.000126
30 3 1 3.625 248 0.000152
50 3 1 1.797 82 0.000099
271 6.360 799 0.001940
571 13.235 1538 0.000100
10 7 1 1.453 130 0.000099
30 7 1 1.750 110 0.000100
50 7 1 2.109 99 0.000096
2 20 1 0.968 74 0.010678
5 20 1 2.750 221 0.000585
10 20 1 2.453 178 0.000099
30 20 1 1.094 48 0.000099
50 20 1 1.672 61 0.000099
2 40 1 32.156 2000 0.000150
5 40 1 4.125 226 0.000100
10 40 1 1.828 83 0.000098
30 40 1 2.157 78 0.000100
50 40 1 2.437 72 0.000100

Tabla 3.7: Resumen resultados para Trainrp.

100
0
10
Entrenamiento
Validación
Test
Objetivo
−1
10

−2
10

Error cuadrático
−3
10

−4
10

−5
10
0 10 20 30 40 50 60 70 80 90 100
Épocas

Figura 3.35: Mı́nimo error para trainrp.

0.8

0.6

0.4
Altura

0.2

−0.2

−0.4
0 2 4 6 8 10 12 14 16 18 20
Tiempo

Figura 3.36: Curva aproximada con mı́nimo error para trainrp.

Para el algoritmo de entrenamiento Trainrp se obtuvieron los resultados


mostrados en la tabla (3.7), donde se rescata que la topologı́a con la que se
logra un menor error es con 50 neuronas en la primera capa oculta y 7 neuronas
en la segunda capa oculta dando un error final de 0,000096, el resultado de
este entrenamiento se muestra en la figura (3.35) donde se observa que no
se cumplieron los 2000 ciclos de entrenamiento debido a que se detuvo el
entrenamiento por que llega a un valor de error menor que el objetivo de
0,0001. En la figura (3.36) se muestra la función original (linea azul) y el
resultado obtenido con la aproximación mediante la red neuronal (linea roja
segmentada), en el cual se observa una aproximación aceptable de la función
original.

101
Topologı́a t ent épocas Error Final
21 3.328 462 0.003239
51 2.125 233 0.000100
10 1 2.813 255 0.000100
30 1 0.406 5 0.000023
50 1 0.390 3 0.000011
231 0.765 61 0.003094
531 0.438 18 0.006133
10 3 1 0.875 45 0.000093
30 3 1 0.766 12 0.000038
50 3 1 30.453 318 0.002073
271 6.140 521 0.000099
571 0.515 17 0.000082
10 7 1 2.344 89 0.000097
30 7 1 2.625 22 0.000066
50 7 1 2.031 6 0.000050
2 20 1 1.266 50 0.000096
5 20 1 3.437 85 0.000019
10 20 1 1.891 18 0.000043
30 20 1 5.812 7 0.000063
50 20 1 12.063 5 0.000034
2 40 1 2.719 53 0.000098
5 40 1 1.312 9 0.000059
10 40 1 2.922 8 0.000091
30 40 1 25.125 7 0.000053
50 40 1 75.312 6 0.000064

Tabla 3.8: Resumen resultados para Trainlm.

102
2
10
Entrenamiento
Validación
1 Test
10 Objetivo

0
10

−1
10

Error cuadrático
−2
10

−3
10

−4
10

−5
10

−6
10
0 0.5 1 1.5 2 2.5 3
Épocas

Figura 3.37: Mı́nimo error para trainlm.

0.8

0.6

0.4
Altura

0.2

−0.2

−0.4
0 2 4 6 8 10 12 14 16 18 20
Tiempo

Figura 3.38: Curva aproximada con mı́nimo error para trainlm.

Para el algoritmo de entrenamiento Trainlm se obtuvieron los resultados


mostrados en la tabla (3.8), donde se rescata que la topologı́a con la que se
logra un menor error es con 50 neuronas en la capa oculta dando un error
final de 0,000011, el resultado de este entrenamiento se muestra en la figura
(3.37) donde se observa que realiza 3 ciclos de entrenamiento que el objetivo
de 0,000011. En la figura (3.38) se muestra la función original (linea azul) y el
resultado obtenido con la aproximación mediante la red neuronal (linea roja
segmentada), en el cual se observa una muy buena una aproximación de la
función original.

Tanto de las tablas como de las gráficas anteriores se desprende que el

103
algoritmo que mejor permitió la aproximación de la función fue el de Levenberg-
Marquardt, trainlm. También mostró un tiempo de convergencia mucho menor
que el resto de las algoritmos, alcanzando el mı́nimo esperado en un número
mucho menor de iteraciones, pero requiriendo un poder de computo más
elevado.

3.4. Memoria distribuida

Otra caracterı́stica fundamental de las redes neuronales es la capacidad de


distribuir la información, lo que se conoce como memoria distribuida. Esto
significa que el conocimiento adquirido por la red se encuentra distribuido en
numerosas conexiones, lo que tiene como consecuencia la tolerancia a fallos.
Por ejemplo una red neuronal es capaz de seguir funcionando adecuadamente
a pesar de sufrir fallas o destrucción de neuronas o sus conexiones, ya que la
información se halla distribuida por toda la red, sin embargo, en un programa
tradicional un pequeño fallo en cualquier punto puede invalidarlo por completo
y dar un resultado erróneo o no dar ningún resultado.

Para aclarar la idea anterior se desarrolló la aproximación de la función


h = e−t sen(t) y posteriormente se eliminaron conexiones entre neuronas.
Se realizó una simulación en Simulink donde se incluyeron bloques de
función matemática donde cada bloque represento una neurona, allı́ se probo
eliminado distintas conexiones en forma aleatoria. La resultados se muestran
en las siguientes gráficas.

104
Figura 3.39: Diagrama de bloques para demostración de memoria distribuida.

0.8

0.6

0.4

0.2

−0.2

−0.4
0 10 20 30 40 50 60

Figura 3.40: Curva de respuesta de la red con todas las neuronas.

105
1

0.8

0.6

0.4

0.2

−0.2

−0.4
0 10 20 30 40 50 60

Figura 3.41: Curva de respuesta de la red sin la neurona dos.

−1
0 10 20 30 40 50 60

Figura 3.42: Curva de respuesta de la red sin la neurona cuatro.

En la figura (3.40) se muestra la función original (linea azul) y la función


aproximada por la red neuronal (linea roja segmentada) donde se observa una
muy buena aproximación de la función, esto se debe a la utilización de todas
las neuronas que participaron en el entrenamiento.

En la figura (3.41) se representa la simulación de la aproximación de la


función pero desconectando la segunda neurona. Se ve que la red tiende
a aproximarse a la función original, pero no lo logra en forma optima,
manteniendo comportamiento similar a la original.

Luego en la figura (3.42), conectando la segunda neurona y desconectando la


cuarta neurona y simulando nuevamente la aproximación, el resultado que se

106
obtiene esta totalmente alejado de lo esperado.
8

−1
0 10 20 30 40 50 60

Figura 3.43: Curva de respuesta de la red sin la neurona seis.

10

−10

−20

−30

−40

−50

−60
0 10 20 30 40 50 60

Figura 3.44: Curva de respuesta de la red sin la neurona ocho.

0.8

0.6

0.4

0.2

−0.2

−0.4
0 10 20 30 40 50 60

Figura 3.45: Curva de respuesta de la red sin las neurona tres y nueve.

107
En la figura (3.43) se vuelve a conectar la cuarta neurona y se desconecta la
sexta, dando como resultado una aproximación com el mismo comportamiento
que la función original, pero desplazada del eje.

Luego se reconectó la sexta neurona y se desconecto la octava, dando


como resultado lo mostrado en la figura (3.44), donde se ve que la neurona
desconectada tenı́a un gran aporte al sistema.

Por último se vuelve a conectar la octava neurona, pero se desconectan dos, la


tercera y la novena. En la figura (3.45) se observa que la aproximación obtenida
es aceptable.
Los resultados obtenidos con esta prueba fueron aceptables, lográndose
comprobar la capacidad de la red neuronal de distribuir la información. Es
importante destacar que del ejemplo anterior se observó que no todas las
neuronas tienen el mismo aporte de información al sistema, por lo que al
eliminar ciertas neuronas no se presentaron mayores problemas, mientras que
al eliminar otras el sistema presentó mayores errores.

3.5. Modelado de un Controlador

Dentro de las arquitecturas de control neuronal existe el control directo basado


en el modelo de un controlador. Para su implementación son necesarios los
datos de entrada y salida del controlador (ver capitulo 2.4).

El modelado de un controlador no depende del tipo al que este corresponda,


si no de su respuesta dinámica a una determinada entrada, ya que se
está aproximando la función que describe la respuesta del controlador. Por esto
es que al modelar un controlador se deben tomar las mismas consideraciones
que al aproximar una función.

En el anexo (C) se desarrollo un controlador PI para la planta, basándose


en los datos de entrada/salida de este controlador se entrenó una red para

108
que modelara solo el comportamiento Proporcional del control, por lo tanto, se
obtendrá una aproximación de un controlador P.

La figura (3.46) muestra la señal de salida del controlador en función de la


señal de error que entra al controlador.
1.3

1.2

1.1

1
Señal de Control

0.9

0.8

0.7

0.6

0.5

0.4
−1 0 1 2 3 4 5 6
Señal de Error

Figura 3.46: Salida del controlador P en función del error de entrada.

Los datos para la generación de la red se rescatan del sistema mostrado en


la figura (3.47). Los datos son exportados a Matlab para la creación de los
vectores de entrenamiento, validación y test.

Figura 3.47: Diagrama de bloques para la extracción de datos.

Para la implementación de la red se tomaron 1000 pares de datos, correspon-


dientes a la entrada y salida del controlador, de los cuales se tomaron el 50 %
para entrenamiento, 25 % para validación y 25 % para test.

De acuerdo a las pruebas realizadas anteriormente se determinó que para

109
aproximar este tipo de función no es necesario una gran cantidad de neuronas
ocultas, por lo que se eligió una red con las caracterı́sticas mostradas en la
tabla (4.1):

Parámetro Valor
Entrada Error
Neuronas ocultas 2
Neuronas salida 1
Función activación capa oculta Logsig
Función activación capa salida Purelin
Algoritmo de entrenamiento Trainlm
Épocas entrenamiento 1000
Error objetivo 0.00001

Tabla 3.9: Resumen parámetros para controlador P neuronal.

En la figura (3.48) se comparan las respuestas del controlador original y la


respuesta entregada por la red.
1.3
Control PI
Control Neuronal
1.2

1.1

1
Señal de Control

0.9

0.8

0.7

0.6

0.5

0.4
−1 0 1 2 3 4 5 6
Señal de Error

Figura 3.48: Comparación de las respuestas del control P y red neuronal.

El esquema de la topologı́a de la red multicapa con sus pesos y bias se muestra


en la figura (3.49):

110
Capa de Entrada Capa Oculta Capa de Salida
Señal de Error Señal de Control

Logsig W 21=-0.7606
W 11=-0.5297

x b11=2.3749 y
Purelin

W 12=-0.4737 b 21=1.4298
W 22=-3.4313
Logsig

b 12=-2.3680

Figura 3.49: Esquema de la topologı́a de la red neuronal.

Una vez entrenada la red es llevada a Simulink, donde el controlador P fue


reemplazado por la red. La implementación se realizó mediante la introducción
de bloques matemáticos que contienen la función de activación de cada
neurona de la red con sus respectivos pesos y bias obteniéndose el esquema
mostrado en la figura (3.50).

Figura 3.50: Diagrama de bloques para la simulación de la red neuronal.

Las siguientes figuras comparan las respuestas del sistema al aplicar un


controlador P y el controlador basado en redes neuronales que aproxima la
salida del controlador P, tomando primero un sistema ideal y luego con la
aplicación de ruido al sistema.

111
40

Control PI
Control Neuronal
35

30

25

Altura
20

15

10

0
0 200 400 600 800 1000 1200
Tiempo

Figura 3.51: Respuestas para un sistema ideal aplicando control P y control neuronal.

40

Control PI
Control Neuronal
35

30

25
Altura

20

15

10

0
0 200 400 600 800 1000 1200
Tiempo

Figura 3.52: Respuestas para un sistema con ruido aplicando control P y control
neuronal.

De la respuesta para el sistema ideal se ve que la red neuronal responde


de la misma forma que el controlador P, como se ve en la figura (3.51),
esto corrobora que el sistema neuronal realizó un correcto modelado del
controlador.

Al agregar un bloque de ruido al sistema se observó que la respuesta de la red


varió con respecto al controlador clásico, esto debido a que al someter a la red
a valores con los cuales no fue entrenada, ella generaliza y se aproxima a la
respuesta que el controlador P entregarı́a, tal como se ve en la figura (3.52).

112
Capı́tulo 4

Implementación de Redes
Neuronales

4.1. Función de la Red en el sistema de control de

nivel

Para mostrar en forma practica la implementación y funcionamiento de una


red neuronal artificial trabajando como controlador neuronal se aplicaron las
técnicas desarrolladas en los capı́tulos anteriores sobre la planta de nivel de
liquido detallada en el anexo (A). La función de la red consiste en aproximarse
al comportamiento del controlador digital diseñado para manejar la apertura
de la electroválvula proporcional, este control recibe el error entre un nivel de
referencia que se ajusto a 25cm y el valor medido por el sensor, proporcionando
la salida que actúa sobre el generador de corriente. Un esquema de la
ubicación del controlador dentro de la planta se muestra en la figura (4.1).

113
Sensorultrasónico

Controlador
digital

Figura 4.1: Ubicación del controlador dentro la planta.

Se diseñó el control neuronal utilizando la técnica de control directo basado


en un controlador. Para el entrenamiento de la red, análisis de los datos y la
comparación de los resultados fue necesario la obtención de los datos de la
planta en tiempo real, para esto se creo un módulo que permitió la captura de
estos.

4.2. Modulo de adquisición de Datos

La implementación del moduló necesitó primeramente el envió de los datos


desde la planta hacia el computador, para posteriormente ser procesados en
Matlab. Estos correspondieron al error y la salida del controlador.

4.2.1. Envı́o de datos al computador

Los datos fueron enviados mediante comunicación serial desde un microcon-


trolador PIC16F877 que contenı́a el control digital y capturados en el com-
putador a través de una aplicación desarrollada en Visual Basic, para poste-

114
riormente ser procesados en Matlab. Todos los datos rescatados formaron el
conjunto de entrenamiento para la red.

Para implementar la comunicación serial RS-232 se configuró el pin E1 del


microcontrolador como transmisor con una tasa de transferencia de 9600
baudios, siendo enviados cada un segundo.

4.2.2. Aplicación de captura de datos mediante Visual Basic

La figura (4.2) muestra la aplicación desarrollada en Visual Basic para la


captura de los datos utilizados en el entrenamiento de la red neuronal. El
programa utiliza la componente MSComm la cual se comunica con el puerto
COM1 del computador, este último configurado también a 9600 baudios.

Figura 4.2: Interfaz gráfica para captura de datos

Una vez que se rescataron los datos necesarios, el programa permite


guardarlos en un archivo de texto.

115
4.2.3. Procesamiento de los datos capturados en Matlab

Una vez que se tuvo el archivo de texto con los datos del controlador
proporcional se exportaron a Matlab mediante la instrucción textread cuya
sintaxis es la siguiente:

[error, salida]=texteread(’archivo.txt’,’ %f %f’)

Donde:

error: vector que almacenará el error del controlador.

salida: vector que almacenará la salida del controlador.

archivo.txt: nombre del archivo de texto que genera la aplicación de Visual


Basic.

%f: lee variables de punto flotante.

4.3. Modelado del controlador P con una Red

Neuronal

La figura (4.3) muestra la salida del controlador proporcional en función del


error. Donde el error corresponde a la diferencia entre la referencia y el valor
medido. La salida del control corresponde al valor de entrada al generador de
corriente (anexo A).

116
200

190

180

170

Salida control
160

150

140

130

120
0 0.5 1 1.5 2 2.5 3
Error

Figura 4.3: Curva de salida del control en función del error de entrada.

Al realizar un acercamiento a la figura (4.3) se observa que existe un valor de


salida para distintos valores de error, como se muestra en la figura (4.4), esto
debido a que en el control P digital la señal de error es procesada con valores
decimales mientras que la señal de salida toma valores enteros.
178

176

174

172
Salida control

170

168

166

164

162
1.5 1.55 1.6 1.65 1.7 1.75 1.8 1.85 1.9 1.95 2
Error

Figura 4.4: Acercamiento de la curva de error.

Al momento de entrenar la RNA con estos patrones de entrada se presentó el


problema de necesitar una gran cantidad de neuronas, mientras que si se
aproxima a una función que representa el comportamiento aproximado del
control digital se puede obtener una relación punto a punto entre el valor de
error y salida del control con lo que se reduce el numero de neuronas. Para
realizar esta aproximación se utilizó la herramienta Curve Fiting de Matlab

117
obteniendo el siguiente resultado.

Salida = 25,9 ∗ Error + 124,5 (4.1)

La comparación de ambas curvas se muestra en la figura (4.5) donde se


observa que la aproximación es buena.
220

Error real
200 Error aproximado

180
Salida control

160

140

120

100

80
−1 −0.5 0 0.5 1 1.5 2 2.5 3
Error

Figura 4.5: Curvas de error real y error aproximado.

En la tabla (4.1) se resumen los parámetros utilizados en el entrenamiento de


la red para el control P.

Parámetro Valor
Entrada Error
Neuronas ocultas 2
Neuronas salida 1
Función activación capa oculta Logsig
Función activación capa salida Purelin
Algoritmo de entrenamiento Trainlm
Épocas entrenamiento 3000
Error objetivo 0.001

Tabla 4.1: Resumen parámetros para controlador P neuronal

En la figura (4.6) se comparan las respuestas de la salida del controlador

118
original y la respuesta entregada por la red. Esta aproximación es la esperada.
220

Salida P digital
200 Salida P neuronal

180

Salida control
160

140

120

100

80
−1 −0.5 0 0.5 1 1.5 2 2.5 3
Error

Figura 4.6: Respuestas control proporcional y control neuronal.

Con los siguientes comandos se pueden ver los parámetros de la red, tanto
pesos sinápticos como bias.

net.IW{1,1}: permite visualizar los pesos sinápticos de la entrada hacia


a la primera capa oculta.

net.b{1,1}: permite visualizar las bias de la primera capa oculta.

net.LW{2,1}: permite visualizar los pesos sinápticos de la primera capa


oculta hacia a la siguiente capa.

net.b{2}: permite visualizar las bias de la segunda capa oculta.

La figura (4.7) muestra el esquema de la red neuronal desarrollada.

Figura 4.7: Diagrama de bloque para la red neuronal.

119
Con los parámetros de la red entregados por Matlab fue posible desarrollar
una red neuronal con un microcontrolador ya que este posee las funciones
matemáticas necesarias.

La implementación del control utilizando la aproximación de funciones en base


a la red neuronal se realizó con un microcontrolador PIC16F877, en el cual se
desarrollo un programa que ejecuta los cálculos matemáticos, entregando la
salida del controlador. Los detalles del programa del controlador y el hardware
utilizado se detallan en los anexos (D.2.3) y (E) respectivamente. Además los
valores de altura del nivel de liquido fueron enviados a través sensor de nivel
al computador para ser comparados con lo obtenido a partir de controlador
proporcional digital original (Anexo A).

El funcionamiento del controlador implementado mediante la red neuronal


artificial en la planta fue el esperado en relación al control proporcional original.
En la figura (4.8) se comparan ambas respuestas, en ellas se observa que para
ambos controles el sistema se estabiliza a un mismo nivel.
25

20
Control P
Red Neuronal

15
Altura

10

0
0 200 400 600 800 1000 1200 1400 1600 1800 2000
Tiempo

Figura 4.8: Respuestas control proporcional y control neuronal sobre la planta.

120
4.4. Modelado del controlador PI con una Red

Neuronal

Según lo descrito en [11], para implementar un controlador PI se presentan


como patrones de entrada a la red el error y la sumatoria del error. Para la
aproximación de ésta función se necesito un número elevado de neuronas
debido a la complejidad de la función, por lo que se sobrepasó la capacidad
del microcontrolador. Para solucionar esto se buscó mediante Curve Fiting de
Matlab una función que describe el comportamiento del error en el tiempo. La
función queda expresada como se indica a continuación.

Error = (−4,619) ∗ e−0,002163∗t + 7,501 ∗ e−0,003991∗t (4.2)

Luego se dejo la salida del controlador en función de el error y la sumatoria del


error, las que se utilizaron para desarrollar el controlador PI neuronal.

La figura (4.9) muestra la salida del controlador en función del error y la


sumatoria de este tanto para los datos reales como para la función aproximada
del error.

200

190

180
Salida Controlador

170

160 Error real


Error aproximado
150

140

130

120

110
300
200
3
100
2
0
1
Sumatoria Error −100
−200 0
Error
−300 −1

Figura 4.9: Curvas de error real y error aproximado.

121
En la tabla (4.2) se resumen los parámetros utilizados para la creación y
entrenamiento de la red neuronal del controlador PI.

Parámetro Valor
Entrada uno Error
Entrada dos Suma de error
Neuronas ocultas 5
Neuronas salida 1
Función activación capa oculta Logsig
Función activación capa salida Purelin
Algoritmo de entrenamiento Trainlm
Épocas entrenamiento 1000
Error objetivo 0.01

Tabla 4.2: Resumen parámetros para controlador PI neuronal.

La siguiente figura muestra el esquema de la red neuronal desarrollado para el


controlador PI neuronal.

Figura 4.10: Esquema de la red neuronal para modelado del controlador PI.

Para la implementación se utilizó el mismo hardware que en el caso del del


controlador P neuronal. El programa grabado en el microcontrolador se detalla

122
en el anexo (D.2.4)

En la figura (4.11) se comparan las respuestas del controlador original y la


respuesta entregada por la red.

200

190

180
Salida Controlador

170

160

150 Salida PI digital


Salida PI neuronal
140

130

120

110
300
200
3
100
2
0
Sumatoria Error −100 1
−200 0 Error
−300 −1

Figura 4.11: Respuestas control PI y control neuronal.

El funcionamiento del controlador en la planta fue el esperado en relación al


control PI digital original, esto se refleja comparando las gráficas de respuesta
de cada uno de ellos tal como se muestra en la figura (4.12).
35
Control PI
Red Neuronal

30

25

20
Altura (cm)

15

10

0
0 200 400 600 800 1000 1200 1400 1600 1800 2000
Tiempo (seg)

Figura 4.12: Respuestas PI digital y control neuronal sobre la planta.

123
En las figuras (4.13) y (4.14) se muestran el tiempo de elevación, tiempo
máximo, sobreoscilación y error final para el controlador PI digital y el PI
basado en redes neuronales.
35

30

so

25 ↓
↑ e

Altura (cm) 20

15

10 ← tm →

5
← tv →

0
0 200 400 600 800 1000 1200 1400 1600 1800 2000
Tiempo (seg)

Figura 4.13: Respuesta control PI digital.

30


so
25

20
Altura (cm)

15

10 ← tm →

5
← tv →

0
0 200 400 600 800 1000 1200 1400 1600 1800 2000
Tiempo (seg)

Figura 4.14: Respuesta control neuronal.

Donde:

tv : tiempo de elevación.
tm : tiempo en alcanzar la máxima amplitud.
so: sobreoscilación.
e: error

La tabla (4.3) muestra el resumen de los resultados obtenidos para los


controladores PI digital y PI neuronal. El la tabla se observa que el control PI

124
neuronal alcanzó el valor máximo en un menor tiempo que el PI digital, también
alcanzo una menor sobre oscilación y un menor error final aproximándose al
nivel de referencia por lo que el control PI neuronal funcionó correctamente en
una planta real.

tv (seg) tm (seg) so(cm) e(cm)


Control PI digital 270 570 6.5 1
Control PI neuronal 310 430 4.5 0.5

Tabla 4.3: Comparación de resultados obtenidos para los controladores P y PI

125
Capı́tulo 5

Conclusiones

Este trabajo permitió conocer los fundamentos matemáticos que describen


el comportamiento de las redes neuronales artificiales, especialmente se
estudiaron las caracterı́sticas fundamentales de las redes neuronales tipo
perceptrón multicapa logrando comprender la forma en que estas aprenden
a partir de ejemplos y también entender como actúa el algoritmo de
entrenamiento, en este caso el backpropagation, sobre los parámetros libres
de la red como son los pesos y bias. También se mostraron distintos tipos de
funciones de activación, logrando comprender como se debe elegir según el
tipo de valores de salida que requiere el problema a solucionar.

Mediante Matlab se realizaron diversas pruebas que permitieron ver el com-


portamiento de las redes como aproximadores universales de funciones. A
partir de la primera prueba realizada se pudo comprobar que no necesaria-
mente un mayor número de neuronas implica la mejor aproximación de una
función, ya que si bien el error de entrenamiento disminuyó, el resultado fi-
nal de la aproximación no fue óptimo, comprobando que se caı́a en un sobre
entrenamiento de la red o que el algoritmo se detenı́a en un mı́nimo local.
Con el segundo ejemplo de aproximación de funciones se realizaron pruebas
con distintos algoritmos, basados tanto en técnicas heurı́sticas como de op-
timización numérica. Con cada algoritmo se probaron distintas topologı́as de

126
red, rescatándose el tiempo de entrenamiento y el error final del entrenamiento.
Esto permitió comprender las diferencias que existe entre cada uno de ellos,
obteniéndose los mejores resultados con el algoritmo Trainlm, por lo que re-
sultó ser el más adecuado para la aproximación de las funciones propúestas.

Las pruebas realizadas en Matlab también nos permitieron comprobar que


para la elección de la mejor topologı́a para la aproximación de una función
no existe una regla, si no que esta elección se basa en pruebas de ensayo y
error, recurriendo solo a la experiencia del diseñador.

Se desarrollo un controlador neuronal basado en técnicas de control directo


con el cual se aproximo al comportamiento de un controlador P y un controlador
PI aprovechando la capacidad de aproximación de funciones de las redes
neuronales.

Para lograr la implementación del control neuronal fue necesario entrenar


las red con valores que describı́an aproximadamente el comportamiento de
los valores de ejemplo capturados, debido a que para poder aproximarnos
a estos valores se necesitaba más recursos de hardware con los que no
se contaba, a pesar de esto el controlador se comporto de manera optima.
Tanto el algoritmo utilizado como la arquitectura fueron determinados según
las pruebas realizadas en el capitulo tres.

127
ANEXOS

128
ANEXO A

Construcción Maqueta

Diseño y Construcción de la Planta

Para la construcción de esta maqueta se utilizaron distintos elementos, tales


como:

Estanques receptores de agua.

Bomba extractora de agua.

Electroválvula proporcional.

Electroválvula on-off.

Tuberı́as de PVC.

etc.

Como inicialmente se contaba con una bomba centrı́fuga de 0.5 HP y una


electroválvula proporcional de 3/8 - 3/8 pulg, las dimensiones de tuberı́as y
accesorios se encontraban condicionadas por estos dos elementos, y a partir
de éstos se eligieron el resto de los materiales para el armado de la planta.

129
Caracterı́sticas de los elementos seleccionados

Bomba centrı́fuga

La bomba extractora es de 0.5 HP, de alimentación alterna, 2850


rpm. El resto de las caracterı́sticas se muestran en la tabla (A.1).

Modelo TPM-06
Cap. Max. [L/min] 31
Cabezal max. [m] 31
Altura max. De Succión. [m] 9
Potencia [HP] 0.5
Diam. Bomba [1”] 1”x 1”
Peso Neto [Kg] 5.3
Dimensión Gen. [Mm] 265 x 120 x155

Tabla A.1: Caracterı́sticas bomba centrifuga

La figura (A.1) muestra la relación existente entre la altura que permite


alcanzar el fluido expulsado por la bomba en función del flujo que circula.

Altura v/s Caudal


35

30

25

20
Altura [Mts]

15

10

0
0 5 10 15 20 25 30 35
Caudal [Lts/min]

Figura A.1: Relación altura vs caudal.

130
Electroválvula proporcional

En las siguientes tablas se detallan las caracterı́sticas mecánicas,


eléctricas y de apertura de la válvula de solenoide de acción piloto
normal cerrada, marca Danfoss.

Instalación Se recomienda un sistema de electroválvulas vertical


Rango de Presión 0.5 - 10 bar
Presión de Prueba 15 bar
Alcance Mejor que 1:20 (5 - 100 %)
T◦ Ambiente - 25 a +50 ◦ C
T◦ Fluido -10 a +80 ◦ C
Viscosidad max. 50 cst
Materiales Cuerpo de la Válvula: Latón n◦ 2.0402
Armadura: Acero inoxidable, n◦ 1.4105 / AISI 430 FR
Tubo de la armadura: Acero inoxidable,
n◦ 1.4306 / AISI 304 L
Muelle: Acero inoxidable, n◦ 1.4568
Orificio: Acero inoxidable, n◦ 1.4305 / AISI 303
Vastago: Acero inoxidable, n◦ 1.4105 / AISI 430 FR
Clapet: KFM
Anillo del asiento y guia: PTFE
Diafragmas: PTFE
Juntas toricas: NBR / CR

Tabla A.2: Caracterı́sticas mecánicas electroválvula proporcional

131
Tensión Sin generador de señales: 24V ± 10 %,
tensión ca rectificada de onda completa
Con generador de señales: 21 - 30 V cc
Señal de control Sin generador de señales: 300 - 600 mA
Con generador de señales: 4 - 20 mA o 0 - 10 V
Potencia bobina Máx. 20 W
Aislamiento del bobinado 400Ωk para la señal de control de 0 - 10V. 250 Ω
para la señal de control de 4-20mA
Resistencia de la bobinado 23,5Ω a una temperatura ambiente de 20 ◦ C
Aislamiento del bobinado Clase H de conformidad con el IEC 85
Conexión Sin generador de señales: Caja de terminales
Con generador de señales: 3 cables núcleo de 2 m
Protección de la bobina, IEC 529 IP 67
Temperatura ambiente - 25 a +50 ◦ C
Régimen de trabajo Continuo

Tabla A.3: Caracterı́sticas eléctricas electroválvula proporcional

En la figura (A.2) se muestra el porcentaje de apertura de la electroválvu-


la en función de la corriente.

Apertura v/s Corriente


100

90

80

70
Apertura [0−100%]

60

50

40

30

20

10

0
0 2 4 6 8 10 12 14 16 18 20
Corriente [mA]

Figura A.2: Porcentaje de apertura en función de la corriente

132
Dispositivo de Medida

Como dispositivo de medida se utilizo un sensor ultrasónico de parallax,


el que se muestra en la figura (A.3). Este dispositivo se alimenta con
5Vdc. Para su funcionamiento se le debe entregar una señal de acti-
vación de mı́nimo 5 µseg. El dispositivo emite una señal ultrasónica de 40
KHz, devolviendo un pulso TTL con un tiempo de duración proporcional
a la distancia medida. El resto de las caracterı́sticas se muestran en la
tabla (A.4).

1.8'' (45.7mm) 0.125''


(3.1mm)
1.7'' (43.2mm)

www.parallax.com

PARALLAX
0.84''
PING ))) 0.74''
(21.3mm)
(18.8mm)
SIG
G ND
5V

0.1''
(2.5mm)

0.1'' (2.5mm)

Figura A.3: Medidas sensor ultrasónico

Voltaje de Alimentación 5 VDC


Consumo de Corriente 30 - 35 mA
Rango de Medición 3 cm hasta 3 m
Entrada de Disparo Pulso ascendete TTL
con duración mı́nima 5µs
Pulso de Salida Pulso ascendete TTL comprendido
entre 115 µs y 18.5ms
Tiempo de espera para la medición 750 µs luego del disparo
Frecuencia del Ultrasonido 40 KHz
Tiempo de emisón del ultrasonido 200 µs
Tiempo mı́nimo de espera entre medidas 200 µs

Tabla A.4: Caracterı́sticas sensor ultrasónico

133
Mediante pruebas realizadas al sensor se encontró que la señal de
respuesta del ancho del pulso en función de la distancia es la mostrada
en la figura (A.4).

4000

Datos Rales
Curva Aproximada
3500

3000

2500
Pulso [us]
Ancho

2000

1500

1000

500

0
10 20 30 40 50 60
Distancia [cm]

Figura A.4: Ancho del pulso en función de la distancia

El dispositivo final de medida necesitaba entregar una señal de voltaje


normalizada entre 0 − 10V olts. Para lograr esto en base al sensor
ultrasónico se diseñó una etapa amplificadora para la generación de la
señal de voltaje.

Para esto se seleccionaron los siguientes dispositivos:

• Microcontrolador PIC16F873

• Conversor digital-análogo DAC0808

• Amplificador operacional LM741

• Regulador LM317

• Regulador 7805

• MAX 232

Mediante el microcontrolador se manejan las señales de control del sen-


sor y se realiza el escalamiento de la respuesta de este. El resultado del

134
escalamiento es entregado al DAC0808 para ser amplificado posterior-
mente con el LM741.

El 7805 es incluido para la alimentación del microcontrolador, la MAX232


y el DAC0808, mientras que la alimentación total del circuito se realiza
con un voltaje de entrada de ±15V olts. El LM317 permite ajustar un
voltaje de referencia del DAC0808. El circuito permite enviar las medidas
capturadas hacia el computador mediante transmisión serial, para esto
es incluida la MAX232.

Generador de corriente de 0 a 20mA

Este dispositivo permite controlar la apertura de la electroválvula


proporcional. Para su construcción se seleccionaron los siguientes
dispositivos:

• Conversor digital-análogo DAC0808

• Amplificador operacional LM741

• Regulador LM317

• Regulador 7805

Este circuito se alimenta con una señal de ±15V olts, y por medio de los
reguladores 7805 y LM317 incorporados en el circuito se alimentan el
DAC0808 y la señal de referencia de este respectivamente.

Fuente de alimentación continua

Para la elección de la fuente de alimentación de los circuitos se


tomaron en consideración los valores de las tensiones de alimentación
de cada uno. También se consideró que esta fuente debe alimentar la
electroválvula proporcional, los ventiladores instalados a un costado del
tablero de alimentación y el relé de parada de emergencia (ver anexo F).

135
Como se mencionó en los puntos anteriores los voltajes de alimentación
de los circuitos de medida y generador de corriente son de ±15V olts,
los ventiladores y el relé son alimentados con 12V olts, mientras que la
electroválvula proporcional se necesita 24V olts. También fue necesario
incluir 5V olts para la alimentación de los circuitos de control.

Dado los diferentes valores de voltajes necesarios se decidió utilizar una


fuente basada en reguladores de la familia 78XX y 79XX.

Los dispositivos utilizados fueron los siguientes:

• Regulador 7805

• Regulador 7812

• Regulador 7815

• Regulador 7824

• Regulador LM337

Dado que el regulador de mayor voltaje es de 24V olts se eligió un trans-


formador de 220/24V olts con punto medio, con un puente rectificador y
dos condensadores para filtrado de 2200µF

Los esquematicos de los circuitos utilizados se muestran en el anexo (E).

Tuberı́as y Estanques

Los diámetros de la tuberı́a y accesorios de aspiración fueron tra-


bajados en 1 pulg, mientras que la red de distribución se realizó en su
totalidad con tuberı́a de PVC de 0.5 pulg. El estanque surtidor metálico
utilizado tiene una capacidad de almacenamiento de 60 Lts, posee dos
perforaciones, una para la extracción del agua y otra para el retorno de
ésta y está montado en forma horizontal sobre la parte inferior de la
estructura metálica que soporta al depósito con todos sus elementos.
El estanque de deposito está construido de acero galvanizado de 0.8
milı́metros de espesor, con una capacidad de almacenamiento de 40 Lts,

136
fue diseñado en su parte superior con una forma cilı́ndrica y su parte
inferior cónica, con el fin de obtener un completo desagüe del estanque.

Modificaciones en la planta

Una vez construida la planta, se le realizaron pruebas para obtener su modelo


matemático, es en este punto donde surgió un problema, ya que para los
primeros 20 cm del estanque, la respuesta dinámica de éste correspondı́a con
t
lo mencionado en [16], esto es h(t) = k(1 − e− τ ) + c, tal como se muestra en la
figura (A.5). De ahı́ en adelante esta respuesta no obedecı́a al comportamiento
deseado (figura (A.6)).

Altura v/s Tiempo


11.5

11

10.5

10

9.5
Altura [cm]

8.5

7.5

6.5
0 500 1000 1500 2000 2500 3000 3500 4000
Tiempo [seg]

Figura A.5: Respuesta deseada.

137
Altura v/s Tiempo
22.6

22.4

22.2

22

21.8

Altura [cm]
21.6

21.4

21.2

21

20.8

20.6
0 500 1000 1500 2000 2500 3000 3500 4000
Tiempo [seg]

Figura A.6: Respuesta entregada con falla en la construcción

Este fenómeno se explica con el hecho de tener una fuerza de contrapresión


variable al interior del estanque, esto quiere decir que a mayor nivel de agua en
el depósito, la presión sobre la entrada es mayor, por lo tanto la presión ejercida
por el fluido en la entrada del deposito se tiende a equiparar con la presión
ejercida por el fluido al interior del estanque, esto trae como consecuencia que
el nivel del estanque se mantenga, o incluso disminuya si es que le presión al
interior es mayor que la que presenta el fluido en la entrada al deposito, en la
figura (A.7) queda explicado lo antes mencionado.

Entrada de
agua

Pe Pi

Figura A.7: Estanque inicial

Lo mencionado anteriormente se ajusta a la Ley de Presión de Pascal

138
P = P0 + ρgh (A.1)

donde:

P: Presión total a la profundidad h.


P0 : Presión sobre la superficie libre del fluido.
ρ: Densidad del lı́quido.
g: Gravedad.

Es por eso que como solución a este problema se procedió a cambiar la


ubicación de la entrada, este cambio se muestra en la figura (A.8).

Entrada de
agua

Pi
..................

Figura A.8: Estanque modificado

Con este cambio logramos que la presión del flujo entrante no se vea afectada
por la presión absoluta, como consecuencia se logró que la respuesta dinámica
en la planta sea la deseada.

139
ANEXO B

Modelo Actuador, Sensor y


Estanque

Existen tres términos importantes que se relacionan y utilizan en el trabajo con


sensores y actuadores, éstos son: la escala, el rango y el cero del instrumento.

La respuesta dinámica de la mayorı́a de los sensores y actuadores es mucho


más rápida que la del proceso; en consecuencia, sus constantes de tiempo y
tiempo muerto se pueden considerar despreciables y, por tanto, su función de
transferencia da la ganancia pura K [22], esta ganancia queda definida por la
relación del rango de salida respecto al rango de entrada.

rango de salida
K= (B.1)
rango de entrada

Considérese un sensor electrónico de presión cuya escala va de 0 − 200 psi,


con una salida electrónica de 4 − 20 mA. Aplicando (B.1).

20 mA − 4 mA mA
K= = 0,08 (B.2)
200 psi − 0 psi psi

En nuestro caso tanto el sensor ultrasónico como la electroválvula proporcional


cumplen con lo mencionado en [22], por tanto su función de transferencia
queda determinada por la ecuación (B.1).

140
Modelo Empı́rico Planta

Modelo estanque

Para poder modelar la plana en forma empı́rica se necesitan tanto su respuesta


estática como dinámica, estas se muestran en las figuras (B.1) y (B.2)
respectivamente.

Altura v/s Caudal


50
Respuesta Estatica

45

40

35.7199 Punto de Operacion→

30
Altura [cm]

25

20

15

10

0
0 20 40 60 80 100 124.9625 140 160
Caudal [cm3/seg]

Figura B.1: Respuesta estática

Altura v/s Caudal


36
Respuesta Dinamica, Empirica
Respuesta Dinamica, Aproximada

35.5

35

34.5
Altura [cm]

34

33.5

33

32.5

32
0 500 1000 1500 2000 2500 3000 3500 4000
Tiempo [seg]

Figura B.2: Respuesta Dinámica

Los datos considerados para el modelamiento de la planta fueron tomados

141
de la curva mostrada en la figura (B.2), ya que la construcción de la planta
no coincide en su totalidad con el modelo teórico presentado en [16], que
corresponde a un estanque totalmente cilı́ndrico. La figura (B.3) muestra el
esquema del estanque utilizado.

Qe

Qs

Figura B.3: Esquema del estanque utilizado

La curva dinámica que representa en forma aproximada a la curva empı́rica


mostrada en la figura (B.2) es del tipo

t
h(t) = k(1 − e− τ ) + c (B.3)

donde k representa la ganancia del sistema y τ la constante de tiempo de éste.


Para realizar dicha aproximación, se utilizo la herramienta Curve Fitting de
MATLAB, que arrojó la siguiente curva.

t
h(t) = 3,063(1 − e− 654,45 ) + 32,3 (B.4)

donde k = 3,063 cm. y τ = 654,45 seg.


Con los valores anteriores la función de transferencia de la planta queda de la
siguiente forma:

142
Actuador Sensor
Escala-entrada 4-20 mA 0-47 cm
Rango-entrada 16 mA 47 cm
Escala-salida 0-268 cm3 /seg 0-5 volt
Rango-entrada 268 cm3 /seg 5 volt

Tabla B.1: Caracterı́sticas sensor y actuador

3,063
G(s) = (B.5)
654,45s + 1

Modelo Actuador y Sensor

Para poder obtener el modelo práctico de estos dos dispositivos se recono-


ció en una primera fase, la escala y el rango, de cada dispositivo, ver tabla
(B.1).

Evaluando estos valores en (B.1) se tiene:

3
268 cm
seg cm3
KActuador = = 16,75 (B.6)
16 mA seg ∗ mA

5 volt volt
KSensor = = 0,1064 (B.7)
47 cm cm

143
ANEXO C

Diseño de Controlador

Para el diseño del controlador se decide utilizar el método postulado por Dalhin,
debido al buen desempeño que tiene éste en plantas de primer orden sin
tiempo muerto.

Dalhin propone diseñar un controlador PI, representado por la ecuación (C.1).

!
1
C(s) = Kp 1+ (C.1)
Ti s

para el diseño del controlador se deben tener presente las siguientes


condiciones.

El sistema tendrá una respuesta de primer orden, que se comporte según


el modelo Kt /(τt s + 1).

Kt = Ks−1

al reemplazar estas condiciones en la ecuación (C.1), el controlador queda de


la siguiente forma

!
τp τp s + 1
PI = ∗ (C.2)
K ∗ Ks ∗ Kp ∗ τt τp s

de la ecuación (C.2), se desprende que las constantes del controlador son:

144
Kc = τp /(K ∗ Ks ∗ Kp ∗ τt ) (C.3)

τi = τp (C.4)

donde:

K es el producto de las contantes proporcionales entre el controlador y


la planta.

Ks es la constante proporcional del sensor.

Kp es la ganancia de la planta.

τp es la constante de tiempo de la planta.

Kc es la constante del controlador.

τi es el tiempo de integración del controlador.

Kt es la ganancia total del sistema.

τt es la constante de tiempo total del sistema.

El controlador diseñado tiene las siguientes constantes

Kc = 0,2073

τi = 654,45seg

Reemplazando los valores encontrados en la ecuación (C.1), el controlador


queda de la siguiente manera:

!
1
C(s) = 0,2073 1 + (C.5)
654,45s

2 z−1
Aplicando la transformada bilineal (s = Ts z+1
) a la ecuación (C.1), esta queda
como:

145
   
Ts Ts
1+ 2Ti
z+ −1+ 2Ti
C(z) = (C.6)
z−1

Con lo que el controlador Dalhin en el dominio z queda como:

!
0,2075z − 0,2073
C(z) = (C.7)
z−1

146
ANEXO D

Programas Utilizados

En este anexo se incluyen los programas desarrollados en Matlab y en lenguaje


C utilizados en los capı́tulo 3 y capı́tulo 4, también se incluye el código del
sensor de nivel.

D.1. Códigos en utilizados en el capitulo 3

Los siguientes códigos son los utilizados en el capitulo tres para la de-
mostración de la aproximación de funciones mediante una red neuronal.

D.1.1. Programa para la aproximación de la función h =


1 − e−t

%Se Crea la Funcion Y =1 - EXP ( - X ) con 100 puntos


clear all
x= linspace (0 ,7 ,100)
y =1 - exp ( - x )
plot (x , y )
xlabel ( ’ Tiempo ’) ; ylabel ( ’ Altura ’)
grid
print - depsc Ejemplo1C 3
close
p= ’\ ’

147
%Se crean los vectores de Entrenamiento , Validacion , Test
for i =1:50
E_en ( i ) = x ( i *2)
I_en ( i ) = y ( i *2)
end
for i =1:25
E_va ( i ) = x ( i *4 -3)
I_va ( i ) = y ( i *4 -3)
E_te ( i ) = x ( i *4 -1)
I_te ( i ) = y ( i *4 -1)
end
VV . P = E_va
VV . T = I_va
TV . P = E_te ;
TV . T = I_te ;

%Crea estructura para almacenar los parametro s libres de la red


param (2) = struct ( ’ win ’ ,[] , ’ bin ’ ,[] , ’ wfi ’ ,[] , ’ bfi ’ ,[])

%Creacion de la red de 2 a 20 Neuronas Ocultas


for i =2:10
net = newff ([ min ( x ) max ( x ) ] ,[ i 1] ,{ ’ logsig ’ ’ purelin ’ } , ’ traingd ’ , ’ learngd ’ , ’
mse ’) ;
net . trainParam . epochs =10000;
net . trainparam . goal =0.001;

param (1) . win = net . IW {1 ,1} %almacena W iniciales de entrada a la red


param (1) . bin = net . b {1} %almacena b iniciales de entrada a la red
param (2) . win = net . LW {2 ,1} %almacena W iniciales para cada capa de la red
param (2) . bin = net . b {2} %almacena b iniciales para cada capa de la red

[ net , tr ]= train ( net , E_en , I_en ,[] ,[] , VV , TV ) ;

param (1) . wfi = net . IW {1 ,1} %almacena W de entrada a la red despues de


entrenamiento
param (1) . bfi = net . b {1} %almacena b de entrada a la red despues de
entrenamiento
param (2) . wfi = net . LW {2 ,1} %almacena W para cada capa de la red despues de
entrenamiento
param (2) . bfi = net . b {2} %almacena b para cada capa de la red despues de
entrenamiento

figure
salida = sim ( net , E_te )
plot ( E_en , I_en , ’b ’ , E_te , salida , ’r - - ’)
xlabel ( ’ Tiempo ’ ) ; ylabel ( ’ Altura ’)

148
grid
eval ([ ’ print - depsc ImgA ’ , num2str ( i ) ])

plot ( tr . epoch , tr . perf , ’b ’ , tr . epoch , tr . vperf , ’g ’ , tr . epoch , tr . tperf , ’r ’ , tr .


epoch ,0.001 , ’k ’ )
set ( gca , ’ yscale ’ , ’ log ’) ;
legend ( ’ E n t r e n a m i e n t o ’ , ’ Validación ’ , ’ Test ’ , ’ Objetivo ’ ) ;
ylabel ( ’ Error cuadrático ’) ; xlabel ( ’ Épocas ’)
eval ([ ’ print - depsc ErrorA ’ , num2str ( i ) ])
close
%epo = tr . epoch ( length ( tr . epoch ) ) ;
nn (i -1) = i
err ( i -1) = tr . perf ( length ( tr . perf ) )

eval ([ ’ save varaibles A ’ , num2str (i ) ]) %guarda variables

fid = fopen ( ’ ejemplo1A . txt ’ , ’a ’) ;


fprintf ( fid , ’\ n ’) ;
fprintf ( fid , ’ %d \ t 1 & %2.6 f %c %c %chline ’ ,i , err (i -1) ,p ,p , p ) ;
fclose ( fid ) ;
end

%segunda parte ejemplo 1

plot ( nn , err , ’ o ’ , ’ M a r k e r E d g e C o l o r ’ , ’k ’ , ’ M a r k e r F a c e C o l o r ’ , ’ b ’)
grid
ylabel ( ’ Error Final ’) ; xlabel ( ’ Numero de Neuronas ’)
print - depsc nnerror
%save ( ’ C :\ Documents and Settings \ Rubén \ Escritori o \ Tesis \ redes matlab \ Ejemplo 1
cap 3\ prueba 1\ nnerror . eps ’)

D.1.2. Programa para la aproximación de la función h =


e−t sen(t)

clear all
x = linspace (0 ,20 ,600)
y = exp ( - x /2) .* sin (2* x )
plot (x , y )
xlabel ( ’ Tiempo ’) ; ylabel ( ’ Altura ’)
grid
print - depsc Ejemplo2C 3
p= ’\ ’
close

%Se crean los vectores de Entrenamiento , Validacion , Test

149
for i =1:300
E_en ( i ) = x ( i *2)
I_en ( i ) = y ( i *2)
end
for i =1:150
E_va ( i ) = x ( i *4 -3)
I_va ( i ) = y ( i *4 -3)
E_te ( i ) = x ( i *4 -1)
I_te ( i ) = y ( i *4 -1)
end
VV . P = E_va
VV . T = I_va
TV . P = E_te ;
TV . T = I_te ;

vcapa = [ 2 5 1 0 3 0 5 0 ; 0 3 7 2 0 4 0 ] ’

%Selecion del algoritmo de e n t r e n a m i e n t o


for algorit =1:5
switch algorit
case 1
algoritmo = ’ traingdm ’
case 2
algoritmo = ’ traingda ’
case 3
algoritmo = ’ traingdx ’
case 4
algoritmo = ’ trainrp ’
case 5
algoritmo = ’ trainlm ’
end

cont =1;

fid = fopen ( ’ ejemplo2 . txt ’ , ’a ’) ;


fprintf ( fid , ’\ n \ n ’ ) ;
fprintf ( fid , ’ %s ’ , algoritmo ) ;
fclose ( fid ) ;

for col2 =1:5


for col1 =1:5
if col2 == 1
fun = { ’ logsig ’ , ’ purelin ’}
topo = [ vcapa ( col1 ,1) 1]
else
fun = { ’ logsig ’ , ’ logsig ’ , ’ purelin ’}
topo = [ vcapa ( col1 ,1) vcapa ( col2 ,2) 1]

150
end

%Creacion de la red
net = newff ([ min ( x ) max (x ) ] , topo , fun , algoritmo ) ;
net . trainPara m . epochs =2000;
net . trainpara m . goal =0.0001;
net = init ( net ) ;

tic ;
[ net , tr ]= train ( net , E_en , I_en ,[] ,[] , VV , TV ) ;
t_entr = toc ;
iter = tr . epoch ( length ( tr . epoch ) ) ;
rend = tr . perf ( length ( tr . perf ) ) ;
ren ( cont ) = tr . perf ( length ( tr . perf ) ) ;
cont = cont +1;

figure
salida = sim ( net , E_te )
plot ( E_en , I_en , ’ b ’ , E_te , salida , ’r - - ’ )
xlabel ( ’ Tiempo ’) ; ylabel ( ’ Altura ’)
grid
eval ([ ’ print - depsc Img ’ , algoritmo , num2str ( col1 ) , num2str ( col2 ) ])

goal =[]
for j =1: length ( tr . epoch )
goal ( j ) =0.0001
end

plot ( tr . epoch , tr . perf , ’b ’ , tr . epoch , tr . vperf , ’ g ’ , tr . epoch , tr . tperf , ’r ’


, tr . epoch , goal , ’k ’)
set ( gca , ’ yscale ’ , ’ log ’) ;
legend ( ’ E n t r e n a m i e n t o ’ , ’ Validació n ’ , ’ Test ’ , ’ Objetivo ’) ;
ylabel ( ’ Error cuadrático ’) ; xlabel ( ’ Épocas ’ )
eval ([ ’ print - depsc Ent ’ , algoritmo , num2str ( col1 ) , num2str ( col2 ) ])
close

eval ([ ’ save var ’ , algoritmo , num2str ( col1 ) , num2str ( col2 ) ]) %guarda


variables

fid = fopen ( ’ ejemplo2 . txt ’ , ’a ’) ;


fprintf ( fid , ’ \ n ’ ) ;

for i =1: length ( topo )


fprintf ( fid , ’ %d \ t ’ , topo ( i ) ) ;
end

151
fprintf ( fid , ’ \ t & %2.3 f & %d & %2.6 f %c %c %chline ’ , t_entr , iter ,
rend ,p ,p , p ) ;
fclose ( fid ) ;
end
end
end

D.1.3. Programa para demostración de la memoria distribui-


da

%Funcion a Aproximar
clear
x =(0:0.5:6 0 )
y= sin ( x ) .* exp ( - x /4)
plot (x , y )
grid

%E n t r e n a m i e n t o
net = newff ([ -30 70] ,[10 1] ,{ ’ logsig ’ , ’ purelin ’} , ’ trainlm ’)
net . trainPara m . epochs =3000;
net . trainPara m . goal =1 e -7;
net = train ( net ,x , y ) ;

%simulacio n
redes = sim ( net , x )
plot (x ,y ,x , redes , ’r : ’)
grid

%Valores Finales
net . IW {1 ,1}
net . LW {2}
net . b {1}
net . b {2}

WI = net . IW {1 ,1}
WL = net . LW {2}
BI = net . b {1}
BL = net . b {2}

fid = fopen ( ’ e j e m p l o _ 3 _ c a p 3 . txt ’ , ’a ’) ;


for i =1:10
fprintf ( fid , ’\ n ’) ;
fprintf ( fid , ’ logsig ( u (1) *( %2.4 f ) +( %2.4 f ) ) ’ , WI ( i ) , BI ( i ) ) ;
end

152
fprintf ( fid , ’ \ n ’ ) ;
for i =1:10
fprintf ( fid , ’u( %d ) *( %2.4 f ) + ’ ,i , WL ( i ) ) ;
end
fprintf ( fid , ’ ( %2.4 f ) ’ , BL ) ;
fclose ( fid ) ;

%Comparaci o n
xx = Xent ’
yy = Ysal ’
plot (x ,y , xx , yy , ’r - - ’)
grid

print - depsc mem_dist_ 1


print - depsc mem_dist_ 2
print - depsc mem_dist_ 3
print - depsc mem_dist_ 4
print - depsc mem_dist_ 5
print - depsc mem_dist_ 6

D.1.4. Programa para copia del controlador PI

for i =1:500
E_en ( i ) = ent ( i *2)
I_en ( i ) = sal ( i *2)
end
for i =1:250
E_va ( i ) = ent ( i *4 -3)
I_va ( i ) = sal ( i *4 -3)
E_te ( i ) = ent ( i *4 -1)
I_te ( i ) = sal ( i *4 -1)
end
VV . P = E_va
VV . T = I_va
TV . P = E_te ;
TV . T = I_te ;

net = newff ([ min ( ent ) max ( ent ) ] ,[2 1] ,{ ’ logsig ’ ’ purelin ’ } , ’ trainlm ’ , ’ learngd ’ , ’
mse ’) ;
net . trainPara m . epochs =1000;
net . trainpara m . goal =0.000001 ;

[ net , tr ]= train ( net , E_en , I_en ,[] ,[] , VV , TV ) ;


figure
salida = sim ( net , E_te )
plot ( E_en , I_en , ’ b ’ , E_te , salida , ’r - - ’)

153
xlabel ( ’ Se~
n al de Error ’)
ylabel ( ’ Se~
n al de Control ’ )
grid
legend ( ’ Control PI ’ , ’ Control Neuronal ’) ;
print - depsc PID_Copia

net . IW {1 ,1}
net . LW {2 ,1}
net . b {1 ,1}
net . b {2 ,1}

D.2. Códigos utilizados en el capitulo 4

Estos códigos corresponden a los utilizados para la implementación de los


controles P y PI.

D.2.1. Programa en Matlab para la copia del controlador P

[ err , sal ]= textread ( ’ prueba_P . txt ’ , ’ %f %f ’)

err = err ’
sal = sal ’

plot ( err , sal , ’. ’ )


grid
xlabel ( ’ Error ’)
ylabel ( ’ Salida control ’)

print - depsc error_P

print - depsc e r r o r _ P _ z o o m

EE = linspace ( -1 ,3 ,100)
yy = (25.9* EE +124.5)

plot ( err , sal , EE , yy , ’r ’ )


grid
xlabel ( ’ Error ’)
ylabel ( ’ Salida control ’)
legend ( ’ Error real ’ , ’ Error aproximad o ’) ;

print - depsc e r r o r _ P _ a p r o x

154
net = newff ([0 25] ,[2 1] ,{ ’ logsig ’ , ’ purelin ’} , ’ trainlm ’ , ’ learngd ’ , ’ mse ’) ;
net . trainPara m . epochs =1000;
net . trainpara m . goal =1 e -3;
net = train ( net , EE , yy ) ;

figure
y= sim ( net , EE )
plot ( EE , yy , EE ,y , ’r . ’)
grid
xlabel ( ’ Error ’)
ylabel ( ’ Salida control ’)
legend ( ’ Salida P digital ’ , ’ Salida P neuronal ’) ;

print - depsc c o m p a r a c i o n _ P

net . IW {1 ,1}
net . LW {2 ,1}
net . b {1 ,1}
net . b {2}

D.2.2. Programa en Matlab para la copia del controlador PI

[ err , sal ]= textread ( ’ prueba_PI1 . txt ’ , ’ %f %f ’)

err = err ’
sal = sal ’

tx = linspace (1 ,2168 ,2168)


errx =( -4.619) * exp ( -0.002163* tx ) +7.501* exp ( -0.003991* tx )
plot ( err )
grid
hold
plot ( errx , ’r ’ , ’ LineWidth ’ ,2)
xlabel ( ’ Tiempo ’)
ylabel ( ’ Error ’)
legend ( ’ Error real ’ , ’ Error aproximad o ’)
grid

print - depsc E r r o r _ P I A c u m u l a d o

erra (1) = err (1)


for a =2: length ( err )
erra ( a ) = erra (a -1) + err ( a )
end

155
plot3 ( err , erra , sal )
grid
hold on
plot3 ( errx , erra , sal , ’r ’)
zlabel ( ’ Salida Controlad o r ’)
xlabel ( ’ Error ’)
ylabel ( ’ Sumatoria Error ’)
legend ( ’ Error real ’ , ’ Error aproximad o ’)

print - depsc PIAcumul ad o

ent =[ errx ; erra ]

net = newff ([ -1 3; -230 300] ,[5 1] ,{ ’ logsig ’ , ’ purelin ’} , ’ trainlm ’ , ’ learngd ’ , ’ mse ’)
;
net . trainPara m . epochs =1000;
net . trainpara m . goal =0.01;
[ net , tr ] = train ( net , ent , sal ) ;

y= sim ( net , ent )


plot3 ( errx , erra , sal )
hold on
plot3 ( errx , erra ,y , ’ r ’ , ’ LineWidth ’ ,2)
grid
zlabel ( ’ Salida Controlad o r ’)
xlabel ( ’ Error ’)
ylabel ( ’ Sumatoria Error ’)
legend ( ’ Salida PI digital ’ , ’ Salida PI neuronal ’)

print - depsc P I A c u m u l a d o _ r e d

WI = net . IW {1 ,1}
BI = net . b {1 ,1}
WL = net . LW {2 ,1}
BL = net . b {2}

fid = fopen ( ’ pruebaPI . txt ’ , ’ a ’) ;


for i =1:5
fprintf ( fid , ’\ n ’) ;
fprintf ( fid , ’H %i = Logsig (( %2.6 f ) * error + ( %2.6 f ) * Serror + ( %2.6 f ) ) ; ’ ,i , WI (i ,1)
, WI (i ,2) , BI ( i ) ) ;
end

fprintf ( fid , ’ \ n ’ ) ;
for i =1:5
fprintf ( fid , ’H %d *( %2.6 f ) + ’ ,i , WL ( i ) ) ;
end

156
fprintf ( fid , ’ ( %2.6 f ) ’ , BL ) ;
fclose ( fid ) ;

D.2.3. Programa en C para la implementación del contro-


lador P

# include <16 F877A .H >


# device adc =8
# include < math .h >
# use delay ( clock =4000000)
# include < Lcd .c >
# use rs232 ( baud =9600 , parity =N , xmit = PIN_A1 , rcv = PIN_A2 )

float Logsig ( Float X ) ;

main ( VOID ) {
int sal ;
Float nivel_cm = 0;
Float voltaje , Refer =25;
Float H1 , H2 , H3 , H4 , H5 , H6 , EF , Error ;
Float W21 =1.408 , W22 = -207.8276 , W23 =23.839 , W24 = -0.0694 , W25 = -349.2927 , W26 =1.741;
Float B11 =0 , B12 =0 , B2 =131.5523;
float EF1 ;
s e t u p _ c o u n t e r s ( RTCC_INTERNAL , R T C C _ D I V _ 2 5 6 ) ;
s e t u p _ a d c _ p o r t s ( ALL_ANALO G ) ;
setup_adc ( a d c _ c l o c k _ i n t e r n a l ) ;

set_tris_c (0 x00 ) ;
set_tris_e (0 x00 ) ;
LCD_INIT () ;

while ( TRUE ) {
s e t _ a d c _ c h a n n e l (0) ;
voltaje = read_adc () ;
nivel_cm = 9.451* voltaje *5/255;
error = Refer - nivel_cm ;

H1 = Logsig (( -10.7722) *( error ) + ( 6 3 . 7 9 3 8 ) ) ;


H2 = Logsig ((0.0629) *( error ) + ( -1.0854) ) ;
H3 = Logsig (( -0.1603) *( error ) + (1.8604) ) ;
H4 = Logsig (( -112.0428) *( error ) + ( 1 7 3 . 2 5 2 ) ) ;
H5 = Logsig (( -0.0537) *( error ) + (0.6286) ) ;
H6 = Logsig ((564.855 9 ) *( error ) + ( -3.9137) ) ;

EF = W21 * H1 + W22 * H2 + W23 * H3 + W24 * H4 + W25 * H5 + W26 * H6 + B2 ;

157
sal = EF ;

lcd_gotoxy (1 ,1) ;
printf ( lcd_putc , " S : %2.1 f R : %2.1 f " , nivel_cm , Refer ) ;
lcd_gotoxy (1 ,2) ;
printf ( lcd_putc , " sal : %u " , sal ) ;
output_c ( sal ) ;
output_hi g h ( PIN_E0 ) ;
delay_ms (15) ;
output_low ( PIN_E0 ) ;
delay_ms (1024) ;
}
}

Float Logsig ( Float X ) {


Float Logs ;
Logs = 1/(1+ Exp ( - X ) ) ;
Return ( Logs ) ;
}

D.2.4. Programa en C para la implementación del contro-


lador PI

# include <16 F877A .H >


# device adc =8
# include < math .h >
# use delay ( clock =4000000)
# include " fLCD . C "
# fuses NOWDT , XT , NOPUT , NOPROTECT , NODEBUG , BROWNOUT , LVP , NOCPD , NOWRT
# define ADC_CS PIN_A4
# define ADC_CLK PIN_A5
# define ADC_DOUT PIN_A5
# define ADC_DIN PIN_A5
# use rs232 ( baud =9600 , parity =N , xmit = PIN_E1 , rcv = PIN_E2 , bits =8)

float Logsig ( float X )


{
float Logs ;
Logs = 1/( 1 + Exp ( - X ) ) ;
return ( Logs ) ;
}

main ( VOID ) {
int sal ;

158
Float nivel_cm = 0;
Float voltaje , Refer =0;
Float H1 , H2 , H3 , H4 , H5 , EF , Error =0 , Serror =0;

s e t u p _ c o u n t e r s ( RTCC_INTERNAL , R T C C _ D I V _ 2 5 6 ) ;
setup_adc_ports( RA0_ANALOG_RA3_RA2_REF );
setup_adc ( A D C _ C L O C K _ I N T E R N A L ) ;

Refer = (25*5) ;
Refer = ( Refer /48) ;
set_tris_c (0 x00 ) ;
set_tris_e (0 x00 ) ;
LCD_INIT () ;

while ( TRUE )
{
s e t _ a d c _ c h a n n e l (0) ;
voltaje = read_adc () ;
nivel_cm = voltaje *5/255;
Serror = Serror + Error ;
Error = Refer - nivel_cm ;

H1 = Logsig (( -497.350632) * error + ( 0 . 3 3 0 4 2 5 ) * Serror + ( -144.632589) ) ;


H2 = Logsig (( -24.294572) * error + ( -0.056697) * Serror + ( -15.266259) ) ;
H3 = Logsig (( -10.407352) * error + ( 0 . 0 3 2 6 0 2 ) * Serror + ( 1 . 5 7 7 2 4 1 ) ) ;
H4 = Logsig (( -2.439735) * error + ( -0.023777) * Serror + ( 6 . 8 0 7 7 5 1 ) ) ;
H5 = Logsig (( -2.670803) * error + ( -0.033040) * Serror + ( 9 . 2 6 8 2 3 7 ) ) ;

EF = H1 *( -0.740712) + H2 *( -17.505702) + H3 *( -3.920505) + H4 *( -169.872368) + H5


*(114.016474) +(175.295404);

sal = EF ;
if ( EF >=0 xff ) {
sal =0 xff ;
}
if ( EF <=0) {
sal =0;
}

if ( error >=25) sal =0 xff ;


if ( error < -5) sal =0 x00 ;

lcd_gotoxy (1 ,1) ;
printf ( lcd_putc , " N : %2.1 f S: %u " , nivel_cm , sal ) ;
lcd_gotoxy (1 ,2) ;
printf ( lcd_putc , " E : %2.1 f R : %2.1 f " , error , Refer ) ;

159
printf ( " %f %u \ n \ r " , error , sal ) ;

output_c ( sal ) ;
output_hi g h ( PIN_E0 ) ;
delay_ms (15) ;
output_low ( PIN_E0 ) ;
delay_ms (1000) ;
}
}

D.3. Programa sensor de nivel

# include <16 f873a .h >


# use delay ( clock =4000000)
# use rs232 ( baud =9600 , xmit = PIN_C6 , rcv = PIN_C7 )
# byte puertaa = 05
# byte puertab = 06
# byte puertac = 07

byte conta ;
int16 bajada =0;
int16 bajaori [10];
int16 bajater [10];

# int_ccp1
void sube () {
set_timer1 (0) ;
}

# int_ccp2
void baja () {
bajada = get_timer1 () ;
}

void ultra () {
set_tris_c (0 x00 ) ;
puertac =0 x0F ;
delay_us (10) ;
puertac =0 x00 ;
set_tris_c (0 x0F ) ;
}

main () {
int16 centi =0;
float cenlcd =0;

160
int SAL =0;
int i , j ;
float sum , desmax , desmin , prom ;
set_tris_b (0 x00 ) ;
setup_ccp1 ( C C P _ C A P T U R E _ R E ) ; // Configura CCP1 para capturas del TMR1
// con flancos de bajada en RC2
setup_ccp2 ( C C P _ C A P T U R E _ F E ) ; // Configura CCP2 para capturas del TMR1
s e t u p _ t i m e r _ 1 ( T1_intern al ) ;
e n a b l e _ i n t e r r u p t s ( INT_CCP1 ) ;
e n a b l e _ i n t e r r u p t s ( INT_CCP2 ) ; // Habilita la i n t e r r u p c i ó n por captura de
CCP2 ( PIN RC1 )
e n a b l e _ i n t e r r u p t s ( GLOBAL ) ;
while ( true ) {
sum = 0;
for ( i =1; i <=10; i ++)
{
ultra () ;
delay_ms (5) ;
bajaori [ i ] = bajada ;
sum = sum + bajada ;
}
j =0;
prom = sum /10;
desmax = prom + 2;
desmin = prom - 2;
for ( i =1; i <10; i ++)
{
if ( bajaori [ i ] > desmin && bajaori [ i ] < desmax )
{
j ++;
bajater [ j ] = bajaori [ i ];
}
}
prom = 0;
sum = 0;
for ( i =1; i <= j ; j ++)
{
sum = sum + bajater [ i ];
}
prom = sum /( j ) ;
delay_ms (900) ;
if ( bajada > 995)
cenlcd = prom * 0 . 0 1 7 2 2 1 1 8 8 ;
else
cenlcd =( prom *0.01732 - 0.9263) ;

if ( cenlcd >65) cenlcd =65;

161
centi = cenlcd *10;
SAL = (( cenlcd *255) /65) ;
puertab = SAL ;
printf ( " %04 lu - %04 lu " , bajada , centi ) ;
}
}

162
ANEXO E

Esquemáticos de circuitos
utilizados

En esta sección se presentan los circuitos utilizados en la implementación de


la maqueta de pruebas. Los circuitos corresponden al generador de corriente,
sensor de nivel, circuito de control, y fuente de alimentación continua para los
circuitos anteriores.

Ent 15Vdc

Alimentación DAC
LM7805
1 2
GND

IN OUT
7

Entrada DAC0808 LM741


señal de control 3 5
V+

+ OS2 Control Electroválvula


13
3

I_1
12 DB7 6
I_2 0
11 DB6 OUT
I_3
10 DB5 3 2 1
V-

I_4
9 DB4 OUT - OS1
I_5
8 DB3 LM317
I_6
7 DB2 4 3 2
4

I_7
6 DB1 REF OUT IN
ADJ

R4
I_8 DB0 10k
AGND
10k D1
1

5
D1N4009
10k
5k
Ent -15Vdc

Figura E.1: Esquemático generador de corriente 0-20 mA

163
Figura E.2: Esquemático circuito normalizador de señal de sensor ultrasónico

U3 U4
LM7805C LM317K
Alimentación DAC 10k
2 1 3 2

GND

ADJ
OUT IN 15 volt DC OUT IN 15 volt DC

Alimentación MAX
10u 10u 15 volt DC

1
+ +
Alimentación PIC
5k
P1
1 U1
U2
6 11 2
Datos 2 MAX232 12 RC0/T1OSO/T1CKI RA0/AN0 3 0 0
7 12 13 13 RC1/T1OSI/CCP2 RA1/AN1 4 1k 220
R1OUT R1IN RC2/CCP1 RA2/AN2/VREF-
hacia 3 9 8 14 5

7
8 R2OUT R2IN 15 RC3/SCK/SCL RA3/AN3/VREF+ 6 U6
RC4/SDI/SDA RA4/T0CKI U5
un PC 4 14 11 16 7 3 5

V+
T1OUT T1IN RC5/SDO RA5/SS/AN4 + OS2
9 7 10 17 DAC8
5 T2OUT T2IN 18 RC6/TX/CK 21 13 6
4 1 RC7/RX/DT RB0/INT 22 12 DB7 OUT Salida
C2+ C1+ 10 RB1 23 11 DB6 3 2 1 0-10 volt

V-
164

+ 1u + 1u OSC2/CLKOUT RB2 24 10 DB5 OUT - OS1 + 10u + 10u


RB3/PGM 25 9 DB4 14 LM741
5 3 RB4 26 8 DB3 REF+

4
C2- C1- RB5 27 7 DB2 15
V+
V-

RB6/PGC DB1 REF-


28 6
RB7/PGD DB0
1
AGND
6

OSC1/CLKIN 9
2 5k
1 5
MCLR/VPP/THV
1u + 1u 20 3
VDD
+
-15 volt DC
PIC16F873 5k

+ 10u

0
Figura E.3: Esquemático fuente de tensión continua

U15 U15 U15


LM7805C LM7805C U14 LM7805C
1 2 1 2 LM7815C 1 2
IN OUT IN OUT IN OUT

GND

GND

GND
1 2
IN OUT

GND
D12
D1N4148

3
R1

3
C9 C9 C9 C9 C9 C9 C9 C9
1k
2200U 2200U 2200U 2200U 2200U 2200U 2200U 2200U
C9

TX 2200U
165

Ls1
V1
Lp
0
Ls2

0
VAMPL = 220 C9
FREQ = 50 C9 C9
2200U 2200U 2200U
R1
1k

3
GND
D12 1 2
IN OUT
D1N4148

U15

LM7805C
ANEXO F

Planos de Conexiones

166
Figura F.1: Esquemático circuito normalizador de señal de sensor ultrasónico

167
Figura F.2: Esquemático fuente de tensión continua

168
Figura F.3: Esquemático generador de corriente 0-20 mA

169
ANEXO G

Imágenes del actuador, sensor,


tableros y maqueta

Figura G.1: Módulo actuador con generador de corriente y electroválvula proporcional.

Figura G.2: Módulo sensor de nivel.

170
a) b) c)

Figura G.3: Tableros de almacenamiento. a) tablero alimentación general, b) tablero


controlador y generador de corriente, c) tablero alimentación continua.

Figura G.4: Maqueta final.

171
Bibliografı́a

[1] Danilo Bassi Acuna. Redes neuronales artificiales.

[2] Fernando Cesar C. de Castro y Maria Cristina F. de Castro. Redes Neurais


Artificiais. Pontificia Universidade Católica do Rio Grande do Sul.

[3] B. Martı́n del Brio y A. Sanz Molina. Redes Neuronales y Sistemas


Difusos. RA-MA, 2002.

[4] Jorge Solsona y Pablo Puleston Eugenio Tacconi, Ricardo Mantz.


Controladores Basados en Estrategias PID. Facultad de Ingenierı́a UNLP,
2005.

[5] Mark Beale y Martin Hagan Howard Demuth. Neural Network Toolbox.
The MathWorks, Inc, 2008.

[6] Cristian Kunusch. Identificación de sistemas dinámicos. Universidad de


la Plata, 2003.

[7] Benjamı́n Kuo. Sistemas de control automático. Prentice Hall, 1996.

[8] Gonzalo Acuna L. Curso de ingenierı́a neuronal. 2005.

[9] Reynaldo Hurtado Morató y Josefina Juaniquina Flores Marcelo


Chavez Durán. Red neuronal para el control de un servomecanismo.

[10] Damián Jorge Matich. Redes Neuronales: Conceptos Básicos y Aplica-


ciones. Universidad Tecnológica Nacional, 2001.

172
[11] José O. Cuza Freyre y Mónica Mulet Hing Miguel A. Torres Alberto, Marı́a
E. Pardo Gómez. Control de una Torre de Destilación Mediante un
Controlador Neuronal. Universidad de oriente, 2004.

[12] J.G. Khor M. McCormick M.N. Cirstea, A. Dinu. Neural and fuzzy logic
control of drives and power systems. 2002.

[13] Hung T. Nguyen. A first cousre in fuzzy and neural control. 2003.

[14] Isasi Vi nuela y Galvan León. Redes de Neuronas Artificiales, un enfoque


práctico. Pearson Educacion, 2004.

[15] José Bernardo Cotero Ochoa. Control clásico/moderno y control


inteligente, capitulo 2.

[16] Katsuhiko Ogata. Ingenierı́a de control moderna. Pearson Educación,


1998.

[17] Carlos Platero. Introducción al Procesamiento digital de Señales.


Universidad Politécnica de Madrid, 1999.

[18] José Munoz Pérez. Apuntes Cátedra Modelos Computacionales. Univer-


sidad de Málaga.

[19] Martin Riedmiller. Aspect of learning neural control.

[20] Ernesto Jiménez Ruiz. Aplicación de descriptores de Fourier y redes


neuronales artificiales para el reconocimiento de formas. Universitat
Jaume, 2006.

[21] Carlos Alvarez y Andres Soto. Muestreo y modelación de sistemas. 2008.

[22] Carlos A. Smith y Armando B. Corripio. Control Automatico de Procesos.


Noriega-Limusa, 1991.

[23] Marı́a I. Acosta y Camilo A. Zuluaga. Tutorial sobre Redes Neuronales


Aplicadas en Ingenierı́a Eléctrica y su Implementacion en un sitio web.
Universidad Tecnológica de Pereira, 2000.

173
[24] James A.Freeman y David A. Skapura. Redes Neuronales, algoritmos,
aplicaciones y técnicas de programación. Addison-Wesley, 1993.

[25] José Matas y Miguel Reyes. Teorı́a de control, Diseño electrónico.


Universitat Politècnica de Catalunya, 2000.

174

También podría gustarte