SlideShare una empresa de Scribd logo
1
Programación Genética:
Introducción y Aspectos Generales
John Sprockel
Maestría de Ingeniería de Sistemas y Computación, Universidad Javeriana
jsprockel@javeriana.edu.co
Resumen. La programación genética es una herramienta de la computación evolutiva que ha tenido un desarrollo
relativamente reciente, principalmente con base en los trabajos de Koza a finales de los años 80’s e inicios de los
90’s. A diferencia de las otras técnicas se fundamenta en la evolución de programas, un concepto llamado
inducción de programación o programación automática. Su implementación consta de cinco pasos: 1) selección
de terminales, 2) selección de las funciones, 3) identificación de la función de evaluación, 4) selección de los
parámetros del sistema y 5) selección de la condición de terminación. La estructura subyacente a la evolución es
estructurada jerárquicamente. La población inicial está compuesta de árboles de programas construidos
aleatoriamente que son llevados al proceso de evolución: evaluación, selección, reproducción, entrecruzamiento y
mutación hasta llegar a la condición de terminación.
Palabras Clave: inteligencia artificial, computación evolutiva, programación automática, inducción de
programación, árboles de decisiones.
1 Introducción
La Programación Genética es un método automático independiente del dominio para resolver problemas.
Comenzando con miles de programas de ordenador creados al azar, se aplica el principio darwiniano de la selección
natural, la recombinación (crossover), la mutación, la duplicación de genes, la supresión de genes, y ciertos
mecanismos de la biología del desarrollo. Por lo tanto, genera una población mejorada a lo largo de muchas
generaciones [1]. Tiene que ver principalmente con la programación automática. Las estructuras susceptibles de
evolución son como tal los mismos programas de computación. Puede considerarse una forma de descubrimiento de
programas o inducción de programas [2]. Comienza a partir de una declaración de alto nivel de los requisitos de un
problema y trata de producir un programa de computadora que resuelve el problema. El usuario se comunica el
problema humano de alto nivel de los estados en el sistema de programación genética mediante la realización de
ciertas medidas preparatorias.
2 Historia
Aunque se le atribuye a Koza [3] el desarrollo de la técnica, podemos observar que esta no hubiera sido posible sin
contar con los desarrollos conceptuales que lo antecedieron y son visibles en la figura 1.
2
Figura 1. Evolución histórica de los conceptos de la programación genética
3 Componentes y Pasos
Los cinco principales pasos preparatorios para la versión básica de la programación genética requiere que el usuario
humano especifique [1]:
i. El conjunto de terminales (por ejemplo, las variables independientes del problema, las funciones de
argumento cero y constantes al azar) para cada rama del programa a ser evolucionado.
ii. El conjunto de funciones primitivas para cada rama del programa a ser evolucionar.
iii. La medida de la aptitud o Fitness (explícita o implícitamente para medir la aptitud de los individuos en la
población). En otras palabras, determinar la función de evaluación.
iv. Selección de los parámetros para el control de la ejecución.
v. El criterio de terminación y el criterio para designar el resultado.
Propiedad de Clausura (Cierre)
Es un requerimiento importante. Consiste en que cada función en el conjunto de funciones debe ser capaz de aceptar
como argumento cualquier otra salida de una función y algún terminal en el conjunto terminal. Todo el conjunto de
estructuras posibles debe ser formado recursivamente de los conjuntos de función y de terminales [2].
Turing (1950-
1953)
“búsqueda
genética o
evolucionaria”
Smith (1980)
sistema de
clasificación para
encontrar
estrategias en
poker
Cramer (1985)
representación de
programas con
arboles en un
genotipo
Hicklin (1986) y
Fujiki y Dickinson
(1987) consideraron
métodos para
evolucionar
programas en LIPS.
Y Dickmanns,
Schmidhuber y
Winkklohofer (1987)
en PROLOG.
Koza (1989, 1992)
importancia de la
programación
genética para
inducción de
programas en un
amplio rango de
campos.
3
Figura 2. Procedimientos en la programación genética.
La medida de la aptitud o fitness es el mecanismo primario para la comunicación de la declaración de alto nivel de
los requisitos del problema para el sistema de programación genética. En él se especifica lo que se debe hacer.
Cuando se utiliza la programación genética para sintetizar automáticamente los programas de ordenador, los
programas suelen estar representados como raíces, los árboles de punto marcados con sucursales ordenados. El
conjunto de funciones puede consistir simplemente las funciones aritméticas ordinarias de suma, resta,
multiplicación y división, así como un operador de bifurcación condicional. Por otro lado, cuando se utiliza para
sintetizar automáticamente una estructura especializada tal como un controlador, el conjunto de funciones consta de
las funciones especializadas que forman los integradores de controladores, diferenciadores, ganancias, sumadores,
restadores, clientes potenciales, retrasos, etc. En el caso de utilizarse para sintetizar automáticamente circuitos
eléctricos, debe superar un obstáculo adicional representacional porque en los circuitos están etiquetados gráficos
cíclicos. Puede hacerlo mediante el establecimiento de una correspondencia entre los árboles del programa que
utiliza habitualmente la programación genética y los grafos etiquetados cíclicos afín a los circuitos. Se utiliza un
proceso de desarrollo para mapear los árboles en los circuitos. Este proceso de desarrollo comienza con un embrión
simple (a menudo compuesto por un único cable modificable). A continuación, desarrollar un circuito eléctrico
análogo de la aplicación progresiva de las funciones de construcción de circuitos en un árbol de alambre programa
inicial del embrión modificable (y para tener éxito modificable cables y componentes modificables).
Una revisión de Koza [1] expone que después de que el usuario ha realizado los pasos de preparación, la
programación genética ejecuta una serie de bien definidas e independientes de pasos. Específicamente, la ejecución
se inicia mediante la generación de una población inicial de composiciones (típicamente al azar) de funciones del
problema y terminales; existen varias técnicas para la inicialización de los árboles (ver figura 3). Entonces, la
programación genética iterativamente realiza los siguientes pasos secundarios (referido aquí como una generación)
en la población de los programas hasta satisfacer el criterio de terminación. En primer lugar, ejecutar cada programa
en la población y asignarle un valor de fitness.
4
Figura 3. Métodos para la inicialización de los árboles de decisión.
En segundo lugar, se crea una nueva población mediante la aplicación de los programas de las siguientes
operaciones para los individuos seleccionados en la evolución de la población. Las operaciones se aplican a los
programas seleccionados de la población con una probabilidad basada en la aptitud (con reselección permitida):
 Reproducción: Copia el programa seleccionado para la nueva población.
 Crossover: Crea un programa nuevo descendiente de la nueva población mediante la recombinación de las
piezas elegidas al azar de dos programas seleccionados. En el caso de los árboles de decisiones se describen
dos técnicas para su realización: la tradicional (ver figura 3) y la recombinación de crías.
Figura 4. Operadores de recombinación en árboles de decisión.
 Mutación: Crea un programa nuevo descendiente de la nueva población mutando aleatoriamente una parte
elegida al azar del programa seleccionado. En los árboles de decisiones se cuentan con técnicas de macro-
mutación (se selecciona un punto y se muta todo el sub-árbol a partir de esa instancia) y micro-mutación
Método de
Crecimiento
(“Grow”)
•Formas Irregulares
•Se especifica la
profundidad
máxima (Dmáx )
Método
Completo
(“full”)
• Árboles
Regulares
• Se especifíca la
misma Dmáx
Rampa
Mitad y
Mitad
•Introduce diversidad
en la pobl inicial
•Usando ambas
tecnicas
Escoger los padres
Seleccionar un sub-árbol
Intercambiar los sub-árboles
5
(solo se altera un simple nodo). En la representación lineal se selecciona una instrucción la cual se muta
puntualmente, o bien, se cambia en bloque (ver figura 4).
 Operaciones que Alteran la Arquitectura: Crea un programa nuevo descendiente de la nueva población
mediante la alteración de la arquitectura del programa, mediante la creación, duplicación o eliminación de
una subrutina, iteración del bucle, recursividad, o elemento.
A.
B.
C.
Figura 4. Representación de mutación en una representación lineal. A. Secuencia original. B. Mutación puntual en
una instrucción. C. Cambio en bloque de una secuencia de instrucciones a partir de un punto.
Finalmente, el individuo con la carrera de mejor aptitud es designado como el resultado de la ejecución. Este
resultado podría resolver (o aproximadamente solucionar) el problema.
Hay que tener en cuenta que la estructura con la cual se lleva a cabo la evolución es un programa de computador
jerárquicamente estructurado. El espacio de búsqueda son los programas válidos, los cuales pueden ser vistos como
espacios de árboles arraigados [4].
4 Presentación de un artículo de ejemplo
El trabajo de Podgorelec y Kokol [4], si bien es antiguo (publicado en 1999), se convierte en un excelente ejemplo
de la aplicación de la programación genética en la selección de la mejor herramienta, en este caso árbol de
decisiones, aplicada al diagnóstico de una enfermedad congénita cardiaca de alta prevalencia, el prolapso de la
válvula mitral.
Se tomó una población de 900 personas menores de 18 años representativas de la población de Maribor (Slovenia),
de los cuales 631 accedieron a la realización de un ecocardiograma. Se usó una población de 500 personas para el
conjunto de entrenamiento y los restantes 131 para el conjunto de pruebas. Previamente habían escogido 103
parámetros compuestos a partir de datos generales, características clínicas, de laboratorio, electrocardiograma,
imágenes y finalmente el ecocardiograma para generar con ellos el mejor árbol de decisiones de la forma tradicional
(figura 5), el cual fue comparado con un programa de decisiones automáticamente evolucionado.
X1 X2 X4 X5 X6
X1 X2 X4 X5* X6
X1 X2 X4 X8 X9
6
Figura 5. Parte del árbol de decisiones para la clasificación del prolapso mitral.
Figura 6. Parte del programa de decisiones para la clasificación del prolapso mitral.
Figura 7. Partición del espacio de descripción i) ejes paralelos en el árbol de decisiones ii) líneas oblicuas en el
programa de decisiones.
Los resultados demostraron que el programa contaba con una mayor certeza, sensibilidad y especificidad que el
árbol tradicional (ver tabla 1).
7
Tabla 1. Comparación de la complejidad entre el árbol y el programa
Si bien es insuficiente la información acerca del cómo se seleccionó la población y de cómo se diseñaron los árboles
de decisiones y los detalles de la metodología de la programación genética (terminales, funciones, fitness,
parámetros y criterios de terminación), demuestra que puede construirse y evolucionarse una estrategia para la toma
de decisiones en medicina que conlleva una mayor certeza en su ejecución.
Referencias
[1] Koza J, Keane M, Streeter M (2003). What's AI done for me lately? Genetic programming's human-competitive results.
IEEE Intelligent Systems. Vol: 18, nro 3, pp 25-31.
[2] Dumitrescu D. Evolutionary Computation, CRC Press, 2000.
[3] J.R. Koza, Genetic Programming: On the Programming of Computers by Means of Natural Selection, MIT Press, 1992
[4] Podgorelec, V., Kokol, P., & Zavrsnik, J. (1999). Medical diagnosis prediction using genetic programming (pp. 202–
207). Presented at the 12th IEEE Symposium on Computer-Based Medical Systems, 1999. Proceedings., IEEE
Comput. Soc. doi:10.1109/CBMS.1999.781271.
[5] Rusell N. Inteligencia Artificial: Un Enfoque Moderno, Prentice Hall, 2004.
[6] Jones MT. Artificial Intelligence: A Systems Approach, INFINITY SCIENCE PRESS LLC, 2008

Más contenido relacionado

La actualidad más candente

2.1 Data Mining-classification Basic concepts
2.1 Data Mining-classification Basic concepts2.1 Data Mining-classification Basic concepts
2.1 Data Mining-classification Basic concepts
Krish_ver2
 
Ensemble Learning.pptx
Ensemble Learning.pptxEnsemble Learning.pptx
Ensemble Learning.pptx
piyushkumar222909
 
Cross-validation Tutorial: What, how and which?
Cross-validation Tutorial: What, how and which?Cross-validation Tutorial: What, how and which?
Cross-validation Tutorial: What, how and which?
Pradeep Redddy Raamana
 
Machine Learning Algorithm - Decision Trees
Machine Learning Algorithm - Decision Trees Machine Learning Algorithm - Decision Trees
Machine Learning Algorithm - Decision Trees
Kush Kulshrestha
 
Clustering - Machine Learning Techniques
Clustering - Machine Learning TechniquesClustering - Machine Learning Techniques
Clustering - Machine Learning Techniques
Kush Kulshrestha
 
Logistic Regression | Logistic Regression In Python | Machine Learning Algori...
Logistic Regression | Logistic Regression In Python | Machine Learning Algori...Logistic Regression | Logistic Regression In Python | Machine Learning Algori...
Logistic Regression | Logistic Regression In Python | Machine Learning Algori...
Simplilearn
 
(gramatica atribuida)
(gramatica atribuida)(gramatica atribuida)
(gramatica atribuida)
Jp-cell Reparaciones
 
Minimax paraconecta4
Minimax paraconecta4Minimax paraconecta4
Minimax paraconecta4EL ESTAFADOR
 
Chapter 4 Classification
Chapter 4 ClassificationChapter 4 Classification
Chapter 4 Classification
Khalid Elshafie
 
Machine learning module 2
Machine learning module 2Machine learning module 2
Machine learning module 2
Gokulks007
 
Noughts and crosses breakdown
Noughts and crosses breakdownNoughts and crosses breakdown
Noughts and crosses breakdownLucy Taylor
 
One R (1R) Algorithm
One R (1R) AlgorithmOne R (1R) Algorithm
One R (1R) Algorithm
MLCollab
 
Decision Tree - C4.5&CART
Decision Tree - C4.5&CARTDecision Tree - C4.5&CART
Decision Tree - C4.5&CARTXueping Peng
 
3. Representación del conocimiento y razonamiento.
3. Representación del conocimiento y razonamiento.3. Representación del conocimiento y razonamiento.
3. Representación del conocimiento y razonamiento.
Humberto Chalate Jorge
 
Random forest and decision tree
Random forest and decision treeRandom forest and decision tree
Random forest and decision tree
AAKANKSHA JAIN
 
Decision tree
Decision treeDecision tree
Decision tree
Ami_Surati
 
04 Classification in Data Mining
04 Classification in Data Mining04 Classification in Data Mining
04 Classification in Data Mining
Valerii Klymchuk
 
Decision tree induction \ Decision Tree Algorithm with Example| Data science
Decision tree induction \ Decision Tree Algorithm with Example| Data scienceDecision tree induction \ Decision Tree Algorithm with Example| Data science
Decision tree induction \ Decision Tree Algorithm with Example| Data science
MaryamRehman6
 
Ensemble learning
Ensemble learningEnsemble learning
Ensemble learning
Mustafa Sherazi
 

La actualidad más candente (20)

2.1 Data Mining-classification Basic concepts
2.1 Data Mining-classification Basic concepts2.1 Data Mining-classification Basic concepts
2.1 Data Mining-classification Basic concepts
 
Ensemble Learning.pptx
Ensemble Learning.pptxEnsemble Learning.pptx
Ensemble Learning.pptx
 
Cross-validation Tutorial: What, how and which?
Cross-validation Tutorial: What, how and which?Cross-validation Tutorial: What, how and which?
Cross-validation Tutorial: What, how and which?
 
Machine Learning Algorithm - Decision Trees
Machine Learning Algorithm - Decision Trees Machine Learning Algorithm - Decision Trees
Machine Learning Algorithm - Decision Trees
 
Clustering - Machine Learning Techniques
Clustering - Machine Learning TechniquesClustering - Machine Learning Techniques
Clustering - Machine Learning Techniques
 
Logistic Regression | Logistic Regression In Python | Machine Learning Algori...
Logistic Regression | Logistic Regression In Python | Machine Learning Algori...Logistic Regression | Logistic Regression In Python | Machine Learning Algori...
Logistic Regression | Logistic Regression In Python | Machine Learning Algori...
 
(gramatica atribuida)
(gramatica atribuida)(gramatica atribuida)
(gramatica atribuida)
 
Minimax paraconecta4
Minimax paraconecta4Minimax paraconecta4
Minimax paraconecta4
 
Chapter 4 Classification
Chapter 4 ClassificationChapter 4 Classification
Chapter 4 Classification
 
Machine learning module 2
Machine learning module 2Machine learning module 2
Machine learning module 2
 
Noughts and crosses breakdown
Noughts and crosses breakdownNoughts and crosses breakdown
Noughts and crosses breakdown
 
One R (1R) Algorithm
One R (1R) AlgorithmOne R (1R) Algorithm
One R (1R) Algorithm
 
Decision Tree - C4.5&CART
Decision Tree - C4.5&CARTDecision Tree - C4.5&CART
Decision Tree - C4.5&CART
 
3. Representación del conocimiento y razonamiento.
3. Representación del conocimiento y razonamiento.3. Representación del conocimiento y razonamiento.
3. Representación del conocimiento y razonamiento.
 
Random forest and decision tree
Random forest and decision treeRandom forest and decision tree
Random forest and decision tree
 
Decision tree
Decision treeDecision tree
Decision tree
 
04 Classification in Data Mining
04 Classification in Data Mining04 Classification in Data Mining
04 Classification in Data Mining
 
Decision tree induction \ Decision Tree Algorithm with Example| Data science
Decision tree induction \ Decision Tree Algorithm with Example| Data scienceDecision tree induction \ Decision Tree Algorithm with Example| Data science
Decision tree induction \ Decision Tree Algorithm with Example| Data science
 
Hierachical clustering
Hierachical clusteringHierachical clustering
Hierachical clustering
 
Ensemble learning
Ensemble learningEnsemble learning
Ensemble learning
 

Similar a Programación Genética: Introducción y Aspectos Generales

Programación
ProgramaciónProgramación
Programación
belenramiz
 
Diego ochoaguerrero nelsondavidluna
Diego ochoaguerrero nelsondavidlunaDiego ochoaguerrero nelsondavidluna
Diego ochoaguerrero nelsondavidlunaDiǝgo Fǝr
 
1 er practico de programación
1 er practico de programación1 er practico de programación
1 er practico de programación
nela333
 
Lec11 metodos
Lec11 metodosLec11 metodos
Lec11 metodos
htmrk
 
ALGORITMOS
ALGORITMOS ALGORITMOS
Presentación trabajo programación
Presentación trabajo programaciónPresentación trabajo programación
Presentación trabajo programaciónionurrutia
 
Presentación1.pptx
Presentación1.pptxPresentación1.pptx
Presentación1.pptx
HERBERTHFERNANDOMORA
 
ALGORITMOS y ejemplo en java.pptx
ALGORITMOS  y ejemplo en java.pptxALGORITMOS  y ejemplo en java.pptx
ALGORITMOS y ejemplo en java.pptx
ArmandoTolentinoTruj
 
Fases de resolucion de problemas
Fases de resolucion de problemasFases de resolucion de problemas
Fases de resolucion de problemas
ncrmax
 
Programación Modular y Estructyrada
Programación Modular y EstructyradaProgramación Modular y Estructyrada
Programación Modular y Estructyradaguestefc95b
 
Algoritmos libro 6
Algoritmos  libro 6Algoritmos  libro 6
Algoritmos libro 6
desi2907
 
Paradigmas de programación
Paradigmas de programaciónParadigmas de programación
Paradigmas de programaciónMay Ibarra
 
Sistemas, redes y riesgos en los computadores
Sistemas, redes y riesgos en los computadoresSistemas, redes y riesgos en los computadores
Sistemas, redes y riesgos en los computadores
metalvash
 
Fundamentos de programacion ss14
Fundamentos de programacion ss14Fundamentos de programacion ss14
Fundamentos de programacion ss14
Educaciontodos
 
Fases para la elaboración de un programa informático
Fases para la elaboración de un programa informáticoFases para la elaboración de un programa informático
Fases para la elaboración de un programa informático
MaryRomero77
 
Fases para la elaboración de un programa informático
Fases para la elaboración de un programa informáticoFases para la elaboración de un programa informático
Fases para la elaboración de un programa informático
MaryRomero77
 
Algoritmos geneticos
Algoritmos geneticosAlgoritmos geneticos
Algoritmos geneticosYAn_dy
 
Inteligencia artificial avanzada
Inteligencia artificial avanzadaInteligencia artificial avanzada
Inteligencia artificial avanzada
Diego Guamán
 

Similar a Programación Genética: Introducción y Aspectos Generales (20)

Programación
ProgramaciónProgramación
Programación
 
Diego ochoaguerrero nelsondavidluna
Diego ochoaguerrero nelsondavidlunaDiego ochoaguerrero nelsondavidluna
Diego ochoaguerrero nelsondavidluna
 
1 er practico de programación
1 er practico de programación1 er practico de programación
1 er practico de programación
 
Lec11 metodos
Lec11 metodosLec11 metodos
Lec11 metodos
 
ALGORITMOS
ALGORITMOS ALGORITMOS
ALGORITMOS
 
Presentación trabajo programación
Presentación trabajo programaciónPresentación trabajo programación
Presentación trabajo programación
 
Presentación1.pptx
Presentación1.pptxPresentación1.pptx
Presentación1.pptx
 
ALGORITMOS y ejemplo en java.pptx
ALGORITMOS  y ejemplo en java.pptxALGORITMOS  y ejemplo en java.pptx
ALGORITMOS y ejemplo en java.pptx
 
Fases de resolucion de problemas
Fases de resolucion de problemasFases de resolucion de problemas
Fases de resolucion de problemas
 
Programación Modular y Estructyrada
Programación Modular y EstructyradaProgramación Modular y Estructyrada
Programación Modular y Estructyrada
 
Paradigmas
ParadigmasParadigmas
Paradigmas
 
Maps
MapsMaps
Maps
 
Algoritmos libro 6
Algoritmos  libro 6Algoritmos  libro 6
Algoritmos libro 6
 
Paradigmas de programación
Paradigmas de programaciónParadigmas de programación
Paradigmas de programación
 
Sistemas, redes y riesgos en los computadores
Sistemas, redes y riesgos en los computadoresSistemas, redes y riesgos en los computadores
Sistemas, redes y riesgos en los computadores
 
Fundamentos de programacion ss14
Fundamentos de programacion ss14Fundamentos de programacion ss14
Fundamentos de programacion ss14
 
Fases para la elaboración de un programa informático
Fases para la elaboración de un programa informáticoFases para la elaboración de un programa informático
Fases para la elaboración de un programa informático
 
Fases para la elaboración de un programa informático
Fases para la elaboración de un programa informáticoFases para la elaboración de un programa informático
Fases para la elaboración de un programa informático
 
Algoritmos geneticos
Algoritmos geneticosAlgoritmos geneticos
Algoritmos geneticos
 
Inteligencia artificial avanzada
Inteligencia artificial avanzadaInteligencia artificial avanzada
Inteligencia artificial avanzada
 

Más de John Diaz

Boosting presentación 19 05 14
Boosting presentación 19 05 14Boosting presentación 19 05 14
Boosting presentación 19 05 14
John Diaz
 
Modelos Ocultos de Márkov presentación
Modelos Ocultos de Márkov presentaciónModelos Ocultos de Márkov presentación
Modelos Ocultos de Márkov presentación
John Diaz
 
USO DE LA COMPUTACIÓN PERMISIVA, UBICUA Y MÓVIL EN EL CUIDADO DE LA SALUD
USO DE LA COMPUTACIÓN PERMISIVA, UBICUA Y MÓVIL  EN EL CUIDADO DE LA SALUD USO DE LA COMPUTACIÓN PERMISIVA, UBICUA Y MÓVIL  EN EL CUIDADO DE LA SALUD
USO DE LA COMPUTACIÓN PERMISIVA, UBICUA Y MÓVIL EN EL CUIDADO DE LA SALUD John Diaz
 
Sistemas de Soporte a las Decisiones Clínicas basado en Inteligencia Artifici...
Sistemas de Soporte a las Decisiones Clínicas basado en Inteligencia Artifici...Sistemas de Soporte a las Decisiones Clínicas basado en Inteligencia Artifici...
Sistemas de Soporte a las Decisiones Clínicas basado en Inteligencia Artifici...
John Diaz
 
Sistemas Híbridos centrados en la Lógica Difusa para el Diagnóstico de la enf...
Sistemas Híbridos centrados en la Lógica Difusa para el Diagnóstico de la enf...Sistemas Híbridos centrados en la Lógica Difusa para el Diagnóstico de la enf...
Sistemas Híbridos centrados en la Lógica Difusa para el Diagnóstico de la enf...
John Diaz
 
Aproximación Organizacional para Programación Orientada a Agentes: Introducci...
Aproximación Organizacional para Programación Orientada a Agentes: Introducci...Aproximación Organizacional para Programación Orientada a Agentes: Introducci...
Aproximación Organizacional para Programación Orientada a Agentes: Introducci...
John Diaz
 
Aproximación Organizacional para Programación Orientada a Agentes: Introducci...
Aproximación Organizacional para Programación Orientada a Agentes: Introducci...Aproximación Organizacional para Programación Orientada a Agentes: Introducci...
Aproximación Organizacional para Programación Orientada a Agentes: Introducci...
John Diaz
 
Conflictos argumentación resumen john sprockel
Conflictos argumentación resumen   john sprockelConflictos argumentación resumen   john sprockel
Conflictos argumentación resumen john sprockel
John Diaz
 
negociación basada en la argumentación en sistemas multiagentes
negociación basada en la argumentación en sistemas multiagentesnegociación basada en la argumentación en sistemas multiagentes
negociación basada en la argumentación en sistemas multiagentes
John Diaz
 

Más de John Diaz (9)

Boosting presentación 19 05 14
Boosting presentación 19 05 14Boosting presentación 19 05 14
Boosting presentación 19 05 14
 
Modelos Ocultos de Márkov presentación
Modelos Ocultos de Márkov presentaciónModelos Ocultos de Márkov presentación
Modelos Ocultos de Márkov presentación
 
USO DE LA COMPUTACIÓN PERMISIVA, UBICUA Y MÓVIL EN EL CUIDADO DE LA SALUD
USO DE LA COMPUTACIÓN PERMISIVA, UBICUA Y MÓVIL  EN EL CUIDADO DE LA SALUD USO DE LA COMPUTACIÓN PERMISIVA, UBICUA Y MÓVIL  EN EL CUIDADO DE LA SALUD
USO DE LA COMPUTACIÓN PERMISIVA, UBICUA Y MÓVIL EN EL CUIDADO DE LA SALUD
 
Sistemas de Soporte a las Decisiones Clínicas basado en Inteligencia Artifici...
Sistemas de Soporte a las Decisiones Clínicas basado en Inteligencia Artifici...Sistemas de Soporte a las Decisiones Clínicas basado en Inteligencia Artifici...
Sistemas de Soporte a las Decisiones Clínicas basado en Inteligencia Artifici...
 
Sistemas Híbridos centrados en la Lógica Difusa para el Diagnóstico de la enf...
Sistemas Híbridos centrados en la Lógica Difusa para el Diagnóstico de la enf...Sistemas Híbridos centrados en la Lógica Difusa para el Diagnóstico de la enf...
Sistemas Híbridos centrados en la Lógica Difusa para el Diagnóstico de la enf...
 
Aproximación Organizacional para Programación Orientada a Agentes: Introducci...
Aproximación Organizacional para Programación Orientada a Agentes: Introducci...Aproximación Organizacional para Programación Orientada a Agentes: Introducci...
Aproximación Organizacional para Programación Orientada a Agentes: Introducci...
 
Aproximación Organizacional para Programación Orientada a Agentes: Introducci...
Aproximación Organizacional para Programación Orientada a Agentes: Introducci...Aproximación Organizacional para Programación Orientada a Agentes: Introducci...
Aproximación Organizacional para Programación Orientada a Agentes: Introducci...
 
Conflictos argumentación resumen john sprockel
Conflictos argumentación resumen   john sprockelConflictos argumentación resumen   john sprockel
Conflictos argumentación resumen john sprockel
 
negociación basada en la argumentación en sistemas multiagentes
negociación basada en la argumentación en sistemas multiagentesnegociación basada en la argumentación en sistemas multiagentes
negociación basada en la argumentación en sistemas multiagentes
 

Último

leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
Leidyfuentes19
 
biogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectosbiogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectos
Luis Enrique Zafra Haro
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clases
PABLOCESARGARZONBENI
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestre
rafaelsalazar0615
 
trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
zoecaicedosalazar
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
cdraco
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Telefónica
 
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
marianabz2403
 
Diagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfDiagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdf
ManuelCampos464987
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
vazquezgarciajesusma
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
cj3806354
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
Emilio Casbas
 
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
thomasdcroz38
 
Conceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. TecnologíaConceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. Tecnología
coloradxmaria
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
CrystalRomero18
 
Alan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentaciónAlan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentación
JuanPrez962115
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
jjfch3110
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
raquelariza02
 
Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
SamuelRamirez83524
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.
AlejandraCasallas7
 

Último (20)

leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
 
biogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectosbiogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectos
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clases
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestre
 
trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
 
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
 
Diagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfDiagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdf
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
 
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
 
Conceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. TecnologíaConceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. Tecnología
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
 
Alan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentaciónAlan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentación
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
 
Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.
 

Programación Genética: Introducción y Aspectos Generales

  • 1. 1 Programación Genética: Introducción y Aspectos Generales John Sprockel Maestría de Ingeniería de Sistemas y Computación, Universidad Javeriana jsprockel@javeriana.edu.co Resumen. La programación genética es una herramienta de la computación evolutiva que ha tenido un desarrollo relativamente reciente, principalmente con base en los trabajos de Koza a finales de los años 80’s e inicios de los 90’s. A diferencia de las otras técnicas se fundamenta en la evolución de programas, un concepto llamado inducción de programación o programación automática. Su implementación consta de cinco pasos: 1) selección de terminales, 2) selección de las funciones, 3) identificación de la función de evaluación, 4) selección de los parámetros del sistema y 5) selección de la condición de terminación. La estructura subyacente a la evolución es estructurada jerárquicamente. La población inicial está compuesta de árboles de programas construidos aleatoriamente que son llevados al proceso de evolución: evaluación, selección, reproducción, entrecruzamiento y mutación hasta llegar a la condición de terminación. Palabras Clave: inteligencia artificial, computación evolutiva, programación automática, inducción de programación, árboles de decisiones. 1 Introducción La Programación Genética es un método automático independiente del dominio para resolver problemas. Comenzando con miles de programas de ordenador creados al azar, se aplica el principio darwiniano de la selección natural, la recombinación (crossover), la mutación, la duplicación de genes, la supresión de genes, y ciertos mecanismos de la biología del desarrollo. Por lo tanto, genera una población mejorada a lo largo de muchas generaciones [1]. Tiene que ver principalmente con la programación automática. Las estructuras susceptibles de evolución son como tal los mismos programas de computación. Puede considerarse una forma de descubrimiento de programas o inducción de programas [2]. Comienza a partir de una declaración de alto nivel de los requisitos de un problema y trata de producir un programa de computadora que resuelve el problema. El usuario se comunica el problema humano de alto nivel de los estados en el sistema de programación genética mediante la realización de ciertas medidas preparatorias. 2 Historia Aunque se le atribuye a Koza [3] el desarrollo de la técnica, podemos observar que esta no hubiera sido posible sin contar con los desarrollos conceptuales que lo antecedieron y son visibles en la figura 1.
  • 2. 2 Figura 1. Evolución histórica de los conceptos de la programación genética 3 Componentes y Pasos Los cinco principales pasos preparatorios para la versión básica de la programación genética requiere que el usuario humano especifique [1]: i. El conjunto de terminales (por ejemplo, las variables independientes del problema, las funciones de argumento cero y constantes al azar) para cada rama del programa a ser evolucionado. ii. El conjunto de funciones primitivas para cada rama del programa a ser evolucionar. iii. La medida de la aptitud o Fitness (explícita o implícitamente para medir la aptitud de los individuos en la población). En otras palabras, determinar la función de evaluación. iv. Selección de los parámetros para el control de la ejecución. v. El criterio de terminación y el criterio para designar el resultado. Propiedad de Clausura (Cierre) Es un requerimiento importante. Consiste en que cada función en el conjunto de funciones debe ser capaz de aceptar como argumento cualquier otra salida de una función y algún terminal en el conjunto terminal. Todo el conjunto de estructuras posibles debe ser formado recursivamente de los conjuntos de función y de terminales [2]. Turing (1950- 1953) “búsqueda genética o evolucionaria” Smith (1980) sistema de clasificación para encontrar estrategias en poker Cramer (1985) representación de programas con arboles en un genotipo Hicklin (1986) y Fujiki y Dickinson (1987) consideraron métodos para evolucionar programas en LIPS. Y Dickmanns, Schmidhuber y Winkklohofer (1987) en PROLOG. Koza (1989, 1992) importancia de la programación genética para inducción de programas en un amplio rango de campos.
  • 3. 3 Figura 2. Procedimientos en la programación genética. La medida de la aptitud o fitness es el mecanismo primario para la comunicación de la declaración de alto nivel de los requisitos del problema para el sistema de programación genética. En él se especifica lo que se debe hacer. Cuando se utiliza la programación genética para sintetizar automáticamente los programas de ordenador, los programas suelen estar representados como raíces, los árboles de punto marcados con sucursales ordenados. El conjunto de funciones puede consistir simplemente las funciones aritméticas ordinarias de suma, resta, multiplicación y división, así como un operador de bifurcación condicional. Por otro lado, cuando se utiliza para sintetizar automáticamente una estructura especializada tal como un controlador, el conjunto de funciones consta de las funciones especializadas que forman los integradores de controladores, diferenciadores, ganancias, sumadores, restadores, clientes potenciales, retrasos, etc. En el caso de utilizarse para sintetizar automáticamente circuitos eléctricos, debe superar un obstáculo adicional representacional porque en los circuitos están etiquetados gráficos cíclicos. Puede hacerlo mediante el establecimiento de una correspondencia entre los árboles del programa que utiliza habitualmente la programación genética y los grafos etiquetados cíclicos afín a los circuitos. Se utiliza un proceso de desarrollo para mapear los árboles en los circuitos. Este proceso de desarrollo comienza con un embrión simple (a menudo compuesto por un único cable modificable). A continuación, desarrollar un circuito eléctrico análogo de la aplicación progresiva de las funciones de construcción de circuitos en un árbol de alambre programa inicial del embrión modificable (y para tener éxito modificable cables y componentes modificables). Una revisión de Koza [1] expone que después de que el usuario ha realizado los pasos de preparación, la programación genética ejecuta una serie de bien definidas e independientes de pasos. Específicamente, la ejecución se inicia mediante la generación de una población inicial de composiciones (típicamente al azar) de funciones del problema y terminales; existen varias técnicas para la inicialización de los árboles (ver figura 3). Entonces, la programación genética iterativamente realiza los siguientes pasos secundarios (referido aquí como una generación) en la población de los programas hasta satisfacer el criterio de terminación. En primer lugar, ejecutar cada programa en la población y asignarle un valor de fitness.
  • 4. 4 Figura 3. Métodos para la inicialización de los árboles de decisión. En segundo lugar, se crea una nueva población mediante la aplicación de los programas de las siguientes operaciones para los individuos seleccionados en la evolución de la población. Las operaciones se aplican a los programas seleccionados de la población con una probabilidad basada en la aptitud (con reselección permitida):  Reproducción: Copia el programa seleccionado para la nueva población.  Crossover: Crea un programa nuevo descendiente de la nueva población mediante la recombinación de las piezas elegidas al azar de dos programas seleccionados. En el caso de los árboles de decisiones se describen dos técnicas para su realización: la tradicional (ver figura 3) y la recombinación de crías. Figura 4. Operadores de recombinación en árboles de decisión.  Mutación: Crea un programa nuevo descendiente de la nueva población mutando aleatoriamente una parte elegida al azar del programa seleccionado. En los árboles de decisiones se cuentan con técnicas de macro- mutación (se selecciona un punto y se muta todo el sub-árbol a partir de esa instancia) y micro-mutación Método de Crecimiento (“Grow”) •Formas Irregulares •Se especifica la profundidad máxima (Dmáx ) Método Completo (“full”) • Árboles Regulares • Se especifíca la misma Dmáx Rampa Mitad y Mitad •Introduce diversidad en la pobl inicial •Usando ambas tecnicas Escoger los padres Seleccionar un sub-árbol Intercambiar los sub-árboles
  • 5. 5 (solo se altera un simple nodo). En la representación lineal se selecciona una instrucción la cual se muta puntualmente, o bien, se cambia en bloque (ver figura 4).  Operaciones que Alteran la Arquitectura: Crea un programa nuevo descendiente de la nueva población mediante la alteración de la arquitectura del programa, mediante la creación, duplicación o eliminación de una subrutina, iteración del bucle, recursividad, o elemento. A. B. C. Figura 4. Representación de mutación en una representación lineal. A. Secuencia original. B. Mutación puntual en una instrucción. C. Cambio en bloque de una secuencia de instrucciones a partir de un punto. Finalmente, el individuo con la carrera de mejor aptitud es designado como el resultado de la ejecución. Este resultado podría resolver (o aproximadamente solucionar) el problema. Hay que tener en cuenta que la estructura con la cual se lleva a cabo la evolución es un programa de computador jerárquicamente estructurado. El espacio de búsqueda son los programas válidos, los cuales pueden ser vistos como espacios de árboles arraigados [4]. 4 Presentación de un artículo de ejemplo El trabajo de Podgorelec y Kokol [4], si bien es antiguo (publicado en 1999), se convierte en un excelente ejemplo de la aplicación de la programación genética en la selección de la mejor herramienta, en este caso árbol de decisiones, aplicada al diagnóstico de una enfermedad congénita cardiaca de alta prevalencia, el prolapso de la válvula mitral. Se tomó una población de 900 personas menores de 18 años representativas de la población de Maribor (Slovenia), de los cuales 631 accedieron a la realización de un ecocardiograma. Se usó una población de 500 personas para el conjunto de entrenamiento y los restantes 131 para el conjunto de pruebas. Previamente habían escogido 103 parámetros compuestos a partir de datos generales, características clínicas, de laboratorio, electrocardiograma, imágenes y finalmente el ecocardiograma para generar con ellos el mejor árbol de decisiones de la forma tradicional (figura 5), el cual fue comparado con un programa de decisiones automáticamente evolucionado. X1 X2 X4 X5 X6 X1 X2 X4 X5* X6 X1 X2 X4 X8 X9
  • 6. 6 Figura 5. Parte del árbol de decisiones para la clasificación del prolapso mitral. Figura 6. Parte del programa de decisiones para la clasificación del prolapso mitral. Figura 7. Partición del espacio de descripción i) ejes paralelos en el árbol de decisiones ii) líneas oblicuas en el programa de decisiones. Los resultados demostraron que el programa contaba con una mayor certeza, sensibilidad y especificidad que el árbol tradicional (ver tabla 1).
  • 7. 7 Tabla 1. Comparación de la complejidad entre el árbol y el programa Si bien es insuficiente la información acerca del cómo se seleccionó la población y de cómo se diseñaron los árboles de decisiones y los detalles de la metodología de la programación genética (terminales, funciones, fitness, parámetros y criterios de terminación), demuestra que puede construirse y evolucionarse una estrategia para la toma de decisiones en medicina que conlleva una mayor certeza en su ejecución. Referencias [1] Koza J, Keane M, Streeter M (2003). What's AI done for me lately? Genetic programming's human-competitive results. IEEE Intelligent Systems. Vol: 18, nro 3, pp 25-31. [2] Dumitrescu D. Evolutionary Computation, CRC Press, 2000. [3] J.R. Koza, Genetic Programming: On the Programming of Computers by Means of Natural Selection, MIT Press, 1992 [4] Podgorelec, V., Kokol, P., & Zavrsnik, J. (1999). Medical diagnosis prediction using genetic programming (pp. 202– 207). Presented at the 12th IEEE Symposium on Computer-Based Medical Systems, 1999. Proceedings., IEEE Comput. Soc. doi:10.1109/CBMS.1999.781271. [5] Rusell N. Inteligencia Artificial: Un Enfoque Moderno, Prentice Hall, 2004. [6] Jones MT. Artificial Intelligence: A Systems Approach, INFINITY SCIENCE PRESS LLC, 2008