implementacion de un sistema inmune artificial sobre un fpga

Anuncio
IMPLEMENTACION DE UN SISTEMA INMUNE ARTIFICIAL SOBRE UN FPGA
J. Sepúlveda+, C. Camargo*
+ Estudiante Ingeniería Electrónica
* Profesor Departamento de Ingeniería Eléctrica & Electrónica
Universidad Nacional de Colombia, Bogotá
{marthase, ccamargo}@gmun.unal.edu.co
ABSTRACT
The artificial immune system (AIS) is an adaptative system, inspired in the immune system theory and the observation of
its principles and models. In this article the implementation of these principles in the solution of a pattern’s recognition
problem is shown.
RESUMEN
El Sistema Inmune Artificial o SIA es un sistema adaptativo, inspirado en la teoría del Sistema Inmune y en la
observación de sus principios y modelos. En este artículo se muestra la implementación de éstos principios en la solución
de un problema de reconocimiento de patrones empleando un FPGA.
IMPLEMENTACION DE UN SISTEMA INMUNE ARTIFICIAL SOBRE UN FPGA
J. Sepúlveda+, C. Camargo*
+ Estudiante Ingeniería Electrónica
* Profesor Departamento de Ingeniería Eléctrica & Electrónica
Universidad Nacional de Colombia, Bogotá
{marthase, ccamargo}@gmun.unal.edu.co
RESUMEN
El Sistema Inmune Artificial o SIA es un sistema
adaptativo, inspirado en la teoría del Sistema Inmune y
en la observación de sus principios y modelos. En este
artículo se muestra la implementación de éstos principios
en la solución de un problema de reconocimiento de
patrones.
1. INTRODUCCIÓN
Los
animales
superiores
son
atacados
por
microorganismos y partículas extrañas, denominados
antígenos. Para protegerse de estos individuos, el
organismo posee sistemas defensivos conformados por
una serie de mecanismos que no solo reconocen y
diferencian su entorno sino que pueden almacenar
información. Este conjunto de mecanismos encargados de
tal función se denomina Sistema Inmune.
Los SIAs constituyen una metáfora del Sistema inmune.
Resulta de interés su estudio debido a que desde el punto
de vista biológico y computacional, la presencia de un
dispositivo adaptativo con memoria es de
gran
importancia. El Sistema Inmune es capaz de extraer
información y disponer de ella para futuras infecciones
por el mismo agente.
El artículo se divide en cuatro secciones. La primera
sección describe los principios del Sistema Inmune. En la
segunda sección se muestra al Sistema Inmune como un
paradigma computacional. En la tercera sección se
examinan las características de la implementación de un
SIA, en la cuarta y quinta sección se describe el problema
resuelto y la solución empleando un SIA implemenentado
en un FPGA. Por último se generan las conclusiones.
2. SISTEMA INMUNE
El sistema inmune es una red de células y órganos que
tratan de proteger al medio interno de un individuo de
agresiones externas, principalmente infecciosas y de
agresiones
internas
principalmente
de
células
transformadas en malignas [1].
El sistema inmune está sometido a una regulación muy
estricta, cuando se produce una falla en este control se
torna insuficiente y se producen múltiples enfermedades.
La eficacia dinámica con que funciona el sistema inmune
es lo que le permite el éxito de su accionar y lo que le
permite su especificidad para diferenciar entre lo ajeno y
lo propio del organismo.
El Sistema Inmune consta dos "líneas de defensa"
principales que interactúan estrechamente en toda
respuesta inmune: Inmunidad innata (fagocitos) y la
Inmunidad adquirida (Anticuerpos) moléculas que
funcionan como "adaptadores flexibles" que suministran
una respuesta específica frente a cada agente infeccioso.
Posee memoria inmunológica específica, que tiende a
evitar que el agente infeccioso provoque enfermedad en
una segunda infección.
2.1. Composición
El sistema inmune está compuesto por órganos, células y
moléculas afines. Los órganos se dividen en centrales
(órganos de la etapa embrionaria, timo y médula ósea) y
periféricos (ganglios, bazo y tejido linfoide)[2].
Las células del sistema inmune están representadas
fundamentalmente por los linfocitos B, T, las células
fagocíticas (“devoradoras” de otras células) de diferentes
extirpes, las células presentadoras de antígeno, las células
Natural killer (leucocitos granulares), y el resto de los
leucocitos basófilos, eosinófilos y neutrófilos[2].
Linfocitos B: Maduran en la médula ósea y reconocen el
antígeno a través de receptores de membrana. Cada
linfocito B que se diferencia en la médula ósea está
programado genéticamente para sintetizar un solo tipo de
anticuerpo, a la espera de contactar con el Antígeno
específico. Cuando una de ellas reconoce un antígeno
experimenta un proceso de activación con expansión
clonal (se copia rápidamente). Unas copias se encargan
de secretar anticuerpos y otras constituyen una memoria,
debido a su prolongado tiempo de vida [3].
Linfocito T: Madura en el timo, en donde adquiere un
receptor único y específico en su membrana que se
encarga de reconocer fragmentos del antígeno degradados
y procesados. Una célula T no es específica de un
antígeno X, sino de un antígeno X unido a una célula
presentadora.
Células presentadoras de antígeno: Son auxiliares del
sistema inmunológico, no participan en el reconocimiento
del antígeno pero sin ellas los linfocitos T y B no pueden
ejercer su función. Estas células fagocitan (digieren) el
antígeno, lo degradan y luego lo presentan en la
membrana citoplasmática para que pueda ser reconocido
por los linfocitos T [2].
Anticuerpos: Los linfocitos B secretan anticuerpos que se
unen con el antígeno con el fin de neutralizarlo.
2.2 Funcionamiento
Los anticuerpos son producidos por los linfocitos B. En
ausencia de estímulo antigénico, los linfocitos B maduros
vírgenes mueren por apoptosis (suicidio celular)[3]. Sin
embargo si sus receptores perciben un antígeno
complementario y específico, se pone en marcha la
selección y proliferación clonal (activación y copia de un
linfocito B), que termina (al cabo de 4-5 días).
La unión entre el antígeno (Ag) y el anticuerpo (Ac)
específico provoca:
•
La lisis (ingestión) del microorganismo invasor.
•
Recubrimiento de los fagocitos con complejos
Ag-Ac, lo cual facilita la fagocitosis (digestión).
•
Neutralización de ciertas toxinas y virus por la
simple unión Ag-Ac.
Son los Antígenos los que seleccionan el Anticuerpo
específico que les hará frente. Sin embargo, cada tipo de
Anticuerpo está preformado antes de entrar en contacto
por vez primera con el Antígeno [2].
3. SIA COMO PARADIGMA COMPUTACIONAL
Desde el punto de vista biológico y computacional, la
presencia de un dispositivo adaptativo con memoria es de
gran importancia. El Sistema Inmune es capaz de extraer
información y disponer de ella para futuras infecciones
por el mismo agente.
Cuando se diseñan algoritmos inspirados en algún
sistema biológico se debe crear una representación para
los diferentes componentes del sistema, un conjunto de
mecanismos que evalúen el desempeño de los diferentes
organismos y procesos de adaptación que gobiernen y
mantengan la dinámica del sistema.
En el caso de los SIAs (Sistemas Inmunes Artificiales), se
debe decidir que características de los Sistemas Inmunes
biológicos se desean explotar, de tal forma que se
desarrollan las analogías (Timo, clonación selectiva, red
inmune).
Una vez codificado el problema en forma de individuos se
crea una población inicial de anticuerpos. Para evaluar
las interacciones del grupo de individuos, se deben
diseñar una serie de criterios basados en el espacio en el
cual se desarrolla la población. Estas interacciones se
pueden medir en términos de distancia entre un individuo
( Función XOR) y su objetivo .
A los individuos que presentan una mayor afinidad, se les
suele clonar. Es decir, los más aptos pueden seguir a la
siguiente población. Una vez se ha encontrado un
individuo exitoso, se guarda como una memoria
temporal, si después de algún tiempo no ha sido utilizado,
desaparece [1].
También se pueden mutar los individuos, hasta que la
condición deseada se cumpla. Es deseable aplicar la
propiedad en la cual el sistema es capaz de reconocerse a
sí mismo, para evitar su autodestrucción.
El Sistema Inmune emplea un procesamiento de
información de alto nivel [1]. Desde el punto de vista
computacional, existen varias características interesantes
como el reconocimiento de patrones, la unicidad (cada
individuo posee un SI único), su diversidad, su autonomía
(no existe un control central), la detección de anomalías,
cambio dinámico (adaptación), tolerancia al ruido (no
necesita un reconocimiento completo para actuar),
resistencia, robustez e integración con otros sistemas.
Con las características presentadas anteriormente, es
obvio esperar que las herramientas computacionales
basadas en los Sistemas Inmunes tengan un alto
desempeño, además se pueden emplear en diversas áreas,
como reconocimiento de patrones, detección de errores,
análisis de datos, aprendizaje de máquinas, optimización
y en sistemas de navegación de robots.
4.
IMPLEMENTACION DE UN SIA
Debido a las características descritas anteriormente,
resulta muy atractiva la idea de implementar este modelo
electrónicamente, ya que el Sistema inmune artificial
puede ser aplicado para solucionar muchos problemas.
Para diseñar el SIA electrónico es necesario representar el
valor de las variables de entrada (Antígenos presentados
al sistema inmune) en forma digital, asignándoles un
valor binario (cadena de longitud L). Este debe incluir
por lo menos un ‘0’ lógico para indicar que se trata de un
antígeno, pues cuando se presenta el anticuerpo que va
atacar esa condición, se evalúa su desempeño, por medio
de la afinidad entre ambos patrones (es decir si son
complementarios). Una cadena de unos expresa el
reconocimiento perfecto de un antígeno por parte de un
anticuerpo, por tal motivo carece de sentido expresar un
antígeno como una cadena de unos.
Para implementar el SIA, se pueden emplear dos clases
de algoritmos: El de Selección Negativa y el de Selección
clonal. En el primero se crean linfocitos (cadenas
binarias) con el fin de que no reconozcan los patrones (tal
como se realiza en el Timo), mientras que la Selección
clonal se encarga de evolucionar un repertorio de
anticuerpos capaces de reconocer el patrón del antígeno.
Se pueden emplear los linfocitos B, los cuales serían
cadenas de bits, que son estimulados proporcionalmente a
su afinidad con el antígeno, la cual puede ser calculada
empleando la operación lógica OR exclusiva (la cual da
como resultado un nivel lógico alto cuando una entrada es
el complemento de la otra), ya que esta calcula la
distancia a un punto si se trabaja en un espacio
Hamming[1]. Este proceso se muestra en la figura 1. El
antígeno (cadena de bits de entrada) selecciona al patrón
correcto (el cual corresponde a su complemento). Se dice
que un anticuerpo identificó al antígeno cuando el
resultado de la comparación empleando la función XOR
es una cadena de unos.
La forma de estimulación a los linfocitos B es mediante
su clonación (note que no se emplea crossover). Estos
clones sufren mutaciones (con lo cual se puede expresar
el proceso de adaptación del sistema inmune) las cuales
pasarán a hacer parte del repertorio actual. Este proceso
recibe el nombre de: Maduración de la afinidad de la
respuesta inmune.
Una vez se ha encontrado un individuo que es
satisfactorio (empleando la comparación XOR el
resultado es una cadena de unos), la cadena que produjo
este resultado (linfocito B) es almacenado durante cierto
periodo, en el cual debe ser empleado para no
desaparecer.
5.
RECONOCIMIENTO DE PATRONES
Para aplicar los principios del Sistema Inmune, se
propone realizar un dispositivo capaz de identificar los
números del 0 al 9.
Figura 1. Sistema inmune artificial digital
Al interior del sistema inmune artificial, se cuenta con un
repertorio limitado de anticuerpos (descritos como una
cadena binaria de longitud L) los cuales van a ser
encargados de reconocer los patrones de entrada
presentados (ver figura 1).
Los números serán introducidos por el usuario por medio
de un programa en el cual se presenta una matriz de siete
filas y cinco columnas (ver figura 2). Cada posición de
ésta matriz representa un bit con el cual se va a codificar
el patrón, si la posición se encuentra activa (ha sido
seleccionado por el usuario), esta posición representa un
uno lógico. De ésta forma se pede codificar el patrón en
una cadena de 35 bits.
En la matriz se dibujarán diferentes patrones corruptos y
el sistema Inmune artificial será capaz de procesar e
identificar el número que se escribió.
inicio
Cargue Patrón Entrada
(Ag)
Compare con Patrones
Calcule Afinidad
Guarde Patrón exitoso
Figura 2. Número introducido al SIA y patrón reconocido por el
SIA.
SI
Comparación
Perfecta ?
NO
Transmita Patrón exitoso
Organizar por Afinidad
fin
En la figura 2 se muestra un número introducido por el
usuario y el número identificado por el SIA.
Clonar los mejores
Mutar clones
6. IMPLEMENTACIÓN DE CHIP ADN CON
FPGAS
Figura 4. Diagrama de Flujo de la implementación del Sistema
Inmune Artificial (SIA) con el FPGA.
Figura 3 Esquema General de la implementación del Sistema
Inmune Artificial.
En la figura 3 se muestra la arquitectura de la
implementación. La cual está conformada por un
computador que se encarga de generar la cadena de 35
bits (corresponde a la codificación de la matriz de
entrada) y transmitirlos de forma serial a la tarjeta del
FPGA. La FPGA contiene el Sistema Inmune Artificial
que se encargará de:
• Procesar los datos enviados
• Transmitir serialmente el patrón identificado
hacia el computador.
En la figura 4 y 5 muestran el diagrama de flujo y el
diagrama de bloques empleado para la implementación
del sistema inmune artificial. En general el sistema
Figura 5. Diagrama de bloques general empleado para
implementar el algoritmo de la figura 4
consta de cuatro partes. La primera realiza la
comparación entre el patrón de entrada (antígeno) y los
patrones de referencia del sistema (anticuerpos). Si la
comparación es perfecta, el resultado es transmitido. De
otra forma se emplea el resultado del bloque como
medida de afinidad de los patrones internos. Esta medida
es clasificada por medio del bloque que organiza estos
valores en forma descendente. El último bloque se
encarga de generar nuevos patrones de referencia
mediante la clonación y mutación de los mejores patrones
para que estos sean evaluados de nuevo.
En la figura 6 se muestra el diagrama de bloques de la
implementación final del sistema de reconocimiento de
patrones.
Los datos que son enviados por el computador (que
corresponden a la codificación del número dibujado por el
usuario) son recibidos por la UART (Universal
Asynchronous Receiver & Transmitter). Cada vez que
recibe una trama, se activa la bandera DATA_READY la
cual hace que el control active la lectura del dato
(READ_DATA en alto) y carga en el registro la
información de la trama hasta completar 35 bits
correspondientes a la codificación de la matriz del
número dibujado.
ambos patrones son iguales, el proceso se detiene y se
transmite el patrón de referencia correcto. De otra forma
el valor arrojado por este bloque pasa al módulo SORT, el
cual organiza los patrones según su afinidad.
Si no existe un patrón idéntico se seleccionan los tres
patrones con mayor número de coincidencias y se realiza
un proceso de MUTACIÓN sobre ellos. Una vez
obtenidos los nuevos patrones auxiliares, estos se cargan
en los registros de entrada y se repite el proceso hasta que
se encuentra un patrón que sea muy similar a la matriz de
entrada, en cuyo caso se transmitirá el patrón de
referencia del cual provenía el nuevo patrón mutado
(subpatrón), el cual además es almacenado para
posteriores comparaciones.
Cuando se obtiene el resultado, el control se encarga de
manipular la UART para que transmita el resultado hacia
el ordenador.
6.1 Bloque UART
Este bloque se encarga de recibir de forma serial los datos
que corresponden a la matriz dibujada por el usuario y
que provienen del computador, así como de transmitir el
patrón encontrado por e Sistema Inmune Artificial.
Los datos transmitidos y recibidos están empaquetados en
tramas constituidas por un bit de Start (cero lógico ), los
siete bits que constituyen los datos recibidos o
transmitidos y el bit de stop. La velocidad de transmisión
empleada fue de 34.800 baudios [4].
Figura 6. Diagrama de bloques del Sistema inmune artificial.
Una vez recibido el carácter definido por el usuario, se
compara (operación XOR lógica) con los patrones
establecidos de los diez dígitos, (0 al 9) almacenados en
sendos registros internos, la salida de dicha comparación
es un vector de 35 bits en la que un ‘1’ en una
determinada posición, indica que el patrón almacenado y
el definido por el usuario son iguales en esa posición.
En este momento es necesario determinar cuál de los
patrones almacenados se acerca más al patrón definido
por el usuario. Esto se logra con el módulo
CONT_UNOS, el cual contabiliza el número de unos del
vactor resultante de la comparación. Si se encuentra que
Este módulo se encarga de recibir cada una de las cinco
columnas que conforman la matriz de entrada y
transmitir el patrón resultado del procesamiento de la
información del SIA.
6.2 COMPARA
Este módulo se encarga de almacenar un patrón de
referencia (patrón del 0 al 9) y de realizar la comparación
entre éste y el valor de la matriz de entrada mediante la
operación lógica OR exclusiva (la cual da como resultado
un nivel lógico alto cuando las entradas son
complementarias).
Este módulo se activa (START en alto) cuando existe
algún dato cargado en el registro ALMACENA, que
corresponde a la información suministrada por el usuario.
6.3 Bloque CONT_UNOS
Este bloque se encarga de contar el número de unos
presentes en una cadena de bits (resultado de la
comparación llevada a cabo en el bloque COMPARA).
Estos unos indican los lugares en los cuales difieren la
matriz de entrada y un patrón de referencia. Por tal
motivo se dice que este módulo cuantifica la afinidad de
un patrón con respecto a la entrada. El diagrama de flujo
de la implementación del bloque CONT_UNOS es:
Figura 8. Diagrama de bloques del CONT_ONES
6.4 Bloque SORT
INICIO
ONES + 1
LSB='1'?
ONES + 1
A= A / 2
A= 0?
Figura 9 Bloque Sort
FIN
Figura 7. Diagrama de Flujo de la implementación del
CONT_ONES.
Una vez cargado el dato, este bloque se encarga de
realizar corrimientos sucesivos de un bit hacia la derecha.
En cada oportunidad se evalúa el valor del bit menos
significativo de la cadena. Si éste es uno, se incrementa
en uno un contador. Cuando la cadena a la que se le
realizan los corrimientos se hace igual a cero, el proceso
termina y se activa la señal DONE. La salida
NUM_ONES (6 bits) indica cuantos unos tenía el
DATA_IN de 35 bits.
Este bloque se encarga de organizar el valor de las
afinidades (cadena de seis bits) de los diferentes patrones
de referencia. Según la señal de entrada DIR, la
organización se puede realizar de forma ascendente (DIR
tiene un nivel lógico bajo) o descendente (DIR tiene un
nivel lógico alto).
Cuando existe un dato a la entrada de este bloque, se debe
inicializar el módulo colocando INIT en alto para que el
conteo tenga lugar. El diagrama de bloques que
implementa el algoritmo mostrado en figura 7 se muestra
en la figura 8.
Figura 10. Proceso de clasificación par e impar
6.5 Bloque MUTA
Para realizar este bloque se empleo el proceso de
clasificación par e impar (ver figura 10). Estos se
encargan de comparar entre dos datos adyacentes. Con la
señal DIR en alto, si el primer dato es menor que el
segundo, el orden de los datos se invierte, de otra forma
los datos permanecen iguales. La diferencia entre los
algoritmos de clasificación par e impar es el comienzo de
la comparación.
Este bloque selecciona los patrones que obtuvieron las
tres afinidades más altas.
El diagrama de flujo
correspondiente se muestra en la figura 12.
INICIO
n = 1, i = 4
Una vez cargadas los datos al módulo Sort, se inicializa el
módulo por medio de RST, se coloca la señal DIR en alto
y se activa la señal READY.
CARGUE DATO (n)
COPIE (i - n) VECES
Después de suficientes iteraciones (dependiendo de la
secuencia de entrada) todos los números son organizados.
n= n +1
RND (BIT)
BIT (muta)= Bit
Anterior ?
SI
NO
TRANSMITA
n=3?
NO
SI
FIN
Figura 11. Diagrama de Bloques del módulo SORT
El diagrama de bloques que implementa el algoritmo de
ordenamiento se muestra en la figura 11.
La entrada del bloque SORT se carga en el multiplexor
junto con las salidas organizadas de la iteración anterior.
Este se encarga de seleccionar entre la señal de entrada y
la realimentada mediante las señales READY y VER.
Cuando se multiplexa por primera vez, se selecciona los
datos de entrada, pero cuando ya se ha realizado alguna
iteración, los datos seleccionados son aquellos que ya han
sufrido un proceso de organización. En los bloques de
EVEN y ODD se realiza una clasificación par seguida de
una impar, luego de las cuales se prueba (en el bloque
DONE) la serie de datos obtenida para determinar si los
datos se encuentran correctamente organizados. Cuando
esto sucede, la señal VER se activa, lo cual hace que el
demultiplexor coloque los datos organizados a la salida
del módulo.
Figura 12. Diagrama de Flujo de la implementación del bloque
MUTA.
Al patrón de mayor afinidad lo clona tres veces y realiza
un cambio aleatorio (mutación en la cadena patrón) en
tan sólo uno de los 35 bits que conforman al patrón. Al
segundo mejor, lo copia dos veces y realiza dos
mutaciones y al tercero lo copia solo una vez y lo muta en
tres oportunidades.
El diagrama de bloques de la implementación se muestra
en la figura 13.
El bloque SELECTOR escoge los tres mejores patrones
mediante las señales provenientes del clasificador
(Bloque SORT).
El bloque RANDOM genera números pseudoaleatorios
mediante una combinación lógica de una señal de
entrada. Cada bloque se inicializa de forma diferente. El
número generado se encuentra entre 0 y 34, que
corresponde al bit que cambiará de valor.
6.6 Control General
Este bloque se encarga de implementar el algoritmo
general presentado en la figura 4, controla los procesos de
transmisión y recepción desde y hacia el SIA de datos,
clasificación y mutación. La Figura 15 muestra el
diagrama de la máquina de estados diseñada para
implementar el control.
!DATA_READY
RESET
RESET
LD_ACUM= 0
START= 0
MODO= 0
MUTA_ON= 0
RST_SORT= 0
TX
TX= 1
DATA_READY
MODO_MUTA
LOAD
MODO= 1
LD_ACUM= 1
READ_DATA=1
CARGA
COMPARA
LD_PATRON=
1
START_COMP= 1
SORT
RST= 0
READY= 1
Figura 13. Diagrama de Bloques del módulo MUTA
CONTEO
SORTINI
El REGISTRO MUTADOR, se encarga de realizar la
mutación en la posición que indica el generador de
números pseudoaleatorio para generar los nuevos
patrones. El CONTROL se encarga de generar los pulsos
de reloj necesarios para activar los generadores
pseudoaleatorios, de tal forma que se produzcan el
número de mutaciones apropiadas.
La Figura 14 muestra el diagrama de la máquina de
estados diseñada para implementar el control.
!MUTA
RESET
RESET
LD= 0
CLK1= 0
CLK2= 0
GEN_CLK1
CLK1= 1
CLK2= 1
CLK3= 1
GEN_CLK3
CLK3= 1
DOWN1
DOWN2
GEN_CLK2
Figura 15. Máquina de estado empleada para el bloque
CONTROL.
Una vez se activa el reset global del sistema, el control
inicializa los demás bloques asignando a las señales de la
UART (RST, READ_DATA y START) un nivel lógico
bajo. El control se encarga de inicializar los demás
bloques. Note que si no se realizara la interfaz entre el
computador y la FPGA, éste control no sería necesario,
cumpliendo así con los principios del Sistema inmune
(carencia de control central).
7. CONCLUSIONES
LD= 1
EN= 1
CLK3= 0
CLK2= 0
CLK3= 0
!PERFECT
MUTA
LOAD
SAL
PERFECT
INIT= 1
RST_SORT= 1
DIR= 1
CLK1= 0
CLK2= 0
CLK3= 0
CLK2= 1
CLK3= 1
Figura 14. Máquina de estado empleada para controlar el
bloque MUTA.
El Sistema Inmune Artificial es un dispositivo adaptativo
con memoria, inspirado en la teoría del Sistema Inmune
y en la observación de sus principios y modelos. Como
puede aprender y posee memoria nos brinda una
descripción detallada del medio en el cual se desenvolvía,
capacidad que carecen otros sistemas computacionales.
Este artículo muestra las ventajas la gran versatilidad de
este tipo de sistemas, lo cual los convierte en una
herramienta computacional poderosa. Se empleo un
FPGA debido a su procesamiento paralelo y enorme
versatilidad, logrando la solución en unos pocos ciclos de
reloj. Se mostró además las ventajas del empleo de los
SIAs en la resolución de problemas, con el fin de
estimular su estudio y su aplicación en diversos
problemas que puedan aprovechar las características que
posee el Sistema Inmune.
El sistema presentado es muy flexible permitiendo no sólo
la solución del problema descrito en éste artículo, sino de
otros problemas en ingeniería como detección de fallas.
Nuestra implementación se basó en la idea de desarrollar
un dispositivo con procesamiento en paralelo sacrificando
espacio (número de compuertas) en el dispositivo
empleado. Se recomienda utilizar una arquitectura
software-hardware en la cual se dividan las tareas. Las
tareas que requieran procesamiento rápido serán
implementadas en hardware mientras las restantes se
implementarán en software.
8. REFERENCIAS
[1] L. Castro, J. Timmis, Articial inmune systems: A new
computational intelligence approach, Springer, Inglaterra,
2002.
[2] H. Velez, J. Borrero, J restrepo, A. Restrepo, Fundamentos
de medicina. Hematología, Coorporación para investigaciones
biológicas, Medellín, 1981.
[3] E. Iañez, “Curso de inmunología general”. Online :
fai.unne.edu.ar/inmunologiaacademic
[4] J. Sepúlveda, C. Camargo, A. Delgado. “Implementación de
Chip ADN en un FPGA”
Descargar