ComeçarComece de graça

Gerenciando filas de pagamento

Uma loja de roupas fica muito movimentada nos horários de pico, quando as pessoas costumam formar fila para pagar. No momento, há apenas um caixa, e você foi convidado a fazer uma análise de custo-benefício para determinar quantos caixas seriam necessários para reduzir ao máximo o tempo de espera e, assim, aumentar a lucratividade.

Você decidiu construir um modelo de eventos discretos. Você sabe que:

  • Em média, um novo cliente entra na fila a cada 15 segundos durante o pico;
  • Os clientes geralmente levam vários itens, normalmente entre 1 e 20; e
  • Leva, em média, 3 segundos para registrar um item no caixa, e o pagamento costuma levar mais 20 segundos.

O argumento counter armazena o recurso do SimPy, e o argumento customer_num acompanha o número de clientes.

Vamos executar o modelo e calcular quanto tempo leva para atender 30 clientes com diferentes quantidades de caixas.

Este exercício faz parte do curso

Simulação de Eventos Discretos em Python

Ver curso

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

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 e executar o código