From 11e54c077aabaed4a80f04b80a0fdac8c88d179e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Men=C3=A9ndez?= <gonchimenendez@gmail.com> Date: Wed, 5 Dec 2018 15:19:20 -0300 Subject: [PATCH] hdslkfj --- .../malva/rep/GA/newGA.req.cc | 197 ++++++++++-------- 1 file changed, 112 insertions(+), 85 deletions(-) diff --git a/ProyectoFinal/AlgoritmoGenetico/malva/rep/GA/newGA.req.cc b/ProyectoFinal/AlgoritmoGenetico/malva/rep/GA/newGA.req.cc index 5520c96..be69134 100644 --- a/ProyectoFinal/AlgoritmoGenetico/malva/rep/GA/newGA.req.cc +++ b/ProyectoFinal/AlgoritmoGenetico/malva/rep/GA/newGA.req.cc @@ -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 -- GitLab