Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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;
        }