La mayor parte de esta función es así:
Código C++:
Ver original// Ahora se abre el archivo con esa ruta
ifstream Puntos_Muestra (route);
// Se comprueba que el fichero se ha abierto correctamente
if (!Puntos_Muestra)
{
cout << endl << endl;
cout << "No se pudo abrir el fichero. No existe o la ruta no es valida.";
cout << endl << endl;
}
else
{
cout << "hola";
// Dado que el fichero vendra con formato Vi, Wi, Xi... Zi
// F(Vi, Wi, Xi....Zi), habra que declarar variables para leer dichos
// valores
float x, f_x_y;
// Vector que almacenara componentes de los puntos muestra
// Tendra el mismo tamanio como numero de variables haya
vector<float> componentes (n_var);
// Variable que recogera el numero de puntos muestra (Xn, Yn, F(Xn, Yn))
int n_puntos_muestra = 0;
// Variable que almacenara el valor fitness del individuo i
float valor_fitness = 0;
// Procesamos el primer valor
Puntos_Muestra >> x;
while (!Puntos_Muestra.eof()) // Sigue hacbiendo valores
{
for (int j = 0; j < n_var; j++)
{
componentes[j] = x;
Puntos_Muestra >> x;
}
// Variable que recogera el output del individuo i asociado a (Xi, Yi)
float output;
// Con los valores Xi, Yi, se calcular el Output del
// individuo
output = pob[i].Calcula_Output (componentes, straight_line);
// Se actualiza el valor del fitness
float t = output - f_x_y;
valor_fitness
+= pow (t
, 2);
// Incrementamos el numero de puntos muestra leidos
n_puntos_muestra++;
// Se lee el siguiente conjunto de puntos
Puntos_Muestra >> x;
}
// Se calcula el valor final del fitness diviendolo entre el numero de
// puntos muestra y se asocia al individuo i
valor_fitness /= n_puntos_muestra;
// Se asigna dicho valor fitness al individuo
pob[i].fitness = valor_fitness;
}
}
En la línea 15 he puesto ese cout << "hola" para comprobar que se abre el fichero, lo que pasa que al ejecutar el pgroama, éste se para antes de que se ejecute ésta comprobación.
Gracias de nuevo