public JsonResult CargaExcel_BD(string excel, string sheet, string ciclo)
        {
            //TODO: Hacer validaciones de ciclo por si se anota mal
            object[] res = new object[] { true, "" };
            Conexion c;
            string   excelDir = Server.MapPath("~/Archivos/") + excel;

            try
            {
                c       = new Conexion(Conexion.datosConexion, excelDir, ciclo);
                c.Sheet = sheet;
                ListaGrupos grupos = c.IGrupos_Light(ciclo);

                c.Grupos_Carga(grupos, null);
            }
            catch (Exception ex)
            {
                res[0] = false;
                res[1] = ex.Message;
            }
            return(new JsonResult()
            {
                Data = res, JsonRequestBehavior = JsonRequestBehavior.AllowGet
            });
        }
        private void ResuelveEmpalme(ListaVariables empalme)
        {
            ListaGrupos    Temp;
            ListaVariables aux;
            Salon          s;

            aux = empalme.Empalmados();

            //Chequeo de empalme
            if (aux.Count > 1 && permiteEmpalmes.busca(aux[0].Cve_espacio) == null)
            {
                s = salones.busca(empalme[0].Cve_espacio);
                if (s == null)
                {
                    return;             //Si no encuentra el salon es porque es algo como Campo o asi. Se valen los empalmes
                }
                aux.SetSalones(salones);

                Temp = new ListaGrupos(empalme.EnSalonesFijos().Where(g => g.Salon_fijo == s.Cve_espacio).ToList());

                if (Temp.Count() != 0)//Solo uno tiene preferencia, y a ese se le va a dar
                {
                    AsignacionPreferencial(empalme, s);
                }
                else    // Si no hay preferencial entonces se elegira por otro medio
                {
                    AsignacionMejorEleccion(empalme, s);
                }
            }

            grupos.Actualiza(empalme);
        }
        public void Conexion_ExportacionPartes_Test()
        {
            int gruposTotales = 0;
            int gruposRes     = 0;

            try
            {
                Conexion    c       = new Conexion();
                LibroExcel  excel   = new LibroExcel(@"exp_2016_2017_II.xlsx", "2016-2017/II", "T");
                ListaGrupos grupos  = new ListaGrupos(c.Grupos("2016-2017/I", 7, 8, false));
                ListaGrupos grupos2 = new ListaGrupos(c.Grupos("2016-2017/I", 8, 9, false));

                gruposTotales = grupos.Count() + grupos2.Count();
                excel.EscribeGrupos(grupos, "prueba02");
                excel.EscribeGrupos(grupos2, "prueba02");

                Conexion c2 = new Conexion(Conexion.datosConexion, @"exp_2016_2017_II.xlsx", "2016-2017/I", "T");
                c2.Sheet = "prueba02";

                grupos    = new ListaGrupos(c2.Grupos("2016-2017/I"));
                gruposRes = grupos.Count();

                Assert.IsFalse(gruposTotales != gruposRes, "No son los grupos");
            }
            catch (Exception ex)
            {
                Assert.Fail(ex.Message);
            }
        }
示例#4
0
 public void CargarGrupos()
 {
     if (App.Global.CadenaConexion == null)
     {
         ListaGrupos.Clear();
         return;
     }
     ListaGrupos = BdGruposGraficos.getGrupos();
 }
        /// <summary>
        /// Constructor del Individuo.
        /// Inicializa el arreglo de cromosomas.
        /// </summary>
        /// <param name="salonesDisponibles">Lista de salones a considerar para la interacion del algoritmo</param>
        public Individuo(ListaGrupos gruposPorAsignar, int hora)
        {
            cromosomas = new List <Variable>();

            foreach (Grupo g in gruposPorAsignar)
            {
                cromosomas.Add(new Variable(g, hora));
            }
        }
 public ListaVariables(ListaGrupos grupos)
 {
     materias   = grupos.Materias;
     profesores = grupos.Profesores;
     foreach (Grupo g in grupos)
     {
         this.grupos.Add(new Variable(g, 0));
     }
 }
 private void QuitaSalon(ListaGrupos empalmes, Grupo excepto = null)
 {
     foreach (Grupo g in empalmes)
     {
         if (excepto != null && excepto.cve_full != g.cve_full)
         {
             g.Cve_espacio = "";
         }
     }
 }
 public void Conexion_Importacion_Excel_Test()
 {
     try
     {
         Conexion c = new Conexion(Conexion.datosConexion, @"exp_2016_2017_II.xlsx", "T");
         c.Sheet = "prueba01_2016_2017_II";
         ListaGrupos grupos = new ListaGrupos(c.Grupos("2016-2017/II"));
     }
     catch (Exception ex)
     {
         Assert.Fail(ex.Message);
     }
 }
示例#9
0
        /// <summary>
        /// Checa que haya estado en ese salon el año pasado
        /// </summary>
        /// <param name="salon"></param>
        /// <returns>Puntos dependiendo del semestre en el que estubo</returns>
        public float ValorSemestrePasado(Salon salon = null)
        {
            Salon s = salon != null ? salon : Salon;

            if (s != null)
            {
                ListaGrupos semestres = otrosSemestres.EnSalon(s.Cve_espacio);
                if (semestres.Count() != 0)
                {
                    return((new ListaVariables(semestres).OrdenarPorCiclo() as IList <Variable>)[0].fCiclo);
                }
            }
            return(0);
        }
示例#10
0
 public void GuardarGrupos()
 {
     try {
         HayCambios = false;
         if (ListaGrupos != null && ListaGrupos.Count > 0)
         {
             BdGruposGraficos.GuardarGrupos(ListaGrupos.Where(gg => gg.Nuevo || gg.Modificado));
         }
     } catch (Exception ex) {
         Mensajes.VerError("GraficosViewModel.GuardarGrupos", ex);
         HayCambios = true;
     } finally {
     }
 }
 public ChecaEmpalmes(ListaGrupos _grupos, IList <Salon> _salones)
 {
     EmpalmesResueltos = new List <Grupo>();
     grupos            = new ListaVariables(_grupos);
     salones           = new ListaSalones(_salones);
     permiteEmpalmes   = salones.PermiteEmpalmes();
     if (Grupos.Count != 0)
     {
         ciclo = Grupos[0].Ciclo;
     }
     else
     {
         ciclo = "";
     }
 }
        public void Conexion_NuevoExel_Test()
        {
            try
            {
                Conexion    c      = new Conexion();
                Grupo       g      = new Grupo(c.Querry("Select * from asignacion.ae_horario where cve_materia = '1001'").Rows[0], c.DGrupos);
                LibroExcel  excel  = new LibroExcel(@"excel.xlsx", "2016-2017/II", "T");
                ListaGrupos grupos = new ListaGrupos();

                grupos.Add(g);
                excel.EscribeGrupos(grupos, "prueba", c.Materias_AsDictionary(), c.Profesores_AsDicctionary());
            }
            catch (Exception ex)
            {
                Assert.Fail(ex.Message);
            }
        }
        public void Conexion_Exportacion_Test()
        {
            try
            {
                Conexion    c          = new Conexion();
                LibroExcel  excel      = new LibroExcel(@"exp_2016_2017_II.xlsx", "2016-2017/II", "T");
                ListaGrupos grupos     = new ListaGrupos(c.Grupos("2016-2017/II", 7, 8));
                var         profesores = c.Profesores_AsDicctionary();
                var         materias   = c.Materias_AsDictionary();

                excel.EscribeGrupos(grupos, "prueba01_2016_2017_II", materias, profesores);
            }
            catch (Exception ex)
            {
                Assert.Fail(ex.Message);
            }
        }
示例#14
0
        /// <summary>
        /// Constructor de la iteracion del algoritmo
        /// </summary>
        /// <param name="grupos">Lista de grupos a asignar</param>
        /// <param name="salones">Lista de salones disponibles para asignar</param>
        public Algoritmo(ListaGrupos grupos, ListaSalones salones, int hora, int _tamPoblacion = 5, int _generaciones = 50)
        {
            this.grupos  = new ListaVariables(grupos.SinAsignar());
            this.grupos  = this.grupos.EnHoras(hora, hora + 1);
            this.grupos  = this.grupos.EnDias();
            this.salones = salones.Asignables();
            this.hora    = hora;
            tamPoblacion = _tamPoblacion;
            generaciones = _generaciones;
            errores      = new ListaVariables();

            poblacion      = new Individuo[tamPoblacion];
            mejorPoblacion = new Individuo[tamPoblacion];

            for (int i = 0; i < tamPoblacion; i++)
            {
                poblacion[i] = new Individuo(Grupos, hora);
                poblacion[i].asignaSalones(Salones);
            }
        }
        /// <summary>
        /// Busca los empalmes en el horario designado y comienza a acomodarlos
        /// </summary>
        /// <returns></returns>
        public void ejecuta()
        {
            List <ListaVariables> empalmados = new List <ListaVariables>();
            ListaGrupos           checando   = new ListaGrupos();

            //obtiene grupos de grupos empalmados
            empalmados = new ListaVariables(grupos.NoEn(permiteEmpalmes)).AgrupaGruposEmpalmados();

            foreach (ListaVariables empalme in empalmados)
            {
                try
                { ResuelveEmpalme(empalme); }
                catch (Exception)//Se le quita el salon a todos
                { QuitaSalon(empalme); }

                foreach (Grupo g in empalme)
                {
                    EmpalmesResueltos.Add(g);
                }
            }
        }
示例#16
0
 public RevisionEmpalmes(ListaGrupos _grupos, IList <Salon> _salones) : base(_grupos, _salones)
 {
 }
示例#17
0
 public AlgoritmoGenetico(ListaGrupos grupos, ListaSalones salones, int hora, int _tamPoblacion = 5, int _generaciones = 50) : base(grupos, salones, hora, _tamPoblacion, _generaciones)
 {
 }
示例#18
0
 private static void imprimeLista(ListaGrupos lista)
 {
     Console.WriteLine("****************************************");
     Console.WriteLine(lista.ToString());
 }