diff --git a/ProyectoFinal/AlgoritmoGenetico/malva/rep/GA/MainLan b/ProyectoFinal/AlgoritmoGenetico/malva/rep/GA/MainLan index bc68ad2563972ded2c420752a6b2d1b7c3a094b4..084a42db6326b5de42f77b939f818132fbe605b0 100755 Binary files a/ProyectoFinal/AlgoritmoGenetico/malva/rep/GA/MainLan and b/ProyectoFinal/AlgoritmoGenetico/malva/rep/GA/MainLan differ diff --git a/ProyectoFinal/AlgoritmoGenetico/malva/rep/GA/MainLan.o b/ProyectoFinal/AlgoritmoGenetico/malva/rep/GA/MainLan.o index 40f4e83052168bac6d6cc0886d4b0c833c663211..ee78982f3b5c5290df54a0e853f0ab7a4182da86 100644 Binary files a/ProyectoFinal/AlgoritmoGenetico/malva/rep/GA/MainLan.o and b/ProyectoFinal/AlgoritmoGenetico/malva/rep/GA/MainLan.o differ diff --git a/ProyectoFinal/AlgoritmoGenetico/malva/rep/GA/MainSeq b/ProyectoFinal/AlgoritmoGenetico/malva/rep/GA/MainSeq index 1e6940651623a7601b3fc66b42c90c7c061679a4..21c2dbec314e3026e9032678bd7bc584a15458ef 100755 Binary files a/ProyectoFinal/AlgoritmoGenetico/malva/rep/GA/MainSeq and b/ProyectoFinal/AlgoritmoGenetico/malva/rep/GA/MainSeq differ diff --git a/ProyectoFinal/AlgoritmoGenetico/malva/rep/GA/MainSeq.o b/ProyectoFinal/AlgoritmoGenetico/malva/rep/GA/MainSeq.o index 435df98be624edd02d886117232c15e4b09d2e4e..47c81ccbc27ab19ef7a51062a29f40010e6cd822 100644 Binary files a/ProyectoFinal/AlgoritmoGenetico/malva/rep/GA/MainSeq.o and b/ProyectoFinal/AlgoritmoGenetico/malva/rep/GA/MainSeq.o differ diff --git a/ProyectoFinal/AlgoritmoGenetico/malva/rep/GA/newGA.hh b/ProyectoFinal/AlgoritmoGenetico/malva/rep/GA/newGA.hh index d11ac7983df61579979fede2c72536f9aaccde3e..45ebc6cce6ab989aa0d4a315fb00f9204228ca22 100644 --- a/ProyectoFinal/AlgoritmoGenetico/malva/rep/GA/newGA.hh +++ b/ProyectoFinal/AlgoritmoGenetico/malva/rep/GA/newGA.hh @@ -113,13 +113,19 @@ skeleton newGA double fitness (); unsigned int size() const; - Rarray<int>& var(int indexC); - int& var(int indexC, int indexF); + Rarray<int>& var(const int indexC); + int& var(const int indexC, const int indexF); Rarray<Rarray<int>>& array_var(); + + int& init(); + + private: Rarray<Rarray<int>> _var; const Problem& _pbm; + int _init; + }; // UserStatistics ---------------------------------------------------------------------------- diff --git a/ProyectoFinal/AlgoritmoGenetico/malva/rep/GA/newGA.pro.o b/ProyectoFinal/AlgoritmoGenetico/malva/rep/GA/newGA.pro.o index 8a79374826a57f9269ae72e0a8447080a445c8b4..64351f3c24ea6c9c8774005a8e64ab8653ce6229 100644 Binary files a/ProyectoFinal/AlgoritmoGenetico/malva/rep/GA/newGA.pro.o and b/ProyectoFinal/AlgoritmoGenetico/malva/rep/GA/newGA.pro.o differ diff --git a/ProyectoFinal/AlgoritmoGenetico/malva/rep/GA/newGA.req.cc b/ProyectoFinal/AlgoritmoGenetico/malva/rep/GA/newGA.req.cc index 0aa87e96b16ebd933f6b7996c7721ecd4de3d21a..3718842a33099531d7d51614204c96afc20f648d 100644 --- a/ProyectoFinal/AlgoritmoGenetico/malva/rep/GA/newGA.req.cc +++ b/ProyectoFinal/AlgoritmoGenetico/malva/rep/GA/newGA.req.cc @@ -258,7 +258,14 @@ skeleton newGA // Solution -------------------------------------------------------------- Solution::Solution (const Problem& pbm):_pbm(pbm),_var(pbm.cantColumnas()) - {} + { + _init = 0; + for (int i = 0; i <pbm.cantColumnas(); i++) + { + Rarray<int> aux(pbm.cantFilas()); + _var[i] = aux; + } + } const Problem& Solution::pbm() const { @@ -267,6 +274,7 @@ skeleton newGA Solution::Solution(const Solution& sol):_pbm(sol.pbm()) { + _init = 1; *this=sol; } @@ -293,12 +301,11 @@ skeleton newGA ofstream outfile("solution"); os << endl; - for (int j = 0; j < sol.pbm().cantFilas(); j++) + for (int fil = 0; fil < sol.pbm().cantFilas(); fil++) { - for (int i = 0; i < sol.pbm().cantColumnas(); i++) + for(int col = 0; col < sol.pbm().cantColumnas(); col++) { - - cout << sol._var[i][j] << " "; + cout << sol._var[col][fil] << " "; } cout << endl; } @@ -363,70 +370,72 @@ skeleton newGA return !(*this == sol); } - void Solution::initialize() - { - //cout << "ESTOY ENTRANDO A INITIALIZE" << endl; - _var = Rarray<Rarray<int>>(_pbm.cantColumnas()); - for (int x = 0; x < _pbm.cantColumnas(); x++) - { - //cout<<"x=" << x << endl; - _var[x] = Rarray<int>(_pbm.cantFilas()); - for (int y = 0; y < _pbm.cantFilas(); y++) - { - //cout<<"y=" << y << endl; - _var[x][y] = 0; - } - } - //cout << "MID1" << endl; - for (int i=0;i<_pbm.cantColumnas();i++) - { - int _firstPossible = 0; - std::vector<std::vector<int>> _grupos = _pbm.datosColumnas(); - std::vector<int> _cantGruposEnColumna = _pbm.cantGruposColumna(); - /* - cout << "Grupos en columna " << i << ": "; - for(int j=0; j < _cantGruposEnColumna[i]; j++) - { - cout << _grupos[i][j] << " "; - } - cout << endl; - */ - for(int j=0; j < _cantGruposEnColumna[i]; j++) - { - int _lastPossible = _pbm.cantFilas() - _grupos[i][j]; - for (int k=j+1; k < _cantGruposEnColumna[i]; k++) - { - _lastPossible -= _grupos[i][k] + 1; - } - //cout << "firstPos = " << _firstPossible << endl; - //cout << "lastPos = " << _lastPossible << endl; - - int _startPosition = rand_int(_firstPossible, _lastPossible); - //cout << "start = " << _startPosition << endl; - int _endPosition = _startPosition + _grupos[i][j] - 1; - //cout << "end = " << _endPosition << endl; - for(int c = _startPosition; c <= _endPosition; c++) - { - _var[i][c] = 1; - } + void Solution::initialize() + { + //cout << "ESTOY ENTRANDO A INITIALIZE" << endl; - _firstPossible = _endPosition + 2; - } - cout << endl; - } - /* - for (int fil = 0; fil < _pbm.cantFilas(); fil++) + _var = Rarray<Rarray<int>>(_pbm.cantColumnas()); + _init = 1; + for (int x = 0; x < _pbm.cantColumnas(); x++) + { + //cout<<"x=" << x << endl; + _var[x] = Rarray<int>(_pbm.cantFilas()); + for (int y = 0; y < _pbm.cantFilas(); y++) { - for(int col = 0; col < _var.size(); col++) + //cout<<"y=" << y << endl; + _var[x][y] = 0; + } + } + //cout << "MID1" << endl; + for (int i=0;i<_pbm.cantColumnas();i++) + { + int _firstPossible = 0; + std::vector<std::vector<int>> _grupos = _pbm.datosColumnas(); + std::vector<int> _cantGruposEnColumna = _pbm.cantGruposColumna(); + /* + cout << "Grupos en columna " << i << ": "; + for(int j=0; j < _cantGruposEnColumna[i]; j++) + { + cout << _grupos[i][j] << " "; + } + cout << endl; + */ + for(int j=0; j < _cantGruposEnColumna[i]; j++) + { + int _lastPossible = _pbm.cantFilas() - _grupos[i][j]; + for (int k=j+1; k < _cantGruposEnColumna[i]; k++) + { + _lastPossible -= _grupos[i][k] + 1; + } + //cout << "firstPos = " << _firstPossible << endl; + //cout << "lastPos = " << _lastPossible << endl; + + int _startPosition = rand_int(_firstPossible, _lastPossible); + //cout << "start = " << _startPosition << endl; + int _endPosition = _startPosition + _grupos[i][j] - 1; + //cout << "end = " << _endPosition << endl; + for(int c = _startPosition; c <= _endPosition; c++) { - cout << _var[col][fil] << " "; + _var[i][c] = 1; } - cout << endl; + + _firstPossible = _endPosition + 2; } - */ - - // cout << "ESTOY SALIENDO A INITIALIZE" << endl; - } + cout << endl; + } + /* + for (int fil = 0; fil < _pbm.cantFilas(); fil++) + { + for(int col = 0; col < _var.size(); col++) + { + cout << _var[col][fil] << " "; + } + cout << endl; + } + */ + + // cout << "ESTOY SALIENDO A INITIALIZE" << endl; + } double Solution::fitness () { @@ -476,6 +485,18 @@ skeleton newGA currentBestFitness = fitness; } + //cout << "FIL" << _var[0] << endl; + //cout << "FIL" << _var[1] << endl; + + for (int fil = 0; fil < _pbm.cantFilas(); fil++) + { + for(int col = 0; col < _pbm.cantColumnas(); col++) + { + cout << _var[col][fil] << " "; + } + cout << endl; + } + cout << "ESTOY SALIENDO DE FITNESS" << endl; if (fitness == 0) { @@ -486,19 +507,65 @@ skeleton newGA } char *Solution::to_String() const - { - return (char *)_var.get_first(); + { + + cout << "init: " << _init << endl; + Rarray<int> aux = Rarray<int>(_pbm.cantColumnas() * _pbm.cantFilas()); + int c = 0; + for(int i = 0; i < _pbm.cantColumnas(); i++) + { + for(int j = 0; j < _pbm.cantFilas(); j++) + { +// if (_init == 1) +// { + cout << "i = " << i << endl; + cout << "j = " << j << endl; + cout << "c = " << c << endl; + aux[c] = _var[i][j]; + cout << "hi" <<endl; +// } +// else +// { +// aux[c] = 0; +// } + c++; + } + } + //char * k = (char *)_var.get_first(); + //cout << "ACA" << (int *)k << endl; + return (char *)aux.get_first(); } void Solution::to_Solution(char *_string_) { - //Probably wrong !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! int *ptr=(int *)_string_; - for (int i=0;i<_pbm.cantColumnas();i++) + Rarray<int> aux = Rarray<int>(_pbm.cantColumnas() * _pbm.cantFilas()); + for (int i=0;i< (_pbm.cantColumnas() * _pbm.cantFilas());i++) { - _var[i]=*ptr; + aux[i]=*ptr; ptr++; } + + int c = 0; + for(int i = 0; i < _pbm.cantColumnas(); i++) + { + for(int j = 0; j < _pbm.cantFilas(); j++) + { + _var[i][j] = aux[c]; + c++; + } + } + +// int *ptr=(int *)_string_; +// for (int i=0;i<_pbm.cantColumnas();i++) +// { for(int j = 0; j < _pbm.cantFilas(); j++) +// { //cout << _var[0][0]; +// //_var[i][j]=*ptr; +// //ptr++; +// +// } +// } + _init = 1; } unsigned int Solution::size() const @@ -507,13 +574,13 @@ skeleton newGA } - Rarray<int>& Solution::var(int indexC) + Rarray<int>& Solution::var(const int indexC) { return _var[indexC]; } - int& Solution::var(int indexC, int indexF) + int& Solution::var(const int indexC, const int indexF) { return _var[indexC][indexF]; } @@ -523,6 +590,11 @@ skeleton newGA { return _var; } + + int& Solution::init() + { + return _init; + } Solution::~Solution() { /* @@ -641,17 +713,20 @@ skeleton newGA int i=0; Rarray<Rarray<int>> aux(sol1.pbm().cantColumnas()); aux=sol2.array_var(); - int limit=rand_int((sol1.pbm().cantColumnas()/2)+1,sol1.pbm().cantColumnas()-1); - int limit2=rand_int(0,limit-1); - - for (i=0;i<limit2;i++) - sol2.var(i)=sol1.var(i); - for (i=0;i<limit2;i++) - sol1.var(i)=aux[i]; - for (i=limit;i<sol1.pbm().cantColumnas();i++) - sol2.var(i)=sol1.var(i); - for (i=limit;i<sol1.pbm().cantColumnas();i++) - sol1.var(i)=aux[i]; + int limit=rand_int((sol1.pbm().cantColumnas()/2)+1,sol1.pbm().cantColumnas()-1); + int limit2=rand_int(0,limit-1); + + for (i=0;i<limit2;i++) + sol2.var(i)=sol1.var(i); + for (i=0;i<limit2;i++) + sol1.var(i)=aux[i]; + for (i=limit;i<sol1.pbm().cantColumnas();i++) + sol2.var(i)=sol1.var(i); + for (i=limit;i<sol1.pbm().cantColumnas();i++) + sol1.var(i)=aux[i]; + + sol1.init() = 1; + sol2.init() = 1; //cout << "ESTOY SALIENDO DE CROSSOVER" << endl; } diff --git a/ProyectoFinal/AlgoritmoGenetico/malva/rep/GA/newGA.req.o b/ProyectoFinal/AlgoritmoGenetico/malva/rep/GA/newGA.req.o index d77ccdace738ef0dd430e92851eda0282549d9dd..31f51e1b7708fe411aceb3faefcaf3b082468ed1 100644 Binary files a/ProyectoFinal/AlgoritmoGenetico/malva/rep/GA/newGA.req.o and b/ProyectoFinal/AlgoritmoGenetico/malva/rep/GA/newGA.req.o differ diff --git a/malva/rep/GA/MainLan b/malva/rep/GA/MainLan index 10a3b297146834a4dc98c69fb4f0e1d20f401c25..d3d77bb81b3eb4c2f1046ad57be091162ba8e73c 100755 Binary files a/malva/rep/GA/MainLan and b/malva/rep/GA/MainLan differ diff --git a/malva/rep/GA/MainSeq b/malva/rep/GA/MainSeq index a01ea5a4826f02fc7e47f80aba9ddc6f8f472c4f..5558b8d5f157e79a0f0ba345a1b6646445637881 100755 Binary files a/malva/rep/GA/MainSeq and b/malva/rep/GA/MainSeq differ diff --git a/malva/rep/GA/newGA.req.cc b/malva/rep/GA/newGA.req.cc index 653d43b819666278652d4834d7116555127fdffd..8736e4bdbe5ce48bad678b73129515d0cdee5708 100644 --- a/malva/rep/GA/newGA.req.cc +++ b/malva/rep/GA/newGA.req.cc @@ -469,7 +469,8 @@ skeleton newGA } char *Solution::to_String() const - { + { char * k = (char *)_var.get_first(); + cout << "ACAA" << (char *)_var.get_first() << endl; return (char *)_var.get_first(); } diff --git a/malva/rep/GA/newGA.req.o b/malva/rep/GA/newGA.req.o index 25c1120c50a14493126dc9c616f954045eeae042..253885c259c39045a220612b6391c7a1549f6a89 100644 Binary files a/malva/rep/GA/newGA.req.o and b/malva/rep/GA/newGA.req.o differ diff --git a/malva/rep/GA/res/sol.txt b/malva/rep/GA/res/sol.txt index 3612f1d2c4ab36ac17f90aa3cbbd3edbc3ab7309..b1e28e775a3f7a65241eccfe3b8a9c6581cb6fd3 100644 --- a/malva/rep/GA/res/sol.txt +++ b/malva/rep/GA/res/sol.txt @@ -3,14 +3,14 @@ STATISTICS OF TRIALS ------------------------------------------------------------------ -1 10011.5 210948 1260 12 2915 14884 -2 10022.7 210964 560 5 514 19255 -3 10022.7 210769 4460 44 5051 10427 -4 10022.7 210764 660 6 572 9281 -5 10011.5 210930 3960 39 3649 9270 -6 10035.5 210851 1860 18 1663 19478 -7 10011.5 210894 2360 23 2151 10548 -8 10007.1 210953 660 6 584 9361 -9 10035.1 210770 1460 14 1278 9206 -10 10001.7 211023 3660 36 3361 20065 +1 10011.5 211010 1960 19 5850 19796 +2 10036.6 210643 560 5 845 15839 +3 10010 210832 3460 34 5369 24088 +4 10009.9 210688 1260 12 1958 15705 +5 10010.4 211048 1660 16 2609 15734 +6 10005.4 210895 460 4 659 19183 +7 10010.4 210847 3160 31 4951 15799 +8 10005.4 210855 560 5 818 24435 +9 10035.1 210925 3460 34 7381 21020 +10 10028.8 210861 4260 42 8734 19952 ------------------------------------------------------------------ diff --git a/malva/rep/GA/solution b/malva/rep/GA/solution index ab7cde93cdd23b6123ac03502a5eb494cf5ff69e..9686437374167675a03c0487f2d824b37be9e8ae 100644 --- a/malva/rep/GA/solution +++ b/malva/rep/GA/solution @@ -1,3 +1,3 @@ -e1 t6 -e3 t5 t3 t1 t4 -e4 t8 t2 t7 +e1 t5 t6 +e3 t2 t4 +e4 t3 t8 t1 t7