2012-02-07 26 views
6

Estoy leyendo algunos artículos sobre algoritmos genéticos y, a menudo, mencionan Algoritmos Evolutivos de una manera muy similar. Según Wikipedia, las GA son subconjuntos de AE. Sin embargo, si miramos más de cerca, podemos observar que ambos son algoritmos de optimización metaheurísticos basados ​​en la selección natural (cruzamiento, selección, mutación) y ninguno tiene una representación fija (depende del problema para resolver, incluso nosotros tradicionalmente usamos binarios representaciones para GA). Ellos son muy similares. Entonces, mi pregunta es ¿podemos considerar cada algoritmo evolutivo como un algoritmo genético? y ¿cuáles son las diferencias reales entre ellos? Gracias¿Cuáles son las diferencias reales entre los algoritmos genéticos y los algoritmos evolutivos?

Respuesta

9

Depende de a quién le preguntes. Durante las primeras décadas que tales cosas existieron, todos consideraron que había categorías distintas (generalmente enumeradas como "algoritmos genéticos", "programación genética", "estrategias de evolución" y "programación evolutiva". Hubo, sin duda, importantes diferencias entre los subcampos, por lo que la distinción tuvo algún sentido.

En algún momento (alrededor de finales de los 90 aproximadamente), hubo un mayor impulso para la unificación, ya que la gente comenzó a verlos como ejemplos de un clase general de algoritmos. La principal conferencia GA (ICGA) se transformó en GECCO, y el término unificador se convirtió en "computación evolutiva", abarcando todo lo anterior y ocasionalmente algunos otros (puede ver cosas como optimización de enjambre de partículas como algoritmos evolutivos bueno si eres un poco liberal con las definiciones).

Por lo tanto, en la actualidad, generalmente diríamos "computación evolutiva" (o "algoritmos evolutivos") como el término genérico general. La programación genética mantiene su propia identidad como cadenas de código evolutivas directamente, y las estrategias de evolución también mantienen una identidad separada al tratar con valores reales y a menudo incluyen algún tipo de auto-modificación (por ejemplo, direcciones de búsqueda de aprendizaje de adaptación de matriz de covarianza en tiempo de ejecución). La programación evolutiva todavía existe, pero solo como un nicho mucho más pequeño. El término "algoritmos genéticos" se ha ampliado bastante. Originalmente, las personas pensaban que funcionaban con cadenas binarias que funcionaban con selección generacional, etc. Con el tiempo, uno por uno, el rigor se ha desvanecido. En este punto, puede casi utilizar "algoritmo genético" como sinónimo de "cálculo evolutivo". No debería hacerlo, porque hay una sutileza comprendida en la terminología que estaría perdiendo, pero en general, si no está haciendo la generación de código directamente, y no está desarrollando números reales de una manera muy particularmente definida que corresponde a lo que las personas piensan como estrategias de evolución, entonces estás razonablemente seguro al llamarlo un "algoritmo genético".

+0

Muy interesante. Gracias deong por esta respuesta completa. Esto explica por qué algunos periódicos siguen hablando de "computación evolutiva", por ejemplo, un enfoque de cálculo evolutivo para la optimización de la cartera de riesgo-retorno basado en escenarios para medidas generales de riesgo (por R. Hochreiter), mientras que la comunidad usa cada vez más el término "genética". algoritmos ". – omar

+0

@deong Leí mal tu apodo como De Jong :) –

+0

Heh ... no del todo. Pero es extraño que nunca haya notado la similitud. – deong

6

Para completar la gran respuesta de deong, aquí hay una cita del excelente libro Introduction to Evolutionary Computing escrito por A. E. Eiben y J. E. Smith.

Sorprendentemente, esta idea de la aplicación de los principios darwinianos a fechas automatizados para resolver problemas de nuevo a los años cuarenta, mucho antes de la avance de los ordenadores [146]. Ya en 1948, Turing propuso "búsqueda genética o evolutiva", y en 1962 Breinermami tenía experimentos de computadora ejecutados sobre 'optimización a través de evolución y recombinación'. Durante la década de 1960 tres diferentes implementaciones de la idea básica se desarrollaron en diferentes . lugares en los EE.UU., Fogel, Owens, y Walsh introdujeron evolutiva programación [155, 156], mientras que Holanda llamó a su método de una genética algoritmo [98, 202, 204]. mientras tanto, en Alemania, Rechenberg y Schwefel inventó estrategias de evolución [317, 342].Durante aproximadamente 15 años, estas áreas se desarrollaron por separado; pero desde principios de la década de 1990 han sido vistos como representantes diferentes ("dialectos") de una tecnología que se conoce como computación evolutiva [22, 27, 28, 120, 271]. A principios de la década de 1990 surgió una cuarta corriente después de las ideas generales , programación genética, defendida por Koza [38, 229, 230]. La terminología contemporánea denota todo el campo por computación evolutiva, los algoritmos involucrados se denominan algoritmos evolutivos, y considera la programación evolutiva, estrategias de evolución, algoritmos genéticos y la programación genética como subáreas que pertenecen a las correspondientes variantes de algoritmo.

El desarrollo de los foros científicos dedicados a EC da una indicación del pasado del campo y presente. La primera conferencia internacional especializada en el tema fue el International Conference on Genetic Algorithms (ICGA), celebrada por primera vez en 1985 [180] y repetida cada segundo año hasta 1997 [182, 333, 43, 158, 137, 241 en 1999 se fusionó con la Conferencia anual de Programación genética [235, 234, 232] para convertirse en el anual genética y evolutiva Conferencia Computación (GECCO) [37. 416. 381. 2421. Al mismo tiempo la Conferencia Anual sobre Programación Evolutiva. desde 1992. [150. 151. 344. 268. 154. 12. 3071 se fusionó con la Conferencia IEEE sobre Computación Evolutiva, celebrada desde 1994, [210. 211. 212. 213. 2141 para formar el Congreso sobre Computación Evolutiva (CEC) que ha sido celebrado anualmente desde [71. 72. 73. 741.

El primer evento europeo (otro explícitamente para abrazar todas las corrientes) fue el problema paralelo Resolución de la naturaleza (PPSN) en 1990 [3431. que se convirtió en una conferencia bianual [259. 90. 410. 116. 337. 1871. Fue en una discusión del panel (atrayendo al primer PPSN que el nombre evolutivo fue ofrecido como un término general para todos los "dialectos" existentes. Computación Evolutiva (MIT Press) La primera revista científica dedicada a este campo se lanzó en 1993. En 1997, la Comisión Europea decidió financiar una red europea de investigación en EC llamada EvoNet, cuyos fondos están garantizados hasta 2003. En el momento de la escritura (2003), hay tres conferencias principales de la CE (CEO, GECCO. Y PPSN) y muchas más pequeñas, incluida una dedicada exclusivamente al análisis teórico y desarrollo, Fundamentos de Algoritmos Genéticos (Foga), celebrada cada dos años desde 1990 [316, 420. 425. 261. 44. 39. 3081. Por ahora hay tres revistas científicas básicas (CE Evolutionary Computation , IEEE Transactions on Computación Evolutiva y Máquinas de Programación Genética y Evolvables) y muchas con un perfil cercano . por ejemplo, en computación natural. informática blanda o inteligencia computacional.Estimamos el número de publicaciones EC en 2003 en alrededor de 1500, muchas de ellas en revistas y procedimientos de áreas de aplicación específicas.

Cuestiones relacionadas