开始使用免费开始使用

用于离散事件模型的 Monte Carlo 采样

设想一家生产挂钟的工厂。随着产品越来越受欢迎,需求已经超过了产能。工厂已经连续数月满负荷运转。您希望更好地理解其运行行为和瓶颈,以便做出更有依据的管理决策,并规划未来的投资与扩产。

我们已经构建了一个描述该工厂流程的离散事件模型。现在,您将运行一次 Monte Carlo 采样分析来探索不同情景。制造流程概述见下表,相关信息已存入名为 processes 的字典列表中,每个流程对应一个字典。字典的键与表格的列名一一对应。以下包已为您导入:numpy as npmatplotlib.pyplot as pltseaborn as snsrandompandas as pd,以及 time

包含流程名称及其持续时间统计(均值与标准差)的表格。

Monte Carlo 采样循环将生成一系列可能的流程轨迹,如下图所示。 不同流程情景的 Monte Carlo 轨迹。

本练习是课程的一部分

Python 中的离散事件模拟

查看课程

练习说明

  • n_trajectories 个样本设置主 Monte Carlo 采样 for 循环,使用占位变量 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()
编辑并运行代码