提要
算法3.7表达:银行业务模拟,获取客户平均等待时间
算法重点思路理解
算法模拟银行业务运用的主要思路:事件驱动。
由于该算法运用了事件驱动的设计思路,故算法中占据中心地位的是事件队列,整个算法的核心驱动力源自于对于事件队列的处理。其他的四个队列只是用于顾客堆栈,存储客户符号。
算法的假设
算法源自于对于银行事务的理解:
- 开门第一时间,第一位顾客到达,即刻办理业务;
- 客户办理业务所需时间是随机的,生成客户符号之后,便已经确定下来;
- 接下来的客户到达与本客户到达事件之间的间隔是随机的,算法中提前确定下来;
- 一位客户业务办理完成,离开银行,另一位客户开始办理业务;
- 耗时=客户离开时间-客户到达时间
算法的运行过程分析
第一步,首先在事件队列中存储一个到达事件,这个事件代表第一位顾客进入银行办理业务。
由于算法核心是事件驱动,因此这只是为后续处理过程添加了一个驱动事件,并不意味着第一位顾客相关事件的处理全部完成了,即使客户的到达事件也并没有处理。
第二步,抽取事件队列的事件符号,开始处理该事件,利用处理到达事件的子过程处理事件。
首先抽取事件队列到达事件,生成一个客户符号,将客户符号存入其中一个客户队列&#x