Fonctions objectif et optimisation du système

Simulation d’événements discrets en Python

Diogo Costa (PhD, MSc)

Adjunct Professor, University of Saskatchewan, Canada & CEO of ImpactBLUE-Scientific

Optimisation du système

  • Optimisation du système

    • Identifier la configuration opérationnelle optimale
  • Processus humains

    • Production maximale au moindre coût (moins de ressources, moins de temps)
  • Identifier les processus à plus fort impact sur la sortie

  • Échantillonnage Monte-Carlo

    • Mesurer la réussite et classer les résultats
  • Fonctions objectif

    • Fonction cible fixant des objectifs de performance
Simulation d’événements discrets en Python

Fonction objectif

  • Expression mathématique décrivant l’objectif de sortie

  • Noter les scénarios de simulation

Exemple

  • Processus A : 35 %
  • Processus B : 20 %
  • Processus C : 45 %

Total : 100 %

  • Processus C a le poids le plus élevé

Search & Stop : Exécuter différentes configurations et arrêter quand la condition est atteinte

while total_duration < 24:
      model_to_run()

Score & Rank : Noter les résultats selon des critères pondérés

for i in range(num_runs):
   out_1, out_2 = model_to_run(i)
   scores[i] = 0.3 * out_1 + 0.7 * out_2
Simulation d’événements discrets en Python

Approche 1 : Search & Stop

  • Échantillonnage Monte-Carlo pour exécuter plusieurs scénarios
  • Composé d’occurrences de processus non déterministes
  • La boucle de recherche du scénario optimal s’interrompt quand la condition est satisfaite

Exemple

scenario_num = 0
while scenario_num == 0 or total_duration[s] > 40:
  scenario_num += 1
  env = simpy.Environment()
  env.process(manufacturing_proc(env))
  env.run()
  plot_results()

Graphique montrant l’enveloppe de réponse d’une activité de fabrication avec des processus séquentiels ; la ligne bleue du bas correspond au dernier run répondant aux exigences de Search & Stop.

Simulation d’événements discrets en Python

Approche 2 : Score & classement

  • Échantillonnage Monte-Carlo pour exécuter plusieurs scénarios
  • Noter et classer les résultats

Exemple : industrie manufacturière

Impliquant diverses tâches séquentielles (processus), comme une ligne d’assemblage automobile.

def objective_function_calc():
  score_objfunc = np.ones(num_scenarios)

  for s in range(num_scenarios):
    for p in range(len(processes)):

      score_objfunc[s] += (
         processes[p]["duration_hours"]
         * processes[p]["score_weight"])
Simulation d’événements discrets en Python

Approche 2 : Score & classement

Score

« ROUGE » : Faible score ; « BLEU » : Score élevé Nuage de points montrant le score de la fonction objectif pour divers scénarios simulés des processus « Déchargement et préparation », « Découpe » et « Polissage ».

Classement

Classer les runs par score Graphique classant les scénarios selon le score de la fonction objectif pour « Déchargement et préparation », « Découpe » et « Polissage ».

Simulation d’événements discrets en Python

Identifier les processus critiques limitant la performance

Search & stop

Graphique montrant l’enveloppe de réponse d’une activité de fabrication avec une série de processus séquentiels. La ligne bleue du bas correspond au dernier run ayant satisfait les critères de la méthode Search & Stop. Les durées minimales de chaque processus pour les meilleures simulations sont mises en évidence.

  • La ligne « bleue » a atteint le critère d’arrêt

    • Durée totale = 30 min
  • Résultats détaillés de la « meilleure » simulation :

    • Processus 1 : ~10 min (sum = 20 min)
    • Processus 2 : ~10 min (sum = 20 min)
    • Processus 3 : ~8 min (sum = 28 min)
    • Processus 4 : ~2 min (sum = 30 min)
  • Le « Processus 1 » est critique pour atteindre cet objectif

Simulation d’événements discrets en Python

Identifier les processus critiques limitant la performance

Score

Objectif : score minimal = durée minimale Nuage de points montrant le score de la fonction objectif pour divers scénarios simulés des processus « Déchargement et préparation », « Découpe » et « Polissage ». Les durées minimales de chaque processus pour les meilleures simulations sont mises en évidence.

Classement

Le « Processus 1 » est critique pour atteindre cet objectif Graphique classant les scénarios selon le score de la fonction objectif pour « Déchargement et préparation », « Découpe » et « Polissage ». Les durées minimales de chaque processus pour les meilleures simulations sont mises en évidence.

Simulation d’événements discrets en Python

Passons à la pratique !

Simulation d’événements discrets en Python

Preparing Video For Download...