Modelado de una gasolinera: generadores de Python
Imagina que un cliente quiere construir una gasolinera y te han pedido crear un modelo de eventos discretos para ayudar a determinar el número óptimo de surtidores y el tamaño del tanque común de combustible que usan los surtidores. Este modelo requiere simular la llegada de coches a la gasolinera y los recursos de la estación: los surtidores y el tanque de combustible. En este ejercicio nos centraremos en los siguientes dos pasos:
Paso 1: Crea un generador para simular la llegada de los coches a la gasolinera, solicitar un surtidor y rellenar los depósitos de los coches.
Paso 2: Crea un generador para comprobar el nivel del tanque y solicitar un camión de repostaje cuando sea necesario. Además, hay que modelar el comportamiento del camión de repostaje.
En el siguiente ejercicio, crearás el entorno de SimPy, añadirás procesos y recursos, y ejecutarás simulaciones.
El número de surtidores es limitado y se simula usando un recurso de SimPy almacenado en la variable gas_station_pumps.
Este ejercicio forma parte del curso
Simulación de eventos discretos en Python
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
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.")