2009-03-29 21 views
8

Encontré este very cool C++ sample, literalmente el "¡Hola mundo!" de algoritmos genéticos.¿Qué es el "Hola mundo"? de algoritmos genéticos bueno para?

Decidí volver a codificar todo en C# y this es el resultado.

Ahora me pregunto: ¿hay alguna aplicación práctica en la línea de generar una cadena de destino a partir de una población de cadenas aleatorias?

EDITAR: mi amigo en twitter acaba de Twitter que "es útil para cosas de tipo de transcripción como la traducción No tiene que ser mono de.". Ojalá tuviera una pista.

+1

sheesh, ¿tengo que usar GIT solo para verificar su proyecto? ¿Qué debemos hacer los humildes usuarios de subversión? –

+2

no puede hacer que todos estén contentos (GIT es genial por cierto) :) – JohnIdol

Respuesta

13

¿Existe alguna aplicación práctica en la línea de generar una cadena de destino a partir de una población de cadenas aleatorias?

Sure. Imaginar cualquier escenario en el que usted sabe cómo evaluar la idoneidad de una cadena en particular, y en el que las opciones son discreto y limitado de alguna manera:

  • Recogiendo nombres pronunciables ("Xhjkxc" tiene una baja aptitud; "Artekzo" tiene una alta aptitud)
  • Probar una serie de ajedrez mueve
  • adivinar la combinación de una caja fuerte, en el supuesto que se puede decir lo cerca que está a desbloquear cada secadora
  • números de teléfono de la cosecha que se evalúan como palabras ("843 -2378 "tiene una buena forma física porque deletrea" THE-BEST ")
+0

No estoy seguro de obtener el ejemplo "pronunciable" – JohnIdol

+0

Digamos que quiere encontrar un nombre pronunciable a partir de algunas cadenas aleatorias, y tiene alguna forma de evaluar cuán pronunciable es cada nombre. ¿Puedes ver cómo se permuta al azar las cuerdas hasta que alcances algo con una "pronosticabilidad" (aptitud) alta con un GA? –

+0

Sí, lo entiendo. Todo se reduce a conocer la función de acondicionamiento físico correcta. Por lo tanto, en caso de pronunciabilidad, debe estar relacionado con las consonantes y el emparejamiento vocales o smt así. – JohnIdol

2

No. Cada vez que ejecuta el GA, le está dando la respuesta final. Esto es excelente para mostrar cómo funciona una GA y para mostrar lo poderosa que puede ser, pero no tiene ningún propósito más allá de eso.

+2

No estoy de acuerdo con esto en absoluto; no necesita saber cuál es la "respuesta" para ejecutar una GA. De hecho, a veces no hay respuesta, como en mi ejemplo de "elegir un nombre pronunciable". Las AG son especialmente buenas en este tipo de cosas. –

+0

Necesita saber qué tan buena es una respuesta en particular (para eso es la función de aptitud física). Pero aparte de eso, es salsa. –

+0

Sí, no siempre es necesario saber la respuesta para ejecutar un GA. Sin embargo, lo haces para esta implementación en particular. Su pregunta no es sobre una AG en general, se trata de esta implementación específica. –

0

He usado GA en 2 problemas de investigación de la vida real.

Uno era un problema de optimización de potencia (maximizar el número de aparatos activada, el cumplimiento de la disposición restricción de potencia y garantía de servicio para cada aparato)

Otra fue para la optimización de la red de radio, lo que maximiza el área de cobertura con un presupuesto equipo fijo

1

Puede escribir un EA que escriba código en un lenguaje dinámico como IronPython con el objetivo de crear código que a) se ejecute sin estrellarse yb) analice el mercado bursátil e inteligentemente compre y venda acciones.

Esa es una visión muy simplista de lo que sería necesario, pero es posible. Necesitará un host que proporcione muchos métodos para el código de IronPython (indicadores técnicos, etc.) y una base de datos de tics.

También sería inteligente no solo generar cualquier código aleatorio anterior, para que no formatee su propio disco duro. Necesita un recinto de seguridad, y necesita limitar los espacios de nombres que son accesibles, y debería proporcionar un límite de tiempo para evitar bucles infinitos. También podría proporcionar pautas de simpatía que le permitan elegir palabras clave aprobadas apropiadas en lugar de simplemente unir letras aleatorias, lo que aceleraría enormemente la evolución.

Entonces, estuve involucrado en un proyecto que hizo todo menos el EA. Teníamos una antena parabólica que obtenía ticks en tiempo real del NASDAQ, un servicio para operar que tenía una API y un "cerebro" de toma de decisiones primitivo que tomaba decisiones cuando entraban las garrapatas.

Lamentablemente, uno de los socios se volcaron, abandonaron su trabajo, ahorcaron el proyecto (obtuvieron su propio plato, etc.) y comenzaron a comerciar con una lógica que no estaba lista. Perdió un montón de dinero. Resulta que para algunas personas este tipo de proyecto está a solo un paso del juego común. Pero de todos modos, el proyecto se desvaneció después de eso. Sin embargo, la evolución de la parte lógica es el eslabón perdido. Y sé que hay personas haciendo este tipo de cosas.

+0

gracias por su contribución en esto - definitivamente interesante y muy poderosa como una posible aplicación, también buena anécdota :) - ¿algún recurso relacionado interesante? – JohnIdol

+0

Aquí hay algo interesante: http://stackoverflow.com/questions/131165/evolutionary-algorithms-optimal-repopulation-breakdowns –

+0

Eso es solo un poco de ayuda con EA. La mayoría de los artículos que hay en EA son realmente pretenciosos (léase: académicos), teniendo en cuenta lo fácil que es empezar con ellos. –

0

GA tiene una desventaja principal, por lo general funciona con la velocidad genética, por lo que su uso en algunos proyectos serios dependientes del tiempo es bastante arriesgado.

Cuestiones relacionadas