Ir a Inicio

Colaboración entre individuos

Programa 7. Comparativa entre algoritmo genético y red neuronal ante conjunto de datos de doble variable independiente.

Se compara el algoritmo genético mejorado contra una red neuronal (perceptrón multicapa).

1. Se genera al azar una ecuación.

2. Esta ecuación genera un conjunto de datos de tipo Q=F(X, Y), es decir, doble variable independiente y una variable dependiente.

3. Se reescribieron los algoritmos para que usaran la misma cantidad de tiempo y así comparar cuál es más eficiente.

4. El algoritmo genético y la red neuronal tienen dos entradas y una sola salida.

5. Tanto el algoritmo genético como la red neuronal intentarán cubrir todo el conjunto de datos con una sola ecuación.


Código fuente

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


Resultados

Se hicieron 20 pruebas. Cada prueba genera un conjunto de datos de 400 registros (nacidos de una ecuación creada en forma aleatoria). En cada prueba, cada algoritmo tuvo 20 segundos para operar.

Cada valor de la tabla es la mejor aproximación que tuvo el mejor individuo en la población al conjunto de datos. Entre más cercano a cero es mejor.

Algoritmo Genético (población: 100 individuos) vs Red neuronal: 2 capas ocultas, cada una de 5 neuronas.

Algoritmo genético mejorando primero los individuosRed Neuronal (Perceptrón multicapa)
Promedio: 1,772244282Promedio: 0,031708795




Algoritmo Genético (población: 250 individuos) vs Red neuronal: 2 capas ocultas, cada una de 5 neuronas.

Algoritmo genético mejorando primero los individuosRed Neuronal (Perceptrón multicapa)
Promedio: 1,298102803Promedio: 0,047692201




Algoritmo Genético (población: 500 individuos) vs Red neuronal: 2 capas ocultas, cada una de 5 neuronas.

Algoritmo genético mejorando primero los individuosRed Neuronal (Perceptrón multicapa)
Promedio: 1,323188979Promedio: 0,016930972




Algoritmo Genético (población: 750 individuos) vs Red neuronal: 2 capas ocultas, cada una de 5 neuronas.

Algoritmo genético mejorando primero los individuosRed Neuronal (Perceptrón multicapa)
Promedio: 1,511708196Promedio: 0,117305144




Algoritmo Genético (población: 1000 individuos) vs Red neuronal: 2 capas ocultas, cada una de 5 neuronas.

Algoritmo genético mejorando primero los individuosRed Neuronal (Perceptrón multicapa)
Promedio: 0,838470214Promedio: 0,029866358




Conclusiones

En todas las pruebas, la red neuronal tuvo mejor aproximación en promedio. Es curioso los valores pico tan altos que se da en los algoritmos genéticos a veces.
Cabe recordar que el algoritmo genético lo componen individuos que tienen la siguiente expresión y=f(x) así:
z=(seno(a*(1-x)^4 + b*(1-x)^3 + c*(1-x)^2 + d*(1-x) + e + f*x + g*x^2 + h*x^3 + i*x^4 + j*(1-y)^4 + k*(1-y)^3 + l*(1-y)^2 + m*(1-y) + n + o*y + p*y^2 + q*y^3 + r*y^4)+1)/2
el algoritmo genético trabaja en modificar a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r.
Esto podría explicar la razón de los picos de valores, el seno no puede cubrir el comportamiento dado por otra función.