Amostragem de Monte Carlo para modelos de eventos discretos
Imagine uma fábrica que produz relógios de parede. Os relógios vêm ganhando popularidade e, agora, a demanda é maior que a capacidade de produção. A fábrica está trabalhando no limite há meses, e você quer entender melhor seu comportamento e gargalos para tomar decisões de gestão mais informadas e planejar investimentos e expansão futuros.
Um modelo de eventos discretos dos processos da fábrica foi desenvolvido e, agora, você quer executar uma análise de amostragem de Monte Carlo para explorar cenários. O processo de fabricação está resumido na tabela abaixo, e as informações foram armazenadas em uma lista de dicionários chamada processes, com um dicionário por processo. As chaves desse dicionário correspondem aos cabeçalhos das colunas da tabela. Os seguintes pacotes já foram importados para você: numpy as np, matplotlib.pyplot as plt, seaborn as sns, random, pandas as pd e time.

O loop de amostragem de Monte Carlo produzirá uma série de possíveis trajetórias de processo, como mostrado na figura.

Este exercício faz parte do curso
Simulação de Eventos Discretos em Python
Instruções do exercício
- Configure o loop principal de amostragem de Monte Carlo com
n_trajectoriesamostras usando a variável fictíciat. - Use a distribuição Gaussiana do pacote
randompara estimar pseudoaleatoriamente a duração do processo.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
n_trajectories = 100
# Run a Monte-Carlo for-loop for n_trajectories samples
____
for p in range(len(processes)):
proc_p = processes[p]
# Random gauss method to pseudo-randomly estimate process duration
process_duration = ____(proc_p["Average_Duration"], proc_p["Standard_Deviation"])
time_record[p + 1] = time_record[p] + process_duration
df_disc = pd.DataFrame({cNam[0]: process_line_space, cNam[1]: time_record})
fig = sns.lineplot(data=df_disc, x=cNam[0], y=cNam[1], marker="o") # Step_10
fig.set(xlim=(0, len(processes) + 1))
plt.plot()
plt.grid()
plt.show()