Doelfuncties en systeemsoptimalisatie

Discrete Event Simulation in Python

Diogo Costa (PhD, MSc)

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

Systeemsoptimalisatie

  • Systeemsoptimalisatie

    • Optimale operationele configuratie bepalen
  • Mensgedreven processen

    • Max output tegen minimale kosten (minder middelen, minder tijd)
  • Processen met grootste impact op systeemoutput vinden

  • Monte Carlo-sampling

    • Succes meten en resultaten rangschikken
  • Doelfuncties

    • Functie die prestatie­doelen vastlegt
Discrete Event Simulation in Python

Doelfunctie

  • Wiskundige expressie met het outputdoel

  • Scenario’s scoren

Voorbeeld

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

Totaal: 100%

  • Proces C heeft het hoogste gewicht

Search & Stop: Draai varianten en stop zodra aan de voorwaarde is voldaan

while total_duration < 24:
      model_to_run()

Score & Rank: Score resultaten op basis van wegingscriteria

for i in range(num_runs):
   out_1, out_2 = model_to_run(i)
   scores(i) = 0.3 * out_1 + 0.7 * out_2
Discrete Event Simulation in Python

Aanpak 1: Search & Stop

  • Monte Carlo-sampling om meerdere scenario’s te draaien
  • Bestaat uit verschillende niet-deterministische procesgebeurtenissen
  • Zoeklus stopt zodra aan de voorwaarde is voldaan

Voorbeeld

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

Plot met de response-envelop van een productie-activiteit met opeenvolgende processen; de blauwe onderlijn is de laatste run die voldeed aan de Search & Stop-eisen.

Discrete Event Simulation in Python

Aanpak 2: Scoren & Rangschikken

  • Monte Carlo-sampling om meerdere scenario’s te draaien
  • Resultaten scoren en rangschikken

Voorbeeld: maakindustrie

Met opeenvolgende taken (processen), zoals een autoproductielijn.

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"]
Discrete Event Simulation in Python

Aanpak 2: Scoren & Rangschikken

Score

"ROOD": Lage score; "BLAUW": Hoge score Spreidingsdiagram met de doelfunctiescore van de gesimuleerde scenario’s voor de processen "Lossen en Voorbereiden", "Snijden" en "Polijsten".

Rang

Score-gebaseerde rangschikking van runs Plot die scenario’s rangschikt op basis van de doelfunctiescore voor de processen "Lossen en Voorbereiden", "Snijden" en "Polijsten".

Discrete Event Simulation in Python

Kritische processen identificeren die prestaties beperken

Zoeken & stoppen

Plot met de response-envelop van een productie-activiteit met opeenvolgende processen. De blauwe onderlijn is de laatste run die voldeed aan de eisen van de Search & Stop-methode. De minimale duur per proces uit de beste simulaties is gemarkeerd.

  • "Blauwe" lijn haalde het "stop"-criterium

    • Totale duur = 30 min
  • Resultaten van "beste" simulatie:

    • Proces 1: ca. 10 min (sum = 20 min)
    • Proces 2: ca. 10 min (sum = 20 min)
    • Proces 3: ca. 8 min (sum = 28 min)
    • Proces 4: ca. 2 min (sum = 30 min)
  • "Proces 1" is cruciaal om dit te halen

Discrete Event Simulation in Python

Kritische processen identificeren die prestaties beperken

Score

Doel: laagste score = kortste duur Spreidingsdiagram met de doelfunctiescore van de gesimuleerde scenario’s voor de processen "Lossen en Voorbereiden", "Snijden" en "Polijsten". De minimale duur per proces uit de beste simulaties is gemarkeerd.

Rang

"Proces 1" is cruciaal om dit te halen Plot die scenario’s rangschikt op basis van de doelfunctiescore voor de processen "Lossen en Voorbereiden", "Snijden" en "Polijsten". De minimale duur per proces uit de beste simulaties is gemarkeerd.

Discrete Event Simulation in Python

Laten we oefenen!

Discrete Event Simulation in Python

Preparing Video For Download...