Simulasi Peristiwa Diskret dengan Python
Dr Diogo Costa
Adjunct Professor, University of Saskatchewan, Canada & CEO of ImpactBLUE-Scientific

Kerangka kerja simulasi peristiwa diskret berbasis proses, berbasis Python standar
Menggunakan fungsi generator untuk mendefinisikan proses dan peristiwa (dibahas di kursus prasyarat Toolbox)
Dapat diskalakan:
Fungsi biasa
def mygenerator():
return 10
return mengembalikan nilai dan mengakhiri eksekusi fungsiMenjalankan fungsi:
10
Fungsi generator
def mygenerator():
yield 20
yield 12
yield mengembalikan nilai dan menjeda eksekusi sambil mempertahankan status internal.Menjalankan generator:
20
12
1) Buat Environment SimPy
env = simpy.Environment()
2) Tambahkan fungsi generator ke Environment SimPy
env.process()
3) Jalankan model
env.run()
4) Biarkan waktu berlalu dalam simulasi
env.timeout()
5) Dapatkan waktu simulasi saat ini
env.now
1) Impor paket SimPy
import simpy
2) Buat fungsi generator yang memuat proses
def traffic_light(env, name, timestep):
while True:
yield env.timeout(timestep)
print(f"Time {env.now:02d} sec | Traffic light at {name} | Red light!")
yield env.timeout(timestep)
print(f"Time {env.now:02d} sec | Traffic light at {name} | Yellow Light!")
yield env.timeout(timestep)
print(f"Time {env.now:02d} sec | Traffic light at {name} | Green Light!")
3) Membuat environment SimPy
env = simpy.Environment()
4) Tambahkan generator ke environment SimPy
env.process(traffic_light(env, "Leslie St.", 15))
env.process(traffic_light(env, "Arlington Av.", 30))
5) Jalankan model
env.run(until=90)
Keluaran konsol model:
Waktu 15 dtk | Lampu lalu lintas di Leslie St. | Lampu merah!
Waktu 30 dtk | Lampu lalu lintas di Arlington Av. | Lampu merah!
Waktu 30 dtk | Lampu lalu lintas di Leslie St. | Lampu kuning!
Waktu 45 dtk | Lampu lalu lintas di Leslie St. | Lampu hijau!
Waktu 60 dtk | Lampu lalu lintas di Arlington Av. | Lampu kuning!
Waktu 60 dtk | Lampu lalu lintas di Leslie St. | Lampu merah!
Waktu 75 dtk | Lampu lalu lintas di Leslie St. | Lampu kuning!
Simulasi Peristiwa Diskret dengan Python