Deterministische en niet-deterministische processen combineren

Discrete Event Simulation in Python

Diogo Costa (PhD, MSc)

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

Deterministische en niet-deterministische processen

Diagram met de volgorde van processen in een systeem. Het begint met een deterministisch proces, Process A, gevolgd door een niet-deterministisch proces, Process B, en eindigt met een ander deterministisch proces, Process C.

Voorbeeld: Passagiersstromen op een luchthaven beheren

  • Niet-deterministisch: Tijdstip waarop een passagier aankomt
  • Deterministisch: Vervoer van bagage op de luchthaven na inchecken
Discrete Event Simulation in Python

Voorbeeld: Assemblagelijn in een fabriek

Deterministische processen

  • Transport van grondstoffen naar fabriek
  • Volledig geautomatiseerde stappen
  • Kwaliteitscontroles
  • Verpakken
  • Transport van het nieuwe product naar klanten

Voorbeeld: Lasmachine

Bewerkingstijd = Lengte van de lasnaad x Snelheid van de lasmachine

Niet-deterministische processen

  • Bestelling van grondstoffen
  • Handmatige assemblage van complexe onderdelen

Spreidingsplot met de duur van een bepaalde handmatige assemblage, herhaald over meerdere keren.

Discrete Event Simulation in Python

Deterministische processen

Voorbeeld: Assemblagelijn met lassen

  • 2 deterministische processen
    welding_1

welding_2

  • welding_1

    • Naam van proces: Welding component A

    • Bewerkingstijd: 5 uur

  • welding_2
    • Naam van proces: Welding component B
    • Bewerkingstijd: length * hours_per_length

Een dictionary per proces maken:

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
}
Discrete Event Simulation in Python

Niet-deterministische processen

Voorbeeld: De assemblagelijn

  • 2 niet-deterministische processen manual_assembly_1

manual_assembly_2

  • manual_assembly_1

    • Naam van proces: Manual Assembly A
    • Gemiddelde bewerkingstijd: 80 uur

    • Standaarddeviatie: 5 uur

  • manual_assembly_2
    • Naam van proces: Manual Assembly B"
    • Gemiddelde bewerkingstijd: 20 uur
  • Standaarddeviatie: 2 uur

Een dictionary per proces maken:

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}
Discrete Event Simulation in Python

Bouw een gebeurtenisgestuurde simulatie

Productievolgorde van processen Diagram met de volgorde van processen in een productie-activiteit, in chronologische volgorde: welding_1, manual_assembly_1, manual_assembly_2 en welding_2.

Discrete-eventmodel

# 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]
Discrete Event Simulation in Python

Tijdeenheden en model verkennen

  • Tijdeenheden
    • Zorg dat tijdeenheden voor alle processen consistent zijn.
Discrete Event Simulation in Python

Laten we oefenen!

Discrete Event Simulation in Python

Preparing Video For Download...