Ir a Inicio

Vida Artificial: Independencia 05: Nuevos tipos de algoritmos

Los algoritmos hasta ahora usados son del tipo:

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;

Esto requiere un evaluador de expresiones el cual consume memoria y tiempo de ejecución (y en estos momentos esta optimizado).

La expresión por ejemplo: 3 + X + X*X, puede replantearse de la siguiente manera:

Var01 := 3 + X;
Var02 := X * X;
Var03 := Var01 + Var02;

Una sola instrucción se vuelven tres(3) pero con un mismo modelo:
Variable operador Variable

Eso es mas fácil y mucho más rápido de construir y evaluar. Las mutaciones serán sutiles, luego no habrán cambios dramáticos entre el padre y el hijo.

Las nuevas instrucciones de los algoritmos serán de la siguiente forma:

Etiqueta: Código que identifica la instrucción
Instrucción: Código de la instrucción (SET=0, IFMAY=1, IFMEN=2,...)
Variable: A que variable asignará o comparará.
¿Operando o Numero?: ¿Lo que sigue es una variable o un número?
Operando 1: Código de la variable o un número entero
Operador: suma(+), resta(-), dividir(/), multiplicar(*)
¿Operando o Numero?: ¿Lo que sigue es una variable o un número?
Operando 2: Código de la variable o un número entero
Salto: A donde irá si es una instrucción de comparación y es verdadera.

Por ejemplo:

1: SET X1 = 45 - Y3;
2: SET X2 = 12 / 25;
3: SET X3 = 7 * X1;
4: IF X2 > X3 Goto 2;

Esto implica cambiar todo los programas anteriores. Hacer pruebas. Hay un asunto que hay que arreglar: Nacimiento de variables intermedias ¿Cuantas deben ser?.

Ya esta disponible para descarga el nuevo tipo de algoritmo genético, en pruebas preliminares mostró ser mucho más rápido que sus predecesores.

En una próxima actualización se registrará el resultado de pruebas formales.

Descargar código Fuente