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
probability = new float[2];
}
/*
void Mutation::mutate(Solution& sol) const
{ //cout << "ESTOY ENTRANDO A MUTATION" << endl;
std::vector<std::vector<int>> _grupos = sol.pbm().datosColumnas();
......@@ -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;
}
......
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