SimPy parkeringsplads simulering eksempel

Jeg ønskede at udvide min serie af SimPy-eksempler til forsyningskæde og fremstillingssimulering. I denne artikel viser jeg, hvordan du kan modellere en parkeringsplads i Python ved hjælp af SimPy. SimPy er et simuleringsmodelleringsbibliotek for diskret hændelse i Python. Andre SimPy-eksempler og også R-baserede parkeringspladssimuleringsmodeller er allerede blevet delt på denne blog tidligere. Her er nogle eksempler:

Den her diskuterede model kunne også bruges til at modellere andre lignende systemer, for eksempel et procesbufferlager med minimale opholdstider (afkølingsprocesser, hærdningsprocesser og lignende) og dets slot/rum-udnyttelse.

Fordele ved parkeringspladssimuleringer

Parkeringspladssimuleringsmodeller er uvurderlige værktøjer i supply chain management, der tilbyder en lang række fordele. Disse modeller letter den effektive allokering af ressourcer, såsom plads og arbejdskraft, og optimerer deres brug. De hjælper med kapacitetsplanlægning, hvilket muliggør velinformerede beslutninger vedrørende udvidelse eller reduktion af faciliteter. Trafikstrømsanalyse forbedrer den samlede bevægelse af køretøjer inden for distributionscentre, hvilket reducerer trængsel og ventetider. Effektiv køstyring sikrer, at varer læsses og losses hurtigt.

Desuden hjælper parkeringspladssimuleringer med at identificere muligheder for omkostningsreduktion ved at minimere tomgangstid og øge driftseffektiviteten. Præstationsmåling på tværs af forskellige forsyningskædekomponenter understøtter benchmarking og målsætning. Disse modeller muliggør udforskning af “hvad hvis”-scenarier, hvilket tillader test og vurdering af layout, bemanding og procesændringer. De hjælper også med proaktiv risikoreduktion ved at identificere flaskehalse og sårbarheder i parkeringspladsoperationer .

Derudover fungerer de som værdifulde værktøjer til medarbejdertræning og kompetenceudvikling, hvilket giver et kontrolleret miljø til læring af parkeringspladser og læsseoperationer. Understøttelse af bæredygtighedsinitiativer, simuleringer af parkeringspladser optimerer ruter og reducerer miljøpåvirkningen. Disse simuleringer genererer datadrevet indsigt, der informerer strategisk beslutningstagning, og de fremmer en kultur med kontinuerlige forbedringer ved at lette afprøvningen af ​​nye strategier for løbende optimering. Integrering af parkeringspladssimuleringer i forsyningskædestyring kan føre til omkostningsbesparelser, effektivitetsgevinster og generelle præstationsforbedringer i forsyningskæden.

En SimPy parkeringsplads simuleringsmodel

Nedenfor er et Python-eksempel, som også er tilgængeligt på Github, der bruger simple til modellering af en parkeringsplads . Parkeringspladsen er modelleret som en Container med en defineret kapacitet. Kapaciteten modellerer antallet af parkeringspladser på pladsen.

En SimPy-proces er implementeret i parkeringspladsklassen til modellering af bilankomster. Denne proces fortsætter for et defineret antal bilankomster. Hver bil ankommer efter en tilfældigt fordelt inter-ankomsttid. Det optager derefter en ledig plads i et tilfældigt fordelt tidsrum. Herefter frigøres parkeringspladsen.

import simpy
import random

# modeling framework
class ParkingLot:

    env         :simpy.Environment
    capacity    :int
    spots       :simpy.resources.container.Container

    def __init__(self, 
        
        env :simpy.Environment, 
        capacity :int
        ):
        
        """ constructor """
        
        self.env = env
        self.capacity = capacity
        self.spots = simpy.resources.container.Container(env, capacity, init=capacity)
    
    def car_arrival(self,
        car_id :int
        ) -> None:
        """ 
    
        implement simpy process; 
        models car arrivals in the parking lot, occupying a slot for a randomly distributed duration
    
        """
    
        print(f"Car {car_id} arrives at {self.env.now}")
    
        yield self.spots.get(1)
        
        print(f"Car {car_id} parks at {self.env.now}")
        
        yield self.env.timeout(random.randint(1, 5))
        
        print(f"Car {car_id} leaves at {self.env.now}")
        
        yield self.spots.put(1)
    
    def main(self,
            cararrivals :int,
            interarrivaltime_min :int,
            interarrivaltime_max :int
            ) -> None:
        
        """ implements simpy process for main parking lot simulation run """
        
        for car in range(1, cararrivals+1):

            t = random.randint(interarrivaltime_min, interarrivaltime_max)

            yield self.env.timeout(t)

            self.env.process(self.car_arrival(car))

# setup model 
env = simpy.Environment()
parking_lot = ParkingLot(env, capacity= 10)

# setup simulation run itself
env.process(parking_lot.main(cararrivals= 10, interarrivaltime_min= 1, interarrivaltime_max= 5))

# run the model
env.run()

At køre denne model for 10 bilankomster, for en parkeringsplads med 10 parkeringspladser, genererer følgende output:

Bil 2 ankommer kl

Bil 2 parkerer ved 4

Bil 1 ankommer kl

Bil 1 parkerer ved 2

Bil 1 kører kl 3

Bil 3 ankommer kl

Bil 3 parkerer ved 7

Bil 4 ankommer kl 8

Bil 4 parkerer kl. 8

Bil 2 kører kl 9

Bil 5 ankommer kl. 9

Bil 5 parkerer kl. 9

Bil 4 kører kl 10

Bil 6 ankommer kl. 11

Bil 6 parkerer kl. 11

Bil 3 kører kl. 12

Bil 7 ankommer kl. 12

Bil 7 parkerer kl. 12

Bil 5 kører kl. 13

Bil 6 kører kl. 13

Bil 8 ankommer kl. 16

Bil 8 parkerer kl. 16

Bil 7 kører kl. 17

Bil 8 kører kl. 17

Bil 9 ankommer kl. 20

Bil 9 parkerer kl. 20

Bil 10 ankommer kl. 22

Bil 10 parkerer kl. 22

Bil 10 kører kl. 24

Bil 9 kører kl. 25

I kommende tutorials vil jeg vise, hvordan man integrerer brugerdefinerede statistikker i denne simuleringsmodel , og til sidst, hvordan man animerer den.

Afsluttende bemærkninger om SimPy parkeringspladssimuleringsmodellering

I denne artikel udviklede jeg en simpel basismodel for en parkeringsplads ved at bruge SimPy i Python. Jeg vil bruge denne model i kommende tutorials til at analysere bilankomstprocesser og parkeringspladskapacitetsudnyttelse over tid, og jeg vil animere slotudnyttelse over tid. Jeg vil endvidere detaljere modellen og implementere parkeringszoner og strategier for minimering af rejseafstande.

Hvis du vil lære mere om SimPy og simulering af diskrete hændelser generelt, kan du overveje at studere følgende SCDA blogindlæg og bidrag:

You May Also Like

Leave a Reply

Leave a Reply

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *

This site uses Akismet to reduce spam. Learn how your comment data is processed.