Deterministiska händelser och processer

Diskret händelsesimulering i Python

Diogo Costa (PhD, MSc)

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

Determinism hos händelser (eller processer)

OBS: Termerna "händelse" och "process" används synonymt.

Vad är determinism hos händelser (eller processer)?

  • Förmågan att förutsäga en process korrekt
  • Processen kallas "deterministisk"

Varför är deterministiska processer viktiga?

  • Naturliga och mänskliga aktiviteter är komplexa
  • Många ömsesidigt beroende processer och resurser
  • Vissa processer upprepas på samma sätt varje gång
  • Effekten på systemets utdata kan förutsägas korrekt
Diskret händelsesimulering i Python

Exempel på deterministiska processer eller händelser

Naturvärlden

  • Havstidens höjd
  • Föremåls acceleration på grund av tyngdkraften (9,81 m$^2$/s)
  • Planeternas rörelser i solsystemet
  • Ljudets hastighet i luft (331,29 m/s)
  • Ljusets hastighet (300 000 km/s)
  • Vattens fryspunkt (vid 0 grader Celsius)

Mänskligt drivna eller initierade

  • Flöde från vattenkran
  • Hastighet hos maskin för att fylla vattenflaskor
  • Tid för kaffebryggare att brygga kaffe
  • Värme från ugn vid 230 grader Celsius
  • Programmerade cykler i tvättmaskin
  • Funktionen hos en mikrovågsugn
Diskret händelsesimulering i Python

Representera deterministiska händelser i diskret-händelsemodeller

Deterministiska processer

  • Förutsägbar påverkan på dynamiska system
  • Välkänd varaktighet
  • Upprepas på samma sätt varje gång

Processens varaktighet måste tas med i simuleringstiden

# Deterministic processes (time in hours)
duration_process_1 = 10
duration_process_2 = 5

while sim_time < total_sim_time:
# Update simulation time: Process 1 sim_time += duration_process_1
# Update simulation time: Process 2 sim_time += duration_process_2
Diskret händelsesimulering i Python

Representera deterministiska händelser med SimPy

En SimPy-implementation av deterministiska händelser:

  • .timeout()-metoden registrerar processens varaktighet
    • Ignorerar tidsenheter
    • Behandlar tid som tal
    • Tidsenheter måste vara konsistenta i hela modellen
# Deterministic processes
duration_process_1 = 10
duration_process_2 = 5

while True:

   # Update simulation time: Process 1
   yield env.timeout(duration_process_1)

   # Update simulation time: Process 2
   yield env.timeout(duration_process_2)

Diskret händelsesimulering i Python

Nu kör vi en övning!

Diskret händelsesimulering i Python

Preparing Video For Download...