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

    • Repérer la configuration opérationnelle optimale
  • Processus humains

    • Rendement maximal au moindre coût (moins de ressources, moins de temps)
  • Repérer les processus ayant le plus d'impact sur la sortie du système

  • Échantillonnage de Monte-Carlo

    • Mesurer le succès et classer les résultats
  • Fonctions objectif

    • Fonction cible qui fixe des objectifs de performance
Simulation d'événements discrets en Python

Fonction objectif

  • Expression mathématique décrivant la cible 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é

Rechercher et arrêter : Exécuter différentes configurations du modèle et arrêter quand la condition souhaitée est atteinte

while total_duration < 24:
      model_to_run()

Noter et classer : 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 : Rechercher et arrêter

  • Échantillonnage de 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 remplie

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 comprenant une série de processus séquentiels, où la ligne bleue du bas correspond au dernier essai ayant satisfait les exigences de la méthode « Rechercher et arrêter ».

Simulation d'événements discrets en Python

Approche 2 : Noter et classer

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

Exemple : industrie manufacturière

Avec diverses tâches (ou processus) séquentielles, comme une chaîne de production 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 : Noter et classer

Score

« ROUGE » : Faible pointage ; « BLEU » : Pointage é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écoupage » et « Polissage ».

Classement

Classer les exécutions de simulation par score

Simulation d'événements discrets en Python

Repérer les processus critiques qui limitent la performance

Rechercher et arrêter

Graphique montrant l'enveloppe de réponse d'une activité de fabrication comprenant une série de processus séquentiels, où la ligne bleue du bas correspond au dernier essai ayant satisfait les exigences de la méthode « Rechercher et arrêter ». La durée minimale de chacun des processus obtenue pour les meilleures simulations est mise en évidence.

  • La ligne « bleue » a satisfait le critère d'« arrêt »

    • Durée totale = 30 min
  • Détails de la « meilleure » simulation :

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

Simulation d'événements discrets en Python

Repérer les processus critiques qui limitent la performance

Score

Objectif : plus bas score = plus courte durée Nuage de points montrant le score de la fonction objectif pour divers scénarios simulés des processus « Déchargement et préparation », « Découpage » et « Polissage ». La durée minimale de chaque processus obtenue pour les meilleures simulations est mise en évidence.

Classement

« Processus 1 » est critique pour atteindre cet objectif Graphique classant les scénarios selon le score de la fonction objectif pour les processus « Déchargement et préparation », « Découpage » et « Polissage ». La durée minimale de chaque processus obtenue pour les meilleures simulations est mise en évidence.

Simulation d'événements discrets en Python

Passons à la pratique !

Simulation d'événements discrets en Python

Preparing Video For Download...