Skip to content
Snippets Groups Projects
Commit 11e54c07 authored by Gonzalo Menéndez's avatar Gonzalo Menéndez
Browse files

hdslkfj

parent 386ca891
No related branches found
No related tags found
No related merge requests found
......@@ -891,91 +891,118 @@ skeleton newGA
*/
void Mutation::mutate(Solution& sol) const
{
// cout << "ESTOY ENTRANDO A MUTATION" << endl;
// std::vector<std::vector<int>> _grupos = sol.pbm().datosColumnas();
//
// Rarray<Rarray<int>> tempVar = sol.array_var();
// for (int col = 0; col < tempVar.size(); col++)
// {
// for(int fil = 0; fil < tempVar[col].size(); fil++)
// {
// cout << tempVar[col][fil] << " ";
// }
// cout << endl;
// }
//
// cout << "printed sol" << endl;
//
// for (int i=0;i<sol.pbm().cantColumnas();i++)
// {
// cout << "forColumnasBegin" << endl;
// int j = 0;
// cout << "grupos.size() = " << _grupos[i].size() << endl;
// for (int g=0; g<_grupos[i].size(); g++)
// {
// cout << "forGruposBegin" << endl;
// cout << "i = " << i << endl;
// cout << "j = " << j << endl;
// //cout << "sol.var(i, j) = " << sol.var(i,j) << endl;
// while (sol.var(i, j) != 1)
// {
// j+= 1;
// //cout << "sol.var(i, j) = " << sol.var(i,j) << endl;
// }
// cout << "j after while = " << j << endl;
// cout << "here?" << endl;
// if (rand01()<=probability[1])
// {
// cout << "selectedForMutation" << endl;
//
// int selector = rand_int(0, 1);
// if (selector == 0)
// {
// cout << "selector0Begin" << endl;
// if ((j-2 >= 0) && (sol.var(i, j - 2) == 0))
// {
// sol.var(i, j - 1) = 1;
// sol.var(i, j + _grupos[i][g] - 1) = 0;
// j = j + _grupos [i][g] - 1;
// }
// else if ((j + _grupos[i][g] + 1 < sol.pbm().cantFilas()) && (sol.var(i, j + _grupos[i][g] + 1) == 0))
// {
// sol.var(i, j) = 0;
// sol.var(i, j + _grupos[i][g]) = 1;
// j = j + _grupos [i][g] + 1;
// }
// cout << "selector0End" << endl;
// }
// else
// {
// cout << "selector1Begin" << endl;
// if ((j + _grupos[i][g] + 1 < sol.pbm().cantFilas()) && (sol.var(i, j + _grupos[i][g] + 1) == 0))
// {
// sol.var(i, j) = 0;
// sol.var(i, j + _grupos[i][g]) = 1;
// j = j + _grupos [i][g] + 1;
// }
// else if ((j-2 >= 0) && (sol.var(i, j - 2) == 0))
// {
// sol.var(i, j - 1) = 1;
// sol.var(i, j + _grupos[i][g] - 1) = 0;
// j = j + _grupos [i][g] - 1;
// }
// cout << "selector1End" << endl;
// }
// }
// else
// {
// j = j + _grupos[i][g];
// }
//
// cout << "forColumnasEnd" << endl;
// }
//
// cout << "forColumnasEnd" << endl;
// }
//
// cout << "ESTOY SALIENDO DE MUTATION" << endl;
cout << "ESTOY ENTRANDO A MUTATION" << endl;
for (int fil = 0; fil < _pbm.cantFilas(); fil++)
{
for(int col = 0; col < _pbm.cantColumnas(); col++)
{
cout << _var[col][fil] << " ";
if (_var[col][fil] != 0 && _var[col][fil] != 1)
{
//exit(EXIT_FAILURE);
}
}
cout << endl;
}
std::vector<std::vector<int>> _grupos = sol.pbm().datosColumnas();
Rarray<Rarray<int>> tempVar = sol.array_var();
for (int col = 0; col < tempVar.size(); col++)
{
for(int fil = 0; fil < tempVar[col].size(); fil++)
{
cout << tempVar[col][fil] << " ";
}
cout << endl;
}
cout << "printed sol" << endl;
for (int i=0;i<sol.pbm().cantColumnas();i++)
{
cout << "forColumnasBegin" << endl;
int j = 0;
cout << "grupos.size() = " << _grupos[i].size() << endl;
for (int g=0; g<_grupos[i].size(); g++)
{
cout << "forGruposBegin" << endl;
cout << "i = " << i << endl;
cout << "j = " << j << endl;
//cout << "sol.var(i, j) = " << sol.var(i,j) << endl;
while (sol.var(i, j) != 1)
{
j+= 1;
//cout << "sol.var(i, j) = " << sol.var(i,j) << endl;
}
cout << "j after while = " << j << endl;
cout << "here?" << endl;
if (rand01()<=probability[1])
{
cout << "selectedForMutation" << endl;
int selector = rand_int(0, 1);
if (selector == 0)
{
cout << "selector0Begin" << endl;
if ((j-2 >= 0) && (sol.var(i, j - 2) == 0))
{
sol.var(i, j - 1) = 1;
sol.var(i, j + _grupos[i][g] - 1) = 0;
j = j + _grupos [i][g] - 1;
}
else if ((j + _grupos[i][g] + 1 < sol.pbm().cantFilas()) && (sol.var(i, j + _grupos[i][g] + 1) == 0))
{
sol.var(i, j) = 0;
sol.var(i, j + _grupos[i][g]) = 1;
j = j + _grupos [i][g] + 1;
}
cout << "selector0End" << endl;
}
else
{
cout << "selector1Begin" << endl;
if ((j + _grupos[i][g] + 1 < sol.pbm().cantFilas()) && (sol.var(i, j + _grupos[i][g] + 1) == 0))
{
sol.var(i, j) = 0;
sol.var(i, j + _grupos[i][g]) = 1;
j = j + _grupos [i][g] + 1;
}
else if ((j-2 >= 0) && (sol.var(i, j - 2) == 0))
{
sol.var(i, j - 1) = 1;
sol.var(i, j + _grupos[i][g] - 1) = 0;
j = j + _grupos [i][g] - 1;
}
cout << "selector1End" << endl;
}
}
else
{
j = j + _grupos[i][g];
}
cout << "forColumnasEnd" << endl;
}
cout << "forColumnasEnd" << endl;
}
cout << "secondPrint: " << endl;
for (int fil = 0; fil < _pbm.cantFilas(); fil++)
{
for(int col = 0; col < _pbm.cantColumnas(); col++)
{
cout << _var[col][fil] << " ";
if (_var[col][fil] != 0 && _var[col][fil] != 1)
{
exit(EXIT_FAILURE);
}
}
cout << endl;
}
cout << "ESTOY SALIENDO DE MUTATION" << endl;
}
void Mutation::execute(Rarray<Solution*>& sols) const
......
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