Como sucede en la naturaleza, existen multitud de ambientes (temperatura, humedad, salinidad, PH, presión, gravedad, etc..), por esta razón estas nuevas simulaciones se tendrá en cuenta que hay múltiples ambientes. A diferencia de las anteriores simulaciones en las cuales solo hay un ambiente de entrada y salida (representadas por series numéricas), en esta simulación hay múltiples ambientes (múltiples series numéricas).
El usuario define en el archivo de inicialización Motor13.ini cuantos ambientes va a crear (hasta 14 ambientes), luego el programa generará organismos que se adapten a estos ambientes. Cada organismo tendrá una serie de entrada y otra de salida. Quedando de la siguiente forma:
Cada cilindro es un organismo, en este gráfico se han generado tres(3) organismos, los Ambiente2 y Ambiente5 no alteran los organismos (suele ocurrir).
Con esto comienzo los primeros pasos para implementar la simbiosis: Dualidad -Ambiente
Por ahora es muy sencilla esta implementación:
- Se analiza cada ambiente.
- Se generan simples organismos al azar de tan solo una instrucción.
- No hay mutaciones.
- En un archivo se imprime los resultados de la adaptación.
Debe el usuario cambiar el archivo Motor13.ini
Esta simple simulación generará organismos de tan sola una(1) instrucción, que se adapten a los ambientes definidos por el usuario (sAmbiente00 hasta sAmbiente13), para que el organismo se evalúe como adaptado, el índice de error no debe superar a fMaximoError.
El programa se detiene hasta que haya calculado 30 organismos.
Este es un listado de lo generado por este organismo:
MOTOR13. Simbiosis. Parte 1.
Ambientes. Total: [5]
[0] 1,-2,3,-4,5,-6,7,-8,9,-10,11,-12,13,
[1] 1,2,3,4,5,6,7,8,9,10,11,12,13,
[2] -1,2,-3,4,-5,6,-7,8,-9,10,-11,12,-13,
[3] -1,-2,-3,-4,-5,-6,-7,8,9,10,11,12,13,
[4] 1,2,3,-4,5,6,7,-8,-9,10,-11,-12,-13,
Posibilidades:
1. Tipo de Instrucciones. If Condicional: 50, Asignación: 50
2. En Instrucciones de If Condicional, el operador de comparación es: '==':25, '>':25, '<':25, '!=':25
3. Longitud de la expresión (número de operadores): 2
4. Construcción de las expresiones, posibilidad de salir X=33, Paréntesis:33, Números=34
5. Variables que se asignaran, compararan o estarán al interior de las expresiones: W=25, X=25, Y=25, Z=25
Número de ciclos CPU: 130
Error máximo de adaptación: 30.000000
Ambientes Entrada: [0] Salida: [2]
Error: 26.000000
Organismo
float fSerVivo(float X)
{
float W=0, Y=0, Z=0;
1: Y = X-X+X+2-X-X;
return Y;
}
Ambientes Entrada: [0] Salida: [2]
Error: 26.000000
Organismo
float fSerVivo(float X)
{
float W=0, Y=0, Z=0;
1: Y = (7-1)-((8+X));
return Y;
}
Ambientes Entrada: [3] Salida: [1]
Error: 24.259426
Organismo
float fSerVivo(float X)
{
float W=0, Y=0, Z=0;
1: Y = 7+(2*6/9/(X/5));
return Y;
}
Ambientes Entrada: [0] Salida: [2]
Error: 26.000000
Organismo
float fSerVivo(float X)
{
float W=0, Y=0, Z=0;
1: Y = (1)-4-X+(X/X);
return Y;
}
Ambientes Entrada: [0] Salida: [2]
Error: 26.000000
Organismo
float fSerVivo(float X)
{
float W=0, Y=0, Z=0;
1: Y = (7-1)-((8+X));
return Y;
}
Ambientes Entrada: [0] Salida: [2]
Error: 0.000000
Organismo
float fSerVivo(float X)
{
float W=0, Y=0, Z=0;
1: Y = (1-(X+((1/1))));
return Y;
}
Ambientes Entrada: [0] Salida: [2]
Error: 13.000000
Organismo
float fSerVivo(float X)
{
float W=0, Y=0, Z=0;
1: Y = ((2-1*X-(X/X)));
return Y;
}
Ambientes Entrada: [0] Salida: [2]
Error: 13.000000
Organismo
float fSerVivo(float X)
{
float W=0, Y=0, Z=0;
1: Y = (X-(((2)*X+1)));
return Y;
}
Ambientes Entrada: [3] Salida: [1]
Error: 29.922321
Organismo
float fSerVivo(float X)
{
float W=0, Y=0, Z=0;
1: Y = 4/X+7+(X/((X+X)));
return Y;
}
Ambientes Entrada: [0] Salida: [2]
Error: 13.000000
Organismo
float fSerVivo(float X)
{
float W=0, Y=0, Z=0;
1: Y = X+(X)/X-2*X;
return Y;
}
Ambientes Entrada: [3] Salida: [1]
Error: 24.259426
Organismo
float fSerVivo(float X)
{
float W=0, Y=0, Z=0;
1: Y = 7+(2*6/9/(X/5));
return Y;
}
Ambientes Entrada: [0] Salida: [2]
Error: 26.000000
Organismo
float fSerVivo(float X)
{
float W=0, Y=0, Z=0;
1: Y = 5+(7)-(9+X+5);
return Y;
}
Ambientes Entrada: [3] Salida: [1]
Error: 27.250000
Organismo
float fSerVivo(float X)
{
float W=0, Y=0, Z=0;
1: Y = 5/5+(X/4)+5;
return Y;
}
Ambientes Entrada: [2] Salida: [0]
Error: 14.375000
Organismo
float fSerVivo(float X)
{
float W=0, Y=0, Z=0;
1: Y = X/8-((X-X/X));
return Y;
}
Ambientes Entrada: [3] Salida: [1]
Error: 24.259426
Organismo
float fSerVivo(float X)
{
float W=0, Y=0, Z=0;
1: Y = 7+(2*6/9/(X/5));
return Y;
}
Ambientes Entrada: [0] Salida: [2]
Error: 0.000000
Organismo
float fSerVivo(float X)
{
float W=0, Y=0, Z=0;
1: Y = (((X+X-(3*X))));
return Y;
}
Ambientes Entrada: [2] Salida: [0]
Error: 14.375000
Organismo
float fSerVivo(float X)
{
float W=0, Y=0, Z=0;
1: Y = X/8-((X-X/X));
return Y;
}
Ambientes Entrada: [0] Salida: [2]
Error: 26.000000
Organismo
float fSerVivo(float X)
{
float W=0, Y=0, Z=0;
1: Y = 3-1-(((X-1+1)));
return Y;
}
Descargue el fuente: De clic aquí
Descargue el ejecutable para Windows: De clic aquí