Funções objetivo e otimização de sistemas

Simulação de Eventos Discretos em Python

Diogo Costa (PhD, MSc)

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

Otimização de sistemas

  • Otimização de sistemas

    • Identificar a configuração operacional ideal
  • Processos humanos

    • Máximo output com menor custo (menos recursos, menos tempo)
  • Identificar processos com maior impacto no output do sistema

  • Amostragem de Monte Carlo

    • Medir sucesso e ranquear resultados
  • Funções objetivo

    • Função-alvo que define metas de desempenho
Simulação de Eventos Discretos em Python

Função objetivo

  • Expressão matemática do alvo de saída

  • Pontuar cenários de simulação

Exemplo

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

Total: 100%

  • Processo C tem maior peso

Search & Stop: Rode diferentes configurações e pare quando a condição desejada for atendida

while total_duration < 24:
      model_to_run()

Score & Rank: Pontue os resultados com base nos pesos dos critérios

for i in range(num_runs):
   out_1, out_2 = model_to_run(i)
   scores[i] = 0.3 * out_1 + 0.7 * out_2
Simulação de Eventos Discretos em Python

Abordagem 1: Search & Stop

  • Amostragem de Monte Carlo para rodar vários cenários
  • Consiste em ocorrências de processos não determinísticos
  • O loop de busca pelo cenário ideal é interrompido quando a condição é atendida

Exemplo

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

Gráfico mostrando a envoltória de resposta de uma atividade de manufatura com processos sequenciais; a linha azul inferior é a última execução que atendeu ao método Search & Stop.

Simulação de Eventos Discretos em Python

Abordagem 2: Score & Rank

  • Amostragem de Monte Carlo para rodar vários cenários
  • Pontuar e ranquear resultados

Exemplo: Indústria de manufatura

Com várias tarefas sequenciais (processos), como uma linha de produção de carros.

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"])
Simulação de Eventos Discretos em Python

Abordagem 2: Score & Rank

Score

"VERMELHO": Score baixo; "AZUL": Score alto Gráfico de dispersão mostrando o score da função objetivo para vários cenários simulados nos processos "Descarregar e Preparar", "Corte" e "Polimento".

Ranking

Classificação dos cenários por score Gráfico classificando os cenários pelo score da função objetivo para os processos "Descarregar e Preparar", "Corte" e "Polimento".

Simulação de Eventos Discretos em Python

Identificando processos críticos que limitam o desempenho

Search & stop

Gráfico mostrando a envoltória de resposta de uma atividade de manufatura com processos sequenciais; a linha azul inferior é a última execução que atendeu ao critério do método Search & Stop. Os tempos mínimos de cada processo nas melhores simulações estão destacados.

  • Linha "azul" atendeu ao critério de "stop"

    • Duração total = 30 min
  • Resultado detalhado da "melhor" simulação:

    • Processo 1: ~10 min (sum = 20 min)
    • Processo 2: ~10 min (sum = 20 min)
    • Processo 3: ~8 min (sum = 28 min)
    • Processo 4: ~2 min (sum = 30 min)
  • "Processo 1" é crítico para atingir a meta

Simulação de Eventos Discretos em Python

Identificando processos críticos que limitam o desempenho

Score

Objetivo: menor score = menor duração Gráfico de dispersão mostrando o score da função objetivo para vários cenários simulados nos processos "Descarregar e Preparar", "Corte" e "Polimento". Os tempos mínimos de cada processo nas melhores simulações estão destacados.

Ranking

"Processo 1" é crítico para atingir a meta Gráfico classificando os cenários pelo score da função objetivo para os processos "Descarregar e Preparar", "Corte" e "Polimento". Os tempos mínimos de cada processo nas melhores simulações estão destacados.

Simulação de Eventos Discretos em Python

Vamos praticar!

Simulação de Eventos Discretos em Python

Preparing Video For Download...