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 start met een deterministisch proces, Proces A, gevolgd door een niet-deterministisch proces, Proces B, en eindigt met een deterministisch proces, Proces C.

Voorbeeld: Beheer van passagiersstromen op luchthavens

  • Niet-deterministisch: Tijdstip waarop een passagier op de luchthaven arriveert
  • 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 de fabriek
  • Volledig geautomatiseerde stappen
  • Kwaliteitscontroles
  • Verpakken
  • Transport van het nieuwe product naar klanten

Voorbeeld: Lasmachine

Doorlooptijd = Lengte van de laslijn × Snelheid van de lasmachine

Niet-deterministische processen

  • Bestelling van grondstoffen
  • Handmatige assemblage van complexe onderdelen

Spreidingsdiagram met de duur van een specifieke handmatige assemblage bij herhaling.

Discrete Event Simulation in Python

Deterministische processen

Voorbeeld: Assemblagelijn met lassen

  • 2 deterministische processen
    welding_1 welding_2

  • welding_1

    • Procesnaam: Lassen component A
    • Doorlooptijd: 5 uur
  • welding_2

    • Procesnaam: Lassen component B
    • Doorlooptijd: length * hours_per_length

Een dictionary maken voor elk 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
}
Discrete Event Simulation in Python

Niet-deterministische processen

Voorbeeld: De assemblagelijn

  • 2 niet-deterministische processen manual_assembly_1 manual_assembly_2

  • manual_assembly_1

    • Procesnaam: Handmatige assemblage A
    • Gemiddelde doorlooptijd: 80 uur
    • Standaardafwijking: 5 uur
  • manual_assembly_2

    • Procesnaam: Handmatige assemblage B"
    • Gemiddelde doorlooptijd: 20 uur
  • Standaardafwijking: 2 uur

Een dictionary maken voor elk 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}
Discrete Event Simulation in Python

Bouw een gebeurtenisgestuurde simulatie

Productiesequentie van processen Diagram met de volgorde van processen van een productieactiviteit, in chronologische volgorde: welding_1, manual_assembly_1, manual_assembly_2 en welding_2.

Discreet-evenementmodel

# 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

Tijdseenheden en model verkennen

  • Tijdseenheden
    • Zorg dat tijdseenheden voor alle processen consistent zijn.
Discrete Event Simulation in Python

Laten we oefenen!

Discrete Event Simulation in Python

Preparing Video For Download...