Účelové funkce a optimalizace systému

Diskrétní simulace událostí v Pythonu

Diogo Costa (PhD, MSc)

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

Optimalizace systému

  • Optimalizace systému

    • Hledání optimální provozní konfigurace
  • Procesy řízené člověkem

    • Maximální výstup při minimálních nákladech (méně zdrojů, méně času)
  • Identifikace procesů s vyšším dopadem na výstup systému

  • Vzorkování Monte Carlo

    • Měření úspěšnosti a řazení výsledků
  • Účelové funkce

    • Cílová funkce definující výkonnostní cíle
Diskrétní simulace událostí v Pythonu

Účelová funkce

  • Matematický výraz popisující cíl výstupu

  • Hodnocení simulačních scénářů

Příklad

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

Celkem: 100 %

  • Proces C má nejvyšší váhu

Hledej a zastav: Spouštění různých konfigurací modelu a zastavení při splnění podmínky

while total_duration < 24:
      model_to_run()

Skóre a pořadí: Hodnocení výsledků simulace na základě vážených kritérií

for i in range(num_runs):
   out_1, out_2 = model_to_run(i)
   scores[i] = 0.3 * out_1 + 0.7 * out_2
Diskrétní simulace událostí v Pythonu

Přístup 1: Hledej a zastav

  • Vzorkování Monte Carlo pro spouštění více scénářů
  • Zahrnuje různé nedeterministické výskyty procesů
  • Smyčka hledání optimálního scénáře se přeruší při splnění podmínky

Příklad

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()

Graf zobrazující obálku odezvy výrobní činnosti zahrnující sérii sekvenčních procesů, kde modrá dolní linie odpovídá poslednímu běhu splňujícímu kritéria metody „Hledej a zastav".

Diskrétní simulace událostí v Pythonu

Přístup 2: Skóre a pořadí

  • Vzorkování Monte Carlo pro spouštění více scénářů
  • Hodnocení a řazení výsledků

Příklad: Výrobní průmysl

Zahrnuje různé sekvenční úlohy (nebo procesy), například výrobní linku automobilů.

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

Přístup 2: Skóre a pořadí

Skóre

"RED": Nízké skóre; "BLUE": Vysoké skóre Bodový graf zobrazující skóre účelové funkce pro různé simulované scénáře procesů „Vykládka a příprava", „Řezání" a „Leštění".

Pořadí

Seřazení simulací podle skóre Graf seřazující scénáře podle skóre účelové funkce pro procesy „Vykládka a příprava", „Řezání", a „Leštění".

Diskrétní simulace událostí v Pythonu

Identifikace kritických procesů omezujících výkon

Hledej a zastav

Graf zobrazující obálku odezvy výrobní činnosti zahrnující sérii sekvenčních procesů, kde modrá dolní linie odpovídá poslednímu běhu splňujícímu kritéria metody „Hledej a zastav". Minimální doby trvání jednotlivých procesů z nejlepších simulací jsou zvýrazněny.

  • Linie „Blue" splnila kritéria „zastavení"

    • Celková doba = 30 min
  • Výsledky „nejlepší" simulace:

    • Proces 1: cca 10 min (sum = 20 min)
    • Proces 2: cca 10 min (sum = 20 min)
    • Proces 3: cca 8 min (sum = 28 min)
    • Proces 4: cca 2 min (sum = 30 min)
  • „Proces 1" je klíčový pro dosažení cíle

Diskrétní simulace událostí v Pythonu

Identifikace kritických procesů omezujících výkon

Skóre

Cíl: nejnižší skóre = nejkratší doba trvání Bodový graf zobrazující skóre účelové funkce pro různé simulované scénáře procesů „Vykládka a příprava", „Řezání" a „Leštění". Minimální doby trvání z nejlepších simulací jsou zvýrazněny.

Pořadí

„Proces 1" je klíčový pro dosažení cíle Graf seřazující scénáře podle skóre účelové funkce pro procesy „Vykládka a příprava", „Řezání", a „Leštění". Minimální doby trvání z nejlepších simulací jsou zvýrazněny.

Diskrétní simulace událostí v Pythonu

Pojďme si procvičit!

Diskrétní simulace událostí v Pythonu

Preparing Video For Download...