Baue dein Modell: Flugzeugbestellungen erzeugen
Jetzt, da die SimPy-Umgebung und die Ressourcen erstellt wurden, verknüpfen wir sie mit einem Generator, der Bestellungen für Flugzeugkäufe simuliert. Es gibt 30 Flugzeugbestellungen.
Die Funktion assembly_line() stellt sequentielle Ressourcenanfragen für die verschiedenen Fertigungsabschnitte der Flugzeugkomponenten.
Der folgende Code zeigt eine solche Anfrage.
# Öffne die Ressourcenanfrage step_1_fuselage
with step_1_fuselage.request() as slot_request_1:
request_1_time = env.now
yield slot_request_1
print(f"time: {env.now:7.4f} | Aircraft {aircraft_id:02d}
| Enters: step_1_fuselage
| Queued for {env.now-request_1_time} hours")
yield env.timeout(processing_time[processing_time_step_names[0]])
Diese Übung ist Teil des Kurses
Diskrete-Ereignis-Simulation mit Python
Anleitung zur Übung
- Erstelle eine for-Schleife, um alle Bestellanfragen (
total_num_orders) mit einer Dummy-Variablen namensrequest_izu erstellen. - Erzeuge während der for-Schleife für jede Flugzeuganfrage einen neuen Prozess; alle Prozesse basieren auf dem Generator
assembly_process_request. - Alle 30 Flugzeuge wurden in einer Charge angefragt. Vervollständige daher den Code so, dass keine Wartezeit zwischen den Anfragen entsteht.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
def order_aircraft(env, total_num_orders, step_1_fuselage, step_2_wings, step_3_power_plant, step_4_landing_gear):
# Generate the orders with a for-loop
____ request_i in range(total_num_orders):
assembly_process_request = assembly_line(env, request_i, step_1_fuselage, step_2_wings, step_3_power_plant, step_4_landing_gear)
# Initiate an assembly line process for each request
env.____(assembly_process_request)
# Clock-in the time between requests
yield env.timeout(____)