Visualisierung von Statistiken mit Salabim

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 .

stats mit salabim für diskrete Ereignissimulation in Python

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:

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:

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.