การจำลองเหตุการณ์แบบไม่ต่อเนื่องด้วย Python
Diogo Costa (PhD, MSc)
Adjunct Professor, University of Saskatchewan, Canada & CEO of ImpactBLUE-Scientific
การปรับระบบให้เหมาะสม
กระบวนการที่ขับเคลื่อนโดยมนุษย์
ระบุกระบวนการที่ส่งผลต่อผลลัพธ์ของระบบมากที่สุด
การสุ่มตัวอย่างแบบมอนเตคาร์โล
ฟังก์ชันวัตถุประสงค์
นิพจน์ทางคณิตศาสตร์ที่อธิบายเป้าหมายผลลัพธ์
ให้คะแนนสถานการณ์จำลอง
ตัวอย่าง
รวม: 100%
Search & Stop: รันการกำหนดค่าโมเดลต่าง ๆ และหยุดเมื่อตรงตามเงื่อนไขที่ต้องการ
while total_duration < 24:
model_to_run()
Score & Rank: ให้คะแนนผลลัพธ์การจำลองตามเกณฑ์การถ่วงน้ำหนัก
for i in range(num_runs):
out_1, out_2 = model_to_run(i)
scores[i] = 0.3 * out_1 + 0.7 * out_2
ตัวอย่าง
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()

ตัวอย่าง: อุตสาหกรรมการผลิต
ประกอบด้วยงานลำดับขั้นต่าง ๆ (หรือกระบวนการ) เช่น สายการผลิตรถยนต์
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"])
คะแนน
"RED": คะแนนต่ำ; "BLUE": คะแนนสูง

การจัดอันดับ
จัดอันดับการรันการจำลองตามคะแนน

Search & Stop

เส้น "Blue" ผ่านเงื่อนไข "stop"
ผลลัพธ์แยกย่อยของการจำลองที่ "ดีที่สุด":
sum = 20 min)sum = 20 min)sum = 28 min)sum = 30 min)"กระบวนการ 1" มีความสำคัญในการบรรลุเป้าหมายนี้
คะแนน
วัตถุประสงค์: คะแนนต่ำสุด = ระยะเวลาสั้นที่สุด

การจัดอันดับ
"กระบวนการ 1" มีความสำคัญในการบรรลุเป้าหมายนี้

การจำลองเหตุการณ์แบบไม่ต่อเนื่องด้วย Python