Ir a Inicio

Colaboración entre individuos

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

En esta prueba, en algoritmos genéticos, la mitad de los datos del conjunto de datos son cubiertos por un individuo y la otra mitad por otro individuo. A diferencia de las veces anteriores que se buscaba el mejor individuo que ajustara a todos los datos del conjunto de datos, en esta ocasión el conjunto de datos se divide a la mitad y en cada una, habrá un individuo que se adapte a cada mitad, obteniéndose dos individuos. Se compara esta nueva estrategia 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. La red neuronal intentará cubrir todo el conjunto de datos. En el caso del algoritmo genético, una mitad del conjunto de datos será cubierta por un individuo y la otra mitad por otro individuo.

6. En el caso del algoritmo genético, se calcula el promedio de ajuste de los dos individuos encontrados.


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.

Colaboración entre dos individuosRed Neuronal (Perceptrón multicapa)
Promedio: 0,215760952Promedio: 0,037382509




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

Colaboración entre dos individuosRed Neuronal (Perceptrón multicapa)
Promedio: 0,516693579Promedio: 0,320088199




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

Colaboración entre dos individuosRed Neuronal (Perceptrón multicapa)
Promedio: 0,239967436Promedio: 0,018721448




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

Colaboración entre dos individuosRed Neuronal (Perceptrón multicapa)
Promedio: 0,127889636Promedio: 0,017020235




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

Colaboración entre dos individuosRed Neuronal (Perceptrón multicapa)
Promedio: 0,374603425Promedio: 0,062964957




Conclusiones

En todas las pruebas, la red neuronal tuvo mejor aproximación en promedio. La gran mejora se observa en el algoritmo genético, las aproximaciones son mucho mejores y es anecdótico que existan picos.
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.