SimPy - SimPy

SimPy, ilmainen erillinen tapahtumasimulaatiopaketti, joka perustuu Pythoniin
SimPy logo.svg
Alkuperäinen kirjoittaja (t) Klaus G.Müller, Tony Vignaux
Kehittäjä (t) Ontje Lünsdorf, Stefan Scherfke
Alkuperäinen julkaisu 17. syyskuuta 2002  ( 17.09.2002 )
Vakaa vapautus
4.0.1 / 15. huhtikuuta 2020 ; 11 kuukautta sitten  ( 2020-04-15 )
Arkisto Muokkaa tätä Wikidatassa
Kirjoitettu Python
Käyttöjärjestelmä Monitasoinen
Tyyppi Diskreetti tapahtumasimulaatio
Lisenssi MIT
Verkkosivusto simpy .readthedocs .org

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

Viitteet