Kom igångKom igång gratis

Utveckla en diskret händelsemodell

Du har fått i uppgift att utveckla en diskret händelsemodell för en jordbruksverksamhet för att hjälpa till med resursallokering, ökad produktivitet och att identifiera och eliminera flaskhalsar.

Du diskuterar fortfarande de olika processerna med dina kollegor och i hur stor detalj de ska representeras i modellen. Ni har därför kommit överens om att informationen sammanställs i en ordlista (dictionary) med namnet process_dict med följande struktur. Tanken är att denna ordlista uppdateras allt eftersom mer information om processerna blir tillgänglig.

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

Låt oss bygga en generisk diskret händelsemodell med namnet discrete_model_farm() som kan schemalägga valfritt antal diskreta händelser definierade i ordlistan.

Modellens indataargument är (i ordning):

  1. process_dict: Ordlista med information om processerna
  2. simulation_time: Simuleringsperiod

Tid i modellen mäts i dagar.

Den här övningen är en del av kursen

Diskret händelsesimulering i Python

Visa kurs

Övningsinstruktioner

  • Initiera modellens tillståndsvariabler, time (spårar tid) och supply_chain (spårar antal cykler), och sätt dem till noll.
  • Definiera avslutningsvillkoret så att modellen körs medan time är mindre än simulation_time.
  • Lägg till processens varaktighet till tillståndsvariabeln time.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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")  
Redigera och kör kod