시작하기무료로 시작하기

모델 만들기: 항공기 주문 생성

이제 SimPy 환경과 리소스를 만들었으니, 항공기 구매 주문을 시뮬레이션하는 생성기와 연결해 보겠습니다. 항공기 주문은 총 30건이에요.

assembly_line() 함수는 항공기 구성 요소의 각 제조 공정 구간에 대해 순차적으로 리소스를 요청합니다. 아래 코드는 그중 하나의 요청 예시를 보여줍니다.

# 리소스 step_1_fuselage 요청 열기
with step_1_fuselage.request() as slot_request_1:
  request_1_time = env.now
  yield slot_request_1
  print(f"time: {env.now:7.4f} | Aircraft {aircraft_id:02d} 
                               | Enters: step_1_fuselage 
                               | Queued for {env.now-request_1_time} hours")
  yield env.timeout(processing_time[processing_time_step_names[0]])

이 연습은 강의의 일부입니다

Python으로 배우는 이산 사건 시뮬레이션

강의 보기

연습 안내

  • 더미 변수 request_i를 사용해 모든 주문 요청(total_num_orders)을 생성하는 for 루프를 만드세요.
  • for 루프에서 각 항공기 요청마다 새 프로세스를 만드세요. 모든 프로세스는 제너레이터 assembly_process_request를 기반으로 합니다.
  • 30대의 항공기가 한 번에 일괄 요청되었으므로, 요청 간 대기 시간이 없도록 코드를 완성하세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

def order_aircraft(env, total_num_orders, step_1_fuselage, step_2_wings, step_3_power_plant, step_4_landing_gear):
    
    # Generate the orders with a for-loop
    ____ request_i in range(total_num_orders):

        assembly_process_request = assembly_line(env, request_i, step_1_fuselage, step_2_wings, step_3_power_plant, step_4_landing_gear)

        # Initiate an assembly line process for each request
        env.____(assembly_process_request)

        # Clock-in the time between requests
        yield env.timeout(____)
코드 편집 및 실행