BPMN Mining
Đăng nhập Đăng ký miễn phí
Tài liệu / Công thức tính

Mô phỏng Monte Carlo

Khi nào cần tới mô phỏng và đọc P90 thế nào.

Giá trị kỳ vọng cho biết trung bình, nhưng không cho biết mức độ dao động. Không ai cam kết SLA bằng giá trị trung bình — một nửa số hồ sơ sẽ trễ hẹn.

Cách mô phỏng chạy

Mỗi lượt là một hồ sơ giả lập đi hết quy trình:

  1. Tới cổng loại trừ: rút số ngẫu nhiên, chọn nhánh theo đúng xác suất đã khai.
  2. Tới cổng song song: chạy mọi nhánh, cộng dồn chi phí, lấy max thời gian của các nhánh đã mô phỏng.
  3. Rơi vào nhánh rework: quay lại và chạy tiếp, đúng như thực tế.
  4. Ghi lại tổng thời gian và tổng chi phí của lượt đó.

Mặc định 2.000 lượt, có thể chỉnh trong tab Đơn vị của bộ chỉnh sửa.

Một lượt mô phỏng diễn ra thế nào
join = joins.get(current)
successors = adjacency.get(current, [])

if join and len(successors) > 1:                  # khối song song
    branch_times = []
    for successor in successors:
        branch_time, branch_cost = run_segment(successor, join, budget, seen)
        branch_times.append(branch_time)
        cost_total += branch_cost                 # chi phí: cộng mọi nhánh
    time_total += max(branch_times)               # thời gian: chỉ nhánh chậm nhất
    current = join
else:
    current = choose(current)                     # rẽ nhánh theo xác suất

Đọc kết quả

Chỉ sốÝ nghĩaDùng để
Trung bìnhKỳ vọng theo mô phỏngĐối chiếu với con số giải tích
P50 (trung vị)Một nửa số hồ sơ xong trước mốc nàyMô tả “thường thì mất bao lâu”
P9090% hồ sơ xong trước mốc nàyCam kết SLA
P9595% hồ sơ xong trước mốc nàyCam kết chặt, hợp đồng lớn
🧮 Vì sao đừng cam kết bằng giá trị trung bình

Một quy trình có 12% hồ sơ bị từ chối sớm (15 phút) và 88% đi hết luồng (khoảng 420 phút).

  • Trung bình: 372 phút
  • P50: 420 phút
  • P90: 455 phút

Cam kết “trung bình 372 phút” nghe hợp lý, nhưng gần 90% hồ sơ sẽ vượt mốc đó — vì phần lớn hồ sơ đi luồng dài, còn số ít bị từ chối sớm đã kéo trung bình xuống. Con số đúng để cam kết là P90.

Biểu đồ phân phối

Cột biểu đồ trong tab Mô phỏng cho thấy hình dạng của phân phối. Hai cụm tách biệt là dấu hiệu quy trình có nhánh loại trừ với thời lượng chênh nhau nhiều — trung bình rơi vào giữa hai cụm và không mô tả đúng hồ sơ nào cả. Khi đó nên tách hai luồng thành hai SLA riêng.

Tính lặp lại được

Mô phỏng dùng seed cố định, nên chạy lại cùng dữ liệu luôn ra cùng kết quả. Nhờ vậy khi bạn so sánh hai phương án, chênh lệch là do quy trình khác nhau thật, không phải do may rủi của bộ sinh số ngẫu nhiên.

Khi nào tin mô phỏng hơn giải tích

Khi quy trình có khối song song mà mỗi nhánh lại chứa nhánh rẽ ngẫu nhiên. Lúc đó E[max] lớn hơn max E[·], và mô phỏng phản ánh đúng thực tế: chỉ cần một nhánh xui là cả khối phải chờ. Bảng chỉ số đầu trang hiển thị cả hai con số để bạn tự thấy khoảng cách.

Chỗ nào khó hiểu hoặc còn thiếu?