Articulo de referencia

Programación genética

La programación genética ( GP ) es un algoritmo evolutivo , una técnica de inteligencia artificial que imita la evolución natural y que opera sobre una población de programas. A...

La programación genética ( GP ) es un algoritmo evolutivo , una técnica de inteligencia artificial que imita la evolución natural y que opera sobre una población de programas. Aplica los operadores genéticos de selección según una medida de aptitud predefinida , mutación y cruce .

La operación de cruce implica intercambiar partes específicas de pares seleccionados (padres) para producir descendencia nueva y diferente que pasa a formar parte de la nueva generación de programas. Algunos programas no seleccionados para la reproducción se copian de la generación actual a la nueva. La mutación implica la sustitución de una parte aleatoria de un programa por otra parte aleatoria del mismo. Posteriormente, la selección y otras operaciones se aplican recursivamente a la nueva generación de programas.

Por lo general, los miembros de cada nueva generación son, en promedio, más aptos que los de la generación anterior, y el mejor programa de la generación suele ser superior a los mejores programas de generaciones anteriores. La evolución suele finalizar cuando algún programa individual alcanza un nivel de competencia o aptitud predefinido.

Puede ocurrir, y de hecho suele ocurrir, que una ejecución particular del algoritmo converja prematuramente a un máximo local que no sea una solución óptima global ni siquiera una buena solución. Generalmente, se requieren múltiples ejecuciones (de docenas a cientos) para obtener un resultado muy bueno. También puede ser necesario contar con un tamaño de población inicial grande y una variabilidad de individuos para evitar problemas.

Historia

El primer registro de la propuesta de desarrollar programas se remonta probablemente a Alan Turing en 1950 en " Computing Machinery and Intelligence ". Transcurrieron 25 años antes de que la publicación de "Adaptation in Natural and Artificial Systems" de John Holland estableciera los fundamentos teóricos y empíricos de la ciencia. En 1981, Richard Forsyth demostró la evolución exitosa de pequeños programas, representados como árboles, para clasificar pruebas de escenas del crimen para el Ministerio del Interior del Reino Unido. [ 1 ]

Aunque la idea de la evolución de programas, inicialmente en el lenguaje de programación Lisp , era común entre los estudiantes de John Holland, [ 2 ] no fue hasta que organizaron la primera conferencia sobre algoritmos genéticos (AG) en Pittsburgh que Nichael Cramer [ 3 ] publicó programas evolucionados en dos lenguajes especialmente diseñados, que incluían la primera formulación de la programación genética moderna "basada en árboles" (es decir, lenguajes procedimentales organizados en estructuras basadas en árboles y operados por operadores de AG definidos adecuadamente). En 1988, John Koza (también estudiante de doctorado de John Holland) patentó su invención de un AG para la evolución de programas. [ 4 ] Posteriormente, se publicó en la Conferencia Internacional Conjunta sobre Inteligencia Artificial IJCAI-89. [ 5 ]

Koza continuó con 205 publicaciones sobre "programación genética", un término acuñado por David Goldberg, también estudiante de doctorado de John Holland. [ 6 ] Sin embargo, es la serie de 4 libros de Koza, que comenzó en 1992 [ 7 ] con videos adjuntos, [ 8 ] la que realmente estableció la GP. Posteriormente, hubo una enorme expansión del número de publicaciones con la Bibliografía de Programación Genética, superando las 10 000 entradas. [ 9 ] En 2010, Koza [ 10 ] enumeró 77 resultados donde la programación genética fue competitiva con la humana.

La desviación de la GP de las representaciones rígidas y de longitud fija típicas de los primeros modelos de GA no carecía por completo de precedentes. Los primeros trabajos sobre representaciones de longitud variable sentaron las bases. Un ejemplo notable son los algoritmos genéticos desordenados, que introdujeron cromosomas irregulares de longitud variable para abordar la disrupción de los bloques de construcción y el sesgo posicional en los GA estándar. [ 11 ] Otro precursor fue la programación de trayectorias de robots, donde las representaciones del genoma codificaban instrucciones de programa para movimientos robóticos: estructuras inherentemente variables en longitud. [ 12 ] Incluso antes, Cavicchio propuso representaciones de longitud no fija en una tesis doctoral, donde exploró la búsqueda adaptativa mediante evolución simulada. Su trabajo proporcionó ideas fundamentales para estructuras de programas flexibles. [ 13 ]

En 1996, Koza inició la conferencia anual de Programación Genética, [ 14 ] a la que siguió en 1998 la conferencia anual EuroGP, [ 15 ] y el primer libro [ 16 ] de una serie de GP editada por Koza. En 1998 también se publicó el primer libro de texto de GP. [ 17 ] La GP continuó prosperando, dando lugar a la primera revista especializada en GP [ 18 ] y tres años después (2003) Rick Riolo estableció el taller anual de Teoría y Práctica de la Programación Genética (GPTP). [ 19 ] [ 20 ] Se siguen publicando artículos sobre programación genética en diversas conferencias y revistas afines. Hoy en día existen diecinueve libros de GP, incluyendo varios para estudiantes. [ 17 ]

Trabajo fundamental en medicina general

Los primeros trabajos que sentaron las bases para los temas y aplicaciones actuales de la investigación en programación genética son diversos e incluyen síntesis y reparación de software, modelado predictivo, minería de datos, [ 32 ] modelado financiero, [ 33 ] sensores blandos, [ 34 ] diseño, [ 35 ] y procesamiento de imágenes. [ 36 ] Las aplicaciones en algunas áreas, como el diseño, a menudo utilizan representaciones intermedias, [ 37 ] como la codificación celular de Fred Gruau. [ 38 ] La adopción industrial ha sido significativa en varias áreas, incluyendo finanzas, la industria química, bioinformática [ 39 ] [ 40 ] y la industria siderúrgica. [ 41 ]

Métodos

Representación del programa

Una función representada como una estructura de árbol.

La programación genética (PG) desarrolla programas informáticos, tradicionalmente representados en memoria como estructuras de árbol . [ 42 ] Los árboles se pueden evaluar fácilmente de forma recursiva. Cada nodo interno tiene una función operadora y cada nodo terminal tiene un operando, lo que facilita el desarrollo y la evaluación de expresiones matemáticas. Por lo tanto, tradicionalmente la PG favorece el uso de lenguajes de programación que incorporan de forma natural estructuras de árbol (por ejemplo, Lisp ; otros lenguajes de programación funcional también son adecuados).

Se han sugerido e implementado con éxito representaciones no arbóreas, como la programación genética lineal , que tal vez se adapte a los lenguajes imperativos más tradicionales . [ 43 ] [ 44 ] El software comercial GP Discipulus utiliza la inducción automática de código máquina binario ("AIM") [ 45 ] para lograr un mejor rendimiento. μGP [ 46 ] utiliza multigrafos dirigidos para generar programas que explotan completamente la sintaxis de un lenguaje ensamblador dado . La programación de expresiones múltiples utiliza código de tres direcciones para codificar soluciones. Otras representaciones de programas sobre las que se ha llevado a cabo una investigación y desarrollo significativos incluyen programas para máquinas virtuales basadas en pilas, [ 47 ] [ 48 ] [ 49 ] y secuencias de enteros que se asignan a lenguajes de programación arbitrarios a través de gramáticas. [ 50 ] [ 51 ] La programación genética cartesiana es otra forma de GP, que utiliza una representación gráfica en lugar de la representación habitual basada en árboles para codificar programas informáticos.

La mayoría de las representaciones tienen código estructuralmente no efectivo ( intrones ). Estos genes no codificantes pueden parecer inútiles porque no tienen efecto en el rendimiento de ningún individuo. Sin embargo, alteran las probabilidades de generar descendencia diferente bajo los operadores de variación y, por lo tanto, alteran las propiedades variacionales del individuo . Los experimentos parecen mostrar una convergencia más rápida cuando se utilizan representaciones de programas que permiten estos genes no codificantes, en comparación con las representaciones de programas que no tienen ningún gen no codificante. [ 52 ] [ 53 ] Las instanciaciones pueden tener árboles con intrones y sin ellos; estos últimos se denominan árboles canónicos. Se introducen operadores de cruce canónico especiales que mantienen la estructura canónica de los padres en sus hijos.

Inicialización

Los métodos para la creación de la población inicial incluyen: [ 54 ]

  • Grow crea los individuos de forma secuencial. Cada árbol GP se crea a partir de la raíz, generando nodos funcionales con hijos y nodos terminales hasta cierta profundidad.
  • Full es similar a Grow . La diferencia es que todas las ramas de un árbol tienen la misma profundidad predeterminada.
  • La mezcla escalonada crea una población que consta demetrod1{\displaystyle md-1}partes y una profundidad máxima demetrod{\displaystyle md}para sus árboles. La primera parte tiene una profundidad máxima de 2, la segunda de 3 y así sucesivamente hasta elmetrod1{\displaystyle md-1}-parte con máxima profundidadmetrod{\displaystyle md}. La mitad de cada parte es creada por Grow , mientras que la otra parte es creada por Full .

Selección

La selección es un proceso mediante el cual se seleccionan ciertos individuos de la generación actual que servirán como padres para la siguiente generación. Los individuos se seleccionan probabilísticamente de manera que los individuos con mejor desempeño tengan una mayor probabilidad de ser seleccionados. [ 20 ] El método de selección más comúnmente utilizado en GP es la selección por torneo , aunque otros métodos como la selección proporcional a la aptitud , la selección por léxico, [ 55 ] y otros han demostrado tener un mejor desempeño para muchos problemas de GP.

El elitismo, que consiste en seleccionar a la siguiente generación con el mejor individuo (o los n mejores individuos) de la generación actual, es una técnica que a veces se emplea para evitar la regresión.

Crossover

Cruce de subárboles de programación genética

En la programación genética, se seleccionan dos individuos aptos de la población para que sean padres de uno o dos hijos. En la programación genética de árboles, estos padres se representan como árboles invertidos tipo Lisp, con sus nodos raíz en la parte superior. En el cruce de subárboles, se elige aleatoriamente un subárbol en cada padre (resaltado en amarillo en la animación). En el padre que dona la raíz (en la animación de la izquierda), el subárbol elegido se elimina y se reemplaza con una copia del subárbol elegido aleatoriamente del otro padre, para generar un nuevo árbol hijo.

En ocasiones se utiliza el cruce de dos árboles hijos, en cuyo caso el subárbol eliminado (en la animación de la izquierda) no se borra simplemente, sino que se copia a una copia del segundo padre (aquí a la derecha), reemplazando (en la copia) su subárbol elegido aleatoriamente. De esta forma, este tipo de cruce de subárboles toma dos árboles aptos y genera dos árboles hijos.

El enfoque basado en árboles en la programación genética también comparte similitudes estructurales y procedimentales con métodos de cruce anteriores basados ​​en el conocimiento y orientados a la topología. Específicamente, el cruce análogo y el cruce homólogo, ambos implementados en la planificación de trayectorias de robots, presentan una semejanza con las operaciones de subárboles en la programación genética basada en árboles. Estos mecanismos de cruce se describieron en el contexto de estrategias de optimización heurística en robótica. [ 56 ]

Replicación

Algunos individuos seleccionados según criterios de aptitud no participan en el cruce genético, sino que se copian a la siguiente generación, de forma similar a la reproducción asexual en el mundo natural. Además, pueden estar sujetos a mutaciones.

Mutación

Animación de la creación de un hijo mediante programación genética, mutando al padre, eliminando el subárbol y reemplazándolo con código aleatorio.

En la programación genética existen muchos tipos de mutación. Parten de un progenitor apto y sintácticamente correcto, con el objetivo de crear aleatoriamente un descendiente también sintácticamente correcto. En la animación, se selecciona aleatoriamente un subárbol (resaltado en amarillo). Este se elimina y se reemplaza por un subárbol generado aleatoriamente.

Otros operadores de mutación seleccionan una hoja (nodo externo) del árbol y la reemplazan con una hoja elegida al azar. Otra mutación consiste en seleccionar al azar una función (nodo interno) y reemplazarla con otra función de la misma aridad (número de entradas). La mutación de elevación (hoist) elige aleatoriamente un subárbol y lo reemplaza con un subárbol dentro de sí mismo. Por lo tanto, la mutación de elevación garantiza que el hijo sea más pequeño. El reemplazo de una hoja y una función de la misma aridad asegura que el hijo tenga el mismo tamaño que el padre. En cambio, la mutación de subárbol (en la animación) puede, dependiendo de la función y los conjuntos de terminales, tener un sesgo hacia el aumento o la disminución del tamaño del árbol. Otras mutaciones basadas en subárboles intentan controlar cuidadosamente el tamaño del subárbol de reemplazo y, por lo tanto, el tamaño del árbol hijo.

De manera similar, existen muchos tipos de mutación en la programación genética lineal, cada uno de los cuales intenta garantizar que el descendiente mutado siga siendo sintácticamente correcto.

Aplicaciones

La GP se ha utilizado con éxito como herramienta de programación automática , herramienta de aprendizaje automático y motor de resolución automática de problemas. [ 20 ] La GP es especialmente útil en dominios donde la forma exacta de la solución no se conoce de antemano o se acepta una solución aproximada (posiblemente porque encontrar la solución exacta es muy difícil). Algunas de las aplicaciones de la GP son el ajuste de curvas, el modelado de datos, la regresión simbólica , la selección de características y la clasificación. John R. Koza menciona 76 casos en los que la programación genética ha podido producir resultados que son competitivos con los resultados producidos por humanos (llamados resultados competitivos con humanos). [ 57 ] Desde 2004, la Conferencia anual de Computación Genética y Evolutiva ( GECCO ) celebra una competición de Premios Competitivos con Humanos (llamados Humies), [ 58 ] donde se entregan premios en metálico a los resultados competitivos con humanos producidos por cualquier forma de computación genética y evolutiva. La GP ha ganado muchos premios en esta competición a lo largo de los años.

Programación metagenética

La programación metagenética es la técnica de metaaprendizaje propuesta para evolucionar un sistema de programación genética utilizando la propia programación genética. Sugiere que los cromosomas, el entrecruzamiento y la mutación evolucionaron por sí mismos, por lo que, al igual que sus contrapartes en la vida real, deberían poder cambiar por sí solos en lugar de ser determinados por un programador humano. Meta-GP fue propuesta formalmente por Jürgen Schmidhuber en 1987. [ 59 ] Eurisko , de Doug Lenat, es un esfuerzo anterior que podría emplear la misma técnica. Es un algoritmo recursivo pero terminante, lo que le permite evitar la recursión infinita. En el enfoque de "evolución autoconstructiva" de la programación metagenética, los métodos para la producción y variación de la descendencia están codificados dentro de los propios programas en evolución, y estos se ejecutan para producir nuevos programas que se añadirán a la población. [ 48 ] [ 60 ]

Los críticos de esta idea suelen argumentar que este enfoque es demasiado amplio. Sin embargo, podría ser posible restringir el criterio de aptitud a una clase general de resultados, obteniendo así un GP evolucionado que genere resultados de manera más eficiente para subclases. Esto podría adoptar la forma de un meta-GP evolucionado para generar algoritmos de marcha humana, que luego se utilizaría para evolucionar algoritmos de carrera, salto, etc. El criterio de aptitud aplicado al meta-GP sería simplemente de eficiencia.

Véase también

Referencias

  1. "BEAGLE: Un enfoque darwiniano para el reconocimiento de patrones" . www.cs.bham.ac.uk. Consultado el 19 de mayo de 2018 .
  2. Comunicación personal con Tom Westerdale
  3. "Una representación para la generación adaptativa de programas secuenciales simples" . www.cs.bham.ac.uk. Consultado el 19 de mayo de 2018 .
  4. "Algoritmos genéticos no lineales para la resolución de problemas" . www.cs.bham.ac.uk. Consultado el 19 de mayo de 2018 .
  5. "Algoritmos genéticos jerárquicos que operan sobre poblaciones de programas informáticos" . www.cs.bham.ac.uk. Consultado el 19 de mayo de 2018 .
  6. Goldberg. DE (1983), Operación de gasoductos asistida por computadora utilizando algoritmos genéticos y aprendizaje de reglas. Disertación presentada a la Universidad de Michigan en Ann Arbor, Michigan, en cumplimiento parcial de los requisitos para el doctorado.
  7. "Programación genética: sobre la programación de ordenadores mediante selección natural" . www.cs.bham.ac.uk. Consultado el 19 de mayo de 2018 .
  8. "Programación genética: La película" . gpbib.cs.ucl.ac.uk . 16 de diciembre de 2020. Archivado del original el 11 de diciembre de 2021. Consultado el 20 de mayo de 2021 .
  9. "Los efectos de la recombinación en la exploración fenotípica y la robustez en la evolución" . gpbib.cs.ucl.ac.uk . Consultado el 20 de mayo de 2021 .
  10. "Resultados competitivos con los humanos producidos por programación genética" . www.cs.bham.ac.uk. Consultado el 20 de mayo de 2018 .
  11. Goldberg, DE, Korb, B., & Deb, K. (1989). Algoritmos genéticos desordenados: motivación, análisis y primeros resultados. Complex Systems, 3, 493–530.
  12. Davidor, Y. (1989). Cruce análogo. En Actas de la 3.ª Conferencia Internacional sobre Algoritmos Genéticos (págs. 98–103). Morgan Kaufmann.
  13. Cavicchio, DJ (1970). Búsqueda adaptativa mediante evolución simulada. Tesis doctoral, Universidad de Michigan, Ann Arbor.
  14. "Programación Genética 1996: Actas de la Primera Conferencia Anual" . www.cs.bham.ac.uk. Consultado el 19 de mayo de 2018 .
  15. "Programación genética" . www.cs.bham.ac.uk. Consultado el 19 de mayo de 2018 .
  16. "Programación genética y estructuras de datos: ¡Programación genética + estructuras de datos = programación automática!" . www.cs.bham.ac.uk . Consultado el 20 de mayo de 2018 .
  17. 1 2 "Programación genética: una introducción; sobre la evolución automática de programas informáticos y sus aplicaciones" . www.cs.bham.ac.uk. Consultado el 20 de mayo de 2018 .
  18. Banzhaf, Wolfgang (1 de abril de 2000). "Introducción editorial". Programación genética y máquinas evolutivas . 1 ( 1–2 ): 5–6 . doi : 10.1023/A:1010026829303 . ISSN 1389-2576 . 
  19. "Teoría y práctica de la programación genética" . www.cs.bham.ac.uk. Consultado el 20 de mayo de 2018 .
  20. 1 2 3 "Una guía de campo para la programación genética" . www.gp-field-guide.org.uk . Consultado el 20 de mayo de 2018 .
  21. Slowik, Adam; Kwasnicka, Halina (1 de agosto de 2020). "Algoritmos evolutivos y sus aplicaciones a problemas de ingeniería" . Neural Computing and Applications . 32 (16): 12363– 12379. doi : 10.1007/s00521-020-04832-8 . ISSN 1433-3058 . 
  22. Koza, JRGP (1992). "Sobre la programación de computadoras mediante selección natural". Programación genética .
  23. Miller, Julian F. (2011). «Programación genética cartesiana» . Serie de computación natural. Springer. págs. 17–34 . doi : 10.1007/978-3-642-17310-3_2 . ISBN  978-3-642-17309-7.{{cite book}}: Falta o está vacío |title=( ayuda )
  24. Ratle, Alain; Sebag, Michèle (2000). «Programación genética y conocimiento del dominio: más allá de las limitaciones del descubrimiento automático guiado por gramática» . Resolución de problemas paralelos inspirada en la naturaleza PPSN VI . Lecture Notes in Computer Science. Vol. 1917. Springer. pp. 211–220 . doi : 10.1007/3-540-45356-3_21 . ISBN   978-3-540-41056-0.
  25. Ferreira, Candida (2001). "Programación de expresión genética: un nuevo algoritmo adaptativo para resolver problemas". arXiv : cs/0102027 .
  26. Gandomi, Amir Hossein; Alavi, Amir Hossein (1 de febrero de 2012). "Un nuevo enfoque de programación genética multigénica para el modelado de sistemas no lineales. Parte I: problemas de ingeniería estructural y de materiales" . Neural Computing and Applications . 21 (1): 171– 187. doi : 10.1007/s00521-011-0734-z . ISSN 1433-3058 . 
  27. Moraglio, Alberto; Krawiec, Krzysztof; Johnson, Colin G. (2012). "Programación genética semántica geométrica" . Resolución de problemas paralelos inspirada en la naturaleza – PPSN XII . Lecture Notes in Computer Science. Vol. 7491. Springer. pp. 21–31 . doi : 10.1007/978-3-642-32937-1_3 . ISBN   978-3-642-32936-4.
  28. Kattan, Ahmed; Ong, Yew-Soon (1 de marzo de 2015). "Programación genética sustituta: una búsqueda evolutiva con conciencia semántica" . Information Sciences . 296 : 345–359 . doi : 10.1016/j.ins.2014.10.053 . ISSN 0020-0255 . 
  29. Ffrancon, Robyn; Schoenauer, Marc (11 de julio de 2015). «Programación genética semántica memética» . Actas de la Conferencia Anual de 2015 sobre Computación Genética y Evolutiva (PDF) . Association for Computing Machinery. págs. 1023–1030 . doi : 10.1145/2739480.2754697 . ISBN  978-1-4503-3472-3.
  30. ^ Amir Haeri, Maryam; Ebadzadeh, Mohammad Mehdi; Folino, Gianluigi (1 de noviembre de 2017). "Programación genética estadística para regresión simbólica" . Computación blanda aplicada . 60 : 447– 469. doi : 10.1016/j.asoc.2017.06.050 . ISSN 1568-4946 . 
  31. La Cava, William; Silva, Sara; Danai, Kourosh; Spector, Lee; Vanneschi, Leonardo; Moore, Jason H. (1 de febrero de 2019). "Programación genética multidimensional para clasificación multiclase" . Swarm and Evolutionary Computation . 44 : 260–272 . doi : 10.1016/j.swevo.2018.03.015 . ISSN 2210-6502 . 
  32. "Minería de datos y descubrimiento de conocimiento con algoritmos evolutivos" . www.cs.bham.ac.uk. Consultado el 20 de mayo de 2018 .
  33. "EDDIE vence a las casas de apuestas" . www.cs.bham.ac.uk. Consultado el 20 de mayo de 2018 .
  34. "Aplicación de la inteligencia computacional: cómo crear valor" . www.cs.bham.ac.uk. Consultado el 20 de mayo de 2018 .
  35. "Invención de máquinas que compiten con los humanos mediante programación genética" . www.cs.bham.ac.uk. Consultado el 20 de mayo de 2018 .
  36. Lam, Brian; Ciesielski, Vic (2004). Deb, Kalyanmoy (ed.). "Descubrimiento de programas de extracción de características de textura de imágenes competitivos con los humanos mediante programación genética" . Computación genética y evolutiva – GECCO 2004. Berlín, Heidelberg: Springer: 1114–1125 . doi : 10.1007/978-3-540-24855-2_121 . ISBN 978-3-540-24855-2.
  37. "Tres maneras de desarrollar diseños: una comparación de embriogenias para un problema de diseño evolutivo" . www.cs.bham.ac.uk. Consultado el 20 de mayo de 2018 .
  38. "Codificación celular como gramática de grafos – Publicación de la Conferencia IET" . IEEE : 17/1–1710. Abril de 1993. Consultado el 20 de mayo de 2018 .
  39. "Decodificación mediante algoritmo genético para la interpretación de espectros infrarrojos en biotecnología analítica" . www.cs.bham.ac.uk. Consultado el 20 de mayo de 2018 .
  40. "Programación genética para la minería de datos de chips de ADN de pacientes con cáncer" . www.cs.bham.ac.uk. Consultado el 20 de mayo de 2018 .
  41. "Programación genética y modelado de la prueba de Jominy" . www.cs.bham.ac.uk. Consultado el 20 de mayo de 2018 .
  42. Nichael L. Cramer "Una representación para la generación adaptativa de programas secuenciales simples" Archivado el 4 de diciembre de 2005 en Wayback Machine .
  43. ^ Programación genética: introducción, Wolfgang Banzhaf, Peter Nordin, Robert E. Keller, Frank D. Francone, Morgan Kaufmann, 1999. ISBN 978-1558605107
  44. Garnett Wilson y Wolfgang Banzhaf. "Una comparación entre la programación genética cartesiana y la programación genética lineal"
  45. ( Peter Nordin , 1997, Banzhaf et al., 1998, Sección 11.6.2-11.6.3)
  46. Giovanni Squillero. "μGP (MicroGP)" .
  47. "Programación genética basada en pilas" . gpbib.cs.ucl.ac.uk . Consultado el 20 de mayo de 2021 .
  48. 1 2 Spector, Lee; Robinson, Alan (2002-03-01). "Programación genética y evolución autoconstructiva con el lenguaje de programación Push". Programación genética y máquinas evolutivas . 3 (1): 7– 40. doi : 10.1023/A:1014538503543 . ISSN 1389-2576 . S2CID 5584377 .  
  49. Spector, Lee; Klein, Jon; Keijzer, Maarten (25 de junio de 2005). «La pila de ejecución de Push3 y la evolución del control». Actas de la 7.ª conferencia anual sobre computación genética y evolutiva . ACM. págs. 1689–1696 . CiteSeerX 10.1.1.153.384 . doi : 10.1145/1068009.1068292 . ISBN   978-1595930101. S2CID 11954638 . 
  50. Ryan, Conor; Collins, JJ; Neill, Michael O (1998). Lecture Notes in Computer Science . Berlín, Heidelberg: Springer Berlin Heidelberg. pp. 83–96 . CiteSeerX 10.1.1.38.7697 . doi : 10.1007/bfb0055930 . ISBN   9783540643609.
  51. O'Neill, M.; Ryan, C. (2001). "Evolución gramatical". IEEE Transactions on Evolutionary Computation . 5 (4): 349– 358. Bibcode : 2001ITEC....5..349O . doi : 10.1109/4235.942529 . ISSN 1089-778X . S2CID 10391383 .  
  52. Julian F. Miller. "Programación genética cartesiana". Archivado el 24 de septiembre de 2015 en Wayback Machine . pág. 19.
  53. Janet Clegg; James Alfred Walker; Julian Francis Miller. "Una nueva técnica de cruce para la programación genética cartesiana" . 2007.
  54. Walker, Matthew (2001). "Introducción a la programación genética". Universidad de Massey .
  55. Spector, Lee (2012). "Evaluación de la modalidad del problema mediante el rendimiento diferencial de la selección de léxico-cases en programación genética". Actas de la 14.ª conferencia anual sobre computación genética y evolutiva . Gecco '12. ACM. págs. 401–408 . doi : 10.1145/2330784.2330846 . ISBN  9781450311786. S2CID 3258264 . 
  56. Davidor, Y. (1991). Algoritmos genéticos y robótica: una estrategia heurística para la optimización. World Scientific Series in Robotics and Intelligent Systems: Volumen 1.
  57. Koza, John R (2010). "Resultados competitivos con los humanos producidos por la programación genética" . Programación genética y máquinas evolutivas . 11 ( 3– 4): 251– 284. doi : 10.1007/s10710-010-9112-3 .
  58. "Humies = Premios Competitivos Humanos" .
  59. "TESIS DE 1987 SOBRE APRENDER A APRENDER, METALEARNING, PROGRAMACIÓN METAGENÉTICA, ECONOMÍA DE APRENDIZAJE AUTOMÁTICO QUE AHORRA CRÉDITO" .
  60. GECCO '16 Companion : actas de la Conferencia de Computación Genética y Evolutiva de 2016 : del 20 al 24 de julio de 2016, Denver, Colorado, EE . UU. Neumann, Frank (científico informático), Association for Computing Machinery. SIGEVO. Nueva York, Nueva York. 20 de julio de 2016. ISBN   9781450343237OCLC 987011786 {{cite book}}: CS1 maint: falta el editor de ubicación ( enlace ) CS1 maint: otros ( enlace )
  • Aymen S. Saket y Mark C. Sinclair
  • Programación genética y máquinas evolutivas , una revista
  • Evo2 para programación genética
  • Bibliografía de médicos generales
  • La guía del autoestopista para la computación evolutiva
  • Riccardo Poli, William B. Langdon, Nicholas F. McPhee, John R. Koza, " Una guía de campo para la programación genética " (2008)
  • Programación genética, un recurso mantenido por la comunidad.