Ir a Inicio

Historia de la investigación

1. Búsqueda de la mejor expresión algebráica que genere una serie dada

La generación de expresiones simples para la búsqueda de patrones dio acercamientos notables (el tema fue cubierto recientemente con los libros de regresión simbólica).

2. Búsqueda del mejor algoritmo que genere una serie dada

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 Regresión Simbólica 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.

Uso de Poblaciones

Población y desempeño (diseño) Mas sencillo y mucho mas rápida la evaluación de algoritmos genéticos. Se introduce el concepto de población.
Primera Implementación Primera simulación donde se implementa los conceptos de población, manejo de bytes directamente.
Segunda implementación mejorada Segunda simulación donde se filtra mas fuerte los organismos y lee un archivo de inicialización. La mejora es que hay un manejo dinámico de memoria (ya no hay límites) y genera los algoritmos genéticos listos para ser compilados en C++ (y validar que los resultados son ciertos).
Tercera implementación (Fuertes Mejoras) Esta versión del algoritmo genético en C++ trae importantes funcionalidades que supera ampliamente la segunda implementación.
Pruebas (ascendente, descendente, alterno) Se repiten las pruebas usando como datos las usadas previamente.
Cuarta implementación (mejoras) El nuevo algoritmo presenta notables mejoras en las pruebas con un sencillo cambio.
Pruebas (ascendente, descendente, alterno) Se repiten las pruebas usando como datos las usadas previamente.
Programación Genética + Población + Aislamiento La generación de ecuaciones en forma aleatoria (conocido como Programación Genética) la abordé en el Capítulo 1 pero faltaban ciertas pruebas que se desarrollan ahora.

3. Ambientes, sensores y adaptación

Los sentidos (sensores) informan al organismo de lo que sucede en su medio-ambiente, entre mas especializado este el sensor, mayor es la calidad de esta información. La cantidad y calidad de la información determinan como reacciona el organismo y finalmente influye en su evolución.

Este capítulo simula la multiplicidad de ambientes y como el organismo debe enfrentarlos. Una solución sencilla y escalable es que un organismo con múltiples sensores y múltiples reacciones, es en realidad un conjunto de micro-organismos, donde cada uno tiene una entrada y una salida. Inicio del capítulo aquí.

4. Universo y vida

Los seres vivos están formados por materiales que nacen de procesos físicos y químicos del Universo. Somos seres basados en la química del carbono. En síntesis, el Universo proporciona los materiales, las leyes y la energía, los cuales son tomados por "el algoritmo evolutivo" para generar y evolucionar seres vivos.

¿Es "el algoritmo evolutivo" dependiente de lo ofrecido por el Universo?.

5. Independencia del Algoritmo Evolutivo

El capítulo anterior se finalizó porque no hubo una manera clara de separar los materiales y su comportamiento del algoritmo evolutivo (el que genera organismos). Mi hipótesis es que la vida es independiente de los materiales y es posible que esta exista en ambientes virtuales donde no operan las leyes físicas.

El objetivo de este capítulo es precisamente investigar como hacer un algoritmo que evolucione y sea independiente del ambiente. Lo importante es la adaptación y la estabilidad.

6. Torneo

La vida es un torneo, una infinita competencia entre organismos de la misma especie o diferente especie, una carrera armamentista en donde se crean nuevas armas, contra-armas y estrategias. Depredadores vs Presas. El premio: vivir, perder es morir

7. Hipótesis

Hipótesis planteadas durante la investigación