AddTurno() public method

Añade un Turno al Horario
public AddTurno ( Turno turno ) : void
turno Turno Turno que se desea añadir
return void
示例#1
0
        public Horario generarHorarioBT(string nombre, bool minDias, bool[] listaDias)
        {
            Queue<Horario> nodos_vivos = new Queue<Horario>();
            Queue<Horario> nodos_vivos_aux = new Queue<Horario>();
            Queue<Horario> soluciones = new Queue<Horario>();

            Horario optimo = new Horario(nombre, usuario);

            int cant_p = 0;

            // como las personales siempre tienen que estar, se meten directamente en el óptimo
            foreach (Actividad_p personal in seleccionadas_p)
            {
                foreach (Turno item in personal.Turnos)
                {
                    try
                    {
                        if(!listaDias[TaimerLibrary.convertToInt(item.Dia)])
                            throw new NotSupportedException();
                        optimo.AddTurno(item);
                        cant_p++;
                    }
                    catch (NotSupportedException)
                    {
                        throw new NotSupportedException("Con las restricciones actuales, la actividad \"" + personal.Nombre + "\" no se puede insertar");
                    }
                }
            }

            nodos_vivos.Enqueue(optimo);
            Horario temp;

            // como las académicas tienen que tener un único turno, se mete cada vez en un horario distinto
            bool asignado = false;

            try
            {
                foreach (Actividad_a academica in seleccionadas_a)
                {
                    asignado = false;
                    while (nodos_vivos.Count > 0)
                    {
                        optimo = nodos_vivos.Dequeue();
                        foreach (Turno item in academica.Turnos)
                        {
                            temp = new Horario(optimo);
                            try
                            {
                                if (!listaDias[TaimerLibrary.convertToInt(item.Dia)])
                                    throw new NotSupportedException();
                                temp.AddTurno(item);
                                if (temp.Count - cant_p < seleccionadas_a.Count)
                                    nodos_vivos_aux.Enqueue(temp);
                                else
                                    soluciones.Enqueue(temp);
                                asignado = true;
                            }
                            catch (NotSupportedException)
                            { }

                        }
                    }

                    nodos_vivos = new Queue<Horario>(nodos_vivos_aux);
                    nodos_vivos_aux.Clear();

                    if (!asignado)
                        throw new NotSupportedException("Con las restricciones actuales, la asignatura \"" + academica.Nombre + "\" no se puede insertar");

                }
                if (seleccionadas_a.Count != 0)
                {
                    posibles = new List<Horario>(soluciones.ToList());
                    optimo = null;
                }
                else
                    posibles = new List<Horario>(nodos_vivos.ToList());

                int puntuacion = int.MaxValue;
                if (minDias)
                {
                    foreach (Horario sol in posibles)
                    {
                        if (puntuarDias(sol) < puntuacion)
                        {
                            optimo = sol;
                            puntuacion = puntuarDias(sol);
                        }
                    }

                }
                else // suponemos que o es minDias o es minHuecos
                {
                    foreach (Horario sol in posibles)
                    {
                        if (puntuarHorasHueco(sol) < puntuacion)
                        {
                            optimo = sol;
                            puntuacion = puntuarHorasHueco(sol);
                        }
                    }
                }

            }
            catch (NotSupportedException)
            {
                if (posibles != null)
                {
                    posibles.Clear();
                    posibles = null;
                }
                throw;
            }

            return optimo;
        }
        protected Horario horarioPrueba()
        {
            Horario h;
            User user = new User("user", "12345678A", "*****@*****.**", "password", 1, "II");
            h = new Horario("horario", user);
            Actividad_a act = new Actividad_a("Actividad_a", "descripción", "pepe", "II");
            h.AddTurno(new Turno(new Hora(9, 0), new Hora(10, 0), dias.L, "ua", act));
            h.AddTurno(new Turno(new Hora(21, 0), new Hora(22, 0), dias.L, "ua", act));
            h.AddTurno(new Turno(new Hora(13, 30), new Hora(15, 30), dias.L, "ua", act));
            h.AddTurno(new Turno(new Hora(9, 30), new Hora(10, 45), dias.M, "ua", act));
            h.AddTurno(new Turno(new Hora(16, 30), new Hora(20, 0), dias.M, "ua", act));
            h.AddTurno(new Turno(new Hora(9, 0), new Hora(11, 20), dias.J, "ua", act));
            h.AddTurno(new Turno(new Hora(12, 30), new Hora(13, 45), dias.J, "ua", act));
            h.AddTurno(new Turno(new Hora(12, 0), new Hora(14, 30), dias.V, "ua", act));
            h.AddTurno(new Turno(new Hora(21, 0), new Hora(23, 0), dias.V, "ua", act));
            h.AddTurno(new Turno(new Hora(13, 30), new Hora(16, 0), dias.S, "ua", act));
            h.AddTurno(new Turno(new Hora(16, 0), new Hora(20, 0), dias.S, "ua", act));

            return h;
        }
示例#3
0
        //Generación de un Horario de forma Voraz
        public Horario generarHorarioVoraz(string nombre)
        {
            // el user será el 1er elemento de la lista de users de Program
            //User usertest = new User("Aitor Tilla", "12345678X", "*****@*****.**", "password", 1, "Ingeniería de Magisterio");
            Horario h = new Horario(nombre, usuario);
            foreach (Actividad_p personal in seleccionadas_p)
            {
                foreach (Turno item in personal.Turnos)
                {
                    try
                    {
                        h.AddTurno(item);
                    }
                    catch (NotSupportedException)
                    {
                        throw new NotSupportedException("La actividad " + personal.Nombre + " no se puede insertar");
                    }
                }

            }
            bool asignado;
            foreach (Actividad_a asig in seleccionadas_a)
            {
                asignado = false;
                foreach (Turno item in asig.Turnos)
                {
                    if (asignado)
                        break;
                    try
                    {
                        h.AddTurno(item);
                        asignado = true;
                    }
                    catch (NotSupportedException)
                    {
                        asignado = false;
                    }
                }
                if (!asignado)
                    throw new NotSupportedException("La asignatura " + asig.Nombre + " no se puede insertar");
            }

            return h;
        }