Funcții obiectiv și optimizarea sistemelor

Simulare de evenimente discrete în Python

Diogo Costa (PhD, MSc)

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

Optimizarea sistemului

  • Optimizarea sistemului

    • Identificarea configurației operaționale optime
  • Procese conduse de factorul uman

    • Randament maxim cu costuri minime (resurse și timp reduse)
  • Identificarea proceselor cu impact mai mare asupra ieșirii sistemului

  • Eșantionare Monte Carlo

    • Măsurarea succesului și clasarea rezultatelor
  • Funcții obiectiv

    • Funcție țintă pentru stabilirea obiectivelor de performanță
Simulare de evenimente discrete în Python

Funcția obiectiv

  • Expresie matematică ce descrie ținta de ieșire

  • Scorizarea scenariilor de simulare

Exemplu

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

Total: 100%

  • Procesul C are cea mai mare pondere

Căutare și oprire: Rulați configurații diferite și opriți când condiția dorită este îndeplinită

while total_duration < 24:
      model_to_run()

Scor și Clasament: Scorizarea rezultatelor simulării pe baza criteriilor de ponderare

for i in range(num_runs):
   out_1, out_2 = model_to_run(i)
   scores[i] = 0.3 * out_1 + 0.7 * out_2
Simulare de evenimente discrete în Python

Abordarea 1: Căutare și Oprire

  • Eșantionare Monte Carlo pentru rularea mai multor scenarii
  • Include apariții ale unor procese non-deterministe
  • Bucla de căutare a scenariului optim se întrerupe când condiția este îndeplinită

Exemplu

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

Grafic care arată anvelopa de răspuns a unei activități de producție cu procese secvențiale, unde linia albastră de jos corespunde ultimei rulări care a îndeplinit criteriile metodei Căutare și Oprire.

Simulare de evenimente discrete în Python

Abordarea 2: Scor și Clasament

  • Eșantionare Monte Carlo pentru rularea mai multor scenarii
  • Scorizarea și clasarea rezultatelor

Exemplu: Industria manufacturieră

Implicând diverse sarcini secvențiale (sau procese), precum o linie de producție auto.

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"])
Simulare de evenimente discrete în Python

Abordarea 2: Scor și Clasament

Scor

"ROȘU": Scor mic; "ALBASTRU": Scor mare Diagramă de dispersie care arată scorul funcției obiectiv pentru diferitele scenarii simulate ale proceselor „Descărcare și Pregătire", „Tăiere" și „Lustruire".

Clasament

Clasarea rulărilor după scor Grafic care clasează scenariile după scorul funcției obiectiv pentru procesele „Descărcare și Pregătire", „Tăiere", și „Lustruire".

Simulare de evenimente discrete în Python

Identificarea proceselor critice care limitează performanța

Căutare și oprire

Grafic care arată anvelopa de răspuns a unei activități de producție cu procese secvențiale, unde linia albastră de jos corespunde ultimei rulări care a îndeplinit criteriile metodei Căutare și Oprire. Durata minimă a fiecărui proces obținută pentru cele mai bune simulări este evidențiată.

  • Linia „albastră" a îndeplinit criteriul de „oprire"

    • Durată totală = 30 min
  • Detalii ale celei mai bune simulări:

    • Procesul 1: aprox. 10 min (sum = 20 min)
    • Procesul 2: aprox. 10 min (sum = 20 min)
    • Procesul 3: aprox. 8 min (sum = 28 min)
    • Procesul 4: aprox. 2 min (sum = 30 min)
  • „Procesul 1" este critic pentru atingerea acestui obiectiv

Simulare de evenimente discrete în Python

Identificarea proceselor critice care limitează performanța

Scor

Obiectiv: scor minim = durată minimă Diagramă de dispersie care arată scorul funcției obiectiv pentru diferitele scenarii simulate ale proceselor „Descărcare și Pregătire", „Tăiere" și „Lustruire". Durata minimă a fiecărui proces obținută pentru cele mai bune simulări este evidențiată.

Clasament

„Procesul 1" este critic pentru atingerea acestui obiectiv Grafic care clasează scenariile după scorul funcției obiectiv pentru procesele „Descărcare și Pregătire", „Tăiere", și „Lustruire". Durata minimă a fiecărui proces obținută pentru cele mai bune simulări este evidențiată.

Simulare de evenimente discrete în Python

Să exersăm!

Simulare de evenimente discrete în Python

Preparing Video For Download...