Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Cenidet
TESIS
1
Dedicatoria
2
Agradecimientos
3
ÍNDICE
INTRODUCCIÓN ...................................................................................................................12
1. ARREGLOS EMBRIÓNICOS...........................................................................................18
4
2.2.2 Evaluación ...................................................................................................................38
2.2.3 Selección......................................................................................................................38
2.2.4 Función de aptitud........................................................................................................39
2.2.5 Cruza...........................................................................................................................39
2.2.6 Mutación......................................................................................................................40
2.3 ENRUTADORES .................................................................................................................... 40
2.3.1 Definición de enrutador ................................................................................................40
2.3.2 El problema de enrutar .................................................................................................41
2.3.3 Enrutamiento usando algoritmos genéticos....................................................................42
2.4 RESUMEN............................................................................................................................ 43
4. RESULTADOS ...................................................................................................................68
5
4.3 OTRAS APLICACIONES ......................................................................................................... 80
4.3.1 CONTADOR ASCENDENTE/DESCENDENTE DE 2 BITS............................................................. 80
4.3.2 Circuito votador de 3 bits..............................................................................................82
4.3.3 Sumador paralelo de 2 bits............................................................................................83
4.3.4 Generador de Redundancia Cíclica de 4 bits (CRC-4).....................................................85
4.3.5 Generador de paridad par de 4 bits ...............................................................................87
4.3.6 Generador de paridad par de 5 bits ...............................................................................88
4.4 RESUMEN............................................................................................................................ 91
CONCLUSIONES ...................................................................................................................92
APÉNDICE ..............................................................................................................................97
6
FIGURAS
7
Figura 4.3.- OBDD para el contador 0-9......................................................................................... 71
Figura 4.4.- Árboles de multiplexores del contador 0-9. .................................................................. 71
Figura 4.5.- Enrutamiento del contador 0-9. ................................................................................... 74
Figura 4.6.- Simulación del contador 0-9 con todas las células en buen estado. ................................. 74
Figura 4.7.- Simulación del contador 0-9 con una fila dañada.......................................................... 75
Figura 4.8.- Árboles de multiplexores del contador 0-5. .................................................................. 76
Figura 4.9.- Enrutamiento del contador 0-5. ................................................................................... 76
Figura 4.10.- Simulación del contador 0-5...................................................................................... 77
Figura 4.11.- Árboles de multiplexores del contador 0-11................................................................ 78
Figura 4.12.- Enrutamiento parcial del contador 0-11, primera parte. ............................................... 79
Figura 4.13.- Enrutamiento parcial del contador 0-11, segunda parte................................................ 79
Figura 4.14.- Simulación del contador 0-11. ................................................................................... 80
Figura 4.15.- Árboles de multiplexores del contador ascendente/descendente de 2 bits...................... 80
Figura 4.16.- Enrutamiento del contador ascendente/descendente de 2 bits. ...................................... 81
Figura 4.17.- Simulación del contador ascendente/descendente de 2 bits. ......................................... 81
Figura 4.18.- Árbol de multiplexores del circuito votador de 3 bits. ................................................. 82
Figura 4.19.- Enrutamiento del circuito votador de 3 bits................................................................. 82
Figura 4.20.- Simulación del circuito votador de 3 bits.................................................................... 83
Figura 4.21.- Árboles de multiplexores del sumador paralelo de 2 bits. ............................................ 83
Figura 4.22.- Enrutamiento del sumador paralelo de 2 bits. ............................................................. 84
Figura 4.23.- Simulación del sumador paralelo de 2 bits.................................................................. 84
Figura 4.24.- Árboles de multiplexores del CRC-4.......................................................................... 86
Figura 4.25.- Enrutamiento del CRC-4........................................................................................... 86
Figura 4.26.- Simulación del CRC-4. ............................................................................................. 86
Figura 4.27.- Árbol de multiplexores del generador de paridad par de 4 bits. .................................... 87
Figura 4.28.- Enrutamiento del generador de paridad par de 4 bits. .................................................. 88
Figura 4.29.- Simulación del generador de paridad par de 4 bits....................................................... 88
Figura 4.30.- Árbol de multiplexores del generador de paridad par de 5 bits. .................................... 89
Figura 4.31.- Enrutamiento del generador de paridad de 5 bits......................................................... 90
Figura 4. 32.- Simulación del generador de paridad par de 5 bits...................................................... 90
Figura A.1.- Módulo de memoria................................................................................................... 98
Figura A.2.- Generador de coordenadas. ........................................................................................ 99
Figura A.3.- Enrutador de Entrada / Salida. .................................................................................. 100
Figura A.4.- Elemento de procesamiento. ..................................................................................... 101
8
Figura A.5.- Arquitectura de una célula embriónica. ..................................................................... 102
Figura A.6.- Símbolo creado a partir del esquemático de la figura A.5. .......................................... 103
Figura A.7.- Arreglo embriónico de 5x8 para simular el contador 0-9 y su detector de rebose (DR). 104
9
TABLAS
Tabla 0.1.- Diferencias entre inteligencia artificial y vida artificial [Ort00a]. .................................... 14
Tabla 1.1.- Ejemplo de una tabla de verdad. ................................................................................... 29
Tabla 1.2.- Tabla de verdad del circuito votador. ............................................................................ 32
Tabla 3.1.- Tabla de verdad del circuito votador. ............................................................................ 44
Tabla 3.2.- Entradas fuentes del circuito votador............................................................................. 44
Tabla 3.3.- Matriz que representa la conectividad del AE de la figura 3.2. ........................................ 47
Tabla 3.4.- Decodificación de los bits correspondientes al enrutador de E/S. .................................... 48
Tabla 3.5.- Carga de variables de entrada al AE.............................................................................. 49
Tabla 3.6.- Propagación parcial de las variables del AE................................................................... 51
Tabla 3.7.- Propagación de las variables, primera pasada................................................................. 52
Tabla 3.8.- Propagación de las variables, segunda pasada................................................................ 53
Tabla 3.9.- Propagación completa de las variables. ......................................................................... 53
Tabla 3.10.- Significado de las entradas del registro de configuración. ............................................. 54
Tabla 3.11.- Llenado de las entradas del elemento de procesamiento. ............................................... 55
Tabla 3.12.- Entradas fuentes del árbol de multiplexores del circuito votador. .................................. 56
Tabla 3.13.- Actualización de las salidas de las células.................................................................... 57
Tabla 3.14.- Matriz de conectividad parcial de un cromosoma que no resuelve el enrutado. ............... 60
Tabla 3.15.- Población ordenada de acuerdo con la mejor aptitud. ................................................... 65
Tabla 4.1.- Tabla de verdad para el contador 0-9............................................................................. 70
Tabla 4.2.- Resultados de las corridas del programa del algoritmo genético. ..................................... 72
Tabla 4.3.- Tabla de verdad para el contador 0-5............................................................................. 75
Tabla 4.4.- Tabla de verdad para el contador 0-11........................................................................... 77
Tabla 4.5.- Tabla de verdad para el contador ascendente/descendente de 2 bits. ................................ 80
Tabla 4.6.- Tabla de verdad para el circuito votador de 3 bits........................................................... 82
Tabla 4.7.- Tabla de verdad para el sumador paralelo de 2 bits. ....................................................... 83
Tabla 4.8.- Tabla de verdad del CRC-4.......................................................................................... 85
Tabla 4.9.- Tabla de verdad del generador de paridad par de 4 bits................................................... 87
Tabla 4.10.- Tabla de verdad del generador de paridad par de 5 bits................................................. 89
10
LISTADOS
Listado 3.1.- Archivo de entrada del AGP...................................................................................... 62
Listado 3.2.- Archivo de salida del AGP. ....................................................................................... 66
Listado 4.1.- Archivo de entrada para enrutar el contador 0-9. ......................................................... 72
Listado 4.2.- Archivo VHDL que describe la memoria del reloj de 12 horas. ................................... 73
Listado 4.3.- Archivo de entrada para enrutar el contador 0-5. ......................................................... 76
Listado 4.4.- Archivos de entrada para enrutar el contador 0-11....................................................... 78
Listado 4.5.- Archivo de entrada para enrutar el contador ascendente/descendente de 2 bits............... 81
Listado 4.6.- Archivo de entrada para enrutar el circuito votador de 3 bits. ....................................... 82
Listado 4.7.- Archivo de entrada para enrutar el sumador paralelo de 2 bits. ..................................... 84
Listado 4.8.- Archivo de entrada para enrutar el CRC-4. ................................................................. 85
Listado 4.9.- Archivo de entrada para enrutar el generador de paridad par de 4 bits........................... 87
Listado 4.10.- Archivo de entrada para enrutar el generador de paridad par de 5 bits......................... 89
11
INTRODUCCIÓN
Sistemas Bioinspirados
Desde hace algunos años hemos sido testigos de una fusión de ideas innovadoras con
tecnologías avanzadas, dando origen al viejo sueño de construir máquinas capaces de imitar
algunos de los mecanismos que encontramos en los seres vivientes. Esta temática, en su
forma moderna, fue tomada por primera vez hace casi 50 años por el padre de la cibernética,
John Von Neumann. La idea central de su trabajo eran los conceptos de autoreproducción y
autoreparación. Desafortunadamente, la tecnología disponible en su época no era suficiente
para realizar sus ideas.
En los años siguientes, hemos visto el surgimiento de sistemas bioinspirados tales como
las redes neuronales, acompañado por la aparición de una nueva rama de estudio llamada
vida artificial. La idea central del estudio de la vida artificial es la aplicación de mecanismos
que presenta la evolución natural a sistemas artificiales. John Holland fue otro pionero de
estas investigaciones y propuso las bases de lo que hoy se conocen como algoritmos
genéticos. Aunque los conceptos de la vida artificial han avanzando muy lentamente, han
encontrando un lugar dentro de muchas disciplinas tradicionales de la ingeniería [Ort00a].
La vida natural sobre la tierra está organizada en por lo menos cuatro niveles
fundamentales de estructura:
? Nivel de población-ecosistema.
? Nivel de organismo
? Nivel celular
? Nivel molecular.
El trabajo en vida artificial puede ser dividido en dos ramas generales: el diseño de
sistemas con “propiedades biológicas” para realizar una tarea particular, por ejemplo las
redes neuronales artificiales; y el uso de técnicas de la ingeniería para precisar un modelo
biológico con el propósito de probar una hipótesis en la biología por ejemplo, la ingeniería
genética. La investigación sobre inteligencia artificial se ha llevado a cabo en los laboratorios
de ciencias de la computación por más de cuarenta años. En contraste, el estudio de la vida
artificial es más moderno y aún está en sus inicios. Es importante hacer una clara distinción
entre inteligencia artificial y este nuevo paradigma llamado vida artificial. La tabla 0.1 muestra
algunas diferencias importantes entre las dos disciplinas [Ort00a].
13
Introducción
El Modelo POE
Para clasificar los sistemas bioinspirados, Sánchez et al. proponen el modelo POE
(Phylogenia, Ontogenia y Epigénesis) [San97]. En este modelo, los sistemas bioinspirados
se clasifican de acuerdo al nivel donde se lleva a cabo la adaptación al ambiente. En la
Phylogenia se encuentran los sistemas que se adaptan al medio ambiente a través de la
transmisión de material genético de una generación a otra. La adaptación se logra a nivel de
especies. En este eje encontramos a todas las estrategias evolutivas (algoritmos genéticos,
programación evolutiva, etc.). La Ontogenia agrupa a los sistemas multicelulares que logran
su adaptación al medio ambiente a través de mecanismos de regeneración a nivel local
(sanar, cicatrización); en este eje se encuentran los arreglos celulares y Embriónicos.
Finalmente, la epigénesis agrupa a los sistemas que logran su adaptación al medio ambiente
mediante el aprendizaje. Aquí encontramos a las redes neuronales, los sistemas
inmunológicos artificiales y los sistemas inteligentes [Ort00a].
El trabajo en esta tesis combinará dos ejes del modelo: la phylogenia (algoritmos
genéticos) y la ontogenia (arreglos Embriónicos).
Los arreglos Embriónicos forman parte del estudio de la vida artificial. En embriónica se
pretende tomar conceptos de la biología y realizar un sistema celular que pueda desarrollar
una función deseada, aún cuando existan fallas en algunas de sus unidades básicas
(propiedades de tolerancia a fallas). En otras palabras, un sistema embriónico trata de
14
Introducción
Hipótesis
Objetivo general
Objetivos particulares
Alcances
15
Introducción
Estructura de la tesis
Capítulo I Capítulo II
Arreglos embriónicos Algoritmos genéticos
? Introducción ? Introducción
? Estructura ? Funcionamiento de los
? Mecanismos de reconfiguración algoritmos genéticos
? Metodología para implementar aplicaciones ? Enrutadores
? Ejemplo
Capítulo III
Enrutador propuesto
? Representación de la
conectividad entre células
? Algoritmo genético programado
Capítulo IV
Resultados
? Foundation de Xilinx
? Diseño del reloj
? Otras aplicaciones
16
Introducción
El capítulo II trata todo lo referente a los algoritmos genéticos como son sus
características, estructura y funcionamiento. Se describen los elementos que constituyen a
un algoritmo genético en forma general. Se presenta una definición y clasificación de lo que
es un enrutador. Se muestra el enrutamiento basado en los algoritmos genéticos como una
herramienta de optimización de problemas.
Como parte final se plasmarán las conclusiones obtenidas a través del desarrollo de
este trabajo. En el se mostrarán los detalles, aspectos relevantes y sucesos importantes que
se vivieron durante la realización de los objetivos. Así también se mostrarán las aportaciones
y trabajos futuros relacionados con el desarrollo del presente trabajo.
17
CAPÍTULO I
1. ARREGLOS EMBRIÓNICOS
1.1 Introducción
1.1.1 Antecedentes
Estas áreas de aplicación requieren del desarrollo de un nuevo paradigma de diseño que
sea capaz de soportar pruebas confiables en tiempo real de circuitos VLSI y sobre todo
soluciones que permitan la auto reparación.
19
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO I Arreglos embriónicos
1.1.2 Definición
Las células son las unidades básicas de los seres vivos. Los animales están formados
por células especializadas que forman la sangre, los huesos, los cartílagos, los músculos y
las células nerviosas. Los humanos tienen cerca de 350 tipos de células diferentes. Todas
las células que constituyen a un ser vivo, que se reproduce sexualmente, tienen su origen en
la división repetida de un óvulo fecundado.
1.2 Estructura
20
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO I Arreglos embriónicos
muestra un arreglo embriónico de 5x8 células implementado para simular diseños digitales
utilizando el ambiente de desarrollo Foundation de Xilinx.
32 Al vecino N
Arreglo embriónico
Enrutador
O de E/S
30 31 32 33 E
Elemento de
20 21 22 23 procesamiento
Gen.
10 11 12 13 de
Memoria
coord .
00 01 02 03
21 Al vecino 23
1.2.1 Memoria
Cada célula embriónica contiene una copia de los registros de configuración de todas
las células del arreglo embriónico. La configuración transparente configura a la célula de tal
21
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO I Arreglos embriónicos
manera que la entrada de un punto cardinal del enrutador de E/S se propague a la salida del
punto cardinal contrario correspondiente, por ejemplo, la entrada del bus del Sur se
propague a la salida del bus del Norte. La configuración transparente se selecciona cuando
se detecta una falla en la célula.
Memoria
1,0 1,1 1,n
Palabra de 17
configuración
Elemento de
0,0 0,1 0,n procesamiento
Cada célula genera una coordenada (m, n) para sus vecinos del norte y del este. El
valor de la coordenada m depende del estado de la célula que lo genera. Solo si la célula
está en buenas condiciones de operación, la coordenada m se incrementa en 1 y el valor
resultante se propaga hacia la célula del norte. La coordenada n siempre se incrementa en 1
y el valor resultante se propaga hacia la célula del este.
22
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO I Arreglos embriónicos
Coordenada m Hacia el
Coor- vecino m,0 m,0 m,n
denada del
del oeste
OK +1
1 0
este Coor-
denada
n 1,0 1,1 1,n
+1
La figura 1.4 muestra la estructura interna del enrutador. El enrutador está formado por
cuatro selectores 4-1, uno para cada salida. Las etiquetas en negrillas representan los bits
23
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO I Arreglos embriónicos
NOBUS NIBUS
N0
N1 0 2 3 1
E1 E0
Nout
WIBUS
0
1 1 EOBUS
WOBUS 3 Nout Nout 3
2 2
EIBUS
0
Nout
WO W1
2 3 1 0 S1
S0
SIBUS SOBUS
24
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO I Arreglos embriónicos
EOBUS
WIBUS ENRUTADOR
DE E / S
WOBUS
EIBUS
GND A0
VDD A1
A2
A3
Q
A4
A5 Z
* FF
A6 A0 A1
A1 Z Q
A7 A0 Z
L0 S0 S0 REG S0
MUX
L1 S1
L2 S2 PRINCIPAL
A0
A1
Ein A2 Z
A3
GND A0 S
VDD A1 Win
A2
A3 EBUS1:0
A4
Q A5 Z
A6
A7
R0 S0
R1 S1
R2
1 S2
Eout
Wout
SIBUS SOBUS
Sin
Existen dos tipos de datos de entrada para este módulo: aquellos que son propagados
naturalmente y no requieren de configuración alguna (EIN, WIN, SIN, NOUT, WOUT y
EOUT); y aquellos cuya fuente y destino son seleccionados mediante el registro de
configuración y el módulo enrutador (EOBUS, EIBUS, SIBUS y SOBUS). El enrutador
permite el intercambio de información entre células no vecinas. Los prefijos N, E, W, y S
indican el vecino que está recibiendo o transmitiendo la señal correspondiente. Por ejemplo,
NOUT es la salida que va al vecino del norte, mientras que EIBUS es la entrada controlada
que viene del vecino del este.
25
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO I Arreglos embriónicos
determinan si EOBUS, EIBUS, EIN o WIN seleccionará la salida del bloque. La entrada SIN
es automáticamente propagada a través de las salidas EOUT y WOUT.
16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
W1:0
E1:0
S1:0
N1:0
R2:0
REG
L2:0
EBUS1:0
REG.- Si el bit REG está a 1, la salida del bloque lógico es combinacional, en caso
contrario es secuencial.
N1:0, E1:0, W1:0, S1:0 .- Estos pares de bits seleccionan la entrada que será propagada
hacia las salidas NOBUS, EOBUS, WOBUS y SOBUS de los selectores del enrutador.
L2:0, R2:0.- Las entradas izquierda (L, left) y derecha (R, right) del multiplexor principal
son seleccionadas de acuerdo con los valores de estos bits. Existen ocho posibles señales
que pueden ser seleccionadas por la combinación de estos bits.
Una vez cargado el valor del registro de configuración, éste permanece sin cambios. Al
final del proceso de configuración, el contenido de la memoria de todas las células del
arreglo es el mismo. La posición de la célula dentro del arreglo es la que determina el
registro de configuración que será decodificado.
26
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO I Arreglos embriónicos
Célula
Activa
m
Célula de
r repuesto
30 31 32 33 30 31 32 33
coordenadas
Cálculo de
20 21 22 23 20 21 22 23
10 11 12 13 10 11 12 13
00 01 02 03 00 01 02 03
20 21 22 23
Célula activa
10 11 12 13
Célula de repuesto
00 01 02 03
Célula transparente
c) Error corregido
27
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO I Arreglos embriónicos
Cuando una fila es eliminada, las coordenadas de las células son recalculadas y nuevos
registros de configuración son seleccionados en cada célula. La reconfiguración se considera
concluída cuando cada célula ha seleccionado el registro de configuración que corresponde
a sus nuevas coordenadas y los flip flops han actualizado sus salidas.
Esta estrategia está muy lejos de ser óptima con respecto al uso de células de repuesto,
pero el corto tiempo de recuperación cuando ocurre una falla lo hace atractivo para
implementarlo en sistemas tolerantes a fallas de tiempo real.
13 14 15 16 13 14 15 16 13 14 15 16 9 10 11 12
9 10 11 12 9 10 11 12 9 10 11 12 5 6 7 8
5 6 7 8 5 6 7 5 6 7
1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4
28
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO I Arreglos embriónicos
Una vez que se tiene el problema en forma de ecuaciones booleanas, se realiza la tabla
de verdad respectiva. La tabla 1.1 muestra un ejemplo de una tabla de verdad de una
función y = f(A,B,C).
C B A y
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 1
Cada nodo no terminal (dibujado como un círculo en la figura 1.10) tiene dos líneas de
decisión. La línea dibujada en negrilla indica cuando el valor de la variable del nodo vale 1 y
la otra línea indica cuando vale cero. Cada nodo terminal (dibujado como un rectángulo en la
figura 1.10) contiene el valor de una constante (cero ó uno). Para una asignación dada de
variables, el valor proporcionado por la función es determinado trazando una trayectoria
desde el nodo superior hacia el nodo terminal, siguiendo los saltos indicados por los valores
a las variables. El valor de la función es entonces dado por el valor del nodo terminal.
29
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO I Arreglos embriónicos
0 1
B B
0 1 0 1
A A A A
0 1 0 1 0 1 0 1
0 1 0 1 0 1 1 1
? Remover los nodos terminales duplicados.- Eliminar todos los nodos terminales
repetidos, menos uno a donde se deberán redirigir o
l s demás nodos terminales
eliminados. Ver figura 1.11a.
? Remover los nodos no terminales duplicados.- Si dos nodos no terminales u y v con
var(u)=var(v), tienen lo(u)=lo(v), y hi(u)=hi(v), entonces eliminar uno de los dos nodos
no terminales y redirigir todas las líneas al vértice no eliminado. Ver figura 1.11b.
? Remover nodos redundantes.- Si un nodo no terminal v tiene lo(v)=hi(v), entonces
eliminar v. Ver figura 1.11c.
El término OBDD se refiere a la máxima reducción del BDD siguiendo las reglas
anteriores.
30
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO I Arreglos embriónicos
Y Y Y
C C
C
1 0 1 0 1
0
B B B B B
0
1 0 1 0 0
1 0
1 A
1 1
A A A A A A
0
1 0 1 1
0
1 1 0 1 0 0 1 0
0
1 0 1 0
a) b) c)
Out 2
1 s 0
Out 1
1 s 0
0 B Out 0
1 s 0
0 A 1
La evaluación de una función entonces inicia desde los nodos terminales (constantes)
hacia el multiplexor final. Las variables de la función se usan como variables de control, las
cuales seleccionan una trayectoria única desde la parte superior hasta los nodos terminales
y el valor asignado a los nodos terminales se propaga a lo largo de la trayectoria a la salida
del multiplexor final. Ver figura 1.12. Es importante notar que el número de multiplexores
usados en una red es precisamente el número de nodos no terminales.
31
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO I Arreglos embriónicos
Y
Fila de
repuesto
0 1
A C B
C B A y
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 1
32
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO I Arreglos embriónicos
Y Y
C C
0 1 0 1
Y
B B B B B
0 1 0 1 0 1 0 1 0 1
A A A A A A A A A
1 0
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
0 0 0 1 0 1 1 1 0 0 0 1 1 1 0 A 1
Una vez obtenido el OBDD del circuito votador, es necesario reemplazar cada nodo del
OBDD por un multiplexor 2-1. La figura 1.15 muestra este proceso.
Out 2
0 s 1
Out 0 Out 1
0 s 1 0 s 1
0 B A A B 1
Y
Fila de
repuesto
0 1
A C B
33
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO I Arreglos embriónicos
1.6 Resumen
34
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO II
2. ALGORITMOS GENETICOS Y ENRUTADORES
2.1 Introducción
2.1.1 Antecedentes
2.1.2 Aplicaciones
36
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO II Algoritmos genéticos y enrutadores
Mil99, Sch95, Man97, Sin01], determinación de la ruta más corta [Ina01], solución de
problemas matemáticos [Zbi96], solución del problema del agente viajero [Zbi96], etc.
Este proceso se lleva a cabo de manera cíclica hasta satisfacer la función de aptitud
requerida, que se encarga de medir el proceso de aproximación a la solución final. La figura
2.1 muestra el funcionamiento básico de un algoritmo genético.
No
Inicio
Resultado
Cruza
Generar nueva
población
Mutación
37
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO II Algoritmos genéticos y enrutadores
Tal vez la parte más difícil de todo problema sea su representación en términos de los
parámetros necesarios para poder solucionarlos mediante los algoritmos genéticos. Resulta
indispensable dedicar la suficiente atención para plantear la representación del problema en
forma de cromosomas (cadenas de caracteres) de tal forma que dichos cromosomas
representen en realidad la solución del problema.
2.2.2 Evaluación
2.2.3 Selección
38
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO II Algoritmos genéticos y enrutadores
Satisfacer la función de aptitud puede ser uno de los criterios de paro en el ciclo de
búsqueda de los algoritmos genéticos; al obtener la aptitud requerida por el problema el ciclo
se rompe. Otro criterio de paro puede ser al concluir un número determinado de ciclos en el
programa del algoritmo genético. Este trabajo combina los dos criterios de paro antes
mencionados.
2.2.5 Cruza
39
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO II Algoritmos genéticos y enrutadores
muestra un ejemplo donde se obtienen dos nuevos cromosomas (A’ y B’) a partir de dos
cromosomas padres (A y B):
2.2.6 Mutación
2.3 Enrutadores
40
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO II Algoritmos genéticos y enrutadores
La solución al problema de conectar dos nodos tal vez resulte muy trivial, pero a medida
que el número de nodos crece, al igual que la complejidad de su ubicación, el problema se
vuelve mucho más complicado. Por tal motivo se hace necesaria la utilización de
herramientas que faciliten alcanzar el objetivo fijado.
Los problemas de enrutamiento requieren encontrar una trayectoria que satisfaga las
condiciones del problema bajo prueba. Encontrar trayectorias libres de problemas de
enrutamiento en dos dimensiones implica la determinación de una trayectoria en el plano que
optimice un conjunto de criterios.
Figura 2.2.- Representación gráfica de la solución del problema del agente viajero.
41
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO II Algoritmos genéticos y enrutadores
Durante los últimos años los algoritmos genéticos han sido muy utilizados para realizar
búsquedas, optimización y creación de máquinas que puedan aprender. En muchas áreas
resultan muy superiores a las técnicas clásicas de optimización [Göc96].
42
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO II Algoritmos genéticos y enrutadores
descritos en este capítulo se han elegido para realizar el enrutamiento de los arreglos
embriónicos.
2.4 Resumen
Este capítulo fue dedicado a la descripción detallada de los algoritmos genéticos dando
a conocer sus antecedentes, propiedades y aplicaciones. Se describió el funcionamiento
básico de cada elemento de los algoritmos genéticos como son: representación del
problema, evaluación, selección, función de aptitud y los operadores genéticos (cruza y
mutación). Se describió el concepto de enrutador y se planteó la dificultad de enrutar
diversos elementos. Por último se propuso resolver el problema de enrutamiento mediante el
uso de los algoritmos genéticos.
43
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO III
3. ENRUTADOR PROPUESTO
C B A y
y
0 0 0 0
0 0 1 0 Out 2
0 s 1 MUX 0 MUX 1 MUX 2
0 1 0 0
Nout y1 y2 y
0 1 1 1 C Sel B B C
y1 y2
1 0 0 0 R(1) A 1 y2
Out 0 Out 1
1 0 1 1 0 s 1 0 s 1
L(0) 0 A y1
1 1 0 0
0 B A A B 1
1 1 1 1 Tabla 3.2.- Entradas fuentes del
circuito votador.
Tabla 3.1.- Tabla de Figura 3.1.- Árbol de
verdad del circuito multiplexores del votador.
votador.
CAPÍTULO III Enrutador propuesto
? Las etiquetas con terminación “OBUS” (Output Bus = Bus de salida) indican una salida
del enrutador de la célula. La señal que se propaga en cada salida del bus puede
provenir de cuatro fuentes diferentes (las tres entradas que tienen diferente dirección que
la salida y Nout), ver figura 3.3. Estas salidas “OBUS” propagan sus variables hacia sus
células vecinas correspondientes.
A B C
? Las etiquetas con terminación “IBUS” (Input Bus = Bus de entrada) indican una entrada
hacia el enrutador de la célula. Estas entradas provienen de las terminales OBUS de las
células vecinas correspondientes.
? La salida Nout puede ser propagada hacia cualquier punto cardinal del enrutador.
También se conecta con la entrada natural del sur Sin de la célula vecina del norte.
45
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO III Enrutador propuesto
? Sin se propaga de manera directa hacia las salidas naturales este (Eo) y oeste (Wo) de
la misma célula. Estas son las conexiones en líneas sólidas de la figura 3.2.
? Las entradas naturales del este (Ein) y oeste (Win) de una célula provienen de las
células vecinas, de las salidas Wo y Eo respectivamente.
? Cada célula puede tener diferente enrutado. Existen 256 maneras de enrutado que se
pueden realizar con el enrutador de E/S ya que es programado por los 8 bits menos
significativo del registro de configuración. Cada posibilidad puede habilitar solo cuatro
conexiones para cada enrutado. Existen dos conexiones naturales que no se programan:
la entrada de Sin propagada hacia Wo y Eo pero formana parte de la conectividad de la
célula.
NOBUS NIBUS
N0
N1 0 2 3 1
E1 E0
Nout
WIBUS
0
1 1 EOBUS
WOBUS 3 Nout Nout 3
2 2
EIBUS
0
Nout
WO W1
2 3 1 0 S1
S0
SIBUS SOBUS
La tabla 3.3 contiene la información que describe todas las conexiones posibles dentro
de cada célula. Esta tabla sirve para llevar el control de la propagación de las variables de
entrada del árbol de multiplexores del circuito votador de la figura 3.1 (o cualquier otra
aplicación) a través de las conexiones válidas de cada célula.
46
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO III Enrutador propuesto
00 01 02 10 11 12
S-N
00
01 E-N
10 W-N
11
No-N
N-S
00
01 E-S
10 W-S
11
No-S
W-E
00
01 N-E
10 S-E
11
No-E
E-W
00
01 N-W
10 S-W
11
No-W
Sin=Wo=Eo
Ein
Win
Nout
Sel
R (1)
L (0)
47
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO III Enrutador propuesto
Se decodifican los 8 bits menos significativos del registro de configuración (figura 3.4)
que corresponde a los 4 pares de bits que definen la salida de cada multiplexor 4-1 del
enrutador (figura 3.3). La tabla 3.4 muestra las 16 conexiones posibles (etiquetadas en
negrillas) divididas en grupos de cuatro. Se colocará una bandera de “1” para señalar la
conexión que es válida de acuerdo con la decodificación de los bits del enrutador de E/S.
16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
W1:0
E1:0 Enrutador
S1:0 de E/S
N1:0
R2:0 Definen las entradas
REG del Mux de
L2:0 procesamiento
EBUS1:0
48
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO III Enrutador propuesto
En la célula 00, la entrada SIBUS está conectada con la salida NOBUS (S-N = 1), la
entrada EIBUS está conectada con la salida SOBUS (E-S = 1), la entrada WIBUS está
conectada con la salida EOBUS (W-E = 1) y la entrada NIBUS está conectada con la salida
WOBUS (N-W = 1). Ver las celdas sombreadas de la tabla 3.4.
En la célula 11, la entrada Nout está conectada con la salida NOBUS (No-N = 1), la
entrada WIBUS está conectada con la salida SOBUS (W-S = 1), la entrada SIBUS está
conectada con la salida EOBUS (S-E = 1) y la entrada EIBUS está conectada con la salida
WOBUS (E-W = 1).
Las entradas al AE sólo se pueden recibir en la fila 0 a través de las entradas SIB y Sin
de cada célula. En la figura 3.2 se observa la colocación de las tres variables de entrada (A,
B y C). Se llena la columna de variables en la tabla 3.5 de la siguiente manera: la variable “A”
se introduce por el SIB de la célula 01, entonces se coloca dicha letra en cada una de las
salidas a donde puede ser direccionada la entrada SIB por el enrutador de E/S (S-N, S-E y
S-W).
00 01 02 10 11 12
00 S-N 1 A C 1 1
01 E-N 1 1
10 W-N
11
No-N 1
00 N-S 1 1 1
01 E-S 1
10 W-S 1 1
11
No-S
00 W-E 1 1 1
01 N-E 1
10 S-E 1 A C 1
11
No-E
00 E-W 1 1 1
01 N-W 1
10 S-W 1 A 1 C
11
No-W
Sin=Wo=Eo B
Ein
Win
Nout X00 X01 X02 X10 X11 X12
Sel
R (1)
L (0)
49
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO III Enrutador propuesto
Las letras cargadas en S-E y S-W de la célula 01 (casillas sombreadas) pueden ser
propagada porque la conexión de esas combinaciones han sido seleccionadas (indicada por
el 1 en la casilla de la izquierda). La variable “B” se introduce por Sin de la célula 01, y se
propaga automáticamente al Wo y Eo de la misma célula. La variable “C” se introduce por la
entrada SIB de la célula 02. A las salidas de los elementos de procesamiento (Nout) se les
carga una etiqueta de identificación xi,j, porque aun no se sabe si proporcionan una salida
útil.
a) Primera propagación:
En la célula 00, la conexión S-N toma su valor de SIB de esta misma célula por
portenecer a la fila 0, en este caso debe contener un cero (0) ya que la entrada SIB sirve
para introducir las variables de entrada y por esa entrada no se introduce ninguna variable
(ver figura 3.2). La conexión E-S toma su valor de la salida oeste (WOB) de la célula 01
(casilla sombreada), en este caso le corresponde la letra A. La conexión W-E no está
conectada con ninguna célula por la entrada oeste (WIB), por ese lado solo se introducen
ceros, por lo tanto esa casilla contiene un cero. La conexión N-W toma su valor de la salida
sur (SOB) de la célula 10, como la célula 10 aún no ha sido propagada sus variables
(casillas sombreadas vacías), esta casilla (N-W) queda vacía en esta primera propagación.
Para las entradas naturales: la entrada Sin depende del valor cargado en esa entrada, en
este caso no existe variable de entrada por lo que se coloca un cero. Ein toma su valor de la
salida natural del oeste (Sin=Wo=Eo) de la célula 01, en este caso su valor es la letra B.
Win no tiene conexión con ninguna célula, por lo cual su valor es cero. Ver figura 3.6a.
En la célula 01, la conexión E-N toma su valor de la salida oeste (WOB) de la célula 02,
por lo tanto le corresponde la letra C a esta casilla. La conexión N-S toma su valor de la
salida sur (SOB) de la célula 11, como la célula 11 aún no ha sido propagada, esta casilla
permanece vacía. La conexión S-E toma su valor SIB de esta misma célula, en este caso
50
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO III Enrutador propuesto
debe contener la letra A ya que por SIB se introduce la variable A. La conexión S-W toma su
valor de SIB de esta misma célula, en este caso debe contener la letra A ya que por SIB se
introduce la variable A. Para las entradas naturales: la entrada Sin depende del valor
cargado en esa entrada, en este caso la variable de entrada es la letra B. Ein toma su valor
de la salida natural del oeste (Sin=Wo=Eo) de la célula 02, por lo tanto su valor es cero
porque no se introdujo ninguna variable de entrada por ahí. Win toma su valor de la salida
natural del este (Sin=Wo=Eo) de la célula 00, por lo tanto su valor es cero porque no se
introdujo ninguna variable de entrada por Sin. Ver figura 3.6b.
00 01 02 10 00 01 02 10
S-N 1 0 1 S-N 1 0 1
00 00
01 E-N 1 1 01 E-N 1 C 1
10 W-N 10 W-N
11 11
No-N No-N
N-S 1 1 N-S 1 1
00 00
01 E-S 1 A 01 E-S 1 A
10 W-S 1 10 W-S 1
11 11
No-S No-S
W-E 1 0 1 W-E 1 0 1
00 00
01 N-E 1 01 N-E 1
10 S-E 1 A 10 S-E 1 A
11 11
No-E No-E
E-W 1 E-W 1
00 00
01 N-W 1 01 N-W 1
10 S-W 1 A 1 C 10 S-W 1 A 1 C
11 11
No-W No-W
Sin=Wo=Eo 0 B Sin=Wo=Eo 0 B
Ein B Ein B 0
Win 0 Win 0 0
Nout X00 X01 X02 X10 Nout X00 X01 X02 X10
Sel Sel
R (1) R (1)
L (0) L (0)
a) b)
51
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO III Enrutador propuesto
propagadas (por ejemplo el caso de la célula 00). La tabla 3.7 muestra la propagación de
todas las células del AE en una primera pasada.
00 01 02 10 11 12
00 S-N 1 0 1 0 1 0
01 E-N 1 C 1 0
10 W-N
11
No-N 1 X11
00 N-S 1 0 1 0 1 0
01 E-S 1 A
10 W-S 1 A 1 0
11
No-S
00 W-E 1 0 1 0 1 C
01 N-E 1
10 S-E 1 A 1 C
11
No-E
00 E-W 1 1 1 0
01 N-W 1
10 S-W 1 A 1 C
11
No-W
Sin=Wo=Eo 0 B 0 X00 X01 X02
Ein B 0 0 X01 X02 0
Win 0 0 B 0 X00 X01
Nout X00 X01 X02 X10 X11 X12
Sel
R (1)
L (0)
b) Segunda propagación:
En esta segunda propagación solo se buscan las casillas que aún se encuentran vacías.
En la tabla 3.7 se observa que la conexión N-W de la célula 00 está vacía, toma su valor de
la salida sur (SOB) de la célula 10, ahora ya está actualizado esa casilla (cuadro sombreado
de la tabla 3.8), y su valor equivalente es cero. La conexión E-W de la célula 10 también se
encuentra vacía, toma su valor de la salida oeste (WOB) de la célula 11, pero esta casilla de
esta célula se encuentra vacía, entonces no se puede llenar aun esta conexión. La conexión
E-W de la célula 11 se encuentra vacía, toma su valor de la salida oeste (WOB) de la célula
12, en este caso su valor será de cero.
52
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO III Enrutador propuesto
00 01 02 10 11 12
00 S-N 1 0 1 0 1 0
01 E-N 1 C 1 0
10 W-N
11
No-N 1 X11
00 N-S 1 0 1 0 1 0
01 E-S 1 A
10 W-S 1 A 1 0
11
No-S
00 W-E 1 0 1 0 1 C
01 N-E 1
10 S-E 1 A 1 C
11
No-E
00 E-W 1 1 0 1 0
01 N-W 1 0
10 S-W 1 A 1 C
11
No-W
Sin=Wo=Eo 0 B 0 X00 X01 X02
Ein B 0 0 X01 X02 0
Win 0 0 B 0 X00 X01
Nout X00 X01 X02 X10 X11 X12
Sel
R (1)
L (0)
00 N-S 1 0 1 0 1 0
01 E-S 1 A
10 W-S 1 A 1 0
11
No-S
00 W-E 1 0 1 0 1 C
01 N-E 1
10 S-E 1 A 1 C
11
No-E
00 E-W 1 0 1 0 1 0
01 N-W 1 0
10 S-W 1 A 1 C
11
No-W
Sin=Wo=Eo 0 B 0 X00 X01 X02
Ein B 0 0 X01 X02 0
Win 0 0 B 0 X00 X01
Nout X00 X01 X02 X10 X11 X12
Sel
R (1)
L (0)
53
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO III Enrutador propuesto
Se realiza decodificando ocho de los nueves bits más significativos del registro de
configuración (figura 3.4). El elemento de procesamiento principal es un multiplexor 2-1,
donde cada una de sus entradas (A0 y A1) es seleccionada de 8 diferentes fuentes y a su
vez la entrada de selección (S0) puede ser seleccionada de cuatro diferentes fuentes (figura
3.5). Se sigue el mismo ejemplo del capítulo para el llenado de la tabla 3.10.
EOBUS
WIBUS ENRUTADOR
DE E / S
WOBUS
EIBUS
GND A0
VDD A1
A2
A3
Q
A4
A5
* FF
Z A0 A1
A6 Q
A7 A1 Z A0 Z
L0 S0 S0 REG S0
L1 MUX
S1
L2 S2 PRINCIPAL
A0
A1
Ein A2 Z
A3
GND A0 S
VDD A1 Win
A2
A3 EBUS1:0
A4
Q A5
A6 Z
A7
R0 S0
R1 S1
R2
1 S2
Eout
Wout
SIBUS SOBUS
Sin
L2:0/R2:0
EBUS 000 0
00 EOB 001 1
01 EIB 010 Sin
10 Ein 011 Ein
11 Win 100 Win
101 Q
(a) 110 SIB
111 SOB
(b)
Tabla 3.10.- Significado de las entradas del registro de configuración.
54
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO III Enrutador propuesto
Los bits de EBUS indican la señal que se tomará como entrada de selección (Sel), en
este caso tiene el valor binario de “10” y de acuerdo con la tabla 3.10a le corresponde la
variable presente en la entrada Ein, entonces de la tabla 3.11 se toma el valor de Ein (“B”) y
se carga al campo “Sel” de la célula 00 de la misma tabla. La entrada uno (Right) vale “111”
y corresponde al valor de la salida SOB según la tabla 3.10b, por lo tanto el valor de la
entrada uno es “A”. La entrada cero (Left) vale “000” y corresponde al valor la constante cero
(0) según la tabla 3.10b, por lo tanto el valor de la entrada cero es “0”. Ver celdas
sombreadas de la tabla 3.11.
00 01 02 10 11 12
00 S-N 1 0 1 0 1 0
01 E-N 1 C 1 0
10 W-N
11
No-N 1 X11
00 N-S 1 0 1 0 1 0
01 E-S 1 A
10 W-S 1 A 1 0
11
No-S
00 W-E 1 0 1 0 1 C
01 N-E 1 0
10 S-E 1 A 1 C
11
No-E
00 E-W 1 0 1 0 1 0
01 N-W 1 0
10 S-W 1 A 1 C
11
No-W
Sin=Wo=Eo 0 B 0 X00 X01 X02
Ein B 0 0 X01 X02 0
Win 0 0 B 0 X00 X01
Nout X00 X01 X02 X10 X11 X12
Sel B C B X01 C 0
R (1) A 1 1 1 X02 1
L (0) 0 1 A 1 X00 1
55
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO III Enrutador propuesto
valor constante uno, por lo tanto el valor de la entrada uno es “1”. La entrada cero (L) vale
“001” y corresponde al valor constante uno, por lo tanto el valor de la entrada cero es “0”. Ver
celdas sombreadas de la tabla 3.11.
El llenado de la tabla continúa de igual forma para las siguientes células. La tabla 3.11
muestra el proceso terminado.
Una vez que se han llenado las entradas del elemento de procesamiento principal de
cada célula, se procede a verificar que las entradas fuentes (las del circuito votador
mostradas en la tabla 3.12) coincidan con las entradas de alguna célula de la tabla 3.11.
En la tabla 3.11 se observa que las entradas (Sel, R, L) de la célula 00 coinciden con las
entradas (Sel, R, L) del multiplexor 0 de la tabla 3.12, entonces la salida Nout de la célula 00
se actualiza colocando la etiqueta “y1” (casilla de color gris) en la tabla 3.13. Se actualizan
los lugares donde se encontraba la etiqueta anterior de la salida Nout de la célula 00 (casillas
sombreadas).
Las entradas (Sel, R, L) de la célula 02 coinciden con las entradas (Sel, R, L) del
multiplexor 1, entonces la salida Nout de la célula 02 se actualiza colocando la etiqueta “y2”
(casilla de color gris) en la tabla 3.13. Se actualizan los lugares donde se encontraba la
etiqueta anterior de la salida Nout de la célula 02.
56
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO III Enrutador propuesto
Las entradas (Sel, R, L) de la célula 11 coinciden con las entradas (Sel, R, L) del
multiplexor 2, entonces la salida Nout de la célula 11 se actualiza colocando la etiqueta “y”
(casilla de color gris) en la tabla 3.13. Se actualizan los lugares donde se encontraba la
etiqueta anterior de la salida Nout de la célula 11.
00 01 02 10 11 12
00 S-N 1 0 1 0 1 0
01 E-N 1 C 1 0
10 W-N
11
No-N 1 y
00 N-S 1 0 1 0 1 0
01 E-S 1 A
10 W-S 1 A 1 0
11
No-S
00 W-E 1 0 1 0 1 C
01 N-E 1 0
10 S-E 1 A 1 C
11
No-E
00 E-W 1 0 1 0 1 0
01 N-W 1 0
10 S-W 1 A 1 C
11
No-W
Sin=Wo=Eo 0 B 0 y1 X01 y2
Ein B 0 0 X01 y2 0
Win 0 0 B 0 y1 X01
Nout y1 X01 y2 X10 y X12
Sel B C B X01 C 0
R (1) A 1 1 1 y2 1
L (0) 0 1 A 1 y1 1
57
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO III Enrutador propuesto
Semiregistro N1 N0 S1 S0 E1 E0 W1 W2
SM00 = 0 0 0 1 0 0 0 1
SM01 = 0 1 0 0 1 0 1 0
SM02 = 0 1 1 0 0 1 1 0
SM10 = 0 0 0 0 0 0 0 0
SM11 = 1 1 1 0 1 0 0 0
SM12 = 0 0 0 0 0 0 0 0
Donde: C = cromosoma
SM = semiregistro
N1, N0 = bits de selección para la salida norte
S1, S0 = bits de selección para la salida sur
E1, E0 = bits de selección para la salida este
W1, W0 = bits de selección para la salida oeste
La idea principal del enrutamiento es lograr trasladar el árbol de multiplexores (fig. 3.7a)
que describe a la aplicación en un conjunto bidimensional de células embriónicas (fig. 3.7b).
58
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO III Enrutador propuesto
y
y
c
Out 2 Fila de
0 s 1 repuesto
C 2
a b
Out 0 Out 1
0 s 1 0 s 1 0 1
0 B A A B 1 A C B
a) b)
Figura 3.7.- Árbol de multiplexores y acomodo en un AE del circuito votador.
Cada multiplexor del árbol de multiplexores será acomodado en alguna célula del AE. El
objetivo del AGP es lograr acomodar un árbol de multiplexores con todas sus conexiones y
valor de sus entradas correspondientes en un espacio determinado de células embriónicas.
Se define la función de aptitud Fa(n) como la sumatoria del número de entradas encontradas
de cada multiplexor del árbol:
i ? n ?1
Fa (n ) ? ?e
i? 0
i
ao = eo x no
59
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO III Enrutador propuesto
00 01 02 10 11 12
Nout y1 X01 y2 X10 y X12
Sel B C B X01 C 0
R (1) 1 1 0 1 y2 1
L (0) 0 1 A 1 y1 1
Si AC 1 > AC 2, entonces : Cs = C 1
Si AC 2 > AC 1, entonces : Cs = C 2
Si AC 1 = AC 2, entonces : Cs = C 1
Donde, AC1 = Aptitud del cromosoma 1
AC2 = Aptitud del cromosoma 2
C1 = Cromosoma 1
C2 = Cromosoma 2
Cs = Cromosoma seleccionado (ganador)
60
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO III Enrutador propuesto
3.3.4 Cruza
P1 P2
C1: SM1 SM2 SM3 SM4 SM5 SM6 C1’: SM1 SM2 SMC SMD SM5 SM6
3.3.5 Mutación
Para cromosomas formados por cadenas de bits, la mutación se lleva a cabo a nivel de
bits y consiste en complementar un bit aleatoriamente de la siguiente manera: se genera un
número aleatorio entre 1 y n-1 (n es el número de semiregistros), para determinar el
semiregistro que sufrirá la mutación. Después se genera otro número aleatorio entre 0 y 7
que indica la posición del bit a mutar. La mutación se lleva a cabo de acuerdo a una
probabilidad de mutación (Pm), se genera un número aleatorio entre cero y uno, si este
61
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO III Enrutador propuesto
SM2 1 0 1 0 1 1 1 0
SM2’ 1 0 1 0 1 0 1 0
bm
Donde C = cromosoma
SM2’ = semiregistro 2 mutado
bm = bit mutado
La figura 3.10 muestra el diagrama de flujo del AGP, en el se presentan los bloques
principales que realiza el programa escrito en lenguaje C. A continuación se presenta una
descripción de cada uno de los bloques que constituyen este programa.
Inicializa variables: Este bloque realiza la inicialización de las variables de entrada que
describen al árbol de multiplexores de la aplicación a enrutar a través de la lectura de tres
archivos de entrada.
a) Archivo en entrada 1: Por medio de este archivo se le indican al programa los siguientes
parámetros: porcentajes de cruza y mutación, tamaño del arreglo embriónico, número de
multiplexores del árbol, entradas de los multiplexores del árbol y tipo de salida de los
multiplexores (combinacional o secuencial). Para poder referenciar un multiplexor del árbol
dentro del AE es necesario otorgarle un número de acuerdo a la posición que guarda dentro
del árbol de multiplexores. La asignación del número se realiza de izquierda a derecha y de
abajo hacia arriba (ver figura 3.7a). El listado 3.1 muestra el archivo de entrada (en letras
negrillas y cursivas) que describe los parámetros del árbol de multiplexores para el circuito
votador que utilizará el AGP para realizar el enrutamiento:
0.8
0.15
2 3 3
2 2 1
0
1 2
62
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO III Enrutador propuesto
Inicializa variables
Lee archivos
de entrada
Genera población inicial
Inicializa la MC
Si
h < tm
No
Ordena la población
e = 0, v = 0
No
c < Pc
De donde: Si
MC = Matriz de conectividad Realiza la cruza
tm = tamaño de la población
Pc = Porcentaje de cruza
Pm = Porcentaje de mutación No
c, m = números entre 0 y 1 m < Pm e=e+1
generados aleatoriamente Si v=v+1
Realiza la mutación
EVALUAR (2)
(e < tm) y Si
(v < tm)
No
Completa la nueva población
¿Se alcanzó No
el CP?
Si Crea archivos
de salida
Imprime resultados
63
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO III Enrutador propuesto
2. No todos los mutilplexores del árbol utilizarán a su salida el flip-flop de la arquitectura (ver
figura A.4 del apéndice) para retención de su valor. El flip-flop únicamente se utiliza en
aplicaciones secuenciales o que requieran almacenamiento.
b) Archivo en entrada 2: Este archivo contiene las tres entradas de cada multiplexor del
árbol de multiplexores. Estas entradas fuentes serán buscadas por el AGP dentro del arreglo
embirónico una vez que se ha realizado la propagación de las variables de entrada de la
función para determinar el enrutamiento de la aplicación. Las entradas de cada multiplexor
en este archivo siguen el siguiente orden: entrada de selección (sel), entrada uno (1),
entrada cero (0). El orden de los multiplexores depende de la numeración asignada para el
enrutamiento. En la figura 3.7a se muestra la numeración del árbol de multiplexores del
circuito votador. Así, para el árbol de multiplexores de la figura 3.7a, el archivo de entrada
debe contener: 'BA0B1ACba', donde BA0 (sel, 1, 0) son las entradas del multiplexor 0, B1A
las entradas del multiplexor 1 y Cba las entradas del multiplexor 2.
c) Archivo en entrada 3: Este archivo contiene las variables de entrada de la función. Estas
variables solo se pueden introducir por las entradas SIB y Sin de cada célula de la fila cero
del arreglo embriónico, como se explicó en la sección 3.2. El arreglo embriónico usado para
enrutar el árbol de multiplexores de la figura 3.7a es de 2x2. La fila cero contiene dos células
por las que se puede introducir las variables de la aplicación. Experimentalmente se logró
determinar la asignación de las variables de entrada de la función de la siguiente manera:
'BACA', donde la variable B se introduce por SIB de la célula 00, la A por la entrada Sin de la
64
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO III Enrutador propuesto
célula 00, la C por SIB de la célula 01 y una copia de A por la entrada Sin de la célula 01. La
repetición de las variables de entrada (en este caso de A) le ayudan al AGP a encontrar el
mejor enrutado en menos tiempo.
Genera población inicial: Se generan números aleatorios de 8 bits (0-255) que representan
los ocho bits menos significativo del registro de configuración de una célula. Así un
cromosoma (un miembro de la población) consiste de “n” números creados aleatoriamente
(semiregistros), donde n es el número de células en el AE. El tamaño de la población (tm) se
tomó experimentalmente de 100 individuos.
Posición Aptitud
Cromosoma 1 8
Cromosoma 2 8
Cromosoma 3 6
… …
Cromosoma 100 3
Tabla 3.15.- Población ordenada de acuerdo con la mejor aptitud.
En la figura 3.10, o
l s bloques que se muestran después de ordenar la población
inicial, describen el cuerpo principal del algoritmo genético programado (AGP), el cual
consiste en un ciclo interno que se ejecuta “tm” veces (tm = tamaño de la población). Dentro
del ciclo se realiza lo siguiente: Se seleccionan dos cromosomas padres para producir a dos
nuevos individuos. Si un número aleatorio c (0<c<1) es menor que la probabilidad de cruza
Pc (normalmente de 0.8), se realizará la cruza entre los padres seleccionados. Si otro
65
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO III Enrutador propuesto
66
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO III Enrutador propuesto
d) Tamaño del AE.- El tamaño inicial del AE es el espacio bidimensional donde se desea
acomodar el árbol de multiplexores. Este tamaño depende de la forma del árbol de
multiplexores y se obtiene de la siguiente manera: el número de niveles del árbol de
multiplexores determina el número filas del AE, y el nivel con más multiplexores determina el
número de columnas del AE. Este tamaño puede ser reducido o aumentado para mejorar el
enrutamiento buscado por el AGP. El tamaño que utiliza el AGP para realizar el enrutamiento
de alguna aplicación no toma en cuenta a las células que servirán como repuestos en caso
de falla en el AE. Como durante la reconfiguración se utiliza la estrategia de eliminación por
filas, las células de repuesto se colocan en la parte superior del arreglo establecido, de esta
manera se puede simular la tolerancia a fallas en Foundation de Xilinx.
3.5 Resumen
67
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO IV
4. RESULTADOS
El reloj propuesto se ha diseñado con base a contadores que indican los segundos,
minutos y horas (ver figura 4.1). Los contadores utilizados son: el contador 0-9, el contador
0-5 y el contador 0-11. El reloj se construye de la siguiente manera: se coloca un contador de
0-9 para llevar el conteo de las unidades de los segundos, cuando este llega a 9 genera una
señal (DR) que indica el rebose de la cuenta. Esta señal se utiliza como pulso de reloj para el
siguiente contador de 0-5 que lleva el conteo de las decenas de segundos. A continuación se
coloca otro contador de 0-9 para el conteo de las unidades de los minutos, después se
coloca otro contador de 0-5 para el conteo de las decenas de los minutos y por último se
coloca el contador 0-11 que registra el conteo de las horas. Cuando todos los contadores
llegan a su cuenta máxima el reloj se reinicia a cero para comenzar nuevamente la cuenta.
La figura 4.2 muestra el diagrama a bloques del reloj propuesto. La señal de salida DR
representa el detector de rebose para cada contador.
69
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO IV Resultados
11
0- 0 -5 0 -9 0 -5 0 -9
clk clk clk clk clk
Pulso
DR DR DR DR DR de
reset reset reset reset reset reloj
Inicializar
Para construir una aplicación basada en los arreglos embriónicos es necesario seguir la
serie de pasos descrita en la sección 4.1. Se presentará a detalle únicamente el diseño del
contador 0-9, de los demás diseños se mostrarán las partes más relevantes.
Este circuito es de tipo secuencial y es un contador cíclico de cero a nueve. La tabla 4.1
muestra la tabla de estados que lo describe. El estado actual del contador está representado
por DCBA (D es el bit más significativo) y el estado siguiente por D+C +B+A+. En la tabla 4.1 se
puede notar la generación de una salida DR para detectar la cuenta máxima del contador y
manejar el reloj de la siguiente etapa.
+ + + +
D C B A D C B A DR
0 0 0 0 0 0 0 1 1
0 0 0 1 0 0 1 0 1
0 0 1 0 0 0 1 1 1
0 0 1 1 0 1 0 0 1
0 1 0 0 0 1 0 1 1
0 1 0 1 0 1 1 0 1
0 1 1 0 0 1 1 1 1
0 1 1 1 1 0 0 0 1
1 0 0 0 1 0 0 1 1
1 0 0 1 0 0 0 0 0
Otras comb. 0 0 0 0 1
La figura 4.3 muestra los OBDD de cada función de salida del contador 0-9. La figura
4.4a muestra los árboles de multiplexores para cada función de salida del contador 0-9 (la
función DR se enrutó por separado, ver figura 4.b). En la figura 4.4a los rectángulos con
etiqueta FF significa la presencia de un flip flop tipo D para retener el valor de salida de la
función y actualizarse en cada pulso de reloj.
70
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO IV Resultados
+
D +
C
D
D
0 1
0 1
C C
C 0
0 1 0 1
0 1
0 B B 0
B B
0 1 0 1
0 1 0 1
1 A 0 1 A
A
0 A
0 1 0 1
1 0 1 0
a) b)
DR
0 1
B+
D 1 C
0 1 0 1
B 0 B 1
0 1 0 1
A+
A A A A 1
0 1 0 1 0 1
1 0 1 0 1 0
c) d) e)
C D
DR
FF FF
d
n o Out 3
B
Out 13 Out 14 0 s 1
0 s 1 0 s 1
FF
1 D
D 0 k l D m c
j Out 2
Out 10 Out 11 Out 12
Out 9 0 s 1 0 s 1 0 s 1 0 s 1
0 s 1
D 0 0 C C 0 C 1
C g h i b
e f
Out 4 Out 5 Out 6 A Out 7 Out 8 Out 1
0 s 1 0 s 1 0 s 1 0 s 1 0 s 1
0 s 1
FF
0 B A 1 B 0 B A B 0 B 1
A B
a b c d a
Out 1 Out 2 Out 3 Out 0
Out 0
0 s 1 0 s 1 0 s 1 0 s 1
0 s 1
1 A 0 1 A 0 1 A 0 1 A 0 1 A 0
a) b)
71
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO IV Resultados
0.8
0.15
4 5 15
4 4 5 4 2
4 2 10 13 14
4 2 10 13 14
Una vez creados los tres archivos de entrada del contador 0-9, se procede a ejecutar el
programa del algoritmo genético para que intente enrutar la aplicación. Se ejecuta el
programa un cierto número de generaciones. El programa no siempre logra enrutar la
aplicación en una ejecución. La tabla 4.2 muestra los resultados de las corridas del algoritmo
genético para enrutar las aplicaciones descritas en este capítulo.
Tabla 4.2.- Resultados de las corridas del programa del algoritmo genético.
Donde:
72
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO IV Resultados
El listado 4.2 corresponde al archivo VHDL creado por el algoritmo genético una vez que
ha enrutado el árbol de multiplexores de la figura 4.4a en un arreglo embriónico. El árbol de
multiplexores de la figura 4.4a se enrutó en un arreglo embriónico de 4x5. Contiene todos los
registros de configuración de cada célula del arreglo para utilizarlo como memoria de la
célula para la simulación en Foundation de Xilinx.
library IEEE;
use IEEE.std_logic_1164.all;
entity Mem_counter9 is
port (
okaux: in STD_LOGIC;
xy: in STD_LOGIC_VECTOR (7 downto 0);
conf: out STD_LOGIC_VECTOR (16 downto 0) );
end Mem_counter9;
architecture Mem_counter9_arch of Mem_counter9 is
type REG is array (16 downto 0) of bit;
begin
process(okaux,xy)
begin
if ( okaux = '0' ) then
conf <= "01001000100000000";
else
case xy is
when "00000000" => conf <= "01000000101000101";
when "00000001" => conf <= "00000000111100100";
when "00000010" => conf <= "00000100111010011";
when "00000011" => conf <= "00000000111000001";
when "00000100" => conf <= "00000000010110100";
when "00000101" => conf <= "10000000100101101";
when "00000110" => conf <= "11001011100100001";
when "00010000" => conf <= "01110000001110010";
when "00010001" => conf <= "00100000101010101";
when "00010010" => conf <= "00100001000100010";
when "00010011" => conf <= "00100000001110001";
when "00010100" => conf <= "00000010000000000";
when "00010101" => conf <= "00001001110001000";
when "00010110" => conf <= "00000000000101011";
when "00100000" => conf <= "00011001000100110";
when "00100001" => conf <= "01000101101110010";
when "00100010" => conf <= "00011000001110001";
when "00100011" => conf <= "00000001110000010";
when "00100100" => conf <= "00000000000111001";
when "00100101" => conf <= "00000000000110001";
when "00100110" => conf <= "00100000111111011";
when "00110000" => conf <= "01000101011111010";
when "00110001" => conf <= "00000000010011010";
when "00110010" => conf <= "00011101011110010";
when "00110011" => conf <= "00000000001100110";
when "00110100" => conf <= "00000000000011000";
when others => conf <= "01001000100000000";
end case;
end if;
end process;
end Mem_counter9_arch;
Listado 4.2.- Archivo VHDL que describe la memoria del reloj de 12 horas.
73
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO IV Resultados
C B D A
NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT
WI EO WI EO WI EO WI EO WI EO
WO EI WO EI WO EI WO EI WO EI
13 14
WIB 0 S 1 EOB WIB EOB WIB 0 S 1 EOB WIB EOB WIB EOB
WOB 0 EIB WOB EIB WOB EIB WOB EIB WOB EIB
SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN
NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT
WI EO WI EO WI EO WI EO WI EO
WO EI WO EI WO EI WO EI WO EI
9 10 11 12
WIB 0 S 1 EOB WIB 0 S 1 EOB WIB 0 S 1 EOB WIB 0 S 1 EOB WIB EOB
NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT
WI EO WI EO WI EO WI EO WI EO
WO EI WO EI WO EI WO EI WO EI
4 5 6 7 8
WIB 0 S 1 EOB WIB 0 S 1 EOB WIB 0 S 1 EOB WIB 0 S 1 EOB WIB 0 S 1 EOB
NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT
WI EO WI EO WI EO WI EO WI EO
WO EI WO EI WO EI WO EI WO EI
0 1 2 3
WIB 0 S 1 EOB WIB 0 S 1 EOB WIB 0 S 1 EOB WIB 0 S 1 EOB WIB EOB
1 0 1 0 1 0
WOB EIB WOB 1 0 EIB WOB EIB WOB EIB WOB EIB
SIB 1
SOB 0
SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN
0 0 0 0 0 0 0 0 0 0
La figura 4.6 muestra la simulación del contador 0-9 donde no existen células erróneas.
Se puede observar que el conteo se realiza de forma correcta y al llegar a 9 se produce un
cambio de alto a bajo en la señal DR que se utiliza como pulso de reloj para el contador
siguiente.
Figura 4.6.- Simulación del contador 0-9 con todas las células en buen estado.
74
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO IV Resultados
Figura 4.7.- Simulación del contador 0-9 con una fila dañada.
El contador 0-5 forma parte del reloj propuesto. Utiliza para su cuenta binaria 3 bits
representados por las letras CBA. Cuenta con su detector de rebose (DR) que indica la
cuenta máxima del contador. La tabla 4.3 muestra su tabla de verdad.
+ + +
C B A C B A DR
0 0 0 0 0 1 1
0 0 1 0 1 0 1
0 1 0 0 1 1 1
0 1 1 1 0 0 1
1 0 0 1 0 1 1
1 0 1 0 0 0 0
1 1 0 0 0 0 1
1 1 1 0 0 0 1
75
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO IV Resultados
La figura 4.8 muestra el árbol de multiplexores para el contador 0-5. El listado 4.3
muestra el archivo de entrada necesario para enrutar el contador sobre un arreglo
embriónico.
FF DR
i j
C Out 8 Out 9 0.8
0 s 1 0 s 1
0.15
FF 3 5 10
C 0 1 C
f g 3 5 3 2
h
Out 5 Out 6 Out 7 3 2 5 8
A
0 s 1 0 s 1 0 s 1 4 2 5 8 9
C FF
A B B 1 Listado 4.3.-
a b c d e Archivo de
Out 2 Out 3 Out 4
0
Out 0
s 1 0
Out 1
s 1 0 s 1 0 s 1 0 s 1
entrada para
enrutar el
0 B A 1 A 0 1 A 0 1 A 0 1 A 0 contador 0-5.
C B DR A
NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT
WI EO WI EO WI EO WI EO WI EO
WO EI WO EI WO EI WO EI WO EI
8 9
WIB EOB WIB 0 S 1 EOB WIB 0 S 1 EOB WIB EOB WIB EOB
0 1
WOB EIB WOB EIB WOB EIB WOB EIB WOB EIB
SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN
NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT
WI EO WI EO WI EO WI EO WI EO
WO EI WO EI WO EI WO EI WO EI
5 6 7
WIB 0 S 1 EOB WIB EOB WIB 0 S 1 EOB WIB 0 S 1 EOB WIB EOB
NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT
WI EO WI EO WI EO WI EO WI EO
WO EI WO EI WO EI WO EI WO EI
1 0 2 3 4
WIB 0 S 1 EOB WIB 0 S 1 EOB WIB 0 S 1 EOB WIB 0 S 1 EOB WIB 0 S 1 EOB
1 0 EIB 0 EIB 1 0 EIB 1 0 EIB 1 0 EIB
WOB WOB WOB WOB WOB
SIB SOB
1 SIN
0 SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN
0 0 0 0 0 0 0 0 0 0
76
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO IV Resultados
La figura 4.10 muestra la simulación del contador 0-5. Las salidas CBA están agrupadas
en la etiqueta A. Durante la simulación se provocó un error en la célula BB colocando la
señal OKBB en bajo como se muestra la figura 4.10.
Este contador 0-11 también forma parte del reloj propuesto. Utiliza para su cuenta
binaria 5 bits representados por las letras EDCBA. Cuenta con su detector de rebose (DR)
que indica la cuenta máxima del contador. La tabla 4.4 muestra su tabla de verdad.
+ + + + +
E D C B A E D C B A DR
0 0 0 0 0 0 0 0 0 1 1
0 0 0 0 1 0 0 0 1 0 1
0 0 0 1 0 0 0 0 1 1 1
0 0 0 1 1 0 0 1 0 0 1
0 0 1 0 0 0 0 1 0 1 1
0 0 1 0 1 0 0 1 1 0 1
0 0 1 1 0 0 0 1 1 1 1
0 0 1 1 1 0 1 0 0 0 1
0 1 0 0 0 0 1 0 0 1 1
0 1 0 0 1 1 0 0 0 0 1
1 0 0 0 0 1 0 0 0 1 1
1 0 0 0 1 0 0 0 0 0 0
Otras comb. 0 0 0 0 0 1
77
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO IV Resultados
B
a)
FF
j
Out 9
0 s 1
E 0
i
Out 8 E
0 s 1
FF
DR
D 0 g
f h
Out 6
Out 5 A Out 7
0 s 1
0 s 1
0 s 1
0.8
0.15
FF E
A B 1 E 4 4 11
a b c d e
Out 1 Out 4
5 2 4 2 2 1
Out 0 Out 2 Out 3
0 s 1 0 s 1 0 s 1 0 s 1 0 s 1 2 9 10
2 9 10
1 A 0 1 A 0 0 D A 1 A 0 1 A 0
a)
C
b)
FF 0.8
k 0.15
Out 10 D 4 4 10
0 s 1 4 5 3 11
FF 3 6 7 9
E 0
i j 4 1 6 7 9
Out 8 Out 9
0 s 1 0 s 1
b)
D 0 E 0
g h
Out 6 Out 7
0 s 1 0 s 1
Listado 4.4.-
Archivos de entrada
c C d e D f para enrutar el
Out 2 Out 3
0 s 1 0 s 1
Out 4 Out 5 contador 0-11.
0 s 1 0 s 1
0 B A 1 B 0 C 1 A 0
a b
Out 0 Out 1
0 s 1 0 s 1
1 A 0 0 B A
78
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO IV Resultados
DR A B E
NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT
WI EO WI EO WI EO WI EO
WO EI WO EI WO EI WO EI
9
WIB EOB WIB EOB WIB 0 S 1 EOB WIB EOB
NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT
WI EO WI EO WI EO WI EO
WO EI WO EI WO EI WO EI
7 8
WIB 0 S 1 EOB WIB EOB WIB 0 S 1 EOB WIB EOB
1 0
WOB EIB WOB EIB WOB EIB WOB EIB
SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN
NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT
WI EO WI EO WI EO WI EO
WO EI WO EI WO EI WO EI
4 5 6
WIB 0 S 1 EOB WIB 0 S 1 EOB WIB 0 S 1 EOB WIB EOB
1 0
WOB EIB WOB EIB WOB EIB WOB EIB
SIB SOB
0 SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN
NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT
WI EO WI EO WI EO WI EO
WO EI WO EI WO EI WO EI
0 1 2 3
WIB 0 S 1 EOB WIB 0 S 1 EOB WIB 0 S 1 EOB WIB 0 S 1 EOB
1 0 1 0
EIB 1 0 EIB EIB EIB
WOB WOB WOB 0 WOB
SIB 1
SOB 0
SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN
0 0 0 0 D 0 0 0
C D
NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT
WI EO WI EO WI EO WI EO
WO EI WO EI WO EI WO EI
8 9
WIB 0 S 1 EOB WIB 0 S 1 EOB WIB EOB WIB EOB
NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT
WI EO WI EO WI EO WI EO
WO EI WO EI WO EI WO EI
6 7
WIB EOB WIB 0 S 1 EOB WIB 0 S 1 EOB WIB EOB
NOB NIB NOUT NOB NIB NOUT NOB NIB NOU T NOB NIB NOUT
WI EO WI EO WI EO WI
WO EI WO EI WO EI WO
3 4 2 5
WIB 0 S 1 EOB WIB 0 S 1 EOB WIB 0 S 1 EOB WIB 0 S 1
1 0 0
WOB EIB WOB EIB WOB EIB WOB
SIB SOB
0 SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN
NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT
WI EO WI EO WI EO WI EO
WO EI WO EI WO EI WO EI
10 0 1
WIB 0 S 1 EOB WIB 0 S 1 EOB WIB 0 S 1 EOB WIB EOB
0
WOB EIB WOB 1 0 EIB WOB 0 EIB WOB EIB
SIB SOB
1 SIN
0 SIB SOB SIN SIB SOB SIN SIB SOB SIN
0 A E 0 A 0 B B
79
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO IV Resultados
La figura 4.14 muestra la simulación del contador 0-11. La salidas están agrupadas en 2
conjuntos. Los cuatro bits menos significativos (DCBA) representan las unidades para este
contador. La salida E es el encargado de contar las decenas del contador. Cuando el
contador llega a 11 la salida DR genera la señal de rebose. En el siguiente ciclo de reloj se
ha producido un error en la célula AA al poner en bajo la señal OKAA. Después de un
pequeño tiempo de estabilización de las señales, el contador sigue funcionando.
Este contador es el último circuito secuencial diseñado. Utiliza para su cuenta binaria 2
bits representados por las letras BA. La cuenta la realiza de la siguiente manera: cuando la
variable de control C vale uno la cuenta es de forma ascendente (0 a 3) y para cuando C
vale cero la cuenta es de forma descendente (3 a 0). La tabla 4.5 muestra su tabla de
verdad. La figura 4.15 muestra los árboles de multiplexores para las salidas de este
contador.
B
FF
e
+ +
C B A B A Out 4
1 s 0
0 0 0 1 1
0 0 1 0 0 C
c d
0 1 0 0 1 Out 2 Out 3
A
0 1 1 1 0 0 s 1 0 s 1
1 0 0 0 1 FF
B A A B
1 0 1 1 0 a b
Out 0 Out 1
1 1 0 1 1 0 s 1 0 s 1
1 1 1 0 0
1 A 0 1 B 0
Tabla 4.5.- Tabla de verdad para el contador Figura 4.15.- Árboles de multiplexores del
ascendente/descendente de 2 bits. contador ascendente/descendente de 2 bits.
El listado 4.5 presenta el archivo de entrada para realizar el enrutamiento del contador
en un arreglo embriónico.
80
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO IV Resultados
B A
WO EI WO EI WO EI
4
WIB 0 S 1 EOB WIB EOB WIB EOB
WO EI WO EI WO EI
2 3
WIB 0 S 1 EOB WIB 0 S 1 EOB WIB EOB
WO EI WO EI WO EI
0 1
WIB 0 S 1 EOB WIB 0 S 1 EOB WIB EOB
1 0 1 0
WOB EIB WOB EIB WOB EIB
SIB SOB
1 SIN
0 SIB SOB SIN SIB SOB SIN
0 0 0 0 C 0
81
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO IV Resultados
C B A Y Y
0 0 0 0 c 0.8
0 0 1 0
Out 2 0.15
0 s 1
2 2 3
0 1 0 0
C
2 2 1
0 1 1 1 a b 0
1 0 0 0 Out 0 Out 1
1 2
0 s 1 0 s 1
1 0 1 1
1 1 0 1 0 B A A B 1
1 1 1 1
Listado 4.6.- Archivo de
Tabla 4.6.- Tabla de verdad Figura 4.18.- Árbol de entrada para enrutar el
para el circuito votador de 3 multiplexores del circuito votador circuito votador de 3 bits.
bits. de 3 bits.
WO EI WO EI
2
WIB EOB WIB 0 S 1 EOB
WO EI WO EI
0 1
WIB 0 S 1 EOB WIB 0 S 1 EOB
0 1
WOB EIB WOB EIB
SIB 1
SOB 0
SIN SIB SOB
1SIN
B A C A
82
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO IV Resultados
Este circuito realiza la suma de dos números binarios de dos bits. Los números binarios
están representados por DC y BA, de donde D y B son los bits más significativos de cada
número. La salida XYZ contiene el resultado de la suma de los dos números binarios. La
tabla 4.7 muestra su tabla de verdad. La figura 4.21 muestra los árboles de multiplexores de
las salidas del sumador.
D C B A X Y Z
Y
0 0 0 0 0 0 0 m
0 0 0 1 0 0 1 Out 14
0 s 1
0 0 1 0 0 1 0 a X
0 0 1 1 0 1 1 k l
j D
0 1 0 0 0 0 1 Out 11 Out 12 Out 13
0 1 0 1 0 1 0 0 s 1 0 s 1 0 s 1
0 1 1 0 0 1 1 Z
B C C D
0 1 1 1 1 0 0 d e f g h i
Out 5 Out 6 Out 7 Out 8 Out 9 Out 10
1 0 0 0 0 1 0 0 s 1 0 s 1 0 s 1 0 s 1 0 s 1 0 s 1
1 0 0 1 0 1 1
1 0 1 0 1 0 0 A C B A
A B 1 B 0 0 C B C
a a a b c
1 0 1 1 1 0 1 Out 0 Out 1 Out 2 Out 3 Out 4
1 1 0 0 0 1 1 0 s 1 0 s 1 0 s 1 0 s 1 0 s 1
1 1 0 1 1 0 0
1 A 0 1 A 0 1 A 0 0 B A A B 1
1 1 1 0 1 0 1 A
1 1 1 1 1 1 0
Figura 4.21.- Árboles de multiplexores del sumador paralelo de
Tabla 4.7.- Tabla de 2 bits.
verdad para el sumador
paralelo de 2 bits.
83
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO IV Resultados
0.8
0.15
Listado 4.7.- Archivo de 4 8 15
entrada para enrutar el 4 5 6 3 1
sumador paralelo de 2 bits. 0
3 5 13 14
Y Z X
NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT
WI EO WI EO WI EO WI EO WI EO WI EO WI EO WI EO
WO EI WO EI WO EI WO EI WO EI WO EI WO EI WO EI
14
WIB EOB WIB EOB WIB EOB WIB 0 S 1 EOB WIB EOB WIB EOB WIB EOB WIB EOB
WOB EIB WOB EIB WOB EIB WOB EIB WOB EIB WOB EIB WOB EIB WOB EIB
SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN
NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NO UT NOB NIB NOUT
WI EO WI EO WI EO WI EO WI EO WI EO WI EO WI EO
WO EI WO EI WO EI WO EI WO EI WO EI WO EI WO EI
11 12 13
EOB EOB WIB 0 S 1 EOB WIB 0 S 1 EOB WIB EOB WIB 0 S 1 EOB WIB EOB WIB EOB
WIB WIB
EIB EIB EIB EIB EIB WOB EIB EIB EIB
WOB WOB WOB WOB WOB WOB WOB
SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN
NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT
WI EO WI EO WI EO WI EO WI EO WI WI EO WI
WO EI WO EI WO EI WO EI WO EI WO WO EI WO
5 6 7 EOB
8 9 10
WIB 0 S 1 EOB WIB 0 S 1 EOB WIB 0 S 1 WIB 0 S 1 EOB WIB EOB WIB 0 S 1 WIB 0 S 1 EOB WIB
1 0
WOB EIB WOB EIB WOB EIB WOB EIB WOB EIB WOB 0 WOB EIB WOB
SIB SOB
0 SIN SIB SOB SIN SIB SOB
0 SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN
NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT
WI EO WI EO WI EO WI EO WI EO WI EO WI EO WI EO
WO EI WO EI WO EI WO EI WO EI WO EI WO EI WO EI
0 1 2 3 4
WIB 0 S 1 EOB WIB 0 S 1 EOB WIB 0 S 1 EOB WIB EOB WIB EOB WIB EOB WIB 0 S 1 EOB WIB 0 S 1 EOB
1 0
WOB 1 0 EIB WOB 1 0 EIB WOB EIB WOB EIB WOB EIB WOB EIB WOB 0 EIB WOB 1 EIB
SIB 1
SOB 0SIN SIB SOB SIN SIB SOB
1 SIN
0 SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN
C A A A B 0 D 0 D 0 D 0 C 0 B A
La figura 4.23 muestra la simulación sumador paralelo de dos bits. En la figura 4.23 los
numéros binarios (DC) y (BA) están agrupados en C y A respectivamente. Las salidas XYZ
estan agrupadas en Z. Se provocó durante la simulación un error en la célula AA. Se puede
notar en la figura 4.23, que la reconfiguración de las células al presentarse un error no
requirió un tiempo tan largo como en las aplicaciones secuenciales.
84
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO IV Resultados
Los errores son algo natural dentro de las comunicaciones de datos. Es posible
desarrollar metodologíaa de transmisión de datos que proporcionen un alto rendimiento de
detección y corrección de errores. Algunos métodos comunes para la detección de errores
son: la prueba de paridad, claves de relación constante y verificación por redundancia cíclica
[Hal92, Mor00]. Estos métodos son muy utilizados en la comunicación de datos para reducir
los errores en la trasmisión de datos. La Verificación por Redundancia Cíclica (CRC: cyclic
redundancy check) trabaja de la siguiente manera: por cada trama (cadena de caracteres)
transmitida se genera un conjunto único de dígitos de verificación, con base en el contenido
de la trama, y se añaden al final de la trama para su transmisión. El receptor a su vez, realiza
un cálculo similar con la trama completa y los dígitos de verificación. Si no se han inducido
errores, siempre se obtendrá un resultado conocido; si se obtiene una respuesta distinta, se
habrá detectado un error. [Hal92, Mor00].
D C B A X Y Z W
0 0 0 0 0 0 0 0
0 0 0 1 0 0 1 1
0 0 1 0 0 1 1 0
0 0 1 1 0 1 0 1
0 1 0 0 1 1 0 0 0.8
0 1 0 1 1 1 1 1 0.15
0 1 1 0 1 0 1 0 2 6 10
0 1 1 1 1 0 0 1 3 4 5 1
0
1 0 0 0 1 0 1 1
4 4 5 8 9
1 0 0 1 1 0 0 0
1 0 1 0 1 1 0 1
1 0 1 1 1 1 1 0 Listado 4.8.- Archivo de entrada
1 1 0 0 0 1 1 1 para enrutar el CRC-4.
1 1 0 1 0 1 0 0
1 1 1 0 0 0 0 1
1 1 1 1 0 0 1 0
La figura 4.24 muestra los árboles de multiplexores para cada salida de esta aplicación.
85
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO IV Resultados
Z
j
Out 9
0 s 1
Y X W
D
e f g h i
Out 4 Out 5 Out 6 Out 7 Out 8
0 s 1 0 s 1 0 s 1 0 s 1 0 s 1
B C C D A B B A A D
a b c d
Out 0 Out 1 Out 2 Out 3
0 s 1 0 s 1 0 s 1 0 s 1
1 B 0 1 C 0 1 A 0 1 A 0
NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT
WI EO WI EO WI EO WI EO WI EO WI EO
WO EI WO EI WO EI WO EI WO EI WO EI
4 EOB 5 EOB
9 EOB EOB
8
WIB 0 S 1 WIB 0 S 1 EOB WIB WIB 0 S 1 WIB WIB 0 S 1 EOB
WOB EIB WOB EIB WOB EIB WOB EIB WOB EIB WOB EIB
SIB SOB
0 SIN SIB SOB
0 SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN
NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT
WI EO WI EO WI EO WI EO WI EO WI EO
WO EI WO EI WO EI WO EI WO EI WO EI
0 1 6 2 7 3
WIB 0 S 1 EOB WIB 0 S 1 EOB WIB 0 S 1 EOB WIB 0 S 1 EOB WIB 0 S 1 EOB WIB 0 S 1 EOB
1 0 EIB 1 0 EIB EIB 1 0 EIB EIB 1 0 EIB
WOB WOB WOB WOB WOB WOB
SIB 1
SOB 0
SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN
B 0 C B 0 A 0 B D A A B
La figura 4.26 muestra la simulación del circuito CRC-4. En la figura 4.26 las entradas
(DCBA) se encuentran agrupadas en A. Las salidas X, Y, Z, y W no están agrupadas para
notar el valor de cada una de ellas. Se provocó un error en la célula AA para verificar la
propiedad de tolerancia a fallas de la aplicación en el arreglo embriónico.
86
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO IV Resultados
Este circuito combinacional genera el bit de paridad par de un número de cuatro bits
utilizados en la transmisión de datos [Hal92]. De forma general la paridad par se calcula
contando en cada número de n bits los unos que contenga. Si la cuenta de estos unos es
impar el circuito deberá generar un uno, pero si la cuenta es par el circuito deberá generar un
cero. La tabla 4.9 muestra su tabla de verdad. La figura 4.27 muestra el árbol de
multiplexores del generador de paridad par de 4 bits.
D C B A Y
0 Y
0 0 0 0
o
0 0 0 1 1
Out 14
0 0 1 0 1 0 s 1
0 0 1 1 0
0 1 0 0 1 m
D
n
0 1 0 1 0 Out 12 Out 13
0 s 1 0 s 1
0 1 1 0 0
0 1 1 1 1
C C
1 0 0 0 1 i j k l
Out 8 Out 9 Out 10 Out 11
1 0 0 1 0 0 s 1 0 s 1 0 s 1 0 s 1
1 0 1 0 0
1 0 1 1 1 B B B B
a b c d e f g h
1 1 0 0 0 Out 0 Out 1 Out 2 Out 3 Out 4 Out 5 Out 6 Out 7
1 1 0 1 1 0 s 1 0 s 1 0 s 1 0 s 1 0 s 1 0 s 1 0 s 1 0 s 1
1 1 1 0 1
0 A 1 1 A 0 1 A 0 0 A 1 1 A 0 0 A 1 0 A 1 1 A 0
1 1 1 1 0
El listado 4.9 muestra el archivo de entrada para enrutar el generador de paridad par de
4 bits en un arreglo embriónico.
87
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO IV Resultados
NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NI B NOUT NOB NIB NOUT
WI EO WI EO WI EO WI EO WI EO WI EO WI EO WI EO
WO EI WO EI WO EI WO EI WO EI WO EI WO EI WO EI
14
WIB EOB WIB EOB WIB 0 S 1 EOB WIB EOB WIB EOB WIB EOB WIB EOB WIB EOB
WOB EIB WOB EIB WOB EIB WOB EIB WOB EIB WOB EIB WOB EIB WOB EIB
SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN
NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT
WI EO WI EO WI EO WI EO WI EO WI EO WI EO WI EO
WO EI WO EI WO EI WO EI WO EI WO EI WO EI WO EI
12 13
WIB EOB WIB EOB WIB 0 S 1 EOB WIB EOB WIB EOB WIB 0 S 1 EOB WIB EOB WIB EOB
WOB EIB WOB EIB WOB EIB WOB EIB WOB EIB WOB EIB WOB EIB WOB EIB
SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SI N
NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT
WI EO WI EO WI EO WI EO WI EO WI EO WI EO WI EO
WO EI WO EI WO EI WO EI WO EI WO EI WO EI WO EI
8 9 EOB
10 11 EOB
WIB EOB WIB 0 S 1 EOB WIB 0 S 1 EOB WIB EOB WIB WIB 0 S 1 EOB WIB 0 S 1 EOB WIB
WOB EIB EIB EIB EIB WOB EIB EIB EIB WOB EIB
WOB WOB WOB WOB WOB
SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN
NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT
WI WI EO WI EO WI EO WI EO WI EO WI EO WI EO
WO WO EI WO EI WO EI WO EI WO EI WO EI WO EI
0 1 2 3 4 5 6 7
WIB 0 S 1 WIB 0 S 1 EOB WIB 0 S 1 EOB WIB 0 S 1 EOB WIB 0 S 1 EOB WIB 0 S 1 EOB WIB 0 S 1 EOB WIB 0 S 1 EOB
0 1
WOB WOB 1 0 EIB WOB 1 0 EIB WOB 0 1 EIB WOB 1 0 EIB WOB 0 1 EIB WOB 0 1 EIB WOB 1 0 EIB
SIB 1
SOB 0
SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN
B 0 C A B A D 0 D 0 B A C A B 0
La figura 4.29 muestra la simulación del generador de paridad par de 4 bits. Se provocó
un error en la célula AA y el circuito siguió trabajando correctamente.
Este circuito genera el bit de paridad par de un número de cinco bits utilizados en la
transmisión de datos [Hal92]. La tabla 4.10 muestra su tabla de verdad. La figura 4.30
muestra su árbol de multiplexores. El listado 4.10 muestra el archivo de entrada para enrutar
el generador de paridad par de 5 bits en un arreglo embriónico.
88
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO IV Resultados
E D C B A Y Y
0 0 0 0 0 0 i
Out 10
0 0 0 0 1 1 0 s 1
0 0 0 1 0 1
0 0 0 1 1 0 E
g h
0 0 1 0 0 1
Out 8 Out 9
0 0 1 0 1 0 0 s 1 1 s 0
0 0 1 1 0 0
0 0 1 1 1 1 D D
0 1 0 0 0 1
0 1 0 0 1 0 e f
0 1 0 1 0 0 Out 6 Out 7
0 s 1 1 s 0
0 1 0 1 1 1
0 1 1 0 0 0
C C
0 1 1 0 1 1
0 1 1 1 0 1
0 1 1 1 1 0 Out 4 Out 5
0 s 1 0 s 1
1 0 0 0 0 1
1 0 0 0 1 0
B B
1 0 0 1 0 0 a b c d
Out 0 Out 1 Out 2 Out 3
1 0 0 1 1 1
0 s 1 0 s 1 0 s 1 0 s 1
1 0 1 0 0 0
1 0 1 0 1 1 0 A 1 1 A 0 1 A 0 0 A 1
1 0 1 1 0 1
1 0 1 1 1 0 Figura 4.30.- Árbol de multiplexores del generador de
1 1 0 0 0 0 paridad par de 5 bits.
1 1 0 0 1 1
1 1 0 1 0 1
0.8
1 1 0 1 1 0
0.15
1 1 1 0 0 1
5 6 11
1 1 1 0 1 0 5 4 2 2 2 1
1 1 1 1 0 0 0
}
1 1 1 1 1 1 1 10
Tabla 4.10.- Tabla de verdad del Listado 4.10.- Archivo de entrada para enrutar el
generador de paridad par de 5 bits. generador de paridad par de 5 bits.
89
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO IV Resultados
NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT
WI EO WI EO WI EO WI EO WI EO WI EO
WO EI WO EI WO EI WO EI WO EI WO EI
10
WIB EOB WIB EOB WIB 0 S 1 EOB WIB EOB WIB EOB WIB EOB
WOB EIB WOB EIB WOB EIB WOB EIB WOB EIB WOB EIB
SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN
NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT
WI EO WI EO WI EO WI EO WI EO WI EO
WO EI WO EI WO EI WO EI WO EI WO EI
EOB EOB
8 EOB
9 EOB EOB EOB
WIB WIB WIB 0 S 1 WIB 0 S 1 WIB WIB
WOB EIB WOB EIB WOB EIB WOB EIB WOB EIB WOB EIB
SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN
NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT
WI EO WI EO WI EO WI EO WI EO WI EO
WO EI WO EI WO EI WO EI WO EI WO EI
EOB EOB
6 EOB
7 EOB EOB
WIB WIB WIB 0 S 1 WIB 0 S 1 WIB EOB WIB
WOB EIB WOB EIB WOB EIB WOB EIB WOB EIB WOB EIB
SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN
NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT
WI EO WI EO WI EO WI EO WI EO WI EO
WO EI WO EI WO EI WO EI WO EI WO EI
EOB EOB
4 EOB
5 EOB EOB EOB
WIB WIB WIB 0 S 1 WIB 0 S 1 WIB WIB
WOB EIB WOB EIB WOB EIB WOB EIB WOB EIB WOB EIB
SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN
NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT NOB NIB NOUT
WI SIB WI EO WI EO WI EO WI EO WI EO
SOB
WO SIN WO EI WO EI WO EI WO EI WO EI
EO 0 1 2 3
WIB WIB 0 S 1 EOB WIB 0 S 1 EOB WIB 0 S 1 EOB WIB 0 S 1 EOB WIB EOB
EI
1 0 1 0 0 1
WOB WOB 0 1 EIB WOB EIB WOB EIB WOB EIB WOB EIB
EOB
SIB SOB
1 SIN
0 SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN SIB SOB SIN
E 0 C 0 B A D A C 0 E 0
90
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
CAPÍTULO IV Resultados
4.4 Resumen
En este capítulo se presentó el diseño de circuitos digitales que fueron utilizados para
comprobar la eficacia del enrutador de arreglos Embriónicos desarrollado en esta tesis.
Nueve fueron los circuitos diseñados presentados en este capítulo de resultados.
Únicamente el contador de cero a nueve fue presentado en detalle. En el apéndice al final de
este documento se presentan los diagramas esquemáticos de la célula embriónica utilizada
para realizar la simulación en la plataforma Foundation de Xilinx. Para la simulación de los
ejemplos se necesitó de un arreglo bidimensional de células embriónicas con filas de
repuesto que se convirtieron en filas activas cuando se simuló una falla en una célula.
91
Enrutador de arreglos embriónicos utilizando algoritmos genéticos
Conclusiones
Esta tesis presentó una nueva estrategia para resolver el problema de enrutamiento de
arreglos embriónicos. Los arreglos embriónicos, junto con los algoritmos genéticos, forman
parte de los sistemas bioinspirados al tomar los conceptos básicos de la biología como son:
evolución natural, adaptación y reproducción de las especies sobre un medio ambiente. La
hipótesis de la tesis ha sido probada a lo largo de este trabajo: Es posible resolver el
enrutado de un arreglo embriónico utilizando un algoritmo genético.
Los conceptos tomados de la embriología aplicados a los sistemas electrónicos dan una
nueva temática llamada arreglos embriónicos. La incorporación de las propiedades de
tolerancia a fallas en una arquitectura celular hacen aún más atractivo a este campo de
investigación.
Para implementar una aplicación en los arreglos embriónicos es necesario obtener los
siguientes elementos: tabla de verdad, árbol de decisión binaria ordenados, árbol de
multiplexores, trasladar el árbol de multiplexores en un arreglo embriónico.
La estrategia de la eliminación de una fila, cuando se daña una célula, fué elegida por
ser muy práctica su realización a través de la generación de las nuevas coordenadas del
arreglo y permitir con esto la reducción del uso de recursos en la implementación final de la
aplicación en los arreglos lógicos programables (FPGA).
Parte importante resultó el uso de los árboles binarios de decisión ordenados, formados
a partir de la tabla de verdad de la función, porque permitió un traslado muy fácil hacia los
árboles de multiplexores que describen a la aplicación. La facilidad estriba en que los árboles
binarios de decisión ordenados son muy parecidos en su forma estructural a los árboles de
multiplexores.
Conclusiones
93
Conclusiones
proporciona un archivo VHDL de salida que contiene los registros de configuración de las
células del arreglo. Este archivo VHDL es utilizado para la simulación en Foundation de
Xilinx.
El futuro de la embriónica
Tal vez en los próximos años seamos testigos de la aplicación de nuevos sistemas que
puedan tomar decisiones a través del aprendizaje del medio ambiente en que se desarrollan.
La elaboración de nuevas máquinas con cierta inteligencia que puedan soportar cambios
bruscos de su entorno y poder desarrollarse a pesar de tener diversos factores en contra.
Aportaciones
94
Conclusiones
solo agregando columnas a la derecha de la matriz de acuerdo con el número de células del
arreglo embriónico.
Trabajos futuros
El objetivo general de este trabajo fue lograr el enrutamiento de los arreglos embriónicos
mediante el uso de los algoritmos genéticos. Este objetivo se cumplió y se pudo resolver el
problema encontrando un gran número de soluciones diferentes deseadas. Uno de los
trabajos futuros que le pueden dar continuidad al presente es el realizar un análisis de las
soluciones deseadas y encontrar la solución óptima.
95
Conclusiones
genético, donde se presente la ubicación de los multiplexores con sus entradas correctas en
las células asignadas.
El empleo de los algoritmos genéticos para resolver el problema del enrutamiento de los
arreglos embriónicos resultó ser muy efectivo, pero aun existen otros mecanismos que
posiblemente puedan resolver el mismo problema, estas herramientas son: algoritmos
evolucionarios, recocidos simulados, lógica difusa, redes neuronales, etc.
96
APÉNDICE
Diagramas esquemáticos de una célula embriónica
Figura A.1.- Módulo de memoria.
98
Figura A.2.- Generador de coordenadas.
99
Figura A.3.- Enrutador de Entrada / Salida.
100
Figura A.4.- Elemento de procesamiento.
101
Figura A.5.- Arquitectura de una célula embriónica.
102
Figura A.6.- Símbolo creado a partir del esquemático de la figura A.5.
103
Figura A.7.- Arreglo embriónico de 5x8 para simular el contador 0-9 y su detector de rebose (DR).
104
Bibliografía y referencias
[Ahn95] Ahn H. I., Han S. K., Cho T. W., “Genrouter: A Genetic Algorithm for Channel
Routing Problems”, Microelectronics and VSLI, 1995, TENCON ’95., IEE Region
10 International Conference on, 1995.
[Ara01] Arabas J., “Applying an evolutionary algorithm to telecomunication network
design”, IEEE Transactions on evolutionary computation, August 2001.
[Ars96] Arslan T., D. H. Horrocks and E. Ozdemir, “Structural synthesis of cell-based
VLSI circuits using a multi-objective genetic algorithm”, Electronics Letters,
March 1996.
[Bak85] Baker J. E., “Adaptive Selection Methods for Genetic Algorithms”, Proceedings
of sirts ICGA, Lawrence Erlbaum Associates Publishers, pp 101-111, 1985.
[Bar91] Bartee T. C., Data communications, networks and systems, SAMS, 1991.
[Bel78] Bell D., “Decision Trees, Tables and Lattices”, in Batchelor B. (ed.), Patterm
recognition: ideas in practice, Plenum Press, 1978.
[Bli95] Blickle T., Thiele L., “A mathematical analysis of Tournament Selection”,
Proceeding of sixth ICGA, Morgan Kaufmann Publishers, pp 9-16, 1995.
[Cer79] Cerny E., “Synthesis of Minimal Binary Decision Trees”, IEEE Trans. On
Computers, Vol. 28-7, July 1979, pp. 472-482.
[Cha70] Chang H., Fault Diagnosis of Digital Systems, Wiley, 1970.
[Dei95] Deitel H. M., P. J. Deitel, Cómo programar en C/C++, Prentice Hall, 1995.
[Fog66] Fogel, L. J., Owens A. J., and Walsh M. J., Artificial Intelligence Through
Simulated Evolution, Jhon Wiley, Chichester, UK, 1966.
[Göc96] Göckel N., et al, “A hybrid Genetic Algorithm for the Channel Routing Problem”,
Circuits and Systems, 1996, ISCAS ’96., Connecting the World., 1996, IEEE
International Symposium on, Volume 4, 1996.
[Gol89] Goldberg D., Genetic Algorithms in search, optimization and machine learning,
Reading Massachusetts, 1989.
[Gon88] Gonzales N., Comunicaciones y Redes de Procesamiento de Datos, Mc Graw
Hill, 1988.
[Gon99] Goni B. M. and Arslan T., “An Evolutionary 3D Over-the-Cell Router”,
ASIC/SOC Conference, 1999, Twelfth Annual IEEE International, 1999.
[Hal92] Halsall F., Data communications, computer networks and open systems,
Addison Wesley Longman, 1992.
[Han77] Hanani M., “An Optimal Evaluation of Boolean Expresions in an online query
system”, Commun. ACM, Vol. 20-5, May 1977, pp. 344-347.
[Hem96] Hemmi H., et al, “Development and Evolution of Hardware Behaviors”, Lecture
Notes in Computer Science – Towards Evolvable Hardware, Vol. 1062,
Springer-Verlag, 1996.
[Hig96] Higuchi T., et al, “Evolvable Hardware and its Application to Pattern Recognition
and Fault-Tolerant Systems”, Lecture Notes in Computer Science – Towards
Evolvable Hardware, Vol. 1062, Springer-Verlag, 1996.
[Hol92] Holland J., Adaptation in natural and artificial systems, Cambridge
Massachusetts, 1992.
[Ina01] Inagaki J., Haseyama M., Kitajima H., “A New Genetic Algorithm for Routing the
Shortest Route Via Several Designated Points”, Circuits and Systems, 2001,
ISCAS 2001, The 2001 IEEE International Symposium on, Volume 2, 2001.
[Ina99] Inagaki J., Haseyama M., Kitajima H., “A Genetic Algorithm for Determining
Multiple Routes and its Applications”, Circuits and Systems, 1999, ISCAS ’99,
Proceedings of the 1999 IEEE International Symposium on, Volume 6, 1999.
[Kuo81] Kuo F. K., Protocols and techniques for data communication networks, Prentice
Hall, 1981.
[Kwo00] Kwong S., Wing D., Tang K., Man K., “Optimization of spare capacity in self-
106
healing multicast ATM network using genetic algorithm”, IEEE Transactions on
industrial electronics, December 2000.
[Laf89] Lafore R., Turbo C, Programming for the PC, The Waite Group, Inc., 1989.
[Leu98] Leung Y., Li G., Xu Z., “A genetic algorithm for the multiple destination routing
problems”, IEEE Transactions on evolutionary computation, November 1998.
[Lie96] Lienig J., “A Parallel Genetic Algorithm for two Detailed Routing Problems”,
Circuits and Systems, 1996, ISCAS ’96., Connecting the World., 1996, IEEE
International Symposium on, Volume 4, 1996.
[Lie97] Lienig J., “A Parallel Genetic Algorithm for Perfomance-Driven VLSI Routing”,
Evolutionary Computation, IEEE Transactions on, April 1997.
[Lim97] Lim Q. and Chew H., “Joining of compacted cells using genetic algorithm”,
Electronics Letters, Volume: 33 Issue: 23, November 1997.
[Lon01] Lones M.A., Tyrrell A.M., “Enzyme Genetic Programming”, in proceedings of the
Congress on Evolutionary Computation 2001 (CEC2001), Seoul, Korea, May
2001.
[Man96] Mange D., Goeke M., Madon D., et al. “Embrionics: a new family of coarse-
grained FPGA with self-repair and self-reproduction properties”, in towards
evolvable hardware: The evolutionary engineering approach, LNCS 1062, E.
Sanchez and M. Tomassini (eds.), Springer-Verlag: Berlin, pp. 197-220, 1996.
[Man97] Mani N., Srinivasan B., “Using Genetic Algorithm for Slicing Floorplan Area
Optimization in Circuit Design”, Systems, Man, and Cybernetics, 1997,
Computational Cybernetics and Simulation., 1997 IEEE International Conference
on, Volume: 3, 1997.
[Mar96] Marchal P., Nussbaum P., Piguet C., et al., “Embrionics: The birth of synthetic
life,” in towards evolvable hardware: The evolutionary engineering approach,
LNCS 1062, E. Sanchez and M. Tomassini (eds.), Springer-Verlag: Berlin, pp.
166-196, 1996.
[Mil99] Miller J. F. and Thompson P., “Evolving Circuits on Gate Arrays”, Reconfigurable
Systems (Ref. No. 1999/061), IEEE Colloquium on, 1999.
[Min78] Minieka E., Optimization Algorithms for Networks and Graphs, Marcel Dekker
Inc., 1978.
[Not96] Noteboom R. and Ali H. H., “A New Genetic Algorithm for Single Row Routing”,
Circuits and Systems, 1995, Proceedings., Proceedings of the 38th Midwest
107
Symposium on, Volume 2, 1996.
[Ort00a] Ortega Sánchez C., Embrionics: A bio-inspired fault-tolerant multicellular
system, The University of York, Department of Electronics Bio-inspired and Bio-
Medical Engineering Group, York, England, may 2000.
[Ort00b] Ortega Sánchez C., Mange D., Smith S. and Tyrrell A., “Embrionics: A bio-
inspired cellular architecture with fault-tolerant properties”, Genetic Programming
and Evolvable Machines, vol. 1-3, pp 187-215, Julio 2000.
[Paz99] Paz Ramos M. A., Control de un sistema MIMO por medio de técnicas difuso-
genéticas, Cenidet 1999.
[Pol01] Politécnico de Lausana, Lausana, Suiza, Página en internet,
http://diwww.epfl.ch/recherche/, 2001.
[San97] Sanchez E., Mange D., Sipper M., et al, “Phylogeny, Ontogeny and Epigenesis:
Three Sources of Biological Inspiration for Softening Hardware”, en Proceedings
of 1st International Conference on Evolvable Systems: From Biology to Hardware
(ICES96), LNCS 1259, Springer-Verlag, 1997, pp.35-54
[Sch81] Schwefel, H.-P., Numerical Optimization for Computer Models, John Wiley,
Chichester, UK, 1981.
[Sch90] Schwartz M., Transmisión de información, modulación y ruido, Mc Graw Hill,
1990
[Sch95] Schnecke V., Vornberger O., “Genetic Design of VLSI-Layouts”, Genetic
Agorithms in Engineering Systems: Innovations and Applications, 1995,
GALESIA, First International Conference on, 1995.
[Sin01] Sinha K., et al, “Partitioning Routing Area into Zones with Distinct Pins”, VLSI
Design, 2001, 14th International Conference on, 2001.
[Sip00] Sipper M., Ronald E. M. A., “A new species of hardware”, IEEE Spectrum,
March 2000.
[Swa89] Swamy M. N. S., Thulasiraman K., Graphs, networks, and algorithms, Edit. John
Wiley & Sons, 1989.
108
[Tan97] Tanenbaum A. S., Redes de computadoras, Pearson, pp. 346-400, 1997.
[Tau98] Taubes G., “Tras una Máquina consciente”, Discover en Español, Julio 1998.
[Tyr01] Tyrrell A., Hollingworth G. and Smith S., “Evolutionary Strategies and Intrinsic
Fault Tolerance”, Proceedings of Third NASA/DoD workshop on Evolvable
Hardware, IEEE Computer Society, pp.98-106, 2001.
[Uni01] Universidad de York, York, Inglaterra, Página en internet, http://www.york.ac.uk/,
2001.
[Wei77] Weide B., “A Survey of Analysis Techniques for Discrete Algorithms”, ACM
computing surveys, Vol. 9-4, Dec. 1977, pp. 291-313.
[Wir76] Wirth N., Algorithms + Data Structures = programs, Prentice Hall, 1976.
[Wol96] Wolf H. G. and Mlynski D. A., “A New Genetic Single-Layer Routing Algorithm
for Analog Transistor Arrays”, Circuits and Systems, 1996, ISCAS ’96.,
Connecting the World., 1996, IEEE International Symposium on, Volume 4,
1996.
[You01] Youssef H., Sait S. M., Khan S. A., “, “An evolutionary Algorithm for Network
Topology Design”, Neural Networks, 2001, Proceedings, IJCNN ’01,
International Joint Conference on, Volume: 1, 2001.
[Zbi96] Zbigniew M., Genetic algorithms + Data structures = Evolution programs,
Springer, 1996.
[Zha99] Zhang Q., Leung Y., “An orthogonal genetic algorithm for multimedia multicast
routing”, IEEE Transactions on evolutionary computation, April 1999.
109