SimPy - SimPy
| Alkuperäinen kirjoittaja (t) | Klaus G.Müller, Tony Vignaux |
|---|---|
| Kehittäjä (t) | Ontje Lünsdorf, Stefan Scherfke |
| Alkuperäinen julkaisu | 17. syyskuuta 2002 |
| Vakaa vapautus | 4.0.1 / 15. huhtikuuta 2020
|
| Arkisto |
|
| Kirjoitettu | Python |
| Käyttöjärjestelmä | Monitasoinen |
| Tyyppi | Diskreetti tapahtumasimulaatio |
| Lisenssi | MIT |
| Verkkosivusto | simpy |
Simpy on prosessi perustuva diskreetti tapahtuma simulointi kehys perustuu standardiin Python . Sen tapahtumien välittäjä perustuu Pythonin generaattoreihin, ja sitä voidaan käyttää myös asynkroniseen verkostoitumiseen tai moniagenttisten järjestelmien toteuttamiseen (sekä simuloidun että todellisen viestinnän kanssa).
SimPy-prosessit ovat yksinkertaisia Python-generaattoritoimintoja, ja niitä käytetään aktiivisten komponenttien, kuten asiakkaiden, ajoneuvojen tai agenttien, mallintamiseen. SimPy tarjoaa myös erityyppisiä jaettuja resursseja rajoitetun kapasiteetin ylikuormituspisteiden mallintamiseen (kuten palvelimet, kassat ja tunnelit). Versiosta 3.1 lähtien se tarjoaa myös seurantavalmiudet resursseja ja prosesseja koskevien tilastojen keräämiseksi.
Simpy 3.0 vaihtuu Python 2: sta 3: een.
Simulaatiot voidaan suorittaa "mahdollisimman nopeasti", reaaliajassa (seinäkello) tai manuaalisesti selaamalla tapahtumia.
Vaikka teoreettisesti on mahdollista tehdä jatkuvia simulaatioita SimPyn kanssa, sillä ei ole ominaisuuksia sen toteuttamiseen. SimPy on kuitenkin ylivoimainen simulaatioille, joissa on kiinteä askelkoko, jossa prosessit eivät ole vuorovaikutuksessa toistensa tai jaettujen resurssien kanssa - käytä while tässä tapauksessa yksinkertaista silmukkaa.
SimPy-jakelu sisältää oppaita, perusteellisen dokumentaation ja suuren määrän esimerkkejä.
Simpy 4.0 tarvitsee Python 3.6+.
SimPy julkaistaan avoimen lähdekoodin ohjelmistona MIT-lisenssillä . Ensimmäinen versio julkaistiin joulukuussa 2002.
Esimerkki
Yksi SimPyn päätavoitteista on olla helppokäyttöinen. Tässä on esimerkki yksinkertainen simpy simulaatio a kello prosessi, joka tulostaa nykyinen simulointi aikaa kussakin vaiheessa:
>>> 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