Otimização na manufatura: Search & Stop
Vamos usar o modelo da fábrica de relógios de parede criado em um exercício anterior e aplicar uma abordagem de otimização "Search & Stop" baseada em amostragem de Monte Carlo para identificar os processos gargalo mais críticos.
O processo de manufatura 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 desses dicionários correspondem aos cabeçalhos das colunas da tabela.

O método plot_results() para gerar os gráficos neste exercício já foi carregado previamente e é mostrado abaixo.
def plot_results():
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')
plt.grid()
fig.set(xlim=(0, len(processes)))
fig.set(ylim=(0, 180))
fig.set(xticks=process_line_space)
plt.plot()
O loop de amostragem de Monte Carlo vai produzir uma série de possíveis trajetórias de processo e parar quando a condição desejada for atendida, como mostrado na figura.

Este exercício faz parte do curso
Simulação de Eventos Discretos em Python
Instruções do exercício
- Defina um loop para executar trajetórias de simulação enquanto
run_ifor igual a zero outotal_duration[run_i]for maior que 85 horas (ou seja, condição de parada:total_duration[run_i]menor ou igual a 85 horas). - Execute o mecanismo de Monte Carlo armazenado na função
run_monte_carlo().
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
def run_monte_carlo():
run_i = 0
# While-loop with the stop condition
____
run_i += 1
env = simpy.Environment()
env.process(manufractoring_process(env))
env.run()
plot_results()
plt.show()
# Call the run_monte_carlo function
____