НачатьНачать бесплатно

Моделирование заправочной станции: генераторы Python

Представьте, что клиент хочет построить автозаправочную станцию, и вам поручено создать дискретно-событийную модель, чтобы определить оптимальное количество топливных колонок и объём общего топливного бака. Модель должна симулировать приезд автомобилей на заправку и работу её ресурсов: колонок и топливного бака. В этом упражнении мы сосредоточимся на двух шагах:

Шаг 1: создайте генератор для симуляции прибытия автомобилей на заправочную станцию, запроса колонки и заправки топливных баков автомобилей.

Шаг 2: создайте генератор для проверки уровня топлива в баке и запроса его пополнения при необходимости. Кроме того, необходимо смоделировать процесс пополнения бака.

В следующем упражнении вы создадите окружение SimPy, добавите процессы и ресурсы, а затем запустите симуляции.

Количество топливных колонок ограничено и моделируется с помощью ресурса SimPy, хранящегося в переменной gas_station_pumps.

Это упражнение является частью курса

Дискретно-событийное моделирование на 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.")
Редактировать и запускать код