Målfunktioner och systemoptimering

Diskret händelsesimulering i Python

Diogo Costa (PhD, MSc)

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

Systemoptimering

  • Systemoptimering

    • Identifiera optimal driftskonfiguration
  • Mänskligt styrda processer

    • Maximalt utfall med lägsta kostnad (färre resurser, kortare tid)
  • Identifiera processer med störst påverkan på systemets utfall

  • Monte Carlo-sampling

    • Mät framgång och rangordna resultat
  • Målfunktioner

    • Målfunktion som sätter prestationsmål
Diskret händelsesimulering i Python

Målfunktion

  • Matematiskt uttryck som beskriver ett utfallsmål

  • Poängsätt simuleringsscenarier

Exempel

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

Totalt: 100%

  • Process C har högst vikt

Sök & Stopp: Kör olika modellkonfigurationer och avbryt när önskat villkor uppfylls

while total_duration < 24:
      model_to_run()

Poängsätt & Rangordna: Poängsätt simuleringsresultat utifrån viktningskriterier

for i in range(num_runs):
   out_1, out_2 = model_to_run(i)
   scores[i] = 0.3 * out_1 + 0.7 * out_2
Diskret händelsesimulering i Python

Metod 1: Sök & Stopp

  • Monte Carlo-sampling för att köra flera scenarier
  • Består av olika icke-deterministiska processförlopp
  • Sökslingan avbryts när villkoret är uppfyllt

Exempel

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 som visar responsomhöljet för en tillverkningsaktivitet med ett antal sekventiella processer, där den blå undre linjen motsvarar den sista körningen som uppfyllde kraven för metoden Sök & Stopp.

Diskret händelsesimulering i Python

Metod 2: Poängsätt & Rangordna

  • Monte Carlo-sampling för att köra flera scenarier
  • Poängsätt och rangordna resultat

Exempel: Tillverkningsindustrin

Omfattar olika sekventiella uppgifter (eller processer), till exempel ett biltillverkningsbands.

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"])
Diskret händelsesimulering i Python

Metod 2: Poängsätt & Rangordna

Poäng

"RÖD": Låg poäng; "BLÅ": Hög poäng Spridningsdiagram som visar målfunktionens poäng för de olika simulerade scenarierna för processerna "Lossning och förberedelse", "Skärning" och "Polering".

Rangordning

Rangordning av simuleringsresultat baserat på poäng Graf som rangordnar scenarierna efter målfunktionens poäng för de olika simulerade scenarierna för processerna "Lossning och förberedelse", "Skärning" och "Polering".

Diskret händelsesimulering i Python

Identifiera kritiska processer som begränsar prestanda

Sök & Stopp

Graf som visar responsomhöljet för en tillverkningsaktivitet med ett antal sekventiella processer, där den blå undre linjen motsvarar den sista körningen som uppfyllde kraven för metoden Sök & Stopp. Minimitiden för varje process i de bästa simuleringarna är markerad.

  • "Blå" linje uppfyllde "stopp"-kriteriet

    • Total varaktighet = 30 min
  • Detaljerade resultat från "bästa" simulering:

    • Process 1: ca 10 min (sum = 20 min)
    • Process 2: ca 10 min (sum = 20 min)
    • Process 3: ca 8 min (sum = 28 min)
    • Process 4: ca 2 min (sum = 30 min)
  • "Process 1" avgörande för att nå detta mål

Diskret händelsesimulering i Python

Identifiera kritiska processer som begränsar prestanda

Poäng

Mål: lägst poäng = kortast varaktighet Spridningsdiagram som visar målfunktionens poäng för de olika simulerade scenarierna för processerna "Lossning och förberedelse", "Skärning" och "Polering". Minimitiden för varje process i de bästa simuleringarna är markerad.

Rangordning

"Process 1" avgörande för att nå detta mål Graf som rangordnar scenarierna efter målfunktionens poäng för de olika simulerade scenarierna för processerna "Lossning och förberedelse", "Skärning" och "Polering". Minimitiden för varje process i de bästa simuleringarna är markerad.

Diskret händelsesimulering i Python

Nu kör vi en övning!

Diskret händelsesimulering i Python

Preparing Video For Download...