이산 사건 모델을 위한 몬테카를로 샘플링
벽걸이 시계를 생산하는 공장을 가정해 봅시다. 시계의 인기가 높아지면서 수요가 생산 능력을 초과하고 있어요. 공장은 수개월째 최대 가동 중이며, 더 나은 경영 의사결정과 향후 투자·확장 계획을 위해 공장의 동작과 병목을 더 잘 파악하고자 합니다.
공장 공정의 이산 사건 모델이 이미 구축되어 있고, 이제 시나리오를 탐색하기 위해 몬테카를로 샘플링 분석을 실행하려고 해요. 제조 공정은 아래 표로 요약되어 있으며, 이 정보는 각 공정당 하나의 딕셔너리를 갖는 리스트 processes에 저장되어 있어요. 이 딕셔너리의 키는 표의 열 머리글과 대응합니다. 다음 패키지는 이미 임포트되어 있어요: numpy as np, matplotlib.pyplot as plt, seaborn as sns, random, pandas as pd, 그리고 time.

몬테카를로 샘플링 루프는 그림과 같이 가능한 공정 궤적들을 여러 개 생성합니다.

이 연습은 강의의 일부입니다
Python으로 배우는 이산 사건 시뮬레이션
연습 안내
n_trajectories샘플에 대해 더미 변수t를 사용하는 메인 몬테카를로 샘플링 for-루프를 설정하세요.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()