La computación evolutiva es una rama de la inteligencia artificial que involucra problemas de optimización combinatoria. Se inspira en los mecanismos de la evolución biológica.
Durante los años 50 se comenzó a aplicar los principios de Charles Darwin en la resolución de problemas. Durante los años 60 y 70, varias corrientes de investigación independientes comenzaron a formar lo que ahora se conoce como computación evolutiva:
La idea surgió en la universidad de Michigan. Fue el profesor J.H. Holland quien ideó originalmente que la programación debía seguir los ejemplos de la naturaleza. Posteriormente la patente de programación evolutiva se empleó por primera vez en la década de 1960 y su creador fue Lawrence J. Fogel. Este desarrollo comenzó como un esfuerzo encaminado a crear inteligencia artificial basado en la evolución de máquinas de estado finitas.
Las estrategias evolutivas fueron propuestas por Ingo Rechenberg y Hans-Paul Schwefel en la década de 1970. Su principal objetivo era el de optimizar parámetros.
Los algoritmos genéticos fueron propuestos por John H. Holland en 1975 y su motivación inicial fue la de proponer un modelo general de proceso adaptable.
De manera general la computación evolutiva toma como base las ideas de la evolución propuestas por Charles Darwin y en los descubrimientos realizados por Gregor Mendel en el campo de la genética. A continuación se muestra el pseudocódigo de un algoritmo evolutivo genérico.
Donde:
Cabe hacer notar que los operadores de variación, la selección y la manera en que son utilizados dependen del enfoque que se esté ocupando. Por ejemplo, la aplicación de la mutación no es la misma en los Algoritmos genéticos que en las Estrategias evolutivas.
Un algoritmo genético (o AG para abreviar) es una técnica de programación que imita a la evolución biológica como estrategia para resolver problemas. En un Algoritmo Evolutivo se define una estructura de datos que admita todas las posibles soluciones a un problema. Cada uno de los posibles conjuntos de datos admitidos por esa estructura será una solución al problema. Unas soluciones serán mejores, otras peores. Solucionar el problema consistirá en encontrar la solución óptima, y por tanto, los Algoritmos Evolutivos son en realidad un método de búsqueda. Pero un método de búsqueda muy especial, en el que las soluciones al problema son capaces de reproducirse entre sí, combinando sus características y generando nuevas soluciones. En cada ciclo se seleccionan las soluciones que más se acercan al objetivo buscado, eliminando el resto de soluciones. Las soluciones seleccionadas se reproducirán entre sí, permitiendo de vez en cuando alguna mutación o modificación al azar durante la reproducción.
Entre los principales aspectos a considerar en el diseño de algoritmos evolutivos se encuentran los siguientes:
Escribe un comentario o lo que quieras sobre Computación evolutiva (directo, no tienes que registrarte)
Comentarios
(de más nuevos a más antiguos)