レストランのモデル:セットアップ、実行、結果の分析
前の演習では、テーブルのリクエストと、待ち時間に応じて待つか帰るかの顧客の意思決定をシミュレートするジェネレーターを定義しました。
ここからはモデルをセットアップして実行し、結果を分析していきます。このモデルを作る目的は、初期投資と運用コストを抑えつつ、できるだけ多くの顧客に対応するための、適切なテーブル数とキッチン容量を見極めることでした。
モデルを意味のある形で構築するため、周辺のレストランを訪れて顧客の行動を観察したとします。
観察の結果、平均的には次のようでした:
- ピーク時には、新規顧客は10分ごとに来店する
- 顧客はテーブルのために1〜10分待つ忍耐がある(
MIN_PATIENCEとMAX_PATIENCE) - 待ち時間が10分を超えると顧客は離脱する
- 顧客は40〜90分間テーブルを利用する(
MIN_SEATING_TIMEとMAX_SEATING_TIME)
モデル内の時間の単位は分です。
この演習はコースの一部です
Pythonで学ぶ離散事象シミュレーション
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
INTERVAL_CUSTOMERS = 10
# Assign the appropriate values to the model parameters
MIN_PATIENCE = 1
MAX_PATIENCE = ____
MIN_SEATING_TIME = 40
MAX_SEATING_TIME = ____
customers_served = 0
customers_quiting_waiting = 0
env = simpy.Environment()
# Create the SimPy resource
tables = simpy.____(env, capacity=____)
env.process(source(env, NEW_CUSTOMERS, INTERVAL_CUSTOMERS, tables))
# Run the model
env.____(until=240)
print(f"Total number of tables served: {customers_served:02d}")
print(f"Total number of customers quiting waiting: {customers_quiting_waiting:02d}")