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
Processos humanos
Identificar processos com maior impacto no output do sistema
Amostragem de Monte Carlo
Funções objetivo
Expressão matemática do alvo de saída
Pontuar cenários de simulação
Exemplo
Total: 100%
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
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()

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"])
Score
"VERMELHO": Score baixo; "AZUL": Score alto

Ranking
Classificação dos cenários por score

Search & stop

Linha "azul" atendeu ao critério de "stop"
Resultado detalhado da "melhor" simulação:
sum = 20 min)sum = 20 min)sum = 28 min)sum = 30 min)"Processo 1" é crítico para atingir a meta
Score
Objetivo: menor score = menor duração

Ranking
"Processo 1" é crítico para atingir a meta

Simulação de Eventos Discretos em Python