Construiește modelul: Generează comenzi de aeronave
Acum că mediul SimPy și resursele au fost create, hai să îl conectăm cu un generator care simulează comenzile de achiziție a aeronavelor. Există 30 de comenzi de aeronave.
Funcția assembly_line() face solicitări secvențiale de resurse pentru diferitele secțiuni de producție a componentelor aeronavei.
Codul de mai jos ilustrează o astfel de solicitare.
# 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]])
Acest exercițiu face parte din cursul
Simulare de evenimente discrete în Python
Instrucțiuni pentru exercițiu
- Creează o buclă for pentru a genera toate solicitările de comenzi (
total_num_orders), folosind o variabilă auxiliară numitărequest_i. - Creează un proces nou pentru fiecare solicitare de aeronavă în cadrul buclei for; toate procesele sunt bazate pe generatorul
assembly_process_request. - Toate cele 30 de aeronave au fost solicitate într-un singur lot, deci completează codul astfel încât să reflecte absența timpului de așteptare între solicitări.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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(____)