SimPy - Ein leistungsfähiges Discrete-Event-Simulation-Framework
SimPy ist ein auf Standard-Python basierendes, prozessbasiertes Discrete-Event-Simulation-Framework. Die Prozesse in SimPy werden durch Python-Generatorfunktionen definiert und können beispielsweise zur Modellierung aktiver Komponenten wie Kunden, Fahrzeugen oder Agenten verwendet werden. SimPy bietet auch verschiedene Arten von gemeinsamen Ressourcen, um Engpässe mit begrenzter Kapazität (wie Server, Kassen und Tunnel) zu modellieren.
Mit SimPy können Simulationen 'so schnell wie möglich', in Echtzeit (Wanduhrzeit) oder manuell durch die Ereignisse geführt werden. Obwohl es theoretisch möglich ist, kontinuierliche Simulationen mit SimPy durchzuführen, verfügt es über keine Funktionen, die dies unterstützen. Andererseits ist SimPy übertrieben für Simulationen mit fester Schrittgröße, bei denen die Prozesse nicht miteinander oder mit gemeinsamen Ressourcen interagieren.
Ein kurzes Beispiel, das zwei Uhren simuliert, die in unterschiedlichen Zeitintervallen ticken, sieht wie folgt aus:
import simpy
def clock(env, name, tick):
while True:
print(name, env.now)
yield env.timeout(tick)
env = simpy.Environment()
env.process(clock(env, 'fast', 0.5))
env.process(clock(env, 'slow', 1))
env.run(until=2)
Die Dokumentation enthält ein Tutorial, mehrere Guides, die Schlüsselkonzepte erklären, eine Reihe von Beispielen und die API-Referenz. SimPy wird unter der MIT-Lizenz veröffentlicht. Entwickler von Simulationsmodellen werden ermutigt, ihre SimPy-Modellierungstechniken mit der SimPy-Community zu teilen. Bitte senden Sie eine Nachricht an die SimPy-Mailingliste. Es gibt einen einführenden Vortrag, der die Konzepte von SimPy erklärt und einige Beispiele liefert: Sehen Sie sich das Video an oder holen Sie sich die Folien. SimPy wurde auch in anderen Programmiersprachen reimplementiert. Weitere Details finden Sie in der Liste der Ports.