Pengenalan paket SimPy

Simulasi Peristiwa Diskret dengan Python

Dr Diogo Costa

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

Apa itu SimPy?

Logo paket SimPy: Simulasi peristiwa diskret untuk Python

  • 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:

    • Model dapat memuat banyak generator
    • Tiap generator dapat mencakup banyak proses
    • Proses dapat berjalan berurutan atau paralel
Simulasi Peristiwa Diskret dengan Python

Fungsi biasa vs. fungsi generator

Fungsi biasa

def mygenerator():
    return 10
  • return mengembalikan nilai dan mengakhiri eksekusi fungsi

Menjalankan fungsi:

10

Fungsi generator

def mygenerator():
    yield 20
    yield 12
  • yield mengembalikan nilai dan menjeda eksekusi sambil mempertahankan status internal.

Menjalankan generator:

20
12
Simulasi Peristiwa Diskret dengan Python

Ringkasan metode kunci SimPy

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
Simulasi Peristiwa Diskret dengan Python

Lampu lalu lintas: Membangun model SimPy

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!")
Simulasi Peristiwa Diskret dengan Python

Lampu lalu lintas: Membangun model SimPy

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)
Simulasi Peristiwa Diskret dengan Python

Lampu lalu lintas: Keluaran model

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

Ayo berlatih!

Simulasi Peristiwa Diskret dengan Python

Preparing Video For Download...