Bygg din modell: Generera flygplansbeställningar
Nu när SimPy-miljön och resurserna har skapats är det dags att koppla den till en generator som simulerar inköpsbeställningar av flygplan. Det finns 30 flygplansbeställningar.
Funktionen assembly_line() gör sekventiella resursförfrågningar för de olika sektionerna i tillverkningen av flygplanskomponenter.
Koden nedan visar ett exempel på en sådan förfrågan.
# Open the resource step_1_fuselage request
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]])
Den här övningen är en del av kursen
Diskret händelsesimulering i Python
Övningsinstruktioner
- Skapa en for-loop som hanterar alla beställningsförfrågningar (
total_num_orders) med hjälp av en dummyvariabel med namnetrequest_i. - Skapa en ny process för varje flygplansförfrågan i for-loopen. Alla processer baseras på generatorn
assembly_process_request. - Alla 30 flygplan har beställts i ett och samma batch, så komplettera koden så att den återspeglar att det inte finns någon väntetid mellan förfrågningarna.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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(____)