Skip to content
Snippets Groups Projects
Commit 2f93a4ef authored by Lucas Hernan Bruzzone Rodriguez's avatar Lucas Hernan Bruzzone Rodriguez
Browse files

Update newGA.req.cc

parent fa523a16
No related branches found
No related tags found
No related merge requests found
......@@ -2,7 +2,7 @@
#define INC_REQ_newGA
#include "newGA.hh"
#include <math.h>
#include <sstream>
skeleton newGA
{
......@@ -20,16 +20,81 @@ skeleton newGA
istream& operator>> (istream& is, Problem& pbm)
{
FILE* stream = fopen("ejercicio1_cantidad_tareas", "r");
/*
char buffer[MAX_BUFFER];
int i;
is.getline(buffer,MAX_BUFFER,'\n');
is.getline(buffer,MAX_BUFFER,'\n');
sscanf(buffer,"%d",&pbm._dimension);
*/
string line;
ifstream cantTareasFile ("datos_cantidad_tareas.txt");
getline(cantTareasFile, line);
pbm._dimension = stoi(line);
//string line;
ifstream cantEmpleadosFile ("datos_cantidad_empleados.txt");
getline(cantEmpleadosFile, line);
pbm._cantEmpleados = stoi(line);
string line23;
ifstream datosEmpleadosFile ("datos_empleados.txt");
getline(datosEmpleadosFile, line23);
getline(datosEmpleadosFile, line23);
int i1;
int counter1 = 0;
stringstream os(line23);
/*Rarray<Empleado> tempEmpleados*/ pbm._empleados = Rarray<Empleado>(pbm._cantEmpleados);
//pbm._empleados = tempEmpleados;
for (int zz=0;zz<pbm._cantEmpleados;zz++)
{
//+pbm._empleados[zz] = new Empleado;
pbm._empleados[zz]._sueldo = 0;
pbm._empleados[zz]._habilidad=0;
pbm._empleados[zz]._horas=0;
}
while (os >> i1)
{
pbm._empleados[counter1]._horas = i1;
cout << pbm._empleados[counter1]._horas << endl;
counter1 += 1;
}
getline(datosEmpleadosFile, line);
float f1;
int counter2 = 0;
stringstream os2(line);
while (os2 >> f1)
{
pbm._empleados[counter2]._habilidad = f1;
counter2 += 1;
}
getline(datosEmpleadosFile, line);
int i2;
int counter3 = 0;
stringstream os3(line);
while (os3 >> i2)
{
pbm._empleados[counter3]._sueldo = i2;
counter3 += 1;
}
//string line;
ifstream datosTareasFile ("datos_tareas.txt");
getline(datosTareasFile, line);
pbm._cantDias = stoi(line);
getline(datosTareasFile, line);
getline(datosTareasFile, line);
int i3;
int counter4 = 0;
stringstream os4(line);
while (os4 >> i3)
{
pbm._tareasEsf[counter4] = i3;
counter4 += 1;
}
cout << buffer[3] << buffer[4] << endl;
assert(false);
return is;
}
......@@ -61,15 +126,18 @@ skeleton newGA
Problem::~Problem()
{
}
Rarray<Empleado>& Problem::empleadoss()
int Problem::cantDias() const
{
return _cantDias;
}
Rarray<Empleado> Problem::empleados() const
{
return _empleados;
}
Rarray<int>& Problem::tareasDiass()
Rarray<int> Problem::tareasEsf() const
{
return _tareasDias;
return _tareasEsf;
}
// Solution --------------------------------------------------------------
......@@ -136,16 +204,17 @@ skeleton newGA
void Solution::initialize()
{
for (int i=0;i<_pbm.dimension();i++)
_tareasSolucion[i]=rand() % _cantEmpleados + 1;//numero random entre 1 y CANT EMPLEADOS
_var[i]=rand() % _pbm.cantEmpleados() + 1;//numero random entre 1 y CANT EMPLEADOS
}
double Solution::fitness ()
{
double fitness = 0.0;
for (int i=0;i< _tareasSolucion.size();i++) {
int tipo = empleadoss[i];
fitness += tipo.sueldo()*tareasDiass[i];
Rarray<Empleado> grupo= _pbm.empleados();
Rarray<int> soFun = _pbm.tareasEsf();
for (int i=0;i< _var.size();i++) {
Empleado tipo = grupo[i];
fitness += tipo._sueldo*soFun[i];
}
return fitness;
}
......@@ -292,7 +361,7 @@ skeleton newGA
{
int i=0;
Rarray<int> aux(sol1.pbm().dimension());
aux=sol2._tareasSolucion();
aux=sol2.array_var();
int limit=rand_int((sol1.pbm().dimension()/2)+1,sol1.pbm().dimension()-1);
int limit2=rand_int(0,limit-1);
......@@ -357,7 +426,7 @@ skeleton newGA
{
if (rand01()<=probability[1])
{
sol.var(i) = rand() % cantEmpleados + 1;
sol.var(i) = rand() % sol.pbm().cantEmpleados() + 1;
//if (sol.var(i)==1) sol.var(i)=0;
//else sol.var(i)=1;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment