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();
 }
Esempio n. 2
0
        public static void solucionCycleX()
        {
            mutaciones   = 0;
            fallos       = 0;
            generaciones = 0;
            int fitness = -1;

            Datos.listaHorariosHijos  = new List <Horario>();
            Datos.listaHorariosPadres = new List <Horario>();
            Datos.poblacionInicial((Datos.cantidadlecciones / 3) * 5);
            generaciones = (Datos.cantidadlecciones / 3) * 4;
            Console.Clear();
            for (int j = 0; j < (Datos.cantidadlecciones / 3) * 4 && fitness != 0; j++)
            {
                CycleX.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();
        }