コード例 #1
0
ファイル: AGUniforme.cs プロジェクト: jimenezfran/prGenetico
        public override Cromosoma Recombinar(Cromosoma cr1, Cromosoma cr2)
        {
            if (cr1.Longitud != cr2.Longitud)
            {
                throw new Exception("Intenta recombinar cromosomas de distinta longitud");
            }

            else
            {
                Random    rnd            = new Random();
                int       padre          = 0;
                Cromosoma nuevoCromosoma = new Cromosoma(cr1.Longitud, false);

                for (int i = 0; i < cr2.Longitud; i++)
                {
                    padre = rnd.Next(2); // Si padre=0 -> Toma el gen de cr1; padre=1-> Toma el de cr2
                    if (padre == 0)
                    {
                        nuevoCromosoma[i] = cr1[i];
                    }
                    else
                    {
                        nuevoCromosoma[i] = cr2[i];
                    }
                }

                return(nuevoCromosoma);
            }
        }
コード例 #2
0
ファイル: AGUnPunto.cs プロジェクト: jimenezfran/prGenetico
        public override Cromosoma Recombinar(Cromosoma cr1, Cromosoma cr2)
        {
            if (cr1.Longitud != cr2.Longitud)
            {
                throw new Exception("Intenta recombinar cromosomas de distinta longitud");
            }

            else
            {
                Random    rnd            = new Random();
                int       punto          = rnd.Next(cr1.Longitud);
                Cromosoma nuevoCromosoma = new Cromosoma(cr1.Longitud, false);

                for (int i = 0; i < punto; i++)
                {
                    nuevoCromosoma[i] = cr1[i];
                }
                for (int i = punto; i < cr1.Longitud; i++)
                {
                    nuevoCromosoma[i] = cr2[i];
                }

                return(nuevoCromosoma);
            }
        }
コード例 #3
0
ファイル: AGUniforme.cs プロジェクト: jimenezfran/prGenetico
        public override Cromosoma Recombinar(Cromosoma cr1, Cromosoma cr2)
        {
            if (cr1.Longitud != cr2.Longitud) { throw new Exception("Intenta recombinar cromosomas de distinta longitud"); }

            else
            {
                Random rnd = new Random();
                int padre = 0;
                Cromosoma nuevoCromosoma = new Cromosoma(cr1.Longitud, false);

                for(int i=0;i<cr2.Longitud;i++)
                {
                    padre = rnd.Next(2); // Si padre=0 -> Toma el gen de cr1; padre=1-> Toma el de cr2
                    if (padre == 0)
                    {
                        nuevoCromosoma[i] = cr1[i];
                    }
                    else
                    {
                        nuevoCromosoma[i] = cr2[i];
                    }
                }

                return nuevoCromosoma;
            }
        }
コード例 #4
0
ファイル: Cromosoma.cs プロジェクト: jimenezfran/prGenetico
        /// <summary>
        /// Devuelve una copia del objeto que lo llama.
        /// </summary>
        /// <returns></returns>
        public Cromosoma Copia()
        {
            Cromosoma nuevoCromosoma = new Cromosoma(datos.Length, false);

            nuevoCromosoma.datos = datos;
            return(nuevoCromosoma);
        }
コード例 #5
0
ファイル: OneMax.cs プロジェクト: jimenezfran/prGenetico
 public double Evalua(Cromosoma cr)
 {
     double res = 0;
     for(int i=0;i<cr.Longitud;i++)
     {
         res += cr.datos[i];
     }
     return res;
 }
コード例 #6
0
        public double Evalua(Cromosoma cr)
        {
            double res = 0;

            for (int i = 0; i < cr.Longitud; i++)
            {
                res += cr.datos[i];
            }
            return(res);
        }
コード例 #7
0
ファイル: AGUnPunto.cs プロジェクト: jimenezfran/prGenetico
        public override Cromosoma Recombinar(Cromosoma cr1, Cromosoma cr2)
        {
            if (cr1.Longitud != cr2.Longitud) { throw new Exception("Intenta recombinar cromosomas de distinta longitud"); }

            else
            {
                Random rnd = new Random();
                int punto = rnd.Next(cr1.Longitud);
                Cromosoma nuevoCromosoma = new Cromosoma(cr1.Longitud, false);

                for (int i = 0; i < punto; i++)
                {
                    nuevoCromosoma[i] = cr1[i];
                }
                for (int i = punto; i < cr1.Longitud; i++)
                {
                    nuevoCromosoma[i] = cr2[i];
                }

                return nuevoCromosoma;
            }
        }
コード例 #8
0
ファイル: Individuo.cs プロジェクト: jimenezfran/prGenetico
 public Individuo(int tam, IProblema pr)
 {
     cromosoma = new Cromosoma(tam, true);
     fitness = pr.Evalua(cromosoma);
 }
コード例 #9
0
ファイル: Individuo.cs プロジェクト: jimenezfran/prGenetico
 public Individuo(Cromosoma cr, IProblema pr)
 {
     cromosoma = cr.Copia();
     fitness = pr.Evalua(cromosoma);
 }
コード例 #10
0
ファイル: Cromosoma.cs プロジェクト: jimenezfran/prGenetico
 /// <summary>
 /// Devuelve una copia del objeto que lo llama.
 /// </summary>
 /// <returns></returns>
 public Cromosoma Copia()
 {
     Cromosoma nuevoCromosoma = new Cromosoma(datos.Length,false);
      nuevoCromosoma.datos = datos;
      return nuevoCromosoma;
 }
コード例 #11
0
 public abstract Cromosoma Recombinar(Cromosoma cr1, Cromosoma cr2);
コード例 #12
0
 public Individuo(int tam, IProblema pr)
 {
     cromosoma = new Cromosoma(tam, true);
     fitness   = pr.Evalua(cromosoma);
 }
コード例 #13
0
 public Individuo(Cromosoma cr, IProblema pr)
 {
     cromosoma = cr.Copia();
     fitness   = pr.Evalua(cromosoma);
 }
コード例 #14
0
 public abstract Cromosoma Recombinar(Cromosoma cr1, Cromosoma cr2);