EmpezarEmpieza gratis

Gestionar las colas de pago

Una tienda de ropa se llena mucho en las horas punta y la gente suele hacer cola para pagar. Ahora mismo solo hay un cajero y te han pedido que hagas un análisis coste-beneficio para determinar cuántos cajeros serían necesarios para reducir al máximo los tiempos de espera y mejorar la rentabilidad.

Has decidido construir un modelo de eventos discretos. Sabes que:

  • De media, un nuevo cliente se une a la cola cada 15 segundos durante las horas punta;
  • Los clientes suelen llevar varios artículos, normalmente entre 1 y 20; y
  • Se tarda de media 3 segundos en escanear un artículo en caja, y el pago suele llevar otros 20 segundos.

El argumento counter almacena el recurso de SimPy, y el argumento customer_num lleva la cuenta del número de clientes.

Vamos a ejecutar el modelo y calcular cuánto se tarda en atender a 30 clientes con distinto número de cajeros.

Este ejercicio forma parte del curso

Simulación de eventos discretos en Python

Ver curso

ejercicio interactivo práctico

Prueba este ejercicio completando este código de ejemplo.

def customer(env, customer_num, counter):

    num_items = random.randint(1, 20)
    print(f"Time: {env.now:7.4f} sec | Customer {customer_num:02d} > Joining the queue with {num_items:02d} items!")

    # Open the resource counter request
    with counter.____() as request:

        yield request
        print(f"Time: {env.now:7.4f} sec | Customer {customer_num:02d} > Got to cashier!")
        time_counter = TIME_PAY + random.randint(1, 20) * TIME_SCAN_PER_ITEM

        # Yield the processing time
        yield env.____(time_counter)
        print(f"Time: {env.now:7.4f} sec | Customer {customer_num:02d} > Finished ")

env = simpy.Environment()

# Create resource
counter = simpy.Resource(env, capacity=____)
env.process(source(env, NEW_CUSTOMERS, INTERVAL_CUSTOMERS, counter))
env.run()
Editar y ejecutar código