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); } }
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); } }
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); } } } } }
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); } } } } }