Kombination deterministischer und nichtdeterministischer Prozesse

Diskrete-Ereignis-Simulation mit Python

Diogo Costa (PhD, MSc)

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

Deterministische und nichtdeterministische Prozesse

Diagramm mit der Abfolge der Prozesse eines Systems. Es beginnt mit einem deterministischen Prozess, Prozess A, gefolgt von einem nichtdeterministischen Prozess, Prozess B, und endet mit einem weiteren deterministischen Prozess, Prozess C.

Beispiel: Steuerung von Passagierströmen in Flughäfen

  • Nichtdeterministisch: Zeitpunkt der Ankunft eines Passagiers am Flughafen
  • Deterministisch: Gepäcktransport im Flughafen nach dem Check-in
Diskrete-Ereignis-Simulation mit Python

Beispiel: Fließband in einer Fabrik

Deterministische Prozesse

  • Transport von Rohmaterial zur Fabrik
  • Vollautomatisierte Schritte
  • Qualitätsprüfungen
  • Verpackung
  • Transport des neuen Produkts zu Kunden

Beispiel: Schweißmaschine

Bearbeitungszeit = Länge der Schweißnaht × Geschwindigkeit der Schweißmaschine

Nichtdeterministische Prozesse

  • Bestellung von Rohmaterial
  • Manuelle Montage komplexer Teile

Streudiagramm, das die Dauer einer bestimmten manuellen Montage über mehrere Wiederholungen zeigt.

Diskrete-Ereignis-Simulation mit Python

Deterministische Prozesse

Beispiel: Fließband mit Schweißen

  • 2 deterministische Prozesse
    welding_1

welding_2

  • welding_1

    • Prozessname: Welding component A

    • Bearbeitungszeit: 5 Stunden

  • welding_2
    • Prozessname: Welding component B
    • Bearbeitungszeit: length * hours_per_length

Erstellen eines dictionary für jeden Prozess:

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
}
Diskrete-Ereignis-Simulation mit Python

Nichtdeterministische Prozesse

Beispiel: Das Fließband

  • 2 nichtdeterministische Prozesse manual_assembly_1

manual_assembly_2

  • manual_assembly_1

    • Prozessname: Manual Assembly A
    • Durchschnittliche Bearbeitungszeit: 80 Stunden

    • Standardabweichung: 5 Stunden

  • manual_assembly_2
    • Prozessname: Manual Assembly B"
    • Durchschnittliche Bearbeitungszeit: 20 Stunden
  • Standardabweichung: 2 Stunden

Erstellen eines dictionary für jeden Prozess:

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}
Diskrete-Ereignis-Simulation mit Python

Ereignisbasierte Simulation erstellen

Fertigungsprozess-Abfolge Diagramm, das die Abfolge einer Fertigungsaktivität zeigt, chronologisch: welding_1, manual_assembly_1, manual_assembly_2 und welding_2.

Ereignisdiskretes Modell

# 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]
Diskrete-Ereignis-Simulation mit Python

Zeiteinheiten und Modell erkunden

  • Zeiteinheiten
    • Achte darauf, dass die Zeiteinheiten für alle Prozesse konsistent sind.
Diskrete-Ereignis-Simulation mit Python

Lass uns üben!

Diskrete-Ereignis-Simulation mit Python

Preparing Video For Download...