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

new mutation

parent 99a08c52
No related branches found
No related tags found
No related merge requests found
...@@ -883,6 +883,7 @@ skeleton newGA ...@@ -883,6 +883,7 @@ skeleton newGA
probability = new float[2]; probability = new float[2];
} }
/*
void Mutation::mutate(Solution& sol) const void Mutation::mutate(Solution& sol) const
{ //cout << "ESTOY ENTRANDO A MUTATION" << endl; { //cout << "ESTOY ENTRANDO A MUTATION" << endl;
std::vector<std::vector<int>> _grupos = sol.pbm().datosColumnas(); std::vector<std::vector<int>> _grupos = sol.pbm().datosColumnas();
...@@ -927,6 +928,62 @@ skeleton newGA ...@@ -927,6 +928,62 @@ skeleton newGA
} }
} }
//cout << "ESTOY SALIENDO DE MUTATION" << endl;
}
*/
void Mutation::mutate(Solution& sol) const
{ //cout << "ESTOY ENTRANDO A MUTATION" << endl;
std::vector<std::vector<int>> _grupos = sol.pbm().datosColumnas();
for (int i=0;i<sol.pbm().cantColumnas();i++)
{
int j = 0;
for (int g=0; g<_grupos.size(); g++)
{
while (sol.var(i, j) != 1)
{
j+= 1;
}
if (rand01()<=probability[1])
{
int selector = random.rand_int(0, 1);
if (selector == 0)
{
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;
}
}
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;
}
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;
}
}
}
else
{
j = j + _grupos[i][g];
}
}
}
//cout << "ESTOY SALIENDO DE MUTATION" << endl; //cout << "ESTOY SALIENDO DE MUTATION" << endl;
} }
......
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