離散事象モデルの開発
農業オペレーションのための離散事象モデルを開発し、資源配分を支援し、生産性を高め、ボトルネックを特定・解消してほしいと依頼されています。
現在、同僚と一緒に関与するさまざまなプロセスと、モデル内でどの程度の詳細まで表現すべきかを議論している段階です。そこで、情報は次の構造を持つ process_dict という名前の辞書にまとめることで合意しました。プロセスに関する情報が増えるたびに、この辞書を更新していく想定です。
process_dict = {
"Process name 1": <duration>,
"Process name 2": <duration>,
...
}
この辞書で定義された任意の数の離散イベントをスケジューリングできる、discrete_model_farm() という汎用的な離散事象モデルを作成しましょう。
モデルの入力引数は(この順序で):
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")