예제 #1
0
        public Form1()
        {
            //
            // Necesario para admitir el Diseñador de Windows Forms
            //
            InitializeComponent();

            //
            // TODO: agregar código de constructor después de llamar a InitializeComponent
            //

            Random random = new Random(unchecked ((int)DateTime.Now.Ticks));

            for (int n = 0; n < 10; n++)
            {
                Flores temp = new Flores();
                poblacion[n]        = temp;
                poblacion[n].CoordX = n * 80 + 40;

                // Inicializamos el cromosoma con valores al azar

                // La altura va de 10 a 300
                poblacion[n].cromosoma[0] = random.Next(10, 300);

                // El color de la flor. 0-rojo, 1-azul, 2-amarillo
                poblacion[n].cromosoma[1] = random.Next(0, 3);

                // El color del tallo. Diferentes tonos de verde
                poblacion[n].cromosoma[2] = random.Next(0, 3);

                // El ancho del tallo. De 5 a 15
                poblacion[n].cromosoma[3] = random.Next(5, 15);

                // El tamano de la flor. De 20 a 80
                poblacion[n].cromosoma[4] = random.Next(20, 80);

                // El tamano del centro de la flor. De 5 a 15
                poblacion[n].cromosoma[5] = random.Next(5, 15);
            }
        }
예제 #2
0
        public Form1()
        {
            //
            // Nescessario para o iniciador de janelas do windows
            //
            InitializeComponent();



            Random random = new Random(unchecked ((int)DateTime.Now.Ticks));

            for (int n = 0; n < 10; n++)
            {
                Flores temp = new Flores();
                populacao[n] = temp;

                //posicionando uma flor apos a outra
                populacao[n].CoordX = n * 80 + 40;

                // Inicializamos o cromosomo com valores sortidos

                // A altura vai de 10 a 300
                populacao[n].cromosomo[0] = random.Next(10, 300);

                // A cor da flor. 0-rojo, 1-azul, 2-amarillo
                populacao[n].cromosomo[1] = random.Next(0, 3);

                // A cor do talo. Diferentes tons de verde
                populacao[n].cromosomo[2] = random.Next(0, 3);

                // A espessura do talo. De 5 a 15
                populacao[n].cromosomo[3] = random.Next(5, 15);

                // O tamanho da flor. De 20 a 80
                populacao[n].cromosomo[4] = random.Next(20, 80);

                // O tamanho do centro da flor. De 5 a 15
                populacao[n].cromosomo[5] = random.Next(5, 15);
            }
        }
예제 #3
0
        private void Crossover()
        {
            // Llevamos a cabo el cross over

            // Copiamos los padres, ya que todo el arreglo sera
            // llenado nuevamente con hijos

            Flores PadreA = new Flores();
            Flores PadreB = new Flores();

            // Copiamos los padres
            for (int n = 0; n < 6; n++)
            {
                PadreA.cromosoma[n] = poblacion[iPadreA].cromosoma[n];
                PadreB.cromosoma[n] = poblacion[iPadreB].cromosoma[n];
            }

            // Creamos la siguiente generacion

            Random random = new Random(unchecked ((int)DateTime.Now.Ticks));


            for (int n = 0; n < 10; n++)
            {
                int desde = random.Next(0, 5);
                int hasta = random.Next(desde, 6);

                for (int c = desde; c < hasta; c++)
                {
                    // Si el random es 0, se copia el gen de PadreA
                    // si el random es 1, se copia el gen de PadreB
                    if (random.Next(0, 2) == 0)
                    {
                        poblacion[n].cromosoma[c] = PadreA.cromosoma[c];
                    }
                    else
                    {
                        poblacion[n].cromosoma[c] = PadreB.cromosoma[c];
                    }

                    // incluimos la mutacion
                    if (random.Next(0, 100) <= 5)
                    {
                        if (c == 0)
                        {
                            poblacion[n].cromosoma[0] = random.Next(10, 300);
                        }

                        if (c == 1)
                        {
                            poblacion[n].cromosoma[1] = random.Next(0, 3);
                        }

                        if (c == 2)
                        {
                            poblacion[n].cromosoma[2] = random.Next(0, 3);
                        }

                        if (c == 3)
                        {
                            poblacion[n].cromosoma[3] = random.Next(5, 15);
                        }

                        if (c == 4)
                        {
                            poblacion[n].cromosoma[4] = random.Next(20, 80);
                        }

                        if (c == 5)
                        {
                            poblacion[n].cromosoma[5] = random.Next(5, 15);
                        }
                    }
                }
            }
        }
예제 #4
0
        private void Crossover()
        {
            //Nós copiamos os pais, pois todo o array será preenchido novamente com os filhos

            Flores PaiA = new Flores();
            Flores PaiB = new Flores();

            // Copiamos os pais
            for (int n = 0; n < 6; n++)
            {
                PaiA.cromosomo[n] = populacao[iPaiA].cromosomo[n];
                PaiB.cromosomo[n] = populacao[iPaiB].cromosomo[n];
            }

            // Criamos a proxima geração

            Random random = new Random(unchecked ((int)DateTime.Now.Ticks));


            for (int n = 0; n < 10; n++)
            {
                int desde = random.Next(0, 5);
                int ate   = random.Next(desde, 6);

                for (int c = desde; c < ate; c++)
                {
                    // Se o random é 0,  copiamos o gen de Pai A
                    // Se o random é 1,  copiamos o gen de Pai B
                    if (random.Next(0, 2) == 0)
                    {
                        populacao[n].cromosomo[c] = PaiA.cromosomo[c];
                    }
                    else
                    {
                        populacao[n].cromosomo[c] = PaiB.cromosomo[c];
                    }

                    // incluimos a multacao
                    if (random.Next(0, 100) <= 5)
                    {
                        if (c == 0)
                        {
                            populacao[n].cromosomo[0] = random.Next(10, 300);
                        }

                        if (c == 1)
                        {
                            populacao[n].cromosomo[1] = random.Next(0, 3);
                        }

                        if (c == 2)
                        {
                            populacao[n].cromosomo[2] = random.Next(0, 3);
                        }

                        if (c == 3)
                        {
                            populacao[n].cromosomo[3] = random.Next(5, 15);
                        }

                        if (c == 4)
                        {
                            populacao[n].cromosomo[4] = random.Next(20, 80);
                        }

                        if (c == 5)
                        {
                            populacao[n].cromosomo[5] = random.Next(5, 15);
                        }
                    }
                }
            }
        }