银行排队模拟的第12号客人的等待时间为什么是1

假设某银行网点有五个服务窗口,分别为三个对私、一个对公和一个外币窗口。银行服务的原则是先来先服务。通常对私业务人很多,其它窗口人则较少,可临时改为对私服务。假设当对私窗口等待服务的客户(按实际服务窗口)平均排队人数超过(大于或等于)7人时,等待客户将可能有抱怨,影响服务质量,此时银行可临时将其它窗口中一个或两个改为对私服务,当客户少于7人时,将立即恢复原有业务。设计一个程序用来模拟银行服务。

说明:

1. 增加服务窗口将会增加成本或影响其它业务,因此,以成本增加或影响最小为原则来增加服务窗口,即如果增加一个窗口就能使得按窗口平均等待服务人数小于7人,则只增加一个窗口。一旦按窗口平均等待服务人数小于7人,就减少一个所增加的窗口。

2. 为了简化问题,假设新到客户是在每个服务周期开始时到达。

3. 当等待服务人数发生变化时(新客户到达或有客户已接受服务),则及时计算按实际服务窗口平均等待服务人数,并按相应策略调整服务窗口数(增加或减少额外的服务窗口,但对私窗口不能减少)。注意:只在获取新客户(不管到达新客户数是否为0)时或已有客户去接受服务时,才按策略调整服务窗口数。进一步讲,增加服务窗口只在有客户到达的周期内进行(也就是说增加窗口是基于客户的感受,银行对增加窗口是不情愿的,因为要增加成本,一旦不再有新客户来,银行是不会再增加服务窗口的);一旦有客户去接受服务(即等待客户减少),银行将根据策略及时减少服务窗口,因此,在每个周期内,有客户去接受服务后要马上判断是否减少服务窗口(因为能减少成本,银行是积极的)


本问题中假设对公和对外币服务窗口在改为对私服务时及服务期间没有相应因公或外币服务新客户到达(即正好空闲),同时要求以增加成本或影响最小为前提,来尽最大可能减少对私服务客户等待时间。

【输入形式】

首先输入一个整数表示时间周期数,然后再依次输入每个时间周期中因私业务的客户数。注:一个时间周期指的是银行处理一笔业务的平均处理时间,可以是一分钟、三分钟或其它。例如:

6<o:p></o:p>

2  5  13  11  15   9 

<o:p></o:p>

说明:表明在6个时间周期内,第1个周期来了2个(序号分别为1,2),第2个来了5人(序号分别为3,4,5,6,7),以此类推。

【输出形式】

每个客户等待服务的时间周期数。输出形式如下:

用户序号 : 等待周期数

说明:客户序号与等待周期数之间用符号:分隔,冒号(:)两边各有一个空格,等待周期数后直接为回车。

【样例输入】

4

2  5  13  11

 

【样例输出】

1 : 0

2 : 0

3 : 0

4 : 0

5 : 0

6 : 1

7 : 1

8 : 0

9 : 1

10 : 1

11 : 1

12 : 1

13 : 2

14 : 2

15 : 2

16 : 3

17 : 3

18 : 3

19 : 4

20 : 4

21 : 3

22 : 4

23 : 4

24 : 4

25 : 5

26 : 5

27 : 5

28 : 6

29 : 6

30 : 6

31 : 7

【样例说明】

样例输入表明有四个时间周期,第一个周期来了2人(序号1-2);第二个周期来了5人(序号3-7);第三个周期来了13人(序号8-20);第四个周期来了11人(序号21-31)。由于第一个时间周期内只来了2人,银行(有三个服务窗口)能及时提供服务,因此客户等待时间为0;第二个时间周期内来了5人,银行一个周期内一次只能服务3人,另有2个在下个周期内服务,因此等待时间为1,其它类推。

数据结构的这个问题大一的时候就没想通,到了大三还是没想通。
请教了一些同学后才知道,原来是我的思路出了问题。
虽然说有3+2个服务窗口,但是我们其实可以把所有人当作一个队列,每次就是前几个客人可以得到服务,而当队列的人超过了21人(即只有3个窗口时,平均每个窗口的等待人数会超过7人时,就开1~2个窗口),然后就可以每次服务4~5人了。
而文章题目的提出的疑问,其实就是12号客人是在第第3个时间周期到达的,第4个时间周期又来了11人,而第4个时间周期还有总共12人在等待,所以就需要新开一个窗口,这时候排在队伍前面的是9,10,11,12号客人,12号客人就可以得到服务,相当于他是在第3个时间周期来的,在第4个周期走,所以就只等待了1个时间周期

要构建和分析M/M/1排队模型,并将其应用于模拟交通管理和生产调度,首先需要理解M/M/1模型的基本概念:该模型假定到达过程是泊松过程,服务时间遵循指数分布,且系统仅有一个服务台(或资源)。以下是详细步骤和注意事项: 参考资源链接:[离散事件系统仿真第五版:Jerry Banks解题指南](https://wenku.youkuaiyun.com/doc/6401abf2cce7214c316ea12e?spm=1055.2569.3001.10343) 1. **确定参数**:首先,明确系统的到达率(λ,单位时间内到达的顾客平均数)和服务率(μ,单位时间内服务完成的平均顾客数)。这些参数对于建立准确的模型至关重要。 2. **建立模型**:使用仿真软件(如Simulink、AnyLogic或专业仿真软件)根据M/M/1模型理论来设计仿真环境。设置仿真时钟,确保它能正确地跟踪时间。 3. **创建实体和队列**:在仿真环境中创建顾客实体和队列,设定队列的容量限制(如果有的话)。同时,要设计服务台或资源,确保顾客在服务完成后能够离开系统。 4. **编写脚本**:根据到达率和服务率编写事件发生和时间推进的脚本。这通常涉及到对泊松过程和指数分布的随机数生成。 5. **运行仿真**:运行仿真程序,观察系统的运行情况。收集数据,如顾客等待时间、系统中顾客数量和空闲时间等。 6. **性能评估**:分析收集到的数据,计算性能指标。对于交通管理,这可能包括车辆的平均等待时间和信灯的利用率;对于生产调度,可能是生产线上设备的空闲时间和产品的平均完工时间。 7. **优化调整**:根据性能评估的结果,调整到达率和服务率等参数,尝试找到系统性能的最优解。 8. **验证和校准**:确保仿真模型的结果与实际系统相吻合。必要时,对仿真模型进行校准,确保其预测的准确性。 9. **案例应用**:在交通管理和生产调度的仿真模型中,可以通过修改模型参数来模拟不同的交通流量或生产线变化,评估对系统性能的影响。 通过上述步骤,你可以构建一个适用于交通灯信和工厂生产线的M/M/1排队模型,并进行有效的仿真分析。对于希望深入学习排队模型、离散事件系统仿真技术,以及如何将其应用于实际问题的读者,推荐参考《离散事件系统仿真第五版:Jerry Banks解题指南》,这本书详细介绍了仿真原理和应用,配合大量的实例和习题,是理解和掌握离散事件仿真方法的实用资源。 参考资源链接:[离散事件系统仿真第五版:Jerry Banks解题指南](https://wenku.youkuaiyun.com/doc/6401abf2cce7214c316ea12e?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值