ComenzarEmpieza 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 y completa el código de muestra.

def customer(env, customer_num, counter):

    num_items = random.randint(1.0, 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.0, 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