Esempio n. 1
0
        private void LeaveLift(Person p)
        {
            if (p.Departure == 0)
            {
                p.ExitingLiftTimeGoingUp = Context.TimePeriod;
                p.TotalTimeInLift        = Context.TimePeriod - p.EnteringLiftTimeGoingUp;
                p.Departure             = p.Destination;
                p.Destination           = 0;
                p.TimeBeforeGoingActive = (long)meanWorkTime * (long)expo.Density(rand.NextDouble());

                personsGenerator.PersonsPool.Add(p);
            }
            else
            {
                p.ExitingLiftTimeGoingDown = Context.TimePeriod;
                p.TotalTimeInLift         += Context.TimePeriod - p.EnteringLiftTimeGoingDown;
                ProcessedPersons.Add(p);


                ProcessedCount++;
            }

            PersonsInLift.Remove(p);


            CurrentLoad--;
        }
Esempio n. 2
0
        private void EnterLift(Person p)
        {
            if (p.Departure == 0)
            {
                p.EnteringLiftTimeGoingUp = Context.TimePeriod;
                p.TotalQueueTime          = Context.TimePeriod - p.BeginQueueTimeGoingUp;
                personsGenerator.Floors[p.Departure].AverageQueueSize += Context.TimePeriod - p.BeginQueueTimeGoingUp;

                if ((Context.TimePeriod - p.BeginQueueTimeGoingUp) > personsGenerator.Floors[p.Departure].MaximumWaitingTime)
                {
                    personsGenerator.Floors[p.Departure].MaximumWaitingTime = Context.TimePeriod - p.BeginQueueTimeGoingUp;
                }
            }
            else
            {
                p.EnteringLiftTimeGoingDown = Context.TimePeriod;
                p.TotalQueueTime           += Context.TimePeriod - p.BeginQueueTimeGoingDown;
                personsGenerator.Floors[p.Departure].AverageQueueSize += Context.TimePeriod - p.BeginQueueTimeGoingDown;
                if ((Context.TimePeriod - p.BeginQueueTimeGoingUp) > personsGenerator.Floors[p.Departure].MaximumWaitingTime)
                {
                    personsGenerator.Floors[p.Departure].MaximumWaitingTime = Context.TimePeriod - p.BeginQueueTimeGoingUp;
                }
            }


            PersonsInLift.Add(p);



            Console.WriteLine("Person {0} is entering the lift", p.Id);

            if (!RequestedFloors.Contains(p.Destination))
            {
                RequestedFloors.Add(p.Destination);
            }
            CurrentLoad++;
        }