Optimisation de fabrication : recherche et arrêt
Utilisons le modèle d'usine d'horloges murales créé dans un exercice précédent et appliquons une approche d'optimisation « Search & Stop » fondée sur un échantillonnage Monte-Carlo pour repérer les goulots d'étranglement critiques.
Le procédé de fabrication est résumé dans le tableau ci-dessous, et l'information a été stockée dans une liste de dictionnaires nommée processes, avec un dictionnaire par processus. Les clés de chaque dictionnaire correspondent aux en-têtes de colonnes du tableau.

La méthode plot_results() pour générer les graphiques de cet exercice a été préchargée et est présentée ci-dessous.
def plot_results():
df_disc = pd.DataFrame({cNam[0]: process_line_space, cNam[1]: time_record})
fig = sns.lineplot(data=df_disc, x=cNam[0], y=cNam[1], marker='o')
plt.grid()
fig.set(xlim=(0, len(processes)))
fig.set(ylim=(0, 180))
fig.set(xticks=process_line_space)
plt.plot()
La boucle d'échantillonnage Monte-Carlo produira une série de trajectoires possibles du processus et s'arrêtera une fois la condition souhaitée atteinte, comme illustré dans la figure.

Cette activité fait partie du cours
Simulation d'événements discrets en Python
Instructions de l’exercice
- Configurez une boucle qui exécute des trajectoires de simulation tant que
run_iest égal à zéro ou quetotal_duration[run_i]est supérieure à 85 heures (c.-à-d. condition d'arrêt :total_duration[run_i]égale ou inférieure à 85 heures). - Lancez le moteur Monte Carlo stocké dans la fonction
run_monte_carlo().
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
def run_monte_carlo():
run_i = 0
# While-loop with the stop condition
____
run_i += 1
env = simpy.Environment()
env.process(manufractoring_process(env))
env.run()
plot_results()
plt.show()
# Call the run_monte_carlo function
____