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