CommencerCommencer gratuitement

Production de vêtements : multiprocessus et modularité

On vous a demandé de créer un modèle à événements discrets pour optimiser une usine de confection située à Milan, capitale de la mode.

Vous êtes très enthousiaste et vous voulez bâtir un modèle utile et évolutif, car vous savez que l’industrie de l’habillement est complexe et fait intervenir de nombreux processus et ressources, avec lesquels vous vous familiarisez encore.

Vous avez mené vos recherches et établi la liste des processus présentés dans le tableau ci-dessous. Vous avez été rigoureux et créé une fonction séparée pour chaque processus afin de rendre votre modèle modulaire et de lui permettre d’évoluer de manière maîtrisée.

Vous avez maintenant reçu un retour de votre responsable : il faut intégrer un nouveau processus dans le modèle pour prendre en compte « Spot cleaning and laundry », qui doit se situer entre les étapes 8 et 9 (voir la ligne du tableau en rouge). Les packages random et simpy ont été importés.

Table with process names, respective functions, and information about whether the process has been incorporated in the model.

Cet exercice fait partie du cours

Simulation d’événements discrets en Python

Afficher le cours

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# Create a function for the new process
def ____(gen_type=None, gauss_mean=None, gauss_std=None, unif_start=None, unif_end=None):
  if gen_type == "gauss":
    duration = random.gauss(gauss_mean, gauss_std)
  elif gen_type == "uniform":
    duration = random.uniform(unif_start, unif_end)
  return duration

def all_processes(env, prod_line):

  with prod_line.request() as request:
    yield request

    t1 = fabric_relaxing(gen_type="gauss", gauss_mean=2*60, gauss_std=15)
    t2 = spread_form_layout(gen_type="gauss", gauss_mean=6, gauss_std=1)
    t3 = laying_paper_pattern(gen_type="uniform", unif_start=3, unif_end=0.5)
    t4 = marking(gen_type="gauss", gauss_mean=6, gauss_std=1)
    t5 = cutting(gen_type="gauss", gauss_mean=5, gauss_std=0.5)
    t6 = embroidery_screen_and_printing(gen_type="uniform", unif_start=10, unif_end=2)
    t7 = sewing(gen_type="gauss", gauss_mean=15, gauss_std=3)
    t8 = checking(gen_type="gauss", gauss_mean=2, gauss_std=0.5)

    # Add the new process
    tnew = ____

    # Account for the new process duration in the entire process duration
    total_duration = sum([t1, t2, t3, t4, t5, t6, t7, t8, ____, t9, t10])

    yield env.timeout(total_duration)
Modifier et exécuter le code