void Combinar() { List <Individuo3> Supervivientes = BorrarInservibles(); int count = Supervivientes.Count;//Dile no a la pedofilia! int faltantes = poblacion.Count - count; for (int i = 0; i < faltantes; i++) { Individuo3 padre1 = Supervivientes[Random.Range(0, count)]; Individuo3 padre2 = Supervivientes[Random.Range(0, count)]; Individuo3 ind = new Individuo3(); ind.AmplitudL = (Random.Range(0, 100) > 50) ? padre1.AmplitudL : padre2.AmplitudL; ind.AmplitudR = (Random.Range(0, 100) > 50) ? padre1.AmplitudR : padre2.AmplitudR; ind.FactorL = (Random.Range(0, 100) > 50) ? padre1.FactorL : padre2.FactorL; ind.FactorR = (Random.Range(0, 100) > 50) ? padre1.FactorR : padre2.FactorR; ind.OffsetXL = (Random.Range(0, 100) > 50) ? padre1.OffsetXL : padre2.OffsetXL; ind.OffsetXR = (Random.Range(0, 100) > 50) ? padre1.OffsetXR : padre2.OffsetXR; ind.OffsetYL = (Random.Range(0, 100) > 50) ? padre1.OffsetYL : padre2.OffsetYL; ind.OffsetYR = (Random.Range(0, 100) > 50) ? padre1.OffsetYR : padre2.OffsetYR; ind.AmplitudL = (Random.Range(0, 100) > RatioMutacion) ? ind.AmplitudL : Random.Range(-20, 20); ind.AmplitudR = (Random.Range(0, 100) > RatioMutacion) ? ind.AmplitudR : Random.Range(-20, 20); ind.OffsetXL = (Random.Range(0, 100) > RatioMutacion) ? ind.OffsetXL : Random.Range(0, 1); ind.OffsetXR = (Random.Range(0, 100) > RatioMutacion) ? ind.OffsetXR : Random.Range(0, 1); ind.OffsetYL = (Random.Range(0, 100) > RatioMutacion) ? ind.OffsetYL : Random.Range(-30, 30); ind.OffsetYR = (Random.Range(0, 100) > RatioMutacion) ? ind.OffsetYR : Random.Range(-30, 30); ind.FactorL = (Random.Range(0, 100) > RatioMutacion) ? ind.FactorL : Random.Range(-10, 10); ind.FactorR = (Random.Range(0, 100) > RatioMutacion) ? ind.FactorR : Random.Range(-10, 10); Supervivientes.Add(ind); } poblacion = Supervivientes; }
public void SetUp(Individuo3 ind) { AmplitudL = ind.AmplitudL; AmplitudR = ind.AmplitudR; OffsetXR = ind.OffsetXR; OffsetXL = ind.OffsetXL; OffsetYR = ind.OffsetYR; OffsetYL = ind.OffsetYL; FactorL = ind.FactorL; FactorR = ind.FactorR; }
void Puntuar() { for (int i = 0; i < CantidadDeIndividuos; i++) { float puntuacion = individuos[i].transform.position.x; puntuacion = puntuacion * ((individuos[i].transform.position.y > 10 || individuos[i].transform.position.y < -5) ? 0.1f : 1); Individuo3 ind = poblacion[i]; ind.Puntaje = puntuacion; poblacion[i] = ind; Destroy(individuos[i]); } individuos = new List <GameObject>(); }
void PoblacionInicial() { for (int i = 0; i < CantidadDeIndividuos; i++) { Individuo3 ind = new Individuo3(); ind.AmplitudL = Random.Range(-20, 20); ind.AmplitudR = Random.Range(-20, 20); ind.OffsetXL = Random.Range(0, 1); ind.OffsetXR = Random.Range(0, 1); ind.OffsetYL = Random.Range(-30, 30); ind.OffsetYR = Random.Range(-30, 30); ind.FactorL = Random.Range(-10, 10); ind.FactorR = Random.Range(-10, 10); poblacion.Add(ind); } }
void Organizar() { //Metodo de burbuja bool sw = false; // WRONG while (!sw) { sw = true; for (int i = 1; i < poblacion.Count; i++) { if (poblacion[i].Puntaje > poblacion[i - 1].Puntaje) { Individuo3 ind = poblacion[i]; poblacion[i] = poblacion[i - 1]; poblacion[i - 1] = ind; sw = false; } } } }