Att kombinera deterministiska och icke-deterministiska processer

Diskret händelsesimulering i Python

Diogo Costa (PhD, MSc)

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

Deterministiska och icke-deterministiska processer

Diagram som visar processsekvensen i ett givet system. Det börjar med en deterministisk process, Process A, följt av en icke-deterministisk process, Process B, och avslutas med ytterligare en deterministisk process, Process C.

Exempel: Hantering av passagerarflöden på flygplatser

  • Icke-deterministisk: Tidpunkt när en passagerare anländer till flygplatsen
  • Deterministisk: Transport av bagage inne på flygplatsen efter incheckning
Diskret händelsesimulering i Python

Exempel: Monteringslinje i en fabrik

Deterministiska processer

  • Transport av råmaterial till fabrik
  • Helt automatiserade steg
  • Kvalitetskontroller
  • Förpackning
  • Transport av ny produkt till kunder

Exempel: Svetsmaskin

Bearbetningstid = Svetslinjens längd x Svetsmaskinen hastighet

Icke-deterministiska processer

  • Beställning av råmaterial
  • Manuell montering av komplexa delar

Spridningsdiagram som visar varaktigheten för en specifik manuell monteringsprocess vid upprepade tillfällen.

Diskret händelsesimulering i Python

Deterministiska processer

Exempel: Monteringslinje med svetsning

  • 2 deterministiska processer
    welding_1

welding_2

  • welding_1

    • Processnamn: Welding component A

    • Bearbetningstid: 5 timmar

  • welding_2
    • Processnamn: Welding component B
    • Bearbetningstid: length * hours_per_length

Skapa en dictionary för varje process:

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
}
Diskret händelsesimulering i Python

Icke-deterministiska processer

Exempel: Monteringslinjen

  • 2 icke-deterministiska processer manual_assembly_1

manual_assembly_2

  • manual_assembly_1

    • Processnamn: Manual Assembly A
    • Genomsnittlig bearbetningstid: 80 timmar

    • Standardavvikelse: 5 timmar

  • manual_assembly_2
    • Processnamn: Manual Assembly B"
    • Genomsnittlig bearbetningstid: 20 timmar
  • Standardavvikelse: 2 timmar

Skapa en dictionary för varje process:

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}
Diskret händelsesimulering i Python

Bygg en händelsebaserad simulering

Tillverkningens processsekvens Diagram som visar processsekvensen i en tillverkningsaktivitet, med följande processer i kronologisk ordning: welding_1, manual_assembly_1, manual_assembly_2 och welding_2.

Diskret-händelsemodell

# 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]
Diskret händelsesimulering i Python

Tidsenheter och att utforska modellen

  • Tidsenheter
    • Se till att tidsenheterna är konsekventa för alla processer.
Diskret händelsesimulering i Python

Nu kör vi en övning!

Diskret händelsesimulering i Python

Preparing Video For Download...