Funkcje celu i optymalizacja systemu

Symulacja zdarzeń dyskretnych w Pythonie

Diogo Costa (PhD, MSc)

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

Optymalizacja systemu

  • Optymalizacja systemu

    • Identyfikacja optymalnej konfiguracji operacyjnej
  • Procesy realizowane przez ludzi

    • Maksymalna wydajność przy minimalnych kosztach (mniej zasobów, mniej czasu)
  • Identyfikacja procesów o największym wpływie na wynik systemu

  • Próbkowanie Monte Carlo

    • Pomiar sukcesu i rankingowanie wyników
  • Funkcje celu

    • Funkcja docelowa określająca cele wydajnościowe
Symulacja zdarzeń dyskretnych w Pythonie

Funkcja celu

  • Wyrażenie matematyczne opisujące cel wyjściowy

  • Ocena scenariuszy symulacji

Przykład

  • Proces A: 35%
  • Proces B: 20%
  • Proces C: 45%

Suma: 100%

  • Proces C ma najwyższą wagę

Szukaj i zatrzymaj: Uruchamiaj różne konfiguracje modelu i zatrzymaj, gdy spełniony zostanie żądany warunek

while total_duration < 24:
      model_to_run()

Wynik i ranking: Oceniaj wyniki symulacji na podstawie kryteriów ważenia

for i in range(num_runs):
   out_1, out_2 = model_to_run(i)
   scores[i] = 0.3 * out_1 + 0.7 * out_2
Symulacja zdarzeń dyskretnych w Pythonie

Podejście 1: Szukaj i zatrzymaj

  • Próbkowanie Monte Carlo do uruchamiania wielu scenariuszy
  • Obejmuje różne niedeterministyczne zdarzenia procesowe
  • Pętla wyszukiwania optymalnego scenariusza jest przerywana po spełnieniu warunku

Przykład

scenario_num = 0
while scenario_num == 0 or total_duration[s] > 40:
  scenario_num += 1
  env = simpy.Environment()
  env.process(manufacturing_proc(env))
  env.run()
  plot_results()

Wykres przedstawiający obwiednię odpowiedzi działania produkcyjnego obejmującego sekwencję procesów; niebieska linia dolna odpowiada ostatniemu przebiegowi spełniającemu kryteria metody „Szukaj i zatrzymaj".

Symulacja zdarzeń dyskretnych w Pythonie

Podejście 2: Wynik i ranking

  • Próbkowanie Monte Carlo do uruchamiania wielu scenariuszy
  • Ocena i rankingowanie wyników

Przykład: Przemysł produkcyjny

Involving various sequential tasks (or processes), such as a car production line.

def objective_function_calc():
  score_objfunc = np.ones(num_scenarios)

  for s in range(num_scenarios):
    for p in range(len(processes)):

      score_objfunc[s] += (
         processes[p]["duration_hours"]
         * processes[p]["score_weight"])
Symulacja zdarzeń dyskretnych w Pythonie

Podejście 2: Wynik i ranking

Wynik

"CZERWONY": Niski wynik; "NIEBIESKI": Wysoki wynik Wykres punktowy przedstawiający wynik funkcji celu dla różnych scenariuszy symulowanych w procesach „Rozładunek i przygotowanie", „Cięcie" i „Polerowanie".

Ranking

Rankingowanie przebiegów symulacji według wyniku Wykres rankingujący scenariusze według wyniku funkcji celu dla procesów „Rozładunek i przygotowanie", „Cięcie", i „Polerowanie".

Symulacja zdarzeń dyskretnych w Pythonie

Identyfikacja procesów krytycznych ograniczających wydajność

Szukaj i zatrzymaj

Wykres przedstawiający obwiednię odpowiedzi działania produkcyjnego obejmującego sekwencję procesów; niebieska linia dolna odpowiada ostatniemu przebiegowi spełniającemu kryteria metody „Szukaj i zatrzymaj". Zaznaczono minimalne czasy trwania poszczególnych procesów dla najlepszych symulacji.

  • Linia „niebieska" spełniła kryterium „zatrzymania"

    • Łączny czas trwania = 30 min
  • Wyniki najlepszej symulacji:

    • Proces 1: ok. 10 min (sum = 20 min)
    • Proces 2: ok. 10 min (sum = 20 min)
    • Proces 3: ok. 8 min (sum = 28 min)
    • Proces 4: ok. 2 min (sum = 30 min)
  • „Proces 1" krytyczny dla osiągnięcia tego celu

Symulacja zdarzeń dyskretnych w Pythonie

Identyfikacja procesów krytycznych ograniczających wydajność

Wynik

Cel: najniższy wynik = najkrótszy czas trwania Wykres punktowy przedstawiający wynik funkcji celu dla różnych scenariuszy symulowanych w procesach „Rozładunek i przygotowanie", „Cięcie" i „Polerowanie". Zaznaczono minimalne czasy trwania poszczególnych procesów dla najlepszych symulacji.

Ranking

„Proces 1" krytyczny dla osiągnięcia tego celu Wykres rankingujący scenariusze według wyniku funkcji celu dla procesów „Rozładunek i przygotowanie", „Cięcie", i „Polerowanie". Zaznaczono minimalne czasy trwania poszczególnych procesów dla najlepszych symulacji.

Symulacja zdarzeń dyskretnych w Pythonie

Czas na ćwiczenia!

Symulacja zdarzeń dyskretnych w Pythonie

Preparing Video For Download...