第三章 仿真程序的设计与实现1

preview
需积分: 0 0 下载量 28 浏览量 更新于2022-08-08 收藏 22KB DOCX 举报
在设计和实现仿真程序时,通常会采用事件驱动的方法来模拟现实世界的系统行为。在这个项目中,第四种模型的仿真程序主要围绕四种类型的事件展开:顾客到达、开始服务、结束服务。这些事件被封装成带有时间戳的函数,并在事件循环中按照时间顺序进行处理。 事件循环是仿真程序的核心,它不断地从事件列表中提取最早发生的事件并执行对应的函数。事件循环的流程可以概括如下: 1. 从事件列表中取出时间戳最早的事件。 2. 调用该事件对应的函数,执行相关操作。 3. 函数执行过程中可能生成新的事件,这些新事件被添加到事件列表中。 4. 重复以上步骤,直到满足停止条件,如本例中的完成服务的顾客数量超过30000。 在队列模拟中,定义了三种基本事件函数: 1. 顾客到达事件:如果存在空闲服务员,那么减少一个空闲服务员,调用开始服务事件;否则,顾客进入队列,增加队列长度。随后,随机生成一个新的时间戳,与顾客到达事件函数组合成一个新事件加入事件列表。 2. 开始服务事件:随机生成一个时间戳,与结束服务事件函数组合成一个新事件加入事件列表。 3. 结束服务事件:如果队列非空,减少队列长度,调用开始服务事件;否则,增加一个空闲服务员。 为了模拟不同的队列模型,我们可以调整以下几个方面: 1. 到达过程:改变顾客到达事件函数中生成时间戳间隔的概率分布。 2. 服务过程:修改开始服务事件函数中生成时间戳间隔的概率分布。 3. 多个服务员:在事件循环开始前预先安排多个服务事件函数。 4. 多个队列:初始化多个服务员和队列长度的计数值,并让不同事件处理函数作用于不同的计数值。 5. 服务特定数量的顾客:设定事件循环的停止条件为结束服务事件函数的执行次数超过预设值。 根据不同的队列模型,可以设定不同的参数,如λ表示总到达率,μ表示每个服务员的服务率。例如: - M|M|n 队列:顾客到达和开始服务的时间戳间隔分别服从指数分布 E(λ) 和 E(μ),初始服务事件函数数量为 n。 - 基于概率分裂的 n 个 M|M|1 队列:顾客到达事件选择一对计数值,开始服务事件保持固定的服务计数值,时间戳间隔同上。 - n 个 En|M|1 队列:顾客到达事件的时间戳间隔服从 Erlang 分布 En(λ/n),其余参数与概率分裂模型相同。 - 选择最短队列长度的 n 个 M|M|1 队列:顾客到达事件随机选择一对计数值,优先选择较短队列,其余参数同概率分裂模型。 数据收集和统计可以通过在事件函数中记录当前时间戳和队列长度实现。收集到的数据(K对(时间戳ti, 队列长度li))可用于计算Elq,即平均等待时间,公式为: 𝐸𝑙𝑞 =1九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙九龙
FelaniaLiu
  • 粉丝: 33
  • 资源: 332
上传资源 快速赚钱
voice
center-task 前往需求广场,查看用户热搜

最新资源