Ir a Inicio

Vida Artificial: Independencia 07: Mas velocidad

Esta es una evolución del algoritmo presentado en "Independencia 06". Se usan variables enteras lo cual le da mayor velocidad en evaluación. Por ejemplo en un AMD Athlon XP 1800+ se están generando y evaluando en 2 minutos 38 segundos, 9 millones de algoritmos (con un promedio de 42 instrucciones cada algoritmo).. es decir, aproximadamente 57000 algoritmos por segundo.

Se usa un nuevo operador el % (división modular).

Los resultados de los algoritmos están en sintaxis C++, por ejemplo:

Serie Entrada: [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,]
Serie Salida: [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,]

Posibilidades:
Número de Instrucciones mínimas para cada Algoritmo: 7
Número de Instrucciones máximas para cada Algoritmo: 80
Número máximo de ciclos para evaluar cada Algoritmo: 600
Total variables usadas: 4
Probabilidad de usar Variables: 30%
Total funciones del ambiente llamadas: 0
Probabilidad de uso de instrucciones IF: 10%
Probabilidad de uso de Funciones: 0%
Probabilidad de uso de instrucciones SET (asignacion): 90%
Número de veces que se genera Algoritmos Genéticos: 2000000
Número de veces que se muta el mejor Algoritmo Genético: 7000000

Intento: [6912130], Margen de Error (menor es mejor): [57.000000]
#include <stdio.h>
void main()
{
int V1=0, V2=0, V3=0, V4=0;
L1: if (V1 != (88 + V4)) goto L34;
L2: V2 = (24 * 81);
L3: V3 = (58 % 87);
L4: V2 = (V4 - 94);
L5: V4 = (78 * 89);
L6: V3 = (58 - 98);
L7: V4 = (44 % 5);
L8: V1 = (27 - 98);
L9: if (V3 > (83 + 21)) goto L10;
L10: V3 = (V3 % V4);
L11: V2 = (87 % 64);
L12: V1 = (V3 % V2);
L13: V4 = (20 / 53);
L14: V2 = (64 * 37);
L15: V3 = (99 / V1);
L16: V1 = (42 * 3);
L17: V1 = (35 + 93);
L18: V2 = (45 / 18);
L19: V3 = (V3 + 42);
L20: V1 = (36 / 76);
L21: if (V4 < (11 - 79)) goto L5;
L22: V2 = (79 % 78);
L23: V1 = (68 * 63);
L24: V1 = (100 * 81);
L25: V2 = (45 / V3);
L26: V1 = (69 - 91);
L27: V2 = (46 + V2);
L28: if (V4 > (8 % 46)) goto L17;
L29: V1 = (58 + V1);
L30: V1 = (V3 * 45);
L31: V3 = (6 - 55);
L32: V2 = (V3 * V4);
L33: V1 = (60 - V1);
L34: if (V3 > (60 % 79)) goto L16;
L35: V4 = (91 * V1);
L36: V4 = (V4 - 93);
L37: V2 = (V4 / 25);
L38: V4 = (V2 * 31);
L39: V1 = (V4 + 82);
L40: if (V2 > (55 - 28)) goto L42;
L41: V2 = (V1 / 44);
L42: if (V3 == (V1 % V2)) goto L38;
L0: printf("%d\n", V2);
}

Descargar código Fuente