Tvorba modelu diskrétních událostí v SimPy

Diskrétní simulace událostí v Pythonu

Dr Diogo Costa

Adjunct Professor, University of Saskatchewan, Canada & CEO of ImpactBLUE-Scientific

Před sestavením modelu

  • Pochopení dynamického systému

  • Definování cíle/cílů modelu diskrétních událostí

  • Identifikace procesů:

    • probíhajících paralelně
    • probíhajících za sebou
  • Identifikace vhodných zdrojů SimPy (resource, container, store)

  • Definování architektury modelu:

    • Identifikace stavových proměnných
    • Pracovní postup modelu
    • Generátory
Diskrétní simulace událostí v Pythonu

Dynamický systém a cíle modelu

Porozumění dynamickému systému

  • Jaké aspekty ovlivňují jeho chování?
  • Jaké procesy/události je třeba zahrnout?

Cíle modelu

  • Modely se často používají k optimalizaci systémů
  • Co chcete optimalizovat?

    • Více zákazníků
    • Kratší doby zpracování
    • Optimalizace přidělení zdrojů
  • Stavové proměnné pro sledování těchto cílů

Diskrétní simulace událostí v Pythonu

Výběr vhodných zdrojů SimPy

Sdílené zdroje

simpy.Resource(env, capacity=4)
  • Zdroje sdílené mezi procesy

Příklady

  • Stoly v restauraci
  • Stroje v továrně
  • Místa v divadle
  • Pokladní v obchodě

Kontejnery

simpy.Container(env, capacity, 
init=initial_capacity)
  • Zdroj funguje jako nádrž nebo košík

  • Přidání a odebrání množství:

.put() a .get()

Příklady

  • Zásoby paliva na čerpací stanici
  • Uhlí v uhelné elektrárně
Diskrétní simulace událostí v Pythonu

Výběr vhodných zdrojů SimPy

Store

simpy.Store(env, capacity=4)
  • Zdroj fungující jako sklad s více položkami

  • Kapacita je neomezená (výchozí)

  • Kapacitní sloty pro ukládání libovolných objektů

  • Přidání a odebrání položek:

.put() a .get()

Příklady

  • Obchody s více druhy zboží
  • Skladovací místnost
  • Dílna
  • Domácnost
Diskrétní simulace událostí v Pythonu

Zřetězení událostí pomocí bitových operátorů

SimPy používá bitové operátory ke zřetězení dvou událostí

Typy operátorů v Pythonu

  • Aritmetické, logické a porovnávací operátory

Bitové operátory

  • Bitové výpočty na celých číslech
  • Očekávají dva operandy
    • Příklad: a & b, a >> b, a ^ b

V SimPy

  • Bitové operátory generují podmínkovou událost
  • Čekání na obě nebo jednu ze dvou událostí/procesů

Relevantní bitové operátory pro SimPy

  • Čeká na oba procesy: __and__() nebo &
  • Čeká na jeden z procesů: __or__() nebo |
Diskrétní simulace událostí v Pythonu

Pojďme si procvičit!

Diskrétní simulace událostí v Pythonu

Preparing Video For Download...