Моделювання автозаправки: генератори 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.")