ПочатиПочніть безкоштовно

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