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 dato 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: Linea di assemblaggio in fabbrica

Processi deterministici

  • Trasporto della materia prima in fabbrica
  • Fasi completamente automatizzate
  • Ispezioni di qualità
  • Confezionamento
  • Trasporto del nuovo prodotto ai clienti

Esempio: Macchina di saldatura

Tempo di lavorazione = Lunghezza della linea di saldatura × Velocità della macchina di saldatura

Processi non deterministici

  • Ordine della materia prima
  • Assemblaggio manuale di parti complesse

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

Simulazione a eventi discreti in Python

Processi deterministici

Esempio: Linea di assemblaggio 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 ciascun 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 linea di assemblaggio

  • 2 processi non deterministici manual_assembly_1

manual_assembly_2

  • manual_assembly_1

    • Nome del processo: Assemblaggio manuale A
    • Tempo medio di lavorazione: 80 ore

    • Deviazione standard: 5 ore

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

Creare un dictionary per ciascun 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à produttiva, in ordine cronologico: welding_1, manual_assembly_1, manual_assembly_2 e welding_2.

Modello a eventi discreti

# Inizializza la variabile di tracciamento del tempo
time = numpy.zeros(number_of_processes)

# Avanzamento al tempo del prossimo evento 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

Esercitiamoci!

Simulazione a eventi discreti in Python

Preparing Video For Download...