예제 #1
0
        static void Main(string[] args)
        {
            inicializaConeccion();
            TimeSpan       stop;
            TimeSpan       start = new TimeSpan(DateTime.Now.Ticks);
            Algoritmo      alg;
            ChecaEmpalmes  emp;
            PreAsignacion  pre;
            ListaVariables grupos  = new ListaVariables(c.Grupos("2016-2017/II"));
            ListaSalones   salones = new ListaSalones(c, c.Salones());
            ListaVariables gruposActuales;

            for (int i = 7; i < 22; i++)
            {
                gruposActuales = new ListaVariables(grupos.EnHoras(i, i + 1));

                emp = new ChecaEmpalmes(grupos, salones);
                emp.ejecuta();
                grupos.Actualiza(emp.Grupos);

                pre = new PreAsignacion(grupos, salones);
                pre.preferencial();
                pre.semestres_anteriores();
                grupos.Actualiza(pre.Grupos);

                alg = new Algoritmo(grupos, salones, i, 5, 50);
                alg.AsignaSalones();
                grupos.Actualiza(alg.GruposAsignados);

                c.Grupos_Carga(gruposActuales);
            }
            stop = new TimeSpan(DateTime.Now.Ticks);
            Console.Write("***Pulsa una tecla para continuar****\n");
            Console.WriteLine("Tiempo del proceso: " + (stop.Subtract(start).TotalMilliseconds / 1000) + " segundos");

            while (Console.ReadKey().Key != ConsoleKey.Enter)
            {
                ;
            }
        }
        public JsonResult EjecutaOperaciones(string hora, int[] operaciones, string ciclo, string excel, string hoja)
        {
            //-empalmes -preasignacion -otrosSemestres -algoritmo
            string res      = "<strong>Asignacion Fallida</strong>\n";
            string detalles = "";

            try
            {
                Conexion       c       = new Conexion(Conexion.datosConexion, Server.MapPath("~/Archivos/" + excel), ciclo);
                ListaVariables grupos  = new ListaVariables(c.Grupos_EmpiezanA(ciclo, Convert.ToInt32(hora), false));
                ListaSalones   salones = new ListaSalones(c, c.Salones(), Convert.ToInt32(hora));
                salones.SetHorarios(c, Ciclo);

                int        numero_Operacion = 0;
                IOperacion operacion        = null;

                foreach (int op in operaciones)
                {
                    numero_Operacion++;

                    switch ((byte)op)  //Fabrica abstracta
                    {
                    case (byte)EOperaciones.algoritmoGenetico:
                        operacion = new AlgoritmoGenetico(grupos, salones, Convert.ToInt32(hora), 100, 1000);
                        break;

                    case (byte)EOperaciones.empalmes:
                        operacion = new RevisionEmpalmes(grupos, salones);
                        break;

                    case (byte)EOperaciones.otrosSemestres:
                        operacion = new AsignacionOtrosSemestres(grupos, salones);
                        break;

                    case (byte)EOperaciones.preasignacion:
                        operacion = new AsignacionPreferencial(grupos, salones);
                        break;
                    }

                    if (operacion != null)
                    {
                        operacion.Ejecuta();
                        if (operacion.Resultado.Count != 0)
                        {
                            grupos.Actualiza(operacion.Resultado);
                            detalles += Grupos2Table(operacion.Resultado.OrderBy(g => g.Cve_espacio).ToList(), operacion.NombreOperacion);
                        }
                        else
                        {
                            detalles += string.Format("{0} sin grupos modificados", operacion.NombreOperacion);
                        }

                        detalles += "<br>";
                    }
                }

                c.Grupos_Carga(grupos, hoja, c.Materias_AsDictionary(), c.Profesores_AsDicctionary());

                res = string.Format("Asignacion de {0} completada<br>{1}", hora, detalles);
            }
            catch (Exception ex)
            {
                res += "\n" + ex.Message;
            }

            return(new JsonResult()
            {
                Data = res, JsonRequestBehavior = JsonRequestBehavior.AllowGet
            });
        }