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 des 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 du 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 dans une usine

Processus déterministes

  • Transport des matières premières vers l'usine
  • Étapes entièrement automatisées
  • Inspections qualité
  • Emballage
  • Transport du nouveau produit aux clients

Exemple : machine à souder

Temps de traitement = Longueur de la ligne de soudure × Vitesse de la machine à souder

Processus non déterministes

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

Nuage de points montrant la durée d'un assemblage manuel particulier, répétée 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

Créer une simulation par événements

Séquence de fabrication Diagramme montrant la séquence des processus d'une activité de fabrication, qui inclut, dans l'ordre chronologique : 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...