Kombinace deterministických a nedeterministických procesů

Diskrétní simulace událostí v Pythonu

Diogo Costa (PhD, MSc)

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

Deterministické a nedeterministické procesy

Diagram znázorňující posloupnost procesů v daném systému. Začíná deterministickým procesem A, pokračuje nedeterministickým procesem B a končí dalším deterministickým procesem C.

Příklad: Řízení toku cestujících na letišti

  • Nedeterministický: čas příchodu cestujícího na letiště
  • Deterministický: přeprava zavazadel po odbavení
Diskrétní simulace událostí v Pythonu

Příklad: Montážní linka v továrně

Deterministické procesy

  • Přeprava suroviny do továrny
  • Plně automatizované kroky
  • Kontroly kvality
  • Balení
  • Přeprava nového produktu zákazníkům

Příklad: Svářecí stroj

Doba zpracování = Délka svařovací linky x rychlost svářecího stroje

Nedeterministické procesy

  • Objednávka suroviny
  • Ruční montáž složitých dílů

Bodový graf znázorňující dobu trvání konkrétní ruční montáže při jejím opakovaném provádění.

Diskrétní simulace událostí v Pythonu

Deterministické procesy

Příklad: Montážní linka se svařováním

  • 2 deterministické procesy
    welding_1

welding_2

  • welding_1

    • Název procesu: Svařování součásti A

    • Doba zpracování: 5 hodin

  • welding_2
    • Název procesu: Svařování součásti B
    • Doba zpracování: length * hours_per_length

Vytvoření dictionary pro každý 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
}
Diskrétní simulace událostí v Pythonu

Nedeterministické procesy

Příklad: Montážní linka

  • 2 nedeterministické procesy manual_assembly_1

manual_assembly_2

  • manual_assembly_1

    • Název procesu: Ruční montáž A
    • Průměrná doba zpracování: 80 hodin

    • Směrodatná odchylka: 5 hodin

  • manual_assembly_2
    • Název procesu: Ruční montáž B"
    • Průměrná doba zpracování: 20 hodin
  • Směrodatná odchylka: 2 hodiny

Vytvoření dictionary pro každý 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}
Diskrétní simulace událostí v Pythonu

Vytvoř simulaci založenou na událostech

Posloupnost výrobních procesů Diagram znázorňující posloupnost procesů výrobní činnosti, zahrnující v chronologickém pořadí procesy welding_1, manual_assembly_1, manual_assembly_2 a welding_2.

Model diskrétních událostí

# 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]
Diskrétní simulace událostí v Pythonu

Časové jednotky a zkoumání modelu

  • Časové jednotky
    • Zajisti, aby časové jednotky byly u všech procesů stejné.
Diskrétní simulace událostí v Pythonu

Pojďme cvičit!

Diskrétní simulace událostí v Pythonu

Preparing Video For Download...