2009-12-11 10 views
9

No es mi intención poner un enlace en mi blog, pero no tengo ningún otro método para aclarar lo que realmente quiero decir. El artículo es bastante extenso y consta de tres partes (1, 2, 3), pero si tiene curiosidad, merece la pena leerlo.Código bacteria: comportamiento matemático en evolución

Hace mucho tiempo (5 años, al menos) programé un programa de pitón que generaba "bacterias matemáticas". Estas bacterias son objetos de pitón con un código genético simple basado en código de operación. Puede alimentarlos con un número y devuelven un número, de acuerdo con la ejecución de su código. Genero sus códigos genéticos al azar y aplico una selección ambiental a esos objetos produciendo un resultado similar a un valor esperado predefinido. Luego los dejo duplicar, introducir mutaciones y evolucionarlos. El resultado es bastante interesante, ya que su código genético básicamente aprende cómo resolver ecuaciones simples, incluso para valores diferentes para el conjunto de datos de capacitación.

Ahora, esto es solo un juguete. Tuve tiempo de perder y quería satisfacer mi curiosidad. sin embargo, supongo que algo, en términos de investigación, se ha realizado ... Estoy reinventando la rueda aquí, espero. ¿Conoces intentos más serios de crear bacterias in silico como la que programé?

Tenga en cuenta que esto no es realmente "algoritmos genéticos". Los algoritmos genéticos se usan cuando se usa la evolución/selección para mejorar un vector de parámetros frente a una función de puntuación determinada. Esto es un poco diferente. Optimizo el código , no los parámetros, contra una función de puntuación determinada.

+5

No, obviamente es una GA. Está optimizando un parámetro (la representación del código de operación del código para ejecutar) contra una función de puntuación (ya sea que el código produzca la salida que desee o no). –

+1

bien, de hecho, si considera el código como el parámetro ... tiene toda la razón :) –

+1

Por supuesto, es una especialización de Algoritmos Genéticos (GA), pero esta especialización se conoce como Programación Genética (GP), como correctamente indicado abajo. – MaD70

Respuesta

2

La utilidad gratuita Eureqa es similar en el sentido de que puede crear funciones simbólicas de ajuste (mucho más complicadas que la regresión lineal simple, etc.) basadas en datos de entrada multivariados. Pero, utiliza GA para llegar a las funciones, por lo que no estoy seguro de si eso es exactamente lo que tenía en mente.

Consulte también el "Download Your Own Robot Scientist" article on Wired para obtener un desglose de la idea general de cómo funciona.

+0

parece más como una herramienta para inferir relaciones ... tipo de PCA con un razonamiento adjunto. –

1

¿Está familiarizado con Core Wars? Recuerdo que hubo varios desarrolladores de código escritos para el juego que tuvieron cierto éxito. Por ejemplo, MicroGP++ es un generador de código ensamblador que se puede aplicar al lenguaje ensamblador de Core Wars (¡así como a problemas reales!).

2

Buen artículo, Yo diría que estás hablando de "programación de expresión génica" en lugar de "programación genética", por cierto.

+0

En caso de duda sobre GEP, consulte la página de discusión de su artículo en Wikipedia: http://en.wikipedia.org/wiki/Talk:Gene_expression_programming – MaD70

Cuestiones relacionadas