Combiner des processus déterministes et non déterministes

Simulation d’événements discrets en Python

Diogo Costa (PhD, MSc)

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

Processus déterministes et non déterministes

Schéma montrant la séquence de processus d'un système donné. Elle commence par un processus déterministe, Processus A, suivi d'un processus non déterministe, Processus B, et se termine par un autre processus déterministe, Processus C.

Exemple : gestion des flux de passagers dans les aéroports

  • Non déterministe : heure d'arrivée d'un passager à l'aéroport
  • Déterministe : transport des bagages dans l'aéroport après l'enregistrement
Simulation d’événements discrets en Python

Exemple : chaîne de montage en usine

Processus déterministes

  • Transport de la matière première vers l'usine
  • Étapes entièrement automatisées
  • Contrôles qualité
  • Conditionnement
  • Transport du nouveau produit vers les clients

Exemple : machine de soudage

Temps de traitement = Longueur de la ligne de soudure × Vitesse de la machine de soudage

Processus non déterministes

  • Commande de matière première
  • Assemblage manuel de pièces complexes

Nuage de points montrant la durée d'un assemblage manuel particulier répété plusieurs fois.

Simulation d’événements discrets en Python

Processus déterministes

Exemple : chaîne de montage avec soudage

  • 2 processus déterministes
    welding_1

welding_2

  • welding_1

    • Nom du processus : Welding component A

    • Temps de traitement : 5 heures

  • welding_2
    • Nom du processus : Welding component B
    • Temps de traitement : length * hours_per_length

Création d'un dictionary pour chaque processus :

welding_1 = {
    "name": "Welding component A",
    "time_hours": 5
}

length = 20   # meters
hours_per_length = 0.2  # hours 

welding_2 = {
    "name": "Welding component B",
    "time_hours": length * hours_per_length
}
Simulation d’événements discrets en Python

Processus non déterministes

Exemple : la chaîne de montage

  • 2 processus non déterministes manual_assembly_1

manual_assembly_2

  • manual_assembly_1

    • Nom du processus : Manual Assembly A
    • Temps moyen de traitement : 80 heures

    • Écart-type : 5 heures

  • manual_assembly_2
    • Nom du processus : Manual Assembly B"
    • Temps moyen de traitement : 20 heures
  • Écart-type : 2 heures

Création d'un dictionary pour chaque processus :

manual_assembly_1 = {
    "name": "Manual Assembly A",
    "time_hours": 80,
    "std_hours": 5
}
manual_assembly_2 = {
    "name": "Manual Assembly B",
    "time_hours": 20,
    "std_hours": 2}
Simulation d’événements discrets en Python

Construire une simulation par événements

Séquence de fabrication Schéma montrant la séquence de processus d'une activité de fabrication, comprenant dans l'ordre : welding_1, manual_assembly_1, manual_assembly_2 et welding_2.

Modèle à événements discrets

# Initiate time-tracking variable
time = numpy.zeros(number_of_processes)

# Next-event time progression time[0] = 0 time[1] = time[0] + welding_1["time_hours"] time[2] = time[1] + rd.gauss(manual_assembly_1["time_hours"], manual_assembly_1["std_hours"]) time[3] = time[2] + rd.gauss(manual_assembly_2["time_hours"], manual_assembly_2["std_hours"]) time[4] = time[3] + welding_2["time_hours"] time[5] = time[4]
Simulation d’événements discrets en Python

Unités de temps et exploration du modèle

  • Unités de temps
    • Assurez-vous que les unités de temps sont cohérentes pour tous les processus.
Simulation d’événements discrets en Python

Passons à la pratique !

Simulation d’événements discrets en Python

Preparing Video For Download...