ComenzarEmpieza gratis

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

Ver curso

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.")
Editar y ejecutar código