En la anterior simulación se generaban algoritmos al azar de 1 a 40 instrucciones y de 1 a 95 instrucciones. En esta simulación se implementa la mutación de los mejores algoritmos. En las pruebas se observó un incremento dramático en el número de casillas llenas.
A continuación muestro los resultados (casillas llenas) en texto y gráfico:
# Pruebas | Algoritmos al Azar | Libre 1 a 40 Instrucciones. Mutando los mejores | Libre 1 a 95 Instrucciones. Mutando los mejores |
---|---|---|---|
100,000.00 | 7.125 | 60.000001 | 66.100001 |
200,000.00 | 8.85 | 43.000001 | 74.000001 |
300,000.00 | 9.725 | 67.000001 | 56.000001 |
400,000.00 | 12 | 52.000001 | 12.000000 |
500,000.00 | 11.975 | 52.000001 | 69.000001 |
600,000.00 | 11.175 | 76.000001 | 79.000001 |
700,000.00 | 10.85 | 60.000001 | 84.000001 |
800,000.00 | 10.45 | 47.000001 | 58.000001 |
900,000.00 | 10.65 | 71.000001 | 85.000001 |
1,000,000.00 | 11.4 | 46.000001 | 100.000001 |
Promedio: | 10.42 | 57.4 | 68.31 |
Es especialmente llamativo lo sucedido en la prueba con 400.000 intentos, en el cual se dio como promedio unas mediocres 12 casillas llenas (cuarta columna). En varios escritos sobre Algoritmos Genéticos mencionan este problema, en donde hay un "falso positivo", es decir, una respuesta que puede ser, pero por mas mutaciones que se den no hay un progreso. Se forma un callejón sin salida, porque este algoritmo dañado solo puede ser vencido por uno al azar que de mejor aproximación (algo muy raro), pero a medida que pasan las pruebas este algoritmo dañado deja descendencia con aproximación similar y le cierra las oportunidades a otros algoritmos que al azar no tengan buena aproximación pero con unas cuantas mutaciones hubiesen sido mucho mejores.
En la naturaleza puede que suceda algo similar. Una especie logra adaptarse pero no progresar, aún así le cierra el espacio a otras especies que en un inicio son poco aptas pero que con el paso del tiempo progresan a niveles evolutivos mas avanzados. Solo un desastre natural podría quitarle ese reinado a esa mediocre especie. En el caso de las simulaciones podría generarse borrados al azar de la lista de mejores algoritmos para que uno nuevo tenga espacio.
En ambas pruebas (descontando el caso especial de aproximación 12), entre mas instrucciones, mayor fue el número de casillas llenas. Debido a la forma como la "selección natural" opera en esta simulación, un algoritmo bueno, deja descendencia con el mismo número de instrucciones. A continuación el número de instrucciones usadas en promedio.
# Pruebas | Promedio Instrucciones Libre 1 a 40 | Promedio Instrucciones Libre 1 a 95 |
---|---|---|
100,000.00 | 33 | 82 |
200,000.00 | 31 | 95 |
300,000.00 | 37 | 90 |
400,000.00 | 31 | 70 |
500,000.00 | 34 | 87 |
600,000.00 | 28 | 72 |
700,000.00 | 28 | 92 |
800,000.00 | 37 | 95 |
900,000.00 | 39 | 78 |
1,000,000.00 | 34 | 94 |
Promedio: | 33.2 | 85.5 |
% Uso | 33.2/40 = 83% | 85.5/95 = 90% |
Los algoritmos mas efectivos usaron muchas instrucciones, entre un 83% y 90% de lo permitido.