/// <summary> /// Ejecuta un encuentro entre dos individuos. /// </summary> public void Encuentro(EstructuraIndividuo I, EstructuraIndividuo J) { EstructuraIndividuo[] Ind = new EstructuraIndividuo[2]; Historial H = new Historial(); if (r.Next(2) == 0) { Ind [0] = I; Ind [1] = J; } else { Ind [0] = J; Ind [1] = I; } H.Ind [0] = Ind [0].Indiv; H.Ind [1] = Ind [1].Indiv; if (Ind [0].Siguiendo || Ind [1].Siguiendo) { Console.Write(""); } // Ejecutar las rondas while (H.Actual < IteracionesPorEncuentro) { // H.Actual++; int a; int b; a = Ind [0].Indiv.Ejecutar(H); b = Ind [1].Indiv.Ejecutar(H.Invertir()); // Los jugadores escogen a y b respectivamente. //Agrega en el historial las últimas desiciones. H.AgregaTurno(a, b); // Modificar la puntuación Ind [0].Punt += Torneo.Puntuación(a, b) / IteracionesPorEncuentro; Ind [1].Punt += Torneo.Puntuación(b, a) / IteracionesPorEncuentro; } if (Ind [0].Siguiendo || Ind [1].Siguiendo) { Console.WriteLine(string.Format("{0}:{1}\n{2}:{3}", Ind [0].Indiv, H.ObtenerPuntuación(0), Ind [1].Indiv, H.ObtenerPuntuación(1))); if (Console.ReadLine() != "") { // Mostrar el historial for (int i = 0; i < 2; i++) { for (int j = 0; j < H.Count; j++) { Console.Write(H [i, j]); } Console.WriteLine(" - " + H.Ind [i]); } } } }
public float ObtenerPuntuación(int i) { if (i < 0 || i > 1) { throw new IndexOutOfRangeException(); } float ret = 0; for (int j = 0; j < Actual; j++) { ret += Torneo.Puntuación(this [i, j], this [1 - i, j]); } return(ret); }
public static int Encuentro(Individuo I, Individuo J, int Long) { Torneo Trn = new Torneo(); EstructuraIndividuo[] EI = new EstructuraIndividuo[2]; EI [0] = new EstructuraIndividuo(I); EI [1] = new EstructuraIndividuo(J); Trn.Individuos.Add(new EstructuraIndividuo(I)); Trn.Individuos.Add(new EstructuraIndividuo(J)); Trn.IteracionesPorEncuentro = Long; Trn.NumRondas = 1; Trn.MaxIndiv = 2; Trn.MinIndiv = 2; Trn.RunOnce(true); return(Trn.Individuos [0].Punt < Trn.Individuos [1].Punt ? 0 : 1); }
public static void Main(string[] args) { // Inicializar la pantalla Console.SetWindowSize(ColSize * NumCol, 24); Console.CursorVisible = false; //Console.BufferWidth = ColSize * NumCol; //Console.SetBufferSize (ColSize * NumCol, 10); //JRápido Jue = new JRápido(); //Evol Ev = new Evol (); //Ev.Run (); Torneo T = new Torneo(); T.IteracionesPorEncuentro = 100; T.NumRondas = 1000; T.InicializaTorneo(); T.Run(); }
/// <summary> /// Entra al ciclo principal. /// </summary> public void Run() { while (true) { RunOnce(); MatarMenosAdaptados(); MuestraStats(); ReplicarAdaptados(); ResetScore(); while (Console.KeyAvailable) { ConsoleKeyInfo kp = Console.ReadKey(true); if (kp.KeyChar == ' ') // Humano vs individuo al azar { Torneo.Encuentro(new IndividuoHumano(), Individuos [r.Next(Individuos.Count)].Indiv, IteracionesPorEncuentro); } if (kp.KeyChar == '<') // Agrega un individuo en observacion { Individuo I = new Individuo(Console.ReadLine()); EstructuraIndividuo J = new EstructuraIndividuo(I); J.Siguiendo = true; Individuos.Add(J); } if (kp.KeyChar == 'z') // Peleas contra 1h { Individuo I = new Individuo("1h0i0=?"); Torneo.Encuentro(new IndividuoHumano(), I, IteracionesPorEncuentro); } if (kp.KeyChar == 'f') // Sigue a in individuo al azar { Individuos [r.Next(Individuos.Count)].Siguiendo = true; } } } }