Créez votre modèle : Générer des commandes d’avions
Maintenant que l’environnement SimPy et les ressources ont été créés, relions-les à un générateur qui simule les commandes d’achat d’avions. Il y a 30 commandes d’avions.
La fonction assembly_line() effectue des demandes de ressources séquentielles pour les différentes sections de fabrication des composants de l’avion.
Le code ci-dessous montre un exemple de demande.
# 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]])
Cet exercice fait partie du cours
Simulation d’événements discrets en Python
Instructions
- Créez une boucle for pour émettre toutes les demandes de commande (
total_num_orders) en utilisant une variable factice nomméerequest_i. - Créez un nouveau processus pour chaque demande d’avion pendant la boucle for ; tous les processus sont basés sur le générateur
assembly_process_request. - Les 30 avions ont été demandés en une seule série ; complétez le code pour refléter l’absence de temps d’attente entre les demandes.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
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(____)