建模加油站:Python 產生器
假設有客戶要建置一座加油站,你被指派建立一個離散事件模型,協助決定加油槍的最佳數量,以及多個加油槍共用的主油槽容量。這個模型需要模擬車輛抵達加油站,以及站內資源(加油槍與主油槽)的運作。在本練習中,我們會聚焦在以下兩個步驟:
步驟 1:建立一個產生器,模擬車輛抵達加油站、申請使用加油槍,並為車輛油箱加油。
步驟 2:建立一個產生器,檢查主油槽油量,並在需要時申請補給油槽。同時也要建模補給油槽的行為。
在下一個練習中,你會建立 SimPy 環境、加入程序與資源,並執行模擬。
加油槍的數量是有限的,並以一個 SimPy 資源模擬,儲存在變數 gas_station_pumps 中。
本練習屬於課程
Python 的離散事件模擬
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
def car(name, env, gas_station_pumps, gas_station_tank):
fuel_tank_level = random.randint(*FUEL_TANK_LEVEL)
print(f"{name} arriving at gas station at {env.now}")
# Request pump
with gas_station_pumps.____() as req:
start_time = env.now
# Yield the pump request
____ req
liters_required = FUEL_TANK_SIZE - fuel_tank_level
# Remove liters_required from the tank
yield gas_station_tank.___(liters_required)
yield env.timeout(liters_required / REFUELING_SPEED)
print(f"{name} finished refueling in {env.now - start_time} seconds.")