이산 사건 모델 개발하기
농업 운영에서 자원을 배분하고 생산성을 높이며 병목을 식별·제거할 수 있도록, 이산 사건 모델을 개발해 달라는 요청을 받았어요.
현재 동료들과 어떤 프로세스들이 포함되는지, 그리고 모델에서 얼마나 자세히 표현할지 논의 중이에요. 이에 따라, 관련 정보를 아래 구조의 process_dict라는 사전에 모으기로 했습니다. 프로세스에 대한 정보가 더 확보되면 이 사전을 계속 업데이트할 예정입니다.
process_dict = {
"Process name 1": <duration>,
"Process name 2": <duration>,
...
}
이 사전에 정의된 임의 개수의 이산 사건을 스케줄링할 수 있는 일반화된 이산 사건 모델 discrete_model_farm()을 만들어 봅시다.
모델의 입력 인자는 다음과 같고, 순서는 아래와 같습니다:
process_dict: 프로세스 정보가 담긴 사전simulation_time: 시뮬레이션 기간
모델에서 시간 단위는 일(days)입니다.
이 연습은 강의의 일부입니다
Python으로 배우는 이산 사건 시뮬레이션
연습 안내
- 모델의 상태 변수
time(시간 추적)과supply_chain(사이클 수 추적)을 초기화하고 0으로 설정하세요. - 종료 조건을 정의하여
time이simulation_time보다 작은 동안 모델이 실행되도록 하세요. - 프로세스의 소요 시간을 상태 변수
time에 더하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
def discrete_model_farm(process_dict, simulation_time):
# Initiate variables
time = ____
supply_chain = ____
# Define ending condition
while ____ < ____:
supply_chain += 1
process_names = list(process_dict.keys())
for p in range(len(process_names)):
event_duration = process_dict[process_names[p]]
# Add the process duration
____ += event_duration
print(f"{process_names[p]} (completed): time = {time}")
print(f"COMPLETED: Production cycle #{supply_chain} | Time = {time} days")