Xây dựng mô hình sự kiện rời rạc với SimPy

Mô phỏng Sự kiện Rời rạc bằng Python

Dr Diogo Costa

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

Trước khi xây mô hình

  • Hiểu hệ động

  • Xác định mục tiêu của mô hình sự kiện rời rạc

  • Xác định quy trình:

    • chạy song song
    • chạy tuần tự
  • Xác định tài nguyên SimPy phù hợp (resource, container, store)

  • Xác định kiến trúc mô hình:

    • Xác định biến trạng thái
    • Luồng hoạt động của mô hình
    • Bộ sinh (generators)
Mô phỏng Sự kiện Rời rạc bằng Python

Hệ động và mục tiêu của mô hình

Hiểu hệ động

  • Những yếu tố nào điều chỉnh hành vi?
  • Cần đưa vào những quy trình/sự kiện nào?

Mục tiêu của mô hình

  • Thường dùng để tối ưu hệ thống
  • Bạn muốn tối ưu điều gì?

    • Nhiều khách hàng hơn
    • Thời gian xử lý nhanh hơn
    • Tối ưu phân bổ tài nguyên
  • Biến trạng thái để theo dõi các mục tiêu này

Mô phỏng Sự kiện Rời rạc bằng Python

Xác định tài nguyên SimPy phù hợp

Tài nguyên dùng chung

simpy.Resource(env, capacity=4)
  • Tài nguyên được chia sẻ giữa các quy trình

Ví dụ

  • Bàn trong nhà hàng
  • Máy trong nhà máy
  • Ghế trong rạp hát
  • Thu ngân trong cửa hàng

Container

simpy.Container(env, capacity, 
init=initial_capacity)
  • Tài nguyên hoạt động như bể/túi chứa

  • Thêm và bớt lượng:

.put().get()

Ví dụ

  • Nhiên liệu tại trạm xăng
  • Than trong nhà máy nhiệt điện than
Mô phỏng Sự kiện Rời rạc bằng Python

Xác định tài nguyên SimPy phù hợp

Store

simpy.Store(env, capacity=4)
  • Tài nguyên như cửa hàng có nhiều mặt hàng

  • Dung lượng mặc định không giới hạn

  • Ô chứa để lưu trữ đối tượng bất kỳ

  • Thêm và lấy mục:

.put().get()

Ví dụ

  • Cửa hàng bán nhiều mặt hàng
  • Phòng lưu trữ
  • Xưởng
  • Hộ gia đình
Mô phỏng Sự kiện Rời rạc bằng Python

Ghép sự kiện bằng toán tử bit

SimPy dùng toán tử bit để ghép hai sự kiện

Các loại toán tử trong Python

  • Toán học, logic và so sánh

Toán tử bit

  • Tính toán bit trên số nguyên
  • Cần hai toán hạng
    • Ví dụ: a & b, a >> b, a ^ b

Trong SimPy

  • Toán tử bit tạo condition event
  • Chờ cả hai hoặc một trong hai sự kiện/quy trình

Toán tử bit dùng trong SimPy

  • Chờ cả hai quy trình: __and__() hoặc &
  • Chờ một trong hai quy trình: __or__() hoặc |
Mô phỏng Sự kiện Rời rạc bằng Python

Ayo berlatih!

Mô phỏng Sự kiện Rời rạc bằng Python

Preparing Video For Download...