시작하기무료로 시작하기

주유소 모델링: Python 제너레이터

한 고객이 주유소를 건설하려고 하며, 최적의 주유기 수와 공용 연료 탱크의 크기를 결정하는 데 도움이 될 이산 이벤트 모델을 만들어 달라고 요청했다고 가정해 보세요. 이 모델은 주유소에 도착하는 차량과 주유소의 자원(주유기와 연료 탱크)을 시뮬레이션해야 합니다. 이 연습 문제에서는 다음 두 단계에 집중합니다:

1단계: 주유소에 차량이 도착해 주유기를 요청하고, 차량 탱크를 채우는 과정을 시뮬레이션하는 제너레이터를 만듭니다.

2단계: 탱크의 잔량을 확인하고 필요 시 보급 탱크를 호출하는 제너레이터를 만듭니다. 또한 보급 탱크의 동작도 모델링해야 합니다.

다음 연습 문제에서는 SimPy 환경을 만들고, 프로세스와 자원을 추가하며, 시뮬레이션을 실행합니다.

주유기 수는 제한되어 있으며, 변수 gas_station_pumps에 저장된 SimPy 리소스로 시뮬레이션합니다.

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

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

강의 보기

실습형 인터랙티브 연습

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

def car(name, env, gas_station_pumps, gas_station_tank):

    fuel_tank_level = random.randint(*FUEL_TANK_LEVEL)
    print(f"{name} arriving at gas station at {env.now}")

    # Request pump
    with gas_station_pumps.____() as req:
        start_time = env.now

        # Yield the pump request
        ____ req

        liters_required = FUEL_TANK_SIZE - fuel_tank_level

        # Remove liters_required from the tank
        yield gas_station_tank.___(liters_required)

        yield env.timeout(liters_required / REFUELING_SPEED)
        print(f"{name} finished refueling in {env.now - start_time} seconds.")
코드 편집 및 실행