Hàm mục tiêu và tối ưu hóa hệ thống

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ối ưu hóa hệ thống

  • Tối ưu hóa hệ thống

    • Xác định cấu hình vận hành tối ưu
  • Quy trình do con người vận hành

    • Đầu ra tối đa với chi phí tối thiểu (ít nguồn lực, ít thời gian)
  • Xác định công đoạn có ảnh hưởng lớn đến đầu ra hệ thống

  • Lấy mẫu Monte Carlo

    • Đo lường mức thành công và xếp hạng kết quả
  • Hàm mục tiêu

    • Hàm đặt mục tiêu hiệu suất
Mô phỏng Sự kiện Rời rạc bằng Python

Hàm mục tiêu

  • Biểu thức toán học mô tả mục tiêu đầu ra

  • Chấm điểm các kịch bản mô phỏng

Ví dụ

  • Công đoạn A: 35%
  • Công đoạn B: 20%
  • Công đoạn C: 45%

Tổng: 100%

  • Công đoạn C có trọng số cao nhất

Tìm kiếm & Dừng: Chạy nhiều cấu hình mô hình và dừng khi đạt điều kiện mong muốn

while total_duration < 24:
      model_to_run()

Chấm điểm & Xếp hạng: Chấm điểm kết quả mô phỏng theo tiêu chí trọng số

for i in range(num_runs):
   out_1, out_2 = model_to_run(i)
   scores[i] = 0.3 * out_1 + 0.7 * out_2
Mô phỏng Sự kiện Rời rạc bằng Python

Cách 1: Tìm kiếm & Dừng

  • Lấy mẫu Monte Carlo để chạy nhiều kịch bản
  • Gồm các lần xuất hiện của quy trình phi tất định khác nhau
  • Vòng lặp tìm kịch bản tối ưu bị ngắt khi đạt điều kiện

Ví dụ

scenario_num = 0
while scenario_num == 0 or total_duration[s] > 40:
  scenario_num += 1
  env = simpy.Environment()
  env.process(manufacturing_proc(env))
  env.run()
  plot_results()

Biểu đồ bao đáp ứng của một hoạt động sản xuất gồm chuỗi công đoạn tuần tự; đường xanh dương phía dưới là lần chạy cuối đáp ứng yêu cầu của phương pháp Tìm kiếm & Dừng.

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

Cách 2: Chấm điểm & Xếp hạng

  • Lấy mẫu Monte Carlo để chạy nhiều kịch bản
  • Chấm điểm và xếp hạng kết quả

Ví dụ: Ngành sản xuất

Gồm các tác vụ (quy trình) tuần tự, như dây chuyền lắp ráp ô tô.

def objective_function_calc():
  score_objfunc = np.ones(num_scenarios)

  for s in range(num_scenarios):
    for p in range(len(processes)):

      score_objfunc[s] += (
         processes[p]["duration_hours"]
         * processes[p]["score_weight"])
Mô phỏng Sự kiện Rời rạc bằng Python

Cách 2: Chấm điểm & Xếp hạng

Điểm

"ĐỎ": Điểm thấp; "XANH DƯƠNG": Điểm cao Biểu đồ phân tán hiển thị điểm hàm mục tiêu của các kịch bản mô phỏng cho các công đoạn "Dỡ hàng & Chuẩn bị", "Cắt" và "Đánh bóng".

Xếp hạng

Xếp hạng các lần mô phỏng theo điểm số Biểu đồ xếp hạng các kịch bản theo điểm hàm mục tiêu cho các công đoạn "Dỡ hàng & Chuẩn bị", "Cắt" và "Đánh bóng".

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

Xác định công đoạn giới hạn hiệu suất

Tìm kiếm & dừng

Biểu đồ bao đáp ứng của một hoạt động sản xuất gồm chuỗi công đoạn tuần tự; đường xanh dương phía dưới là lần chạy cuối đáp ứng tiêu chí Tìm kiếm & Dừng. Thời lượng tối thiểu của mỗi công đoạn trong các mô phỏng tốt nhất được tô đậm.

  • Đường "Xanh dương" đạt tiêu chí "dừng"

    • Tổng thời lượng = 30 phút
  • Kết quả phân rã của mô phỏng "tốt nhất":

    • Công đoạn 1: khoảng 10 phút (sum = 20 min)
    • Công đoạn 2: khoảng 10 phút (sum = 20 min)
    • Công đoạn 3: khoảng 8 phút (sum = 28 min)
    • Công đoạn 4: khoảng 2 phút (sum = 30 min)
  • "Công đoạn 1" là then chốt để đạt mục tiêu này

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

Xác định công đoạn giới hạn hiệu suất

Điểm

Mục tiêu: điểm thấp nhất = thời lượng thấp nhất Biểu đồ phân tán hiển thị điểm hàm mục tiêu của các kịch bản mô phỏng cho các công đoạn "Dỡ hàng & Chuẩn bị", "Cắt" và "Đánh bóng". Thời lượng tối thiểu của mỗi công đoạn trong các mô phỏng tốt nhất được tô đậm.

Xếp hạng

"Công đoạn 1" là then chốt để đạt mục tiêu này Biểu đồ xếp hạng các kịch bản theo điểm hàm mục tiêu cho các công đoạn "Dỡ hàng & Chuẩn bị", "Cắt" và "Đánh bóng". Thời lượng tối thiểu của mỗi công đoạn trong các mô phỏng tốt nhất được tô đậm.

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