Combinare processi deterministici e non deterministici

Simulazione a eventi discreti in Python

Diogo Costa (PhD, MSc)

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

Processi deterministici e non deterministici

Diagramma che mostra la sequenza dei processi di un sistema: inizia con un processo deterministico, Processo A, seguito da un processo non deterministico, Processo B, e termina con un altro processo deterministico, Processo C.

Esempio: Gestione dei flussi di passeggeri negli aeroporti

  • Non deterministico: orario di arrivo del passeggero in aeroporto
  • Deterministico: trasporto dei bagagli in aeroporto dopo il check-in
Simulazione a eventi discreti in Python

Esempio: Catena di montaggio in fabbrica

Processi deterministici

  • Trasporto di materie prime alla fabbrica
  • Fasi completamente automatizzate
  • Controlli qualità
  • Confezionamento
  • Consegna del prodotto al cliente

Esempio: saldatrice

Tempo di lavorazione = Lunghezza della saldatura × Velocità della saldatrice

Processi non deterministici

  • Ordine delle materie prime
  • Assemblaggio manuale di parti complesse

Grafico a dispersione che mostra la durata di un'assemblaggio manuale ripetuto più volte.

Simulazione a eventi discreti in Python

Processi deterministici

Esempio: Catena di montaggio con saldatura

  • 2 processi deterministici
    welding_1 welding_2

  • welding_1

    • Nome del processo: Saldatura componente A
    • Tempo di lavorazione: 5 ore
  • welding_2

    • Nome del processo: Saldatura componente B
    • Tempo di lavorazione: length * hours_per_length

Creare un dictionary per ogni processo:

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
}
Simulazione a eventi discreti in Python

Processi non deterministici

Esempio: la catena di montaggio

  • 2 processi non deterministici manual_assembly_1 manual_assembly_2

  • manual_assembly_1

    • Nome del processo: Assemblaggio manuale A
    • Tempo medio: 80 ore
    • Deviazione standard: 5 ore
  • manual_assembly_2

    • Nome del processo: Assemblaggio manuale B"
    • Tempo medio: 20 ore
  • Deviazione standard: 2 ore

Creare un dictionary per ogni processo:

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}
Simulazione a eventi discreti in Python

Crea una simulazione basata su eventi

Sequenza di processi produttivi Diagramma che mostra la sequenza dei processi di un'attività manifatturiera, in ordine: welding_1, manual_assembly_1, manual_assembly_2 e welding_2.

Modello a eventi discreti

# 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]
Simulazione a eventi discreti in Python

Unità di tempo ed esplorazione del modello

  • Unità di tempo
    • Assicurati che le unità di tempo siano coerenti per tutti i processi.
Simulazione a eventi discreti in Python

Passons à la pratique !

Simulazione a eventi discreti in Python

Preparing Video For Download...