ComeçarComece de graça

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.

Table with process names and their duration statistics, namely mean and standard deviation.

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. Monte Carlo trajectories for different process scenario.

Este exercício faz parte do curso

Simulação de Eventos Discretos em Python

Ver curso

Instruções do exercício

  • Defina um loop para executar trajetórias de simulação enquanto run_i for igual a zero ou total_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
____
Editar e executar o código