Beispiel für die Simulation eines SimPy-Parkplatzsimulationsmodells

Ich wollte meine Reihe von SimPy-Beispielen für die Lieferketten- und Fertigungssimulation erweitern. In diesem Artikel zeige ich, wie Sie mit SimPy einen Parkplatz in Python modellieren können. SimPy ist eine Simulationsmodellierungsbibliothek für diskrete Ereignisse in Python. Weitere SimPy-Beispiele und auch R-basierte Parkplatz -Simmer -Simulationsmodelle wurden bereits in der Vergangenheit auf diesem Blog geteilt. Hier sind einige Beispiele:

Das hier besprochene Modell könnte auch zur Modellierung anderer ähnlicher Systeme verwendet werden, beispielsweise eines Prozesspufferspeichers mit minimalen Verweilzeiten (Kühlprozesse, Härteprozesse usw.) und seiner Fachauslastung.

Nutzen von Parkplatzsimulationen

Parkplatzsimulationsmodelle sind unschätzbare Werkzeuge im Supply Chain Management und bieten eine Vielzahl von Vorteilen. Diese Modelle erleichtern die effiziente Zuteilung von Ressourcen wie Raum und Arbeitskraft und optimieren deren Nutzung. Sie helfen bei der Kapazitätsplanung und ermöglichen fundierte Entscheidungen hinsichtlich der Erweiterung oder Reduzierung von Anlagen. Die Analyse des Verkehrsflusses verbessert die Gesamtbewegung von Fahrzeugen innerhalb der Vertriebszentren und reduziert so Staus und Wartezeiten. Ein effizientes Warteschlangenmanagement stellt sicher, dass die Waren zeitnah geladen und entladen werden.

Darüber hinaus helfen Parkplatzsimulationen dabei, Möglichkeiten zur Kostensenkung zu identifizieren, indem Leerlaufzeiten minimiert und die betriebliche Effizienz gesteigert werden. Die Leistungsmessung über verschiedene Supply-Chain-Komponenten hinweg unterstützt Benchmarking und Zielsetzung. Diese Modelle ermöglichen die Untersuchung von „Was-wäre-wenn“-Szenarien und ermöglichen das Testen und Bewerten von Layout-, Personal- und Prozessänderungen. Sie tragen auch zur proaktiven Risikominderung bei, indem sie Engpässe und Schwachstellen im Parkplatzbetrieb identifizieren .

Darüber hinaus dienen sie als wertvolle Hilfsmittel für die Schulung und Kompetenzentwicklung der Mitarbeiter und bieten eine kontrollierte Umgebung zum Erlernen von Park- und Ladevorgängen. Parkplatzsimulationen unterstützen Nachhaltigkeitsinitiativen, optimieren Routen und reduzieren die Umweltbelastung. Diese Simulationen generieren datengesteuerte Erkenntnisse, die als Grundlage für die strategische Entscheidungsfindung dienen, und sie fördern eine Kultur der kontinuierlichen Verbesserung, indem sie das Testen neuer Strategien zur kontinuierlichen Optimierung erleichtern. Die Integration von Parkplatzsimulationen in das Lieferkettenmanagement kann zu Kosteneinsparungen, Effizienzsteigerungen und allgemeinen Leistungsverbesserungen in der Lieferkette führen.

Ein SimPy-Parkplatzsimulationsmodell

Unten finden Sie ein Python-Beispiel, das ebenfalls auf Github verfügbar ist und simpy für die Modellierung eines Parkplatzes verwendet . Der Parkplatz wird als Container mit definierter Kapazität modelliert. Die Kapazität modelliert die Anzahl der Parkplätze auf dem Grundstück.

In der Parkplatzklasse wird ein SimPy-Prozess zur Modellierung der Autoankünfte implementiert. Dieser Vorgang wird für eine definierte Anzahl an Fahrzeugankünften durchgeführt. Jedes Auto kommt nach einer zufällig verteilten Zwischenankunftszeit an. Anschließend belegt es einen verfügbaren Slot für eine zufällig verteilte Zeitspanne. Danach wird der Parkplatz freigegeben.

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()

Wenn Sie dieses Modell für 10 ankommende Autos auf einem Parkplatz mit 10 Stellplätzen ausführen, wird die folgende Ausgabe generiert:

Auto 2 kommt um 4 an

Auto 2 parkt um 4 Uhr

Auto 1 kommt bei 2 an

Auto 1 parkt bei 2

Auto 1 fährt um 3 Uhr ab

Wagen 3 kommt um 7 Uhr an

Auto 3 parkt um 7 Uhr

Wagen 4 kommt um 8 Uhr an

Auto 4 parkt um 8 Uhr

Auto 2 fährt um 9 Uhr ab

Auto 5 kommt um 9 Uhr an

Auto 5 parkt um 9 Uhr

Auto 4 fährt um 10 Uhr ab

Wagen 6 kommt um 11 Uhr an

Auto Nr. 6 parkt um 11 Uhr

Wagen 3 fährt um 12 Uhr ab

Wagen 7 kommt um 12 Uhr an

Auto 7 parkt um 12 Uhr

Wagen 5 fährt um 13 Uhr ab

Wagen 6 fährt um 13 Uhr ab

Wagen 8 kommt um 16 Uhr an

Auto 8 parkt um 16 Uhr

Wagen 7 fährt um 17 Uhr ab

Wagen 8 fährt um 17 Uhr ab

Wagen 9 kommt um 20 Uhr an

Auto Nr. 9 parkt um 20 Uhr

Wagen 10 kommt um 22 Uhr an

Auto 10 parkt um 22 Uhr

Wagen 10 fährt um 24 Uhr ab

Wagen 9 fährt um 25 Uhr ab

In kommenden Tutorials werde ich zeigen, wie man benutzerdefinierte Statistiken in dieses Simulationsmodell integriert und schließlich, wie man es animiert.

Abschließende Bemerkungen zur SimPy-Parkplatzsimulationsmodellierung

In diesem Artikel habe ich mit SimPy in Python ein einfaches Basismodell für einen Parkplatz entwickelt. Ich werde dieses Modell in kommenden Tutorials verwenden, um Autoankunftsprozesse und die Auslastung der Parkplatzkapazität im Zeitverlauf zu analysieren, und ich werde die Slotauslastung im Zeitverlauf animieren. Darüber hinaus werde ich das Modell detailliert beschreiben und Parkplatzzonen sowie Strategien zur Minimierung der Fahrtwege implementieren.

Wenn Sie mehr über SimPy und die Simulation diskreter Ereignisse im Allgemeinen erfahren möchten, können Sie die folgenden SCDA-Blogbeiträge und -Beiträge lesen:

You May Also Like

Leave a Reply

Leave a Reply

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.