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í sekvenci procesů daného systému: deterministický proces A, nedeterministický proces B a deterministický proces C.

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

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

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

Deterministické procesy

  • Přeprava surovin do továrny
  • Plně automatizované kroky
  • Kontroly kvality
  • Balení
  • Přeprava výrobku zákazníkům

Příklad: Svářecí stroj

Doba zpracování = Délka svaru x Rychlost svářecího stroje

Nedeterministické procesy

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

Bodový graf zobrazující dobu trvání konkrétní ruční montáže při opakování operace.

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: Welding component A
    • Doba zpracování: 5 hodin
  • welding_2

    • Název procesu: Welding component 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: Manual Assembly A
    • Průměrná doba zpracování: 80 hodin
    • Směrodatná odchylka: 5 hodin
  • manual_assembly_2

    • Název procesu: Manual Assembly B"
    • Průměrná doba zpracování: 20 hodin
  • Směrodatná odchylka: 2 hodin

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

Sestavení simulace založené na událostech

Výrobní sekvence procesů Diagram znázorňující sekvenci procesů výrobní činnosti v chronologickém pořadí: 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 prozkoumání modelu

  • Časové jednotky
    • Zajistěte konzistenci časových jednotek ve všech procesech.
Diskrétní simulace událostí v Pythonu

Pojďme procvičovat!

Diskrétní simulace událostí v Pythonu

Preparing Video For Download...