НачатьНачать бесплатно

Оптимизация производства: поиск и остановка

Воспользуемся моделью фабрики настенных часов, созданной в предыдущем упражнении, и применим подход «поиск и остановка» на основе метода Монте-Карло, чтобы выявить критические узкие места производственного процесса.

Производственный процесс описан в таблице ниже. Данные сохранены в виде списка словарей под названием processes — по одному словарю на каждый процесс. Ключи словаря соответствуют заголовкам столбцов таблицы.

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

Метод plot_results() для построения графиков в этом упражнении уже загружен и представлен ниже.

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

Цикл выборки Монте-Карло будет генерировать возможные траектории процессов и остановится, когда выполнится нужное условие, как показано на рисунке. Monte Carlo trajectories for different process scenario.

Это упражнение является частью курса

Дискретно-событийное моделирование на Python

Посмотреть курс

Инструкции к упражнению

  • Задайте цикл для запуска траекторий моделирования, который выполняется, пока run_i равно нулю или total_duration[run_i] превышает 85 часов (то есть условие остановки: total_duration[run_i] меньше или равно 85 часам).
  • Запустите механизм Монте-Карло, вызвав функцию run_monte_carlo().

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

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
____
Редактировать и запускать код