Nachdem ich salabim für die Discrete-Event-Simulation ( DES ) in Python eingeführt habe, möchte ich seine statistikbezogenen Funktionen weiterverfolgen. Das mache ich im heutigen Blogbeitrag: Stats with salabim !
Ereignissimulation, Job-Shop und Python
Die diskrete Ereignissimulation ist eine von mehreren Simulationsmethoden, die von SCM-Analysten, Produktionsplanern und Operations-Research-Analysten angewendet werden. Die folgende Tabelle bietet eine grobe Kategorisierung dieser Simulationsmethoden .
Die diskrete Ereignissimulation wird hauptsächlich für operative und detaillierte Zielsetzungen eingesetzt, wie zB Produktionsplanung, Fabrikdesign oder Geschäftsprozessdesign und -verbesserung. Es ist die geeignete Methode für komplexe Systeme, die gut durch sequentielle Ereignisse und Warteschlangen beschrieben werden. Hier sind einige beispielhafte Simulationsanwendungsfälle, die Sie für den Anfang lesen können:
- Link : Tagebausimulation zur besseren Planung
- Link : Parkplatzsimulator mit Simmer in R
- Link : End-to-End-Simulation der Lieferkette für Geflügel
Ein Job-Shop ist beispielsweise ein System, das von der diskreten Ereignissimulation für sein Design und/oder seine kontinuierliche Verbesserung profitieren kann.
Job-Shop-Simulation und Statistiken mit salabim
Der folgende Python-Code implementiert ein Job-Shop- Simulationsmodell in Python mit salabim . Ich habe dieses einfache Beispiel in früheren Blogbeiträgen verwendet. In diesem Fall modellieren wir einen vereinfachten Job-Shop mit 2 Maschinen und 100 Jobs. Jobs können auf jeder Maschine verarbeitet werden, aber immer nur von einer Maschine. Maschinen verarbeiten Aufträge mit einer festgelegten Bearbeitungszeit (Dauer). Maschinen haben in diesem Fall eine Kapazität von 1. Sobald eine Maschine einen Auftrag bearbeitet hat, ist sie abgeschlossen. Der Produktionsplan wird in diesem Fall etwas vereinfacht und durch einen zufälligen Auftragsgenerator modelliert. Der Jobgenerator erstellt neue Jobs in zufällig verteilten Intervallen mit einer bestimmten mittleren Zeit zwischen den Jobs. Der Code implementiert zusätzlich zur Modellimplementierung und Simulationsausführung animierte Statistiken.
Der erste Teil importiert Salabim und richtet Konstanten sowie relevante Datentypen (Produktklasse) ein. Produkt erweitert die salabim Komponentenklasse. Es implementiert eine Prozessmethode. Diese Methode wird zum Anfordern und Halten einer Ressource für eine bestimmte Dauer verwendet .
import salabim as sim
SEED = 42
MACHINES = 2 # amount of machines
INTERVAL = 3 # mean time between two jobs
DURATION = 5.0 # mean processing time of a job
JOBS = 100 # number of jobs that have to be completed
class Product(sim.Component):
def process(self):
yield self.request(machines)
print(f"{self.name()} started at time {env.now()}")
yield self.hold(DURATION)
print(f"{self.name()} completed at time {env.now()}")
Der nächste Teil richtet die Simulationsumgebung ein und definiert die Ressourcen. Auch die Teilequelle, also der Komponentengenerator, wird in diesem Abschnitt definiert:
env = sim.Environment(random_seed=SEED)
machines = sim.Resource("machines", capacity=MACHINES)
sim.ComponentGenerator(Product, iat=sim.Exponential(INTERVAL), force_at=True, number=JOBS)
Zuletzt wird der Simulationslauf und die Animation implementiert.
env.animate(True)
env.modelname("jobshop demonstration")
machines.claimers().animate(x=700, y=100, title="work in progress", direction="e")
machines.requesters().animate(x=200, y=100, title="work waiting", direction="e")
machines.claimers().length.animate(x=10, y=300, width=1000, height=100, vertical_scale=15, horizontal_scale=20, title="number of work in prgress")
machines.requesters().length.animate(x=10, y=500, width=1000, height=100, vertical_scale=15, horizontal_scale=20, title="number of work waiting")
env.speed(5)
env.run(100)
Dadurch entsteht eine Animation. Das folgende Bild zeigt einen Schnappschuss der Animation.
Die Animation zeigt die laufende Arbeit und den Rückstand / die wartende Arbeit während der gesamten Zeit.
Verwandte Inhalte
Wenn Sie an der diskreten Ereignissimulation und ihren Anwendungen oder ihren spezifischen Implementierungen in z. B. R, AnyLogic, VisualComponents und Python interessiert sind, lesen Sie die folgenden SCDA-Veröffentlichungen:
- Link : Discrete-Event-Simulation (DES) Anwendungsfälle
- Link : Liste der Simulationssoftware für diskrete Ereignisse
- Link : Simulationsmethoden für SCM-Analysten
- Link : Diskrete-Ereignis-Simulationsverfahrensmodell
- Link : Eingangsinspektionssimulation mit Simmer
- Link : Visualisierung von SimPy Job Shop Simulation
- Link : Simmer in R für diskrete Ereignissimulation
- Link : Kranhofsimulation in AnyLogic
- Link : Förderersimulation in AnyLogic
- Link : Finanz-KPI-Simulation von Visual Components
Wirtschaftsingenieur mit Interesse an Optimierung, Simulation und mathematischer Modellierung in R, SQL, VBA und Python
Leave a Reply