static void Main(string[] args) { CycleX.solucionCycleX(); PMX.solucionPMX(); //WriteLine(Datos.listaAulas[1].horavalida(6)); //imprimirPoblacion_Bloques(Datos.listaHorariosHijos); //int fitness = -1; //generaciones = 0; //Console.Clear(); //while (fitness !=0) //{ // PMX.nuevaGeneracion(); // generaciones++; // for (int i = 0; i < Datos.listaHorariosHijos.Count; i++) // { // System.Console.SetCursorPosition(0, 0); // WriteLine("Promedio Fitness:" + Datos.listaHorariosHijos[i].fitness().ToString() + "\t\nMejor Fitness\t:" + fitness.ToString() + "\t\nGeneraciones\t:" + generaciones.ToString()); // fitness = Datos.listaHorariosHijos[i].fitness() < fitness || fitness==-1 ? Datos.listaHorariosHijos[i].fitness() : fitness; // if (fitness == 0) // { // Datos.listaHorariosHijos[i].imprimir_Bloques(); // break; // } // } ////} //back = new BackTracking(); //back.backTracking(); //ReadKey(); }
public static void solucionPMX() { mutaciones = 0; fallos = 0; generaciones = 0; int fitness = -1; Datos.listaHorariosHijos = new List <Horario>(); Datos.listaHorariosPadres = new List <Horario>(); Datos.poblacionInicial((Datos.cantidadlecciones / 3) * 4); generaciones = Datos.cantidadlecciones * 2; Console.Clear(); for (int j = 0; j < Datos.cantidadlecciones * 2 && fitness != 0; j++) { PMX.nuevaGeneracion(); generaciones--; int prom = 0; for (int i = 0; i < Datos.listaHorariosHijos.Count; i++) { prom += Datos.listaHorariosHijos[i].fitness(); fitness = Datos.listaHorariosHijos[i].fitness() < fitness || fitness == -1 ? Datos.listaHorariosHijos[i].fitness() : fitness; } System.Console.SetCursorPosition(0, 0); WriteLine("Promedio Fitness:" + prom / Datos.individuosporgeneracion + "\t\nMejor Fitness\t:" + fitness.ToString() + "\t\nGeneraciones restantes\t:" + generaciones.ToString() + "\t"); } WriteLine(); WriteLine(); Datos.listaHorariosHijos[0].imprimirBloquesShort(); WriteLine("Fitness :" + fitness); ReadKey(); }