private static void InitiateModel(SimulationContext context, int nbLifts, int nbFloors, int liftMaximumCapacity, int liftMethod, int simulationMinuteTime, int seed, long meanWorkTime, double meanPerson) { lifts = new List <Lift>(); Random rand = new Random(); List <ConcurrentQueue <Person> > personsQueues = new List <ConcurrentQueue <Person> >(); for (int i = 0; i < nbFloors; i++) { personsQueues.Add(new ConcurrentQueue <Person>()); } personGenerator = new PersonGenerator(personsQueues, nbFloors, meanPerson, simulationMinuteTime); for (int i = 0; i < nbLifts; i++) { if (liftMethod == 0) { lifts.Add(new Lift(liftMaximumCapacity, nbFloors, new Random(seed), personGenerator, new LinearScanOrdonancer((int)LinearScanOrdonancer.Heading.UPWARDS, 0), meanWorkTime)); } if (liftMethod == 1) { lifts.Add(new Lift(liftMaximumCapacity, nbFloors, new Random(seed), personGenerator, new ShorterSeekTimeFirstOrdonancer((int)LinearScanOrdonancer.Heading.UPWARDS, 0), meanWorkTime)); } if (liftMethod == 2) { lifts.Add(new Lift(liftMaximumCapacity, nbFloors, new Random(seed), personGenerator, new DefaultOrdonancer((int)LinearScanOrdonancer.Heading.UPWARDS, 0), meanWorkTime)); } } new SimulationEndTrigger(() => context.TimePeriod >= simulationMinuteTime * 60 && IsModelEmpty(context)); }
public Lift(int maxCapacity, int nbFloors, Random random, PersonGenerator generator, FloorOrdonancer ordonancer, long meanWorkTime) : base() { this.MaxCapacity = maxCapacity; this.CurrentLoad = 0; this.PersonsInLift = new List <Person>(); this.NbFloors = nbFloors; this.CurrentFloor = 0; this.rand = random; this.expo = new Exponential(1.0); this.RequestedFloors = new List <int>(); this.ProcessedPersons = new List <Person>(); this.personsGenerator = generator; this.Ordonancer = ordonancer; this.meanWorkTime = meanWorkTime; this.TimeBusy = 0; }