Моделирование заправочной станции: генераторы 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.")