开始使用免费开始使用

管理收银队列

一家服装店在高峰时段非常繁忙,顾客常常排队结账。当前只有 1 位收银员。您被要求做一份成本效益分析,确定需要配备多少位收银员,才能尽可能缩短等待时间并提升盈利能力。

您决定构建一个离散事件模型。已知:

  • 在高峰时段,平均每 15 秒有一位新顾客加入队列;
  • 顾客通常会带来多件商品,典型范围在 1 到 20 件之间;
  • 扫描每件商品平均需要 3 秒,支付过程通常还需要 20 秒。

参数 counter 存储 SimPy 资源,参数 customer_num 用于跟踪顾客数量。

让我们运行模型,计算在不同收银员数量下,服务 30 位顾客分别需要多长时间。

本练习是课程的一部分

Python 中的离散事件模拟

查看课程

交互式实操练习

通过完成这段示例代码来试试这个练习。

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()
编辑并运行代码