Ejemplo n.º 1
0
        public static void InitializeQueues()
        {
            // Dos colas con tiempos de atencion disferente.
            PeopleQueue queue1 = new PeopleQueue()
            {
                Interval = TimeSpan.FromMinutes(2), Name = "queue1", People = new Queue <Person>()
            };
            PeopleQueue queue2 = new PeopleQueue()
            {
                Interval = TimeSpan.FromMinutes(3), Name = "queue2", People = new Queue <Person>()
            };

            mannager = new QueueMannager
            {
                Queues = new List <PeopleQueue>
                {
                    queue1,
                    queue2
                }
            };

            mannager.InitiateTimers();

            // Cargar persona desde la base de datos que no han sido atendidas.
            using var db = new PersonContext();
            var people = db.People.ToList().Where(p => !p.Attended);

            foreach (var p in people)
            {
                mannager.AddPerson(p);
            }
        }
 public QueueController(IReadOnlyCollection <Elevator> elevators, IEnumerable <Floor> floors)
 {
     foreach (var floor in floors)
     {
         var floorQuery = new PeopleQueue {
             NumberOfFloor = floor
         };
         foreach (var elevator in elevators)
         {
             var list = new List <Person>();
             floorQuery.PeopleInQueue.Add(elevator, list);
         }
         Queues.Add(floorQuery);
     }
 }
Ejemplo n.º 3
0
        public void Sim()
        {
            List <Person> plList = new List <Person>();

            // in 10 sek
            (int t, int length)longestQueue = (0, 0);
            for (int i = 0; i < 1200; i += 10)
            {
                if (i % 60 == 0)
                {
                    PeopleQueue.Enqueue(new Person());
                }

                if (i % 20 == 0)
                {
                    plList.Add(PeopleQueue.Dequeue().NewTime(i));
                }

                for (int t = plList.Count - 1; t >= 0; t--)
                {
                    if (plList[t].TimeUntilBackInQueue >= i)
                    {
                        PeopleQueue.Enqueue(plList[t]);
                        plList[t].TimeUntilBackInQueue = 0;
                        plList.Remove(plList[t]);
                    }
                }
                sw.WriteLine("T: " + i + " Length: " + PeopleCount);
                if (PeopleCount > longestQueue.length)
                {
                    longestQueue = (i, PeopleCount);
                }
            }

            for (int i = 1200; i < 1800; i += 10)
            {
                if (i % 60 == 0)
                {
                    PeopleQueue.Dequeue();
                    PeopleQueue.Dequeue();
                }

                if (i % 20 == 0)
                {
                    plList.Add(PeopleQueue.Dequeue().NewTime(i));
                }

                for (int t = plList.Count - 1; t >= 0; t--)
                {
                    if (plList[t].TimeUntilBackInQueue >= i)
                    {
                        PeopleQueue.Enqueue(plList[t]);
                        plList[t].TimeUntilBackInQueue = 0;
                        plList.Remove(plList[t]);
                    }
                }

                sw.WriteLine("T: " + i + " Length: " + PeopleCount);

                if (PeopleCount > longestQueue.length)
                {
                    longestQueue = (i, PeopleCount);
                }
            }


            sw.WriteLine("LongestQueue: T:" + longestQueue.t / 60 + " Length: " + longestQueue.length);
            Console.WriteLine("LongestQueue: T:" + longestQueue.t / 60 + " Length: " + longestQueue.length);
            sw.Close();
        }