Articulo de referencia

Computación evolutiva

Evolución de una población de imágenes aleatorias. Cada fotograma de la animación representa una generación que muestra al individuo con mejor aptitud, cuyo genoma está compuest...

Animación de parches aleatorios que evolucionan hasta convertirse en una imagen de Charles Darwin.
Evolución de una población de imágenes aleatorias. Cada fotograma de la animación representa una generación que muestra al individuo con mejor aptitud, cuyo genoma está compuesto por los niveles de gris de cada parche. La evolución sigue repetidamente los siguientes pasos: 1. evaluar la aptitud, 2. clasificar a los individuos y 3. incluir algunos genes del siguiente individuo con mayor aptitud. La aptitud se define como la diferencia de error con respecto a una imagen de Charles Darwin .

La computación evolutiva (CE) de la informática es una familia de algoritmos para la optimización global inspirados en la evolución biológica , y un subcampo de la inteligencia computacional y la computación blanda que estudia estos algoritmos. [ 1 ] [ 2 ] [ 3 ] En términos técnicos, son una familia de solucionadores de problemas de ensayo y error basados ​​en poblaciones con un carácter metaheurístico o de optimización estocástica .

En la computación evolutiva, se genera un conjunto inicial de soluciones candidatas que se actualiza iterativamente. Cada nueva generación se produce eliminando estocásticamente las soluciones menos deseables e introduciendo pequeños cambios aleatorios , además de, según el método, mezclar información parental . En terminología biológica, una población de soluciones está sujeta a selección natural (o selección artificial ), mutación y posiblemente recombinación . Estas funciones biológicas sirven como modelos para los operadores genéticos ( mutación , cruce y selección ) utilizados en los procedimientos de computación evolutiva. Como resultado, la población evolucionará gradualmente para aumentar su aptitud , en este caso la función de aptitud elegida por el algoritmo.

Las técnicas de computación evolutiva pueden generar soluciones altamente optimizadas en una amplia gama de problemas, lo que las hace populares en la informática . Existen numerosas variantes y extensiones, adaptadas a familias de problemas y estructuras de datos más específicas. La computación evolutiva también se utiliza a veces en biología evolutiva como un procedimiento experimental in silico para estudiar aspectos comunes de los procesos evolutivos generales.

Historia

El concepto de imitar procesos evolutivos para resolver problemas se originó antes de la llegada de las computadoras, como cuando Alan Turing propuso un método de búsqueda genética en 1948. [ 4 ] Las máquinas u de tipo B de Turing se asemejan a redes neuronales primitivas , y las conexiones entre neuronas se aprendían mediante una especie de algoritmo genético . Sus máquinas u de tipo P se asemejan a un método de aprendizaje por refuerzo , donde las señales de placer y dolor dirigen a la máquina para aprender ciertos comportamientos. Sin embargo, el artículo de Turing permaneció inédito hasta 1968, y él falleció en 1954, por lo que este trabajo inicial tuvo poca o ninguna influencia en el campo de la computación evolutiva que se desarrollaría posteriormente. [ 5 ]

La computación evolutiva como campo de estudio comenzó en serio en las décadas de 1950 y 1960. [ 4 ] En ese momento, hubo varios intentos independientes de utilizar el proceso de evolución en la computación, los cuales se desarrollaron por separado durante aproximadamente 15 años. Tres ramas surgieron en diferentes lugares para lograr este objetivo: estrategias evolutivas , programación evolutiva y algoritmos genéticos . Una cuarta rama, la programación genética , surgió finalmente a principios de la década de 1990. Estos enfoques difieren en el método de selección, las mutaciones permitidas y la representación de los datos genéticos. Para la década de 1990, las distinciones entre las ramas históricas habían comenzado a desdibujarse, y el término "computación evolutiva" se acuñó en 1991 para designar un campo que existe en los cuatro paradigmas. [ 6 ]

En 1962, Lawrence J. Fogel inició la investigación de la Programación Evolutiva en Estados Unidos, considerada un campo de la inteligencia artificial . En este sistema, se utilizan máquinas de estados finitos para resolver un problema de predicción: estas máquinas se modifican (añadiendo o eliminando estados, o cambiando las reglas de transición de estados), y la mejor de estas máquinas modificadas evoluciona en generaciones futuras. La máquina de estados finitos final puede utilizarse para generar predicciones cuando sea necesario. El método de programación evolutiva se aplicó con éxito a problemas de predicción, identificación de sistemas y control automático. Posteriormente, se extendió para el manejo de datos de series temporales y para modelar la evolución de estrategias de juego. [ 6 ]

En 1964, Ingo Rechenberg y Hans-Paul Schwefel introdujeron el paradigma de las estrategias evolutivas en Alemania. [ 6 ] Dado que las técnicas tradicionales de descenso de gradiente producen resultados que pueden quedar atrapados en mínimos locales, Rechenberg y Schwefel propusieron que las mutaciones aleatorias (aplicadas a todos los parámetros de algún vector de solución) podrían utilizarse para escapar de estos mínimos. Se generaron soluciones hijas a partir de soluciones padre, y la más exitosa de las dos se conservó para generaciones futuras. Esta técnica fue utilizada por primera vez por ambos para resolver con éxito problemas de optimización en dinámica de fluidos . [ 7 ] Inicialmente, esta técnica de optimización se realizaba sin ordenadores, basándose en dados para determinar mutaciones aleatorias. En 1965, los cálculos se realizaban completamente por máquina. [ 6 ]

John Henry Holland introdujo los algoritmos genéticos en la década de 1960, y estos se desarrollaron aún más en la Universidad de Michigan en la década de 1970. [ 8 ] Mientras que otros enfoques se centraban en la resolución de problemas, Holland se propuso principalmente utilizar algoritmos genéticos para estudiar la adaptación y determinar cómo se podía simular. Las poblaciones de cromosomas, representadas como cadenas de bits, se transformaban mediante un proceso de selección artificial, seleccionando bits de "alelos" específicos en la cadena de bits. Entre otros métodos de mutación, se utilizaron interacciones entre cromosomas para simular la recombinación de ADN entre diferentes organismos. Mientras que los métodos anteriores solo rastreaban un único organismo óptimo a la vez (haciendo que los hijos compitieran con los padres), los algoritmos genéticos de Holland rastreaban grandes poblaciones (haciendo que muchos organismos compitieran en cada generación).

En la década de 1990, surgió un nuevo enfoque para la computación evolutiva que llegó a denominarse programación genética , defendido, entre otros, por John Koza . [ 6 ] En esta clase de algoritmos, el objeto de la evolución era en sí mismo un programa escrito en un lenguaje de programación de alto nivel (ya en 1958 se habían realizado algunos intentos previos de utilizar código máquina, pero tuvieron poco éxito). Para Koza, los programas eran expresiones S de Lisp , que pueden considerarse como árboles de subexpresiones. Esta representación permite a los programas intercambiar subárboles, lo que representa una especie de mezcla genética. Los programas se puntúan en función de su eficacia para completar una tarea determinada, y la puntuación se utiliza para la selección artificial. La inducción de secuencias, el reconocimiento de patrones y la planificación fueron aplicaciones exitosas del paradigma de la programación genética.

Muchas otras figuras desempeñaron un papel en la historia de la computación evolutiva, aunque su trabajo no siempre se ajustó a una de las principales ramas históricas del campo. Las primeras simulaciones computacionales de la evolución utilizando algoritmos evolutivos y técnicas de vida artificial fueron realizadas por Nils Aall Barricelli en 1953, con los primeros resultados publicados en 1954. [ 9 ] Otro pionero en la década de 1950 fue Alex Fraser , quien publicó una serie de artículos sobre la simulación de la selección artificial . [ 10 ] A medida que creció el interés académico, los aumentos drásticos en la potencia de las computadoras permitieron aplicaciones prácticas, incluida la evolución automática de programas informáticos. [ 11 ] Los algoritmos evolutivos se utilizan ahora para resolver problemas multidimensionales de manera más eficiente que el software producido por diseñadores humanos, y también para optimizar el diseño de sistemas. [ 12 ] [ 13 ]

Técnicas

Las técnicas de computación evolutiva implican principalmente algoritmos de optimización metaheurística . En términos generales, el campo incluye:

En los últimos años se han propuesto muchos algoritmos dudosos, que a menudo son simples copias de algoritmos existentes (frecuentemente de la Optimización por Enjambre de Partículas), donde solo cambia la metáfora, pero el algoritmo en sí no es nuevo en absoluto. Un catálogo exhaustivo con muchos de estos algoritmos dudosos se ha publicado en el Evolutionary Computation Bestiary . [ 14 ] También es importante señalar que muchos de estos algoritmos supuestamente "novedosos" tienen una validación experimental deficiente. [ 15 ]

Algoritmos evolutivos

Los algoritmos evolutivos constituyen un subconjunto de la computación evolutiva, ya que generalmente solo emplean técnicas que implementan mecanismos inspirados en la evolución biológica, como la reproducción , la mutación , la recombinación y la selección natural . Las soluciones candidatas al problema de optimización actúan como individuos en una población, y la función de coste determina el entorno en el que se desenvuelven dichas soluciones (véase también la función de aptitud ). La evolución de la población se produce tras la aplicación repetida de los operadores mencionados.

En este proceso, existen dos fuerzas principales que constituyen la base de los sistemas evolutivos: la recombinación (por ejemplo, el entrecruzamiento ) y la mutación crean la diversidad necesaria y, por lo tanto, facilitan la novedad, mientras que la selección actúa como una fuerza que aumenta la calidad.

Muchos aspectos de este proceso evolutivo son estocásticos . La información que cambia debido a la recombinación y la mutación se elige al azar. Por otro lado, los operadores de selección pueden ser deterministas o estocásticos. En este último caso, los individuos con mayor aptitud tienen más probabilidades de ser seleccionados que aquellos con menor aptitud , pero, por lo general, incluso los individuos más débiles tienen la posibilidad de convertirse en progenitores o de sobrevivir.

Algoritmos evolutivos y biología

Los algoritmos genéticos proporcionan métodos para modelar sistemas biológicos y la biología de sistemas , vinculados a la teoría de sistemas dinámicos , ya que se utilizan para predecir los estados futuros del sistema. Esta es solo una forma ilustrativa (aunque quizás engañosa) de resaltar el carácter ordenado, controlado y altamente estructurado del desarrollo biológico.

Sin embargo, el uso de algoritmos e informática, en particular de la teoría computacional , más allá de la analogía con los sistemas dinámicos, también es relevante para comprender la evolución misma.

Esta perspectiva tiene el mérito de reconocer que no existe un control central del desarrollo; los organismos se desarrollan como resultado de interacciones locales dentro y entre las células. Las ideas más prometedoras sobre paralelismos entre el desarrollo de programas nos parecen aquellas que apuntan a una analogía aparentemente cercana entre los procesos dentro de las células y el funcionamiento de bajo nivel de las computadoras modernas. [ 16 ] Así, los sistemas biológicos son como máquinas computacionales que procesan información de entrada para calcular estados posteriores, de modo que los sistemas biológicos están más cerca de una computación que de un sistema dinámico clásico. [ 17 ]

Además, siguiendo conceptos de la teoría computacional , los microprocesos en los organismos biológicos son fundamentalmente incompletos e indecidibles ( completitud (lógica) ), lo que implica que “hay más que una simple metáfora detrás de la analogía entre células y computadoras. [ 18 ]

La analogía con la computación se extiende también a la relación entre los sistemas de herencia y la estructura biológica, que a menudo se considera que revela uno de los problemas más acuciantes para explicar los orígenes de la vida.

Los autómatas evolutivos [ 19 ] [ 20 ] [ 21 ] , una generalización de las máquinas de Turing evolutivas [ 22 ] [ 23 ] , se han introducido para investigar con mayor precisión las propiedades de la computación biológica y evolutiva. En particular, permiten obtener nuevos resultados sobre la expresividad de la computación evolutiva [ 21 ] [ 24 ] . Esto confirma el resultado inicial sobre la indecidibilidad de la evolución natural y los algoritmos y procesos evolutivos. Los autómatas finitos evolutivos , la subclase más simple de autómatas evolutivos que funcionan en modo terminal, pueden aceptar lenguajes arbitrarios sobre un alfabeto dado, incluidos los no recursivamente enumerables (por ejemplo, el lenguaje de diagonalización) y los recursivamente enumerables pero no recursivos (por ejemplo, el lenguaje de la máquina de Turing universal) [ 25 ] .

Profesionales destacados

La lista de investigadores activos es naturalmente dinámica y no exhaustiva. En 2007 se publicó un análisis de la red de la comunidad. [ 26 ]

Publicaciones

Revistas

Si bien la literatura está plagada de artículos sobre computación evolutiva o que la utilizan, varias revistas especializadas se dedican exclusivamente a este campo:

Conferencias

Las principales conferencias en el área de computación evolutiva incluyen:

Véase también

Referencias

  1. ^ De Jong, Kenneth A. (2006). Computación evolutiva: un enfoque unificado . Cambridge, Mass.: MIT Press. ISBN 978-0-262-52960-0.
  2. ^ Kruse, Rudolf; Mostaghim, Sanaz; Borgelt, cristiano; Braune, cristiano; Steinbrecher, Matías (2022). "Inteligencia Computacional". Inteligencia computacional: una introducción metodológica . Textos de Informática (3ª ed.). Cham: Editorial Internacional Springer. págs.  2– 3. doi : 10.1007/978-3-030-42227-1 . ISBN 978-3-030-42226-4.
  3. ^ Chaturvedi, Devenda K. (2008), "Introducción a la computación blanda", Computación blanda , vol. 103, Berlín, Heidelberg: Springer, pp.  1–10 , doi : 10.1007/978-3-540-77481-5_1 , ISBN 978-3-540-77480-8
  4. ^ a b Eiben, AE; Smith, JE (2015), Evolutionary Computing: The Origins , Natural Computing Series, Berlín, Heidelberg: Springer, pp.  13–24 , doi : 10.1007/978-3-662-44874-8_2 , ISBN 978-3-662-44873-1
  5. ^ Burgin, Mark; Eberbach, Eugene (12 de abril de 2013). "Turing evolutivo en el contexto de las máquinas evolutivas". arXiv : 1304.3762 [ cs.AI ].
  6. ^ a b c d e Fogel, David B., ed. (1998). Computación evolutiva: el registro fósil . Nueva York: IEEE Press. ISBN 0-7803-3481-7OCLC 38270557 ​
  7. ^ Fischer, Thomas (1986), "Kybernetische Systemanalyse einer Tuchfabrik zur Einführung eines computergestützten Dispositionssystems der Fertigung", DGOR , Berlín, Heidelberg: Springer, p. 120, doi : 10.1007/978-3-642-71161-9_14 , ISBN 978-3-642-71162-6
  8. ^ Mitchell, Melanie (1998). Introducción a los algoritmos genéticos . The MIT Press. doi : 10.7551/mitpress/3927.001.0001 . ISBN 978-0-262-28001-3.
  9. ^ Barricelli, Nils Aall (1954). "Ejemplos numéricos de procesos de evolución". Métodos : 45– 68.
  10. ^ Fraser AS (1958). " Análisis de Monte Carlo de modelos genéticos". Nature . 181 (4603): 208– 9. Bibcode : 1958Natur.181..208F . doi : 10.1038/181208a0 . PMID 13504138. S2CID 4211563 .  
  11. ^ Koza, John R. (1992). Programación genética: Sobre la programación de computadoras mediante selección natural . MIT Press . ISBN 978-0-262-11170-6.
  12. ^ GC Onwubolu y BV Babu, Onwubolu, Godfrey C.; Babu, BV (21 de enero de 2004). Nuevas técnicas de optimización en ingeniería . Springer. ISBN 9783540201670. Consultado el 17 de septiembre de 2016 .
  13. ^ Jamshidi M (2003). "Herramientas para el control inteligente: controladores difusos, redes neuronales y algoritmos genéticos". Philosophical Transactions of the Royal Society A . 361 (1809): 1781– 808. Bibcode : 2003RSPTA.361.1781J . doi : 10.1098/rsta.2003.1225 . PMID 12952685 . S2CID 34259612 .  
  14. ^ Campelo, Felipe; Aranha, Claus (20 de junio de 2018). "Ec Bestiary: Un bestiario de algoritmos evolutivos, de enjambre y otros basados ​​en metáforas" . doi : 10.5281/zenodo.1293352 .
  15. ^ Kudela, Jakub (12 de diciembre de 2022). "Un problema crítico en la evaluación comparativa y el análisis de métodos de computación evolutiva" . Nature Machine Intelligence . 4 (12): 1238– 1245. arXiv : 2301.01984 . doi : 10.1038/s42256-022-00579-0 . ISSN 2522-5839 . S2CID 254616518 .  
  16. ^ "Información biológica" . La Enciclopedia de Filosofía de Stanford . Laboratorio de Investigación en Metafísica, Universidad de Stanford. 2016.
  17. ^ JG Diaz Ochoa (2018). "Mecanismos elásticos multiescala: computación y evolución biológica". Journal of Molecular Evolution . 86 (1): 47– 57. Bibcode : 2018JMolE..86...47D . doi : 10.1007/s00239-017-9823-7 . PMID 29248946 . S2CID 22624633 .  
  18. ^ A. Danchin (2008). "Las bacterias como computadoras que hacen computadoras" . FEMS Microbiol. Rev. 33 (1): 3– 26. doi : 10.1111/j.1574-6976.2008.00137.x . PMC 2704931 . PMID 19016882 .  
  19. ^ Burgin, Mark; Eberbach, Eugene (2013). «Máquinas de Turing evolutivas generadas recursivamente y autómatas evolutivos». En Xin-She Yang (ed.). Inteligencia artificial, computación evolutiva y metaheurísticas . Estudios en inteligencia computacional. Vol. 427. Springer-Verlag. pp.  201–230 . doi : 10.1007/978-3-642-29694-9_9 . ISBN 978-3-642-29693-2.
  20. ^ Burgin, M. y Eberbach, E. (2010) Máquinas evolutivas acotadas y periódicas, en Actas del Congreso de Computación Evolutiva de 2010 (CEC'2010), Barcelona, ​​España, 2010, pp. 1379–1386
  21. ^ a b Burgin, M.; Eberbach, E. (2012). "Autómatas evolutivos: expresividad y convergencia de la computación evolutiva". The Computer Journal . 55 (9): 1023– 1029. doi : 10.1093/comjnl/bxr099 .
  22. ^ Eberbach E. (2002) Sobre la expresividad de la computación evolutiva: ¿Es EC algorítmica?, Actas del Congreso Mundial de Inteligencia Computacional WCCI'2002, Honolulu, HI, 2002, 564–569.
  23. ^ Eberbach, E. (2005) Hacia una teoría de la computación evolutiva, BioSystems, vol. 82, págs. 1-19.
  24. ^ Eberbach, Eugene; Burgin, Mark (2009). «Autómatas evolutivos como fundamento de la computación evolutiva: Larry Fogel tenía razón». Congreso IEEE de Computación Evolutiva de 2009. IEEE. págs.  2149–2156 . doi : 10.1109/CEC.2009.4983207 . ISBN 978-1-4244-2958-5. S2CID  2869386 .
  25. ^ Hopcroft, JE, R. Motwani y JD Ullman (2001) Introducción a la teoría de autómatas, lenguajes y computación, Addison Wesley, Boston/San Francisco/Nueva York
  26. ^ JJ Merelo y C. Cotta (2007). "¿Quién es el investigador de EC mejor conectado? Análisis de centralidad de la red compleja de autores en computación evolutiva". arXiv : 0708.2021 [ cs.CY ].

Bibliografía

  • Th. Bäck, DB Fogel y Z. Michalewicz (editores), Manual de computación evolutiva , 1997, ISBN 0750303921
  • Th. Bäck y H.-P. Schwefel. Una visión general de los algoritmos evolutivos para la optimización de parámetros . Archivado el 12 de julio de 2018 en Wayback Machine Evolutionary Computation, 1(1):1–23, 1993.
  • W. Banzhaf, P. Nordin, RE Keller y FD Francone. Programación genética: una introducción. Morgan Kaufmann, 1998.
  • S. Cagnoni, et al., Aplicaciones en el mundo real de la computación evolutiva , Springer-Verlag Lecture Notes in Computer Science , Berlín, 2000.
  • R. Chiong, Th. Weise, Z. Michalewicz (editores), Variantes de algoritmos evolutivos para aplicaciones del mundo real , Springer , 2012, ISBN 3642234232
  • KA De Jong, Computación evolutiva: un enfoque unificado. MIT Press , Cambridge, MA, 2006.
  • AE Eiben y JE Smith, De la computación evolutiva a la evolución de las cosas , Nature, 521:476-482, doi:10.1038/nature14544, 2015
  • AE Eiben y JE Smith, Introducción a la computación evolutiva, Springer, Primera edición , 2003; Segunda edición , 2015
  • DB Fogel. Computación evolutiva. Hacia una nueva filosofía de la inteligencia artificial . IEEE Press, Piscataway, NJ, 1995.
  • LJ Fogel, AJ Owens y MJ Walsh. Inteligencia artificial mediante evolución simulada . Nueva York: John Wiley, 1966.
  • DE Goldberg. Algoritmos genéticos en búsqueda, optimización y aprendizaje automático. Addison Wesley, 1989.
  • JH Holland. Adaptación en sistemas naturales y artificiales. University of Michigan Press , Ann Arbor, 1975.
  • P. Hingston, L. Barone y Z. Michalewicz (editores), Diseño por evolución, Serie de computación natural , 2008, Springer , ISBN 3540741097
  • JR Koza. Programación genética: Sobre la programación de computadoras mediante la evolución natural. MIT Press, Massachusetts, 1992.
  • FJ Lobo, CF Lima, Z. Michalewicz (Editores), Configuración de parámetros en algoritmos evolutivos , Springer , 2010, ISBN 3642088929
  • Z. Michalewicz , Algoritmos genéticos + Estructuras de datos – Programas evolutivos , 1996, Springer , ISBN 3540606769
  • Z. Michalewicz y DB Fogel, Cómo resolverlo: Heurísticas modernas , Springer , 2004, ISBN 978-3-540-22494-5
  • I. Rechenberg. Estrategia de evolución: Optimierung Technischer Systeme nach Prinzipien des Biologischen Evolution. Fromman-Hozlboog Verlag, Stuttgart, 1973. (en alemán)
  • H.-P. Schwefel. Optimización numérica de modelos informáticos. John Wiley & Sons, Nueva York, 1981. 1995 – 2ª edición.
  • D. Simon. Algoritmos de optimización evolutiva. Archivado el 10 de marzo de 2014 en Wayback Machine . Wiley, 2013.
  • M. Sipper; W. Fu; K. Ahuja; JH Moore (2018). "Investigando el espacio de parámetros de los algoritmos evolutivos" . BioData Mining . 11 2. doi : 10.1186/s13040-018-0164-x . PMC  5816380. PMID  29467825 .
  • Y. Zhang; S. Li. (2017). "PSA: Un nuevo algoritmo de optimización basado en las reglas de supervivencia de Porcellio scaber". arXiv : 1709.09840 [ cs.NE ].
  • Artículo de la Enciclopedia de Filosofía de Stanford sobre Información Biológica (en inglés)

Obtenido de " https://en.wikipedia.org/w/index.php?title=Evolutionary_computation&oldid=1356409705 "