Łączenie procesów deterministycznych i niedeterministycznych

Symulacja zdarzeń dyskretnych w Pythonie

Diogo Costa (PhD, MSc)

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

Procesy deterministyczne i niedeterministyczne

Diagram przedstawiający sekwencję procesów danego systemu. Rozpoczyna się deterministycznym procesem A, następuje niedeterministyczny proces B, a całość kończy się deterministycznym procesem C.

Przykład: Zarządzanie przepływem pasażerów na lotniskach

  • Niedeterministyczny: Czas przybycia pasażera na lotnisko
  • Deterministyczny: Transport bagażu wewnątrz lotniska po odprawie
Symulacja zdarzeń dyskretnych w Pythonie

Przykład: Linia montażowa w fabryce

Procesy deterministyczne

  • Transport surowców do fabryki
  • W pełni zautomatyzowane etapy
  • Kontrola jakości
  • Pakowanie
  • Transport produktu do klientów

Przykład: Maszyna spawalnicza

Czas przetwarzania = Długość spoiny x Prędkość maszyny spawalniczej

Procesy niedeterministyczne

  • Zamówienie surowców
  • Ręczny montaż złożonych części

Wykres punktowy przedstawiający czas trwania określonego montażu ręcznego przy wielokrotnym powtarzaniu.

Symulacja zdarzeń dyskretnych w Pythonie

Procesy deterministyczne

Przykład: Linia montażowa ze spawaniem

  • 2 procesy deterministyczne
    welding_1

welding_2

  • welding_1

    • Nazwa procesu: Welding component A

    • Czas przetwarzania: 5 godzin

  • welding_2
    • Nazwa procesu: Welding component B
    • Czas przetwarzania: length * hours_per_length

Tworzenie dictionary dla każdego procesu:

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
}
Symulacja zdarzeń dyskretnych w Pythonie

Procesy niedeterministyczne

Przykład: Linia montażowa

  • 2 procesy niedeterministyczne manual_assembly_1

manual_assembly_2

  • manual_assembly_1

    • Nazwa procesu: Manual Assembly A
    • Średni czas przetwarzania: 80 godzin

    • Odchylenie standardowe: 5 godzin

  • manual_assembly_2
    • Nazwa procesu: Manual Assembly B"
    • Średni czas przetwarzania: 20 godzin
  • Odchylenie standardowe: 2 godziny

Tworzenie dictionary dla każdego procesu:

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}
Symulacja zdarzeń dyskretnych w Pythonie

Budowanie symulacji opartej na zdarzeniach

Sekwencja procesów produkcyjnych Diagram przedstawiający sekwencję procesów działalności produkcyjnej, obejmującą następujące procesy w kolejności chronologicznej: welding_1, manual_assembly_1, manual_assembly_2 i welding_2.

Model zdarzeniowy

# 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]
Symulacja zdarzeń dyskretnych w Pythonie

Jednostki czasu i eksploracja modelu

  • Jednostki czasu
    • Należy zapewnić spójność jednostek czasu dla wszystkich procesów.
Symulacja zdarzeń dyskretnych w Pythonie

Czas na ćwiczenia!

Symulacja zdarzeń dyskretnych w Pythonie

Preparing Video For Download...