SimPy - SimPy
| Eredeti szerző (k) | Klaus G. Müller, Tony Vignaux |
|---|---|
| Fejlesztő (k) | Ontje Lünsdorf, Stefan Scherfke |
| Első kiadás | 2002. szeptember 17 |
| Stabil kiadás | 4.0.1 / 2020. április 15 .
|
| Adattár |
|
| Beírva | Piton |
| Operációs rendszer | Cross-platform |
| típus | Diszkrét eseményszimuláció |
| Engedély | MIT |
| Weboldal | simpy |
Simpy egy folyamat alapú diszkrét esemény szimulációs keretrendszer alapján szabványos Python . Esemény-diszpécsere a Python generátorain alapul, és aszinkron hálózatépítésre, vagy több ügynöki rendszerek megvalósítására is használható (mind szimulált, mind valós kommunikációval).
A SimPy folyamatai egyszerű Python generátor funkciók, és aktív komponensek, például ügyfelek, járművek vagy ügynökök modellezésére szolgálnak. A SimPy különféle típusú megosztott erőforrásokat is kínál a korlátozott kapacitású torlódási pontok modellezéséhez (például szerverek, pénztárak és alagutak). A 3.1-es verziótól kezdve felügyeleti képességeket is biztosít az erőforrásokról és folyamatokról szóló statisztikák összegyűjtéséhez.
A Simpy 3.0 Python 2-ről 3-ra változik.
A szimulációkat „a lehető leggyorsabban”, valós időben (falióra) vagy az események manuális végigvitelével lehet végrehajtani.
Bár elméletileg lehetséges folyamatos szimulációkat végezni a SimPy-vel, ennek végrehajtására nincsenek jellemzői. A SimPy azonban túlzottan képes rögzített léptékű szimulációkra, ahol a folyamatai nem lépnek kölcsönhatásba egymással vagy megosztott erőforrásokkal - while ebben az esetben használjon egyszerű ciklust.
A SimPy disztribúció oktatóanyagokat, részletes dokumentációt és számos példát tartalmaz.
A Simpy 4.0-nak Python 3.6+ verzióra van szüksége.
A SimPy nyílt forráskódú szoftverként jelenik meg az MIT licenc alatt . Az első verzió 2002 decemberében jelent meg.
Példa
A SimPy egyik fő célja a könnyű használat. Itt egy példa egy egyszerű simpy szimuláció: egy óra folyamat, amely kiírja az aktuális szimulációs idő minden egyes lépés:
>>> 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))
<Process(clock) object at 0x...>
>>> env.process(clock(env, 'slow', 1))
<Process(clock) object at 0x...>
>>> env.run(until=2)
fast 0
slow 0
fast 0.5
slow 1
fast 1.0
fast 1.5