Combinarea proceselor deterministe și nedeterministe

Simulare de evenimente discrete în Python

Diogo Costa (PhD, MSc)

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

Procese deterministe și nedeterministe

Diagramă care arată secvența proceselor unui sistem. Începe cu un proces determinist, Procesul A, urmat de un proces nedeterminist, Procesul B, și se încheie cu un alt proces determinist, Procesul C.

Exemplu: Gestionarea fluxului de pasageri în aeroporturi

  • Nedeterminist: Momentul sosirii unui pasager la aeroport
  • Determinist: Transportul bagajelor în aeroport după înregistrare
Simulare de evenimente discrete în Python

Exemplu: Linie de asamblare într-o fabrică

Procese deterministe

  • Transportul materiilor prime la fabrică
  • Etape complet automatizate
  • Inspecții de calitate
  • Ambalare
  • Transportul produsului finit către clienți

Exemplu: Mașină de sudură

Timpul de procesare = Lungimea liniei de sudură x Viteza mașinii de sudură

Procese nedeterministe

  • Comandarea materiilor prime
  • Asamblarea manuală a pieselor complexe

Grafic de tip scatter care arată durata unei asamblări manuale repetate de mai multe ori.

Simulare de evenimente discrete în Python

Procese deterministe

Exemplu: Linie de asamblare cu sudură

  • 2 procese deterministe
    welding_1

welding_2

  • welding_1

    • Numele procesului: Welding component A

    • Timp de procesare: 5 ore

  • welding_2
    • Numele procesului: Welding component B
    • Timp de procesare: length * hours_per_length

Crearea unui dictionary pentru fiecare proces:

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
}
Simulare de evenimente discrete în Python

Procese nedeterministe

Exemplu: Linia de asamblare

  • 2 procese nedeterministe manual_assembly_1

manual_assembly_2

  • manual_assembly_1

    • Numele procesului: Manual Assembly A
    • Timp mediu de procesare: 80 ore

    • Deviație standard: 5 ore

  • manual_assembly_2
    • Numele procesului: Manual Assembly B"
    • Timp mediu de procesare: 20 ore
  • Deviație standard: 2 ore

Crearea unui dictionary pentru fiecare proces:

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}
Simulare de evenimente discrete în Python

Construirea unei simulări bazate pe evenimente

Secvența de procese de producție Diagramă care arată secvența proceselor unei activități de producție, incluzând în ordine cronologică: welding_1, manual_assembly_1, manual_assembly_2 și welding_2.

Model cu evenimente discrete

# 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]
Simulare de evenimente discrete în Python

Unități de timp și explorarea modelului

  • Unități de timp
    • Asigurați-vă că unitățile de timp sunt consistente pentru toate procesele.
Simulare de evenimente discrete în Python

Să exersăm!

Simulare de evenimente discrete în Python

Preparing Video For Download...