始める無料で始める

離散事象モデルの開発

農業オペレーションのための離散事象モデルを開発し、資源配分を支援し、生産性を高め、ボトルネックを特定・解消してほしいと依頼されています。

現在、同僚と一緒に関与するさまざまなプロセスと、モデル内でどの程度の詳細まで表現すべきかを議論している段階です。そこで、情報は次の構造を持つ process_dict という名前の辞書にまとめることで合意しました。プロセスに関する情報が増えるたびに、この辞書を更新していく想定です。

process_dict = {
    "Process name 1":  <duration>,
    "Process name 2":  <duration>,
    ...
}

この辞書で定義された任意の数の離散イベントをスケジューリングできる、discrete_model_farm() という汎用的な離散事象モデルを作成しましょう。

モデルの入力引数は(この順序で):

  1. process_dict:プロセスに関する情報を持つ辞書
  2. simulation_time:シミュレーション期間

モデル内の時間の単位は日とします。

この演習はコースの一部です

Pythonで学ぶ離散事象シミュレーション

コースを見る

演習の手順

  • モデルの状態変数である time(時間を追跡)と supply_chain(サイクル数を追跡)を初期化し、ゼロに設定します。
  • 終了条件を定義し、timesimulation_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")  
コードを編集して実行