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