Python

Python bietet als Programmiersprache einige Vorteile. Sie ist einfach, hat eine schlanke Syntax und ist generell sehr leserlich. Daneben ist sie auch vielseitig: Man kann prozedural, objektorientiert und funktional programmieren. Zudem ist Python weit verbreitet, Open Source, für alle gängigen Betriebssysteme verfügbar, besitzt umfangreiche Bibliotheken und hat eine grosse Community. Python hat sich in den letzten Jahren insbesondere im Bereich Data Science und Machine Learning zu einem starken Hilfsmittel entwickelt. Im Bereich Simulation gibt es zum Beispiel zwei Frameworks für ereignisorientierte Simulation: SimPy und Salabim und ein Framework für agentenbasierte Simulation: Mesa.

Mehr Informationen auf python.org.

Beispiele mit Anwendungsfällen in unserem Blog.

SimPy

SimPy ist ein Framework für diskrete Ereignissimulation mit Prozessen, Interprozessinteraktionen und geteilten Ressourcen.

Prozesse werden als Funktionen definiert, welche mittels yield pausiert werden können. Diese werden einem Scheduler (Environment) übergeben, welcher sie bis zu einem bestimmten Zeitpunkt ausführt (env.run). Ein Prozess kann entweder nach Abschluss seiner Aufgabe sich selbst beenden (d.h. die Funktion kehrt zurück) oder endet mit dem Ende der Simulation (d.h. die Funktion ist beinhaltet eine Endlosschlaufe).

Kontakt

Haben Sie Fragen, Anregungen oder Wünschen eine Zusammenarbeit?

Kontaktieren Sie uns!

Prof. Dr.-Ing. Andreas Rinkel
T: +41 (0) 79 3320562

Kontakt

Geteilte Ressourcen können mit request angefordert und release wieder freigegeben werden (alternativ kann auch ein with verwendet werden). Sobald eine Ressource angefordert wurde, muss mit yield gewartet werden, bis sie verfügbar ist.

Das Beispiel simuliert das Anstehen an einer Kaffeemaschine. Die Simulation hat zwei Prozesse: customerund generate_customer.

  • customer modelliert das Verhalten eines Kunden: Anstehen vor der Kaffeemaschine und warten bis diese frei wird, anschliessend Kaffezubereitung mit einer zufälligen, triangular-verteilten Wartezeit.
  • generate_customer modelliert das exponentiell verteilte Eintreffen von neuen Kunden.

Nachdem der Scheduler, die Kaffeemaschine und der Prozess zum Erzeugen von Kunden erzeugt wurde, wir die Simulation für 60x60 Sekunden ausgeführt.

Mehr Informationen auf simpy.readthedocs.io

Beispiele mit Anwendungsfällen in unserem Blog.

Salabim

Salabim ist ein weiteres Framework für diskrete Ereignissimulation mit Prozessen, Prozessinteraktionen, geteilten Ressourcen, Warteschlangen, statistischer Probenahme, Überwachung und Animation. Prozesse werden als Klassen definiert, welche mittels yield pausiert werden können. Diese werden einem Scheduler (Environment) übergeben, welcher sie bis zu einem bestimmten Zeitpunkt ausführt (env.run). Ein Prozess kann entweder nach Abschluss seiner Aufgabe sich selbst beenden (d.h. die Funktion kehrt zurück) oder endet mit dem Ende der Simulation (d.h. die Funktion ist beinhaltet eine Endlos- schlaufe). Geteilte Ressourcen können mit request angefordert und release wieder freigegeben werden. Sobald eine Ressource angefordert wurde, muss mit yield gewartet werden, bis sie verfügbar ist.

Das Beispiel simuliert das Anstehen an einer Kaffeemaschine. Es gibt einen Prozess (Customer), welcher das Verhalten eines Kunden modelliert: Anstehen vor der Kaffeemaschine und warten bis diese frei wird, anschliessend Kaffezubereitung mit einer zufälligen, triangular-verteilten Wartezeit. Kunden werden über eine spezielle Komponente (ComponentGenerator) exponentiell-verteilt der Simulation hinzugefügt. 

Mehr Informationen auf salabim.org.

Mesa

Mesa ist ein Framework für agentenbasierte Modellierung. Die Simulation erfolt in Schritten. Agenten und Modelle werden dabei als Klassen definiert und besitzen jeweils eine step Funktion, welche die Aktion innerhalb eines Schrittes definiert. Optional kann ein Scheduler verwendet werden, um die Aktivierung resp. die Reihenfolge der Aktivierung zu definieren (z.B. zufällig). Mesa bietet zudem Unterstützung für die Sammlung von Daten, das parametrisierte Ausführen von Simulationen sowie die Visualisierung.

Das Beispiel simuliert das ungeordnete Anstehen an einer Kaffeemaschine. Das Modell hat 50 Kunden, welche jeweils überprüfen, ob die Kaffemaschine frei ist und sich gegebenenfalls eine Kaffee entnehmen und die Maschine wieder freigeben. Die Reihenfolge der Kunden bei jedem Schritt ist zufällig. Bei jedem Schritt werden die Zustände der Kunden erfasst. Es werden 50 Schritte simuliert.

Mehr Informationen auf mesa.readthedocs.io Beispiele mit Anwendungsfällen in unserem Blog.

Handbuch

Für die Bereiche Simulation, Experimentieren und Evaluieren sowie Informations- und Codierungstheorie bieten wir ein Handbuch an zu den verfügbaren Python-Hilfsmitteln: