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 }); }