Motor 03: Mutación y Generación Espontánea
Se generan tres(3) algoritmos aleatoriamente de diferentes números de genes, luego se mutan sus genes, se ordena por el mas apto. Se adiciona también creación aleatoria de algoritmos, para no bloquear la simulación con mutaciones que no lleven a ningún sitio. El usuario tiene control sobre la generación aleatoria.
Esta simulación prueba diferentes algoritmos que dado unos valores de entrada generen los valores de salida requeridos por el usuario. Los programas son generados en forma aleatoria. Usted puede crear cualquier programa con solo asignaciones e instrucciones IF. Los programas generados manejan solo 4 variables, entre estas una es de entrada X y una es de salida Y, W y Z son temporales.
Las líneas de código son de dos tipos:
1. Asignación
2. Validación IF
En la asignación el modelo de construcción es:
Label: Variable = Expresión;
Donde Variable puede ser W, X, Y, Z y Expresión es una expresión matemática de una sola variable independiente (que puede ser W, X, Y, Z), esta variable independiente la he llamado variable activa de la expresión.
Ejemplos de asignaciones:
X = Y * 3 / 2 + Y * Y - 7;
W = 45 + (3 * Z - Z * Z * Z);
Z = 4 * Z - 2 * Z * Z;
En la validación IF el modelo de construcción es:
Label: IF ( Variable Condición Expresión ) Goto LineaCodigo
Donde Variable puede ser W, X, Y, Z; Condición puede ser >, <, !, = ; Expresión es una expresión matemática de una sola variable independiente (que puede ser W, X, Y, Z), esta variable independiente la he llamado variable activa de la expresión; LineaCodigo es a que línea de código el programa irá si la condición es evaluada como verdadera.
Ejemplos de validaciones son:
IF ( X > (4 * Y - Y * Y + 7) ) Goto 2;
IF ( Z ! (12 -X + X * X + 7) ) Goto 8;
IF ( W < (W * W - 7 * W - 43) ) Goto 2;
Uniendo asignaciones con validaciones obtenemos un programa, por ejemplo:
1: IF ( X> (3 + X + X*X )) Goto 3; // Es in If condicional
2: Y = 4 - Z +Z * Z * Z; // Es una asignación
3: Y = 10 - W * W;
OJO!!: Goto 0 es finalización del programa.
Modo de Uso:
Serie de Entrada: El valor X que tomarán los algoritmos generados para operar.
Serie de Salida: Valores esperados, se comparan con el valor de salida Y de los algoritmos generados.
Número de Genes: Máximo número de instrucciones generadas para el algoritmo.
Máximo Ciclos de CPU: Muchos algoritmos pueden tener 'gotos' que hacen que nunca haya salida. Esto evita ese problema, limitando a cuantas instrucciones procesará. Si el ser vivo no tiene salida, se elimina.
Iniciar: Inicializa todo los valores, empieza la simulación.
Detener: Detiene la simulación.
Continuar: Continua la simulación detenida.
Propiedades Avanzadas:
Probabilidad de IF, Asignación: El usuario decide con que probabilidad se generarán instrucciones de un tipo u otro.
Variable Activa: Probabilidad de que variable estará en las expresiones
Operador: Probabilidad de que tipo de validación aparecerán: >, <, =, !
Longitud: Tamaño máximo en caracteres de la expresión.
X, Paréntesis, Número: Probabilidades para que aparezcan estos tres objetos en las expresiones.