การสร้างแบบจำลอง Discrete-Event
คุณได้รับมอบหมายให้สร้างแบบจำลอง Discrete-Event สำหรับการดำเนินงานฟาร์ม เพื่อช่วยจัดสรรทรัพยากร เพิ่มประสิทธิภาพการผลิต และระบุ-กำจัดคอขวด
ขณะนี้ยังอยู่ในขั้นตอนการหารือกับเพื่อนร่วมงานเกี่ยวกับกระบวนการต่าง ๆ และระดับรายละเอียดที่ควรนำมาใช้ในโมเดล จึงได้ตกลงกันว่าจะรวบรวมข้อมูลไว้ในดิกชันนารีชื่อ process_dict ที่มีโครงสร้างดังนี้ โดยดิกชันนารีนี้จะได้รับการอัปเดตเมื่อมีข้อมูลเพิ่มเติมเกี่ยวกับกระบวนการต่าง ๆ
process_dict = {
"Process name 1": <duration>,
"Process name 2": <duration>,
...
}
มาสร้างแบบจำลอง Discrete-Event แบบทั่วไปชื่อ discrete_model_farm() ที่สามารถจัดตารางเหตุการณ์ Discrete ได้ตามจำนวนที่กำหนดในดิกชันนารี
อาร์กิวเมนต์อินพุตของโมเดล (เรียงตามลำดับ) มีดังนี้:
process_dict: ดิกชันนารีที่เก็บข้อมูลเกี่ยวกับกระบวนการต่าง ๆsimulation_time: ช่วงเวลาของการจำลอง
หน่วยเวลาในโมเดลนี้วัดเป็นวัน
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การจำลองเหตุการณ์แบบไม่ต่อเนื่องด้วย Python
คำแนะนำการฝึกหัด
- กำหนดค่าเริ่มต้นของตัวแปรสถานะของโมเดล ได้แก่
time(ติดตามเวลา) และsupply_chain(ติดตามจำนวนรอบ) โดยตั้งค่าทั้งสองเป็นศูนย์ - กำหนดเงื่อนไขสิ้นสุด เพื่อให้โมเดลทำงานต่อเนื่องในขณะที่
timeยังน้อยกว่าsimulation_time - บวกระยะเวลาของกระบวนการเข้ากับตัวแปรสถานะ
time
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
def discrete_model_farm(process_dict, simulation_time):
# Initiate variables
time = ____
supply_chain = ____
# Define ending condition
while ____ < ____:
supply_chain += 1
process_names = list(process_dict.keys())
for p in range(len(process_names)):
event_duration = process_dict[process_names[p]]
# Add the process duration
____ += event_duration
print(f"{process_names[p]} (completed): time = {time}")
print(f"COMPLETED: Production cycle #{supply_chain} | Time = {time} days")