Funzioni obiettivo e ottimizzazione del sistema

Simulazione a eventi discreti in Python

Diogo Costa (PhD, MSc)

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

Ottimizzazione del sistema

  • Ottimizzazione del sistema

    • Identificare la configurazione operativa ottimale
  • Processi guidati da persone

    • Massimo output al minor costo (meno risorse, meno tempo)
  • Individuare i processi con maggior impatto sull’output

  • Campionamento Monte Carlo

    • Misura il successo e classifica i risultati
  • Funzioni obiettivo

    • Funzione che definisce i target di performance
Simulazione a eventi discreti in Python

Funzione obiettivo

  • Espressione matematica che descrive il target di output

  • Assegna un punteggio agli scenari di simulazione

Esempio

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

Totale: 100%

  • Processo C ha il peso più alto

Search & Stop: esegui diverse configurazioni del modello e fermati quando la condizione desiderata è soddisfatta

while total_duration < 24:
      model_to_run()

Punteggia & Classifica: valuta i risultati in base a pesi

for i in range(num_runs):
   out_1, out_2 = model_to_run(i)
   scores(i) = 0.3 * out_1 + 0.7 * out_2
Simulazione a eventi discreti in Python

Approccio 1: Search & Stop

  • Campionamento Monte Carlo per eseguire più scenari
  • Include occorrenze di processi non deterministici
  • Il ciclo di ricerca dello scenario ottimale si interrompe quando la condizione è soddisfatta

Esempio

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

Grafico che mostra l’inviluppo di risposta di un’attività manifatturiera con processi sequenziali; la linea blu in basso è l’ultima esecuzione che ha soddisfatto i requisiti del metodo Search & Stop.

Simulazione a eventi discreti in Python

Approccio 2: Punteggia & Classifica

  • Campionamento Monte Carlo per eseguire più scenari
  • Assegna punteggio e classifica i risultati

Esempio: manifattura

Con vari task sequenziali (processi), come una linea 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"]
Simulazione a eventi discreti in Python

Approccio 2: Punteggia & Classifica

Punteggio

"ROSSO": Punteggio basso; "BLU": Punteggio alto Grafico a dispersione che mostra il punteggio della funzione obiettivo per gli scenari simulati dei processi "Scarico e Preparazione", "Taglio" e "Lucidatura".

Classifica

Ordina le simulazioni per punteggio Grafico che classifica gli scenari in base al punteggio della funzione obiettivo per i processi "Scarico e Preparazione", "Taglio" e "Lucidatura".

Simulazione a eventi discreti in Python

Identificare i processi critici che limitano le prestazioni

Cerca & ferma

Grafico che mostra l’inviluppo di risposta di un’attività manifatturiera con processi sequenziali; la linea blu in basso è l’ultima esecuzione che ha soddisfatto i requisiti del metodo Search & Stop. Sono evidenziate le durate minime per processo ottenute dalle simulazioni migliori.

  • La linea "blu" ha soddisfatto il criterio di "stop"

    • Durata totale = 30 min
  • Dettaglio della "migliore" simulazione:

    • Processo 1: circa 10 min (sum = 20 min)
    • Processo 2: circa 10 min (sum = 20 min)
    • Processo 3: circa 8 min (sum = 28 min)
    • Processo 4: circa 2 min (sum = 30 min)
  • "Processo 1" è critico per raggiungere l’obiettivo

Simulazione a eventi discreti in Python

Identificare i processi critici che limitano le prestazioni

Punteggio

Obiettivo: punteggio minimo = durata minima Grafico a dispersione che mostra il punteggio della funzione obiettivo per gli scenari simulati dei processi "Scarico e Preparazione", "Taglio" e "Lucidatura". Sono evidenziate le durate minime per processo ottenute dalle simulazioni migliori.

Classifica

"Processo 1" è critico per raggiungere l’obiettivo Grafico che classifica gli scenari in base al punteggio della funzione obiettivo per i processi "Scarico e Preparazione", "Taglio" e "Lucidatura". Sono evidenziate le durate minime per processo ottenute dalle simulazioni migliori.

Simulazione a eventi discreti in Python

Let's practice!

Simulazione a eventi discreti in Python

Preparing Video For Download...