Aan de slagGa gratis aan de slag

Een discrete-eventmodel ontwikkelen

Je bent gevraagd een discrete-eventmodel te ontwikkelen voor een landbouwbedrijf om middelen toe te wijzen, de productiviteit te verhogen en knelpunten te identificeren en weg te nemen.

Je bespreekt nog met je collega’s welke processen erbij horen en in welk detail ze in het model moeten worden weergegeven. Daarom hebben jullie afgesproken de informatie te verzamelen in een dictionary met de naam process_dict met de volgende structuur. Het idee is dat deze dictionary wordt bijgewerkt zodra er meer informatie over de processen beschikbaar komt.

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

Laten we een generiek discrete-eventmodel bouwen met de naam discrete_model_farm() dat elk aantal discrete events kan inplannen die in de dictionary zijn gedefinieerd.

De invoerargumenten van het model zijn (in deze volgorde):

  1. process_dict: Dictionary met informatie over de processen
  2. simulation_time: Simulatieperiode

Tijd in het model wordt gemeten in dagen.

Deze oefening maakt deel uit van de cursus

Discrete Event Simulation in Python

Cursus bekijken

Oefeninstructies

  • Initialiseer de statusvariabelen van het model, time (houdt de tijd bij) en supply_chain (houdt het aantal cycli bij), en zet ze op nul.
  • Definieer de stopvoorwaarde zodat het model draait zolang time kleiner is dan simulation_time.
  • Tel de duur van het proces op bij de statusvariabele time.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

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")  
Code bewerken en uitvoeren