Ir a Inicio

Colaboración entre individuos

Programa 13. Mejora en el algoritmo evolutivo y aplicación gráfica

En el anterior programa se desarrolló un software gráfico que compara un algoritmo evolutivo contra una red neuronal (perceptrón multicapa). A partir de allí hubo varios cambios:

1. Se mejora el algoritmo evolutivo, en vez de una larga ecuación polinómica dentro de la operación trigonométrica seno, ahora es la sumatoria de varias operaciones trigonométricas seno y su posterior normalización. Además se retira el concepto de competencia y ahora es un conjunto de individuos que van mejorando su ajuste poco a poco.

2. Se mejora la interfaz gráfica, haciéndola más sencilla de entender y controlar.

3. Si se maximiza la ventana, el gráfico estadístico también se maximiza.

Modo de operación:

1. El botón "Generar dataset" lo que hace es generar una serie de datos de entrenamiento y una serie de datos de validación. Esos datos nacen de una función generada al azar.

2. El botón de "Procesar" lanza un hilo de ejecución que ejecuta la red neuronal y el algoritmo evolutivo. Una vez lanzado, es dejar pasar el tiempo, el programa va mostrando los ciclos. Entre más tiempo se deje ejecutar el programa mejor.

3. El botón "Detener" lo que hace es finalizar el proceso inmediatamente.

Una vez se detiene el proceso, se muestra por pantalla las curvas obtenidas por ambos procedimientos. Se muestra la mejor red neuronal que se ajuste a los datos de validación, sucede lo mismo con el algoritmo evolutivo.

En la segunda lengüeta se muestra el dataset y cuánto sería el valor deducido por ambos procedimientos.

En la tercera lengüeta se muestra como se configura el procedimiento

Generador de datos: es la ecuación que se genera al azar y que genera el dataset. Esa ecuación es del tipo Y=F(X). Por tal motivo se pregunta el valor de X mínimo, el valor de X máximo y el número de registros a generar. A continuación, el programa genera la ecuación al azar, de allí genera los datos tanto de entrenamiento como de validación. El programa después de generar los datos, los normaliza para que estén tanto X como Y entre 0 y 1.

Algoritmo evolutivo: ¿Cuántos individuos se generan?

Redes neuronales: ¿Cuántas redes se van a crear? ¿Cuántas neuronas tendrá la primera capa oculta y la segunda capa oculta?

Descargar el código fuente desarrollado en C#. Probado en Microsoft Visual Studio 2022 Community Edition

Las primeras pruebas, muestran que la red neuronal logra un mejor ajuste al dataset considerando la validación, pero el algoritmo evolutivo ha mejorado bastante el ajuste también.

Conclusiones:

Este nuevo programa ha generado una bifurcación en el desarrollo de esta investigación sobre colaboración. En una rama se seguirá desarrollando como herramienta de análisis de datos tanto el algoritmo evolutivo como la red neuronal (para una investigación que sigo en la universidad). La segunda rama, propiamente de vida artificial, se enfocará en el algoritmo evolutivo (se abandona la red neuronal) y los comportamientos cíclicos de los ambientes, algo que no estaba contemplado previamente.