Membangun model peristiwa-diskret dengan SimPy

Simulasi Peristiwa Diskret dengan Python

Dr Diogo Costa

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

Sebelum kita membangun model

  • Pahami sistem dinamis

  • Tetapkan tujuan model peristiwa-diskret

  • Identifikasi proses:

    • berjalan paralel
    • berjalan berurutan
  • Identifikasi sumber daya SimPy yang tepat (resource, container, store)

  • Definisikan arsitektur model:

    • Identifikasi variabel status
    • Alur kerja model
    • Generator
Simulasi Peristiwa Diskret dengan Python

Sistem dinamis dan tujuan model

Pahami sistem dinamis

  • Aspek apa yang memodulasi perilakunya?
  • Proses/peristiwa apa yang perlu disertakan?

Tujuan model

  • Sering dipakai untuk mengoptimalkan sistem
  • Aspek apa yang ingin Anda optimalkan?

    • Lebih banyak pelanggan
    • Waktu pemrosesan lebih cepat
    • Optimalkan alokasi sumber daya
  • Variabel status untuk memantau tujuan ini

Simulasi Peristiwa Diskret dengan Python

Identifikasi sumber daya SimPy yang tepat

Sumber Daya Bersama

simpy.Resource(env, capacity=4)
  • Sumber daya yang dipakai bersama antarproses

Contoh

  • Meja di restoran
  • Mesin di pabrik
  • Kursi di teater
  • Kasir di toko

Container

simpy.Container(env, capacity, 
init=initial_capacity)
  • Sumber daya berperilaku seperti tangki atau keranjang

  • Tambah dan kurangi kuantitas:

.put() and .get()

Contoh

  • Cadangan bahan bakar di SPBU
  • Batu bara di PLTU
Simulasi Peristiwa Diskret dengan Python

Identifikasi sumber daya SimPy yang tepat

Store

simpy.Store(env, capacity=4)
  • Sumber daya seperti toko dengan banyak item

  • Kapasitas tidak terbatas (default)

  • Slot kapasitas untuk menyimpan objek apa pun

  • Tambah dan ambil item:

.put() and .get()

Contoh

  • Toko yang menjual banyak item
  • Ruang penyimpanan
  • Bengkel
  • Rumah tangga
Simulasi Peristiwa Diskret dengan Python

Menggabungkan event dengan operator bitwise

SimPy menggunakan operator bitwise untuk menggabungkan dua event

Jenis operator di Python

  • Operator aritmetika, logika, dan perbandingan

Operator bitwise

  • Perhitungan bitwise pada bilangan bulat
  • Memerlukan dua operan
    • Contoh: a & b, a >> b, a ^ b

Di SimPy

  • Operator bitwise menghasilkan condition event
  • Menunggu kedua atau salah satu dari dua event/proses

Operator bitwise yang relevan untuk SimPy

  • Menunggu kedua proses: __and__() atau &
  • Menunggu salah satu proses: __or__() atau |
Simulasi Peristiwa Diskret dengan Python

Ayo berlatih!

Simulasi Peristiwa Diskret dengan Python

Preparing Video For Download...