ПочатиПочніть безкоштовно

Монте-Карло вибірка для дискретно-подієвих моделей

Уявіть фабрику, що виробляє настінні годинники. Популярність зростає, і попит уже перевищує виробничі потужності. Підприємство працює на повну кілька місяців, і ви хочете краще зрозуміти його роботу та „вузькі місця", щоб ухвалювати обґрунтовані управлінські рішення та планувати інвестиції й розширення.

Розроблено дискретно-подієву модель процесів на фабриці, і тепер ви хочете запустити аналіз за методом вибірок Монте-Карло, щоб дослідити сценарії. Виробничий процес підсумовано в таблиці нижче; інформацію збережено у списку словників processes, по одному словнику на процес. Ключі цього словника відповідають заголовкам стовпців таблиці. Для вас уже імпортовано такі пакети: numpy as np, matplotlib.pyplot as plt, seaborn as sns, random, pandas as pd та time.

Таблиця з назвами процесів і статистиками їхньої тривалості: середнє значення та стандартне відхилення.

Цикл вибірки Монте-Карло згенерує низку можливих траєкторій процесів, як показано на рисунку. Траєкторії Монте-Карло для різних сценаріїв процесу.

Ця вправа є частиною курсу

Дискретно-подієве моделювання в Python

Переглянути курс

Інструкції до вправи

  • Налаштуйте основний цикл for для вибірки Монте-Карло на n_trajectories зразків із службовою змінною t.
  • Використайте гаусівський розподіл із пакета random для псевдовипадкової оцінки тривалості процесу.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

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()
Редагувати та запускати код