CapÃtulo 1 : Computación evolutiva
El término "computación evolutiva" se refiere tanto a un área de la inteligencia artificial y la computación blanda en el campo de la informática que estudia varios algoritmos de optimización como a una familia de algoritmos para la optimización global que se inspiran en la evolución biológica. Para hablar más técnicamente, pertenecen a la familia de solucionadores de problemas de prueba y error basados en poblaciones que tienen un sabor de optimización metaheurística o estocástica.
El proceso de computación evolutiva comienza con la generación de un conjunto preliminar de posibles soluciones, que luego se mejora iterativamente. Con el fin de desarrollar cada nueva generación, primero eliminamos las soluciones menos deseables utilizando un proceso estocástico, y luego hacemos ajustes aleatorios minuciosos. En el lenguaje de la biología, una población de soluciones potenciales es "mutada" después de ser expuesta a la selección natural (o incluso a la selección artificial). Como consecuencia de esto, la población eventualmente evolucionará para crecer en aptitud, es decir, la función de aptitud que el algoritmo ha seleccionado para representar la aptitud.
Como resultado de su capacidad para proporcionar soluciones altamente óptimas en una amplia variedad de contextos de problemas, los enfoques de computación evolutiva se están volviendo más prominentes en el campo de la informática. Hay muchas otras versiones y extensiones disponibles, cada una de las cuales se adapta a una familia particular de problemas o estructura de datos. En el campo de la biología evolutiva, la computación evolutiva también se utiliza en ocasiones en forma de un método experimental in silico para investigar diversos aspectos de los procesos evolutivos generales.
La idea de imitar procesos evolutivos para resolver problemas se remonta a una época anterior a la invención de los ordenadores e incluye ejemplos como la propuesta de Alan Turing en 1948 de una técnica conocida como búsqueda genética. El objetivo principal de Holland era utilizar algoritmos genéticos para investigar la adaptación y averiguar cómo se puede reproducir, en contraste con las otras técnicas, que se centraban en gran medida en encontrar soluciones a los problemas. Se utilizó una técnica de selección artificial para cambiar las poblaciones de cromosomas, cada uno de los cuales se representaba como cadenas de bits. Este procedimiento seleccionó para ciertos bits de 'alelo' incluidos dentro de la cadena de bits. Las interacciones entre cromosomas fueron uno de los muchos enfoques que se utilizaron para replicar la recombinación de ADN que ocurre naturalmente entre varios tipos de animales. Los algoritmos genéticos de Holland monitoreaban poblaciones enormes, mientras que los sistemas anteriores solo podían rastrear una sola criatura óptima a la vez (haciendo que la descendencia compitiera con sus padres) (haciendo que muchos organismos compitieran en cada generación).
En la década de 1990, surgió un nuevo método de computación evolutiva que más tarde se conocería como programación genética. John Koza fue una de las muchas personas que apoyaron esta línea de pensamiento. Dentro de este tipo de algoritmo, lo que estaba evolucionando era realmente un programa que había sido creado en un lenguaje de programación de alto nivel (ya en 1958 había habido algunos intentos previos de utilizar código máquina, pero tuvieron poco éxito). Los programas que usaba Koza se llamaban expresiones S de Lisp, y se pueden conceptualizar estas expresiones como árboles formados por subexpresiones. Este modelo hace posible que los programas intercambien subárboles, lo que es similar a la mezcla de material genético. El grado en que un programa es capaz de llevar a cabo con éxito una tarea predeterminada le otorga una puntuación, y esa puntuación se emplea en un proceso de selección artificial. El concepto de programación genética se ha utilizado con éxito en una serie de áreas, incluyendo la planificación, la inducción de secuencias y el reconocimiento de patrones.
Aunque sus contribuciones no necesariamente cayeron dentro de una de las principales ramas históricas del tema, un gran número de personas adicionales jugaron un papel en el desarrollo de la computación evolutiva a lo largo de su historia. Nils Aall Barricelli desarrolló las primeras simulaciones por ordenador de la evolución en 1953, utilizando algoritmos evolutivos y enfoques de vida artificial. Los primeros resultados de estas simulaciones se publicaron en 1954.
La mayoría de las veces, los métodos de optimización metaheurística están involucrados en estrategias de computación evolutiva. El dominio se puede dividir en las siguientes categorías:
Modelado basado en agentes
Optimización de colonias de hormigas
Sistemas inmunológicos artificiales
Vida artificial (véase también organismo digital)
Algoritmos culturales
Evolución diferencial
Desarrollo o evolución en doble fase
Las técnicas para la estimación de distribuciones
Algoritmos evolutivos
Programación evolutiva
Estrategia de evolución
Programación de la expresión génica
Algoritmo genético
Programación genética
Evolución gramatical
Modelo de evolución aprendible
Sistemas clasificadores de aprendizaje
Algoritmos meméticos
Neuroevolución
Optimización de enjambres de partículas
Autoorganización, incluido el uso de mapas autoorganizados, así como el aprendizaje competitivo
Inteligencia de enjambre
El campo de la computación evolutiva contiene un subcampo conocido como algoritmos evolutivos. Los algoritmos evolutivos son un subcampo de la computación evolutiva porque, en general, solo involucran técnicas que implementan mecanismos evolutivos inspirados en la evolución biológica. Estos mecanismos evolutivos incluyen la reproducción, la mutación, la recombinación, la selección natural y la supervivencia del más apto. Las soluciones candidatas al problema de optimización actúan como miembros de una población, y la función de costo es responsable de determinar el entorno en el que "viven" las soluciones (véase también función de aptitud). Después de someter repetidamente a la población a los operadores antes mencionados, finalmente se producirá la evolución de la población.
Hay dos factores principales que intervienen en este proceso y que, en conjunto, proporcionan la base de los sistemas evolutivos: la recombinación La variedad esencial y, por lo tanto, la capacidad de originalidad se producen a través de la mutación y el cruzamiento, mientras que la selección funciona como una fuerza impulsora para mejorar la calidad genética.
La estocasticidad se puede ver en muchas facetas de un proceso evolutivo como este. Los bits de información que han sido alterados como resultado de la recombinación y la mutación se seleccionan al azar. Por otro lado, los operadores de selección pueden ser deterministas o estocásticos dependiendo de la situación. En el segundo escenario, las personas que tienen una condición física más alta tienen una mayor probabilidad de ser elegidas que las personas que tienen una condición física más baja, pero en la mayoría de los casos, incluso las personas menos aptas tienen la oportunidad de convertirse en padres o vivir.
La teoría de los sistemas dinámicos está relacionada con los algoritmos genéticos porque se utilizan para hacer predicciones sobre los estados futuros de un sistema. Estas predicciones se pueden utilizar para modelar sistemas biológicos y biología de sistemas. Los algoritmos genéticos proporcionan metodologías de modelado. Este es sólo un método dramático para llamar la atención sobre la naturaleza ordenada, bien controlada y altamente organizada del desarrollo en biología; Sin embargo, puede ser engañoso.
A pesar de esto, la aplicación de algoritmos e informática, en particular la teoría computacional, también es crucial para el proceso de comprensión de la evolución misma; Esto es cierto incluso cuando se ignora la similitud con los sistemas dinámicos.
El valor de esta teoría es que reconoce que no existe una regulación central del desarrollo; Más bien, el crecimiento de los organismos es la consecuencia de las interacciones locales tanto dentro como entre las células. Los conceptos que parecen conducir a una semejanza aparentemente estrecha entre los procesos que tienen lugar dentro de las células y el funcionamiento de bajo nivel de las computadoras actuales son los que nos parecen ser las teorías más prometedoras sobre los paralelismos entre el desarrollo de programas.
El paralelismo entre la computación y la interacción entre los sistemas de herencia y la estructura biológica, que se cree ampliamente que revela uno de los desafíos más serios para comprender los comienzos de la vida, también se incluye en esta comparación.
Autómatas evolutivos.
La lista de investigadores en activo es inherentemente fluida y no pretende ser exhaustiva. En 2007 se publicó un estudio que analizó la red de la comunidad.
Kalyanmoy Deb
Kenneth A De Jong
Peter J. Fleming
David B. Fogel
Stephanie Forrest
David E. Goldberg
John Henry Holland
Theo Jansen
John Koza
Zbigniew Michalewicz
Melanie Mitchell
Peter Nordin
Riccardo Poli
Ingo Rechenberg
Hans-Paul Schwefel
La siguiente es una lista de las conferencias más importantes en el campo de la computación evolutiva:
La Conferencia de Computación...