Vida Artificial

Investigación

Artículos

Autor

Otros

Capítulo 2: Simulación de evolución con generación de algoritmos.

La generación de expresiones simples para la búsqueda de patrones dio acercamientos notables. El siguiente paso es la generación de algoritmos al azar, para mejorar esta aproximación. Las simulaciones en este capítulo fueron llamadas "Motores" porque de ahora en adelante la investigación estará encaminada en la búsqueda del algoritmo que logre adaptarse a cualquier ambiente. A este algoritmo se ha llamado: "Motor de Vida Artificial".

Motor 01: Algoritmos aleatorios Usando la misma filosofía de la Simulación I. Se generan algoritmos de manera aleatoria que usando los valores de entrada proporcionados por el usuario, trate de aproximarse a los valores esperados proporcionados por el usuario.
Motor 02: Mutación y Control Similar a la simulación anterior, en este caso se generan tres algoritmos aleatoriamente y luego se mutan, dejando en primer lugar los mas aptos. El usuario tiene mas control sobre la generación aleatoria.
Motor 03: Mutación, Generación aleatoria, Control. Combinación de mutación y generación aleatoria. Mayor facilidad para descargar los fuentes.
Motor 04: Estudio Estadístico ¿Entre mas instrucciones o genes, mas rápida o más precisa es la adaptación?. Esta simulación puede contestar esta pregunta. Ahora mas pruebas se han hecho con nuevos ambientes y resultados.
Motor 05: Estudio Estadístico. Generación Aleatoria y Mutación Similar al Motor 04. Se mezclan Generación Aleatoria y Mutación de algoritmos. Optimización del algoritmo para mayor velocidad.
Pruebas: Expresiones Simples vs Algoritmos Aleatorios ¿Que se adapta más rápido? ¿Expresiones simples o algoritmos (ambos generados aleatoriamente)?. Durante varios días realicé pruebas para saber mas sobre este tópico.
Motor 06: Proceso de Atrofia En el artículo: La gran decisión: ¿Cabeza o cola?, se menciona como los organismos a través de la evolución se van deshaciendo de partes ya no útiles de su cuerpo (atrofia). Este proceso es simulado cuando los algoritmos son optimizados.
Motor 07: ¡Velocidad!. Motor 05 escrito en C++ Se reescribe el "Motor 05" en C++ y se optimizan varias funciones. El resultado: un aumento dramático de velocidad y mayor información. Pruebas hechas con un(1) millón de intentos.
Motor 08: Proceso de Atrofia. Reescrito en C++ Gracias a la velocidad alcanzada por los nuevos motores en C++. Se hacen estudios sobre como mejorar el proceso de mutación (similar al Motor 06 en Java).
Motor 09: Sutil Busca algoritmos al azar, luego el mejor lo talla (muta) fuertemente y finalmente lo retoca (cambios sutiles en alguna instrucción).
Motor 10: Sutil Mejorado Se examinan los procesos de generación y mutación para hacerlos mas eficientes.
Motor 11: Unión Unión. En vez de enfrentar, se unen las dos estrategias para acercamiento: expresión simple y algoritmos. Una simbiosis que suma las fortalezas de ambas y neutraliza las debilidades.
Confrontación: Motor 10 y 11 Observando los resultados anteriores, determiné que era necesario probar estos motores y decidir de una vez por todas cual es el mejor. Aquí están los resultados.
1