Modelování čerpací stanice: generátory v Pythonu
Představ si, že klient chce postavit čerpací stanici a ty máš za úkol vytvořit diskrétně-událostní model, který pomůže určit optimální počet výdejních stojanů a velikost společné palivové nádrže. Model simuluje příjezdy aut na čerpací stanici a dostupné zdroje: stojany a palivovou nádrž. V tomto cvičení se zaměříme na tyto dva kroky:
Krok 1: Vytvoř generátor, který simuluje příjezdy aut na čerpací stanici, žádost o přidělení stojanu a tankování.
Krok 2: Vytvoř generátor, který sleduje hladinu nádrže a při potřebě vyžádá doplnění. Nezapomeň také namodelovat chování doplňovacího vozidla.
V příštím cvičení vytvoříš SimPy prostředí, přidáš procesy a zdroje a spustíš simulace.
Počet výdejních stojanů je omezený a je simulován jako SimPy zdroj uložený v proměnné gas_station_pumps.
Toto cvičení je součástí kurzu
Diskrétní simulace událostí v Pythonu
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
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.")