Sự kiện và quy trình tất định

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

Diogo Costa (PhD, MSc)

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

Tính tất định của sự kiện (hoặc quy trình)

LƯU Ý: Dùng thay thế “sự kiện” và “quy trình”.

Tính tất định của sự kiện (hoặc quy trình) là gì?

  • Có thể dự đoán chính xác
  • Quy trình được gọi là “tất định”

Vì sao quy trình tất định quan trọng?

  • Hoạt động tự nhiên và do con người rất phức tạp
  • Nhiều quy trình và nguồn lực phụ thuộc lẫn nhau
  • Một số quy trình lặp lại y hệt mỗi lần
  • Ảnh hưởng lên đầu ra hệ thống có thể dự đoán chính xác
Mô phỏng Sự kiện Rời rạc bằng Python

Ví dụ về quy trình hoặc sự kiện tất định

Thế giới tự nhiên

  • Độ cao thủy triều
  • Gia tốc do trọng lực (9,81 m$^2$/s)
  • Chuyển động các hành tinh trong hệ Mặt Trời
  • Vận tốc âm thanh trong không khí (331,29 m/s)
  • Vận tốc ánh sáng (300.000 km/s)
  • Nước đóng băng (ở 0°C)

Do con người điều khiển/khởi tạo

  • Dòng nước từ vòi
  • Tốc độ máy chiết rót chai nước
  • Thời gian máy pha cà phê pha một ly
  • Nhiệt tỏa ra của lò ở 230°C
  • Chu kỳ lập trình của máy giặt
  • Hoạt động của lò vi sóng
Mô phỏng Sự kiện Rời rạc bằng Python

Biểu diễn sự kiện tất định trong mô hình rời rạc

Quy trình tất định

  • Ảnh hưởng có thể dự đoán lên hệ động
  • Thời lượng đã biết rõ
  • Lặp lại theo cùng một cách

Cần tính thời lượng quy trình vào thời gian mô phỏng

# 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
Mô phỏng Sự kiện Rời rạc bằng Python

Biểu diễn sự kiện tất định bằng SimPy

Triển khai SimPy cho sự kiện tất định:

  • Phương thức .timeout() ghi nhận thời lượng quy trình
    • Không quan tâm đơn vị thời gian
    • Xem thời gian như số
    • Cần nhất quán đơn vị thời gian trong toàn bộ mô hình
# 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)

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...