《8 SIMULINK仿真基础之离散时间系统分析》由会员分享,可在线阅读,更多相关《8 SIMULINK仿真基础之离散时间系统分析(70页珍藏版)》请在金锄头文库上搜索。
1、Chap8离散事件系统仿真 前面讨论的系统 其状态变量的取值是连续变化的 时间上可以连续也可以离散 这类系统的仿真称为连续系统仿真 现开始讨论另一类性质完全不同的系统 其状态只是在离散时间点上发生变化 且这些离散时间点一般是不确定的 称为离散事件系统仿真 例如单人理发馆系统 设上午9点开门 晚上11点关门 顾客的到达时间一般是随机的 为每个顾客服务的时间长度也是随机的 描述该系统的状态是服务台的状态 忙或闲 顾客排队等待的队长 显然这些状态变量的变化也只能在离散的随机时间点上发生 类似的如订票系统 库存系统 加工制造系统 交通控制系统 计算机系统等 由于离散事件系统固有的随机性 对这类系统的研
2、究往往十分困难 经典的概率及数理统计理论 随机过程理论虽然为研究这类系统提供了理论基础 并能对一些简单系统提供解析解 但对工程实际中的大量系统 惟有依靠计算机仿真才能提供较为完整的结果 8 1基本概念 1 实体实体是描述系统的三个基本要素之一 在离散事件系统中的实体可分为两大类 临时实体及永久实体 在系统中只存在一段时间的实体叫临时实体 永久驻留在系统中的实体称为永久实体 临时实体按一定规律不断地到达 产生 在永久实体作用下通过系统 最后离开系统 整个系统呈现出动态过程 2 事件事件是引起系统状态发生变化的行为 从某种意义上讲 离散系统是由事件来驱动的 如 理发馆系统中 可以定义 顾客到达 为
3、一类事件 由于顾客的到达 系统的状态将发生变化 服务员可能从闲变忙 如果无人排队 或排队的队长会增加 类似的 可以定义服务开始事件 服务结束事件 在一个系统中 往往有许多类事件 而事件的发生一般与某一类实体相联系 有些事件的发生还可能引起别的事件的发生 或是另一类事件发生的条件 为了实现对系统中事件进行管理 仿真模型中必须建立事件表 表中记录每一发生了的或将要发生的事件的类型和发生时间 以及与该事件相联的实体的有关属性等等 3 活动离散事件系统中的活动 通常用于表示两个可以区分的事件之间的过程 它标志着系统状态的转移 如前例中 顾客的到达事件与该顾客开始接受服务事件之间可以称为一个活动 排队活
4、动 该活动使系统的状态 队长 发生变化 4 进程进程是由若干个有序的事件及若干有序活动组成 一个进程描述了它所包括的事件及活动间的相互逻辑关系及时序关系 如顾客到达 经过排队 接受服务 服务完毕后离去可称为一个进程 进程 排队活动 服务活动 顾客到达事件 服务开始事件 服务结束事件 5 仿真钟仿真钟用于表示仿真时间的变化 在连续系统仿真中 将连续模型进行离散化而成为仿真模型时 仿真时间的变化基于仿真步长的确定 可以是定步长也可以是变步长 称为时间步长法 对于离散事件系统而言 其状态本来就只在离散时间点上发生变化 因而不需要进行离散化处理 但是由于引起状态变化的事件发生时间的随机性 仿真钟的推进
5、步长则完全是随机的 所以说仿真模型中时间控制部件必不可少 应按一定规律来控制仿真钟的推进 8 统计计数器连续系统仿真的目的是要得到状态变量的动态变化过程并由此分析系统的性能 离散事件系统的状态随事件的不断发生也呈现出动态变化的过程 但仿真的目的主要不是要得到这些状态是如何变化的 由于状态的变化是随机的 某一次仿真运行得到的状态变化过程只不过是随机过程的一次取样 如果进行另一次独立的仿真运行所得到的状态变化过程可能完全是另一种情况 所以它们只有在统计意义下才有参考价值 在前例中 由于顾客到达的时间间隔具有随机性 服务员为每个顾客服务的时间长度也是随机的 因而在某一时刻 顾客排队的队长或服务台的忙
6、闲情况完全是不确定的 在分析该系统时 感兴趣的是系统的平均队长 顾客的平均等待时间或服务员的利用率等 所以在仿真模型中 需要有一个统计计数部件 以便统计系统中的有关变量 8 2仿真钟的推进 离散事件系统仿真的仿真钟推进方法有两种 一种是按下一最早发生事件的发生时间推进 称为事件调度法 亦称为事件步长法 另一种是固定增量推进法 事件步长法 事件步长法 是以事件发生的时间为增量 按照事件发生的时间顺序 一步一步地对系统的行为进行仿真 直到预定的时间结束为止 在多数随机系统中 可以有多种性质的事件发生 通常按照发生时间的先后顺序逐个处理 换句话说 首先处理发生时刻距初始时刻最短的事件 这种处理方法称
7、为是最短时间的事件步长法 事件步长法 初始状态 事件步长加1 在当前步长内 考察分析 计算和记录系统的活动 仿真时间到否 仿真结束 输出结果 是 否 事件步长法 事件步长法与时间步长法的主要区别是 1 事件步长法与时间步长法都是以时间为增量来考察系统状态的变化 但在时间步长法中 仿真时钟以等步长前进 而在事件步长法中 仿真时钟的步长取决于事件之间的间隔 2 时间步长法在一个步长内 认为系统所处的状态相同 因而所选步长的大小将影响仿真的精度 而在事件步长法中 每个事件的发生均有确切的时刻 不需要人为地选取步长 步长的大小对仿真精度影响较小 事件步长法 3 时间步长法每前进一个步长就要对整个系统进
8、行一次全面考察 即使状态没有发生变化时也要扫描 而事件步长法只是在某一事件点上判断和比较事件是否出现 因此 一般地讲 当判断比较的数目较大时 用时间步长法可以节省用机时间 而当相继两个事件出现的平均间隔较长时 更适合于用事件步长法 事件步长法 事件表法的基本思路 事件表法的主要思路是将系统的仿真过程看成一个事件点序列 根据事件出现的时序 用一个称之为事件表的表格来调度事件执行的顺序 对于那些当前需处理的事件 列入事件表中 从中取出最接近的事件进行处理 处理完毕后自动退出事件表 在处理当前事件的过程中 往往又会产生一个后继事件 因此 必须预测出这一后继事件的出现时间 并将它列入事件表中 事件步长
9、法 例子 例1 收款台前的排队过程的仿真 考虑一个收款台的排队系统 某个杂货店只有一个收款台 顾客的到达时间时服从均值为4 5的负指数分布 每一个顾客的服务时间服从均值为3 2 方差为0 8的正态分布 这里时间的单位是分钟 且服务的时间不取负值 试对收款台前的排队过程进行仿真 事件步长法 例子 收款排队系统主控程序图 事件步长法 例子 负指数分布的随机数的产生 x 4 5ln u u为均匀分布的随机数正态分布的随机数的产生 y 3 2 0 8v v为标准正态分布的随机数 假设 开始时服务台前无顾客 顾客在服务台前不离去 要求 对100个顾客到收款台缴款排队过程进行仿真 关心的问题 每个顾客的平
10、均等待时间atime 最大队长maxl 服务员的工作效率work 事件步长法 例子 实体 服务员 忙1 闲0 顾客 到达时刻ca 服务时间cs 等待时间ct 队列 长度lq 事件event 顾客到达事件1 交款 排队 服务结束事件2 闲忙 事件表 序号事件类型 1 2 发生时刻t 事件步长法 例子 顾客到达子程序图 事件步长法 例子 服务结束子程序图 事件步长法 例子 例 机器修理系统仿真有m台机器 由c个工人共同负责修理 并设 各台机器质量相同 机器的连续运转时间相互独立且服从同一负指数分布 平均寿命为1 v v 0 每个工人技术相同 且修理时间相互独立并服从同一负指数分布 平均修理时间为1
11、 u u 0 修复后的机器其寿命分布不变 机器停止运转每单位时间的损失费为c1元 工人单位时间的产值为c2元 若机器的等待时间为E 工人总的空闲时间为F 则系统总的损失费为S c1E c2F试求当机器数m固定时 为使系统的总损失费最小 应配备多少工人为最优 事件步长法 例子 解 采用最短时间事件步长法进行仿真 首先要确定一个初始状态 不妨假定开始时所有的机器都正常运转 工人处于空闲状态 设T为仿真终止时间 依次仿真计算修理工人数C分别取1 2 3 时的系统损失费 最后根据系统损失费S的极小值来确定最优工人数 根据以上思想并采用最短时间事件步长法仿真 事件步长法 例子 事件步长法 例子 框图中各
12、标识符号含义如下 T 仿真终止时间m 机器数c 工人数B i 第i台机器所处状态A i 第i台机器现在状态的当前时刻D j 第j个工人修复机器的释放时刻c1 一个工人单位时间的产值c2 一台机器单位故障时间的损失费 B i 1机器正常运转 0机器发生故障 事件步长法 例子 U 一个工人单位时间平均能修复的机器数V 一台机器在单位运转时间内发生故障的平均次数S 总损失费用E 机器故障时间累计F 工人空闲时间累计K 最短时间机器的当前时刻H 最短时间机器对应的机器号L 工人修完机器的释放时刻x 最短释放时间工人的当前时刻y 最短释放时间对应的工人序号 事件步长法 例子 下表列出了当m 86 1 V
13、 500小时 1 U 34小时 c1 3 46元 小时 c2 3 2元 小时时的仿真结果 其中每次预定仿真时间为一万个小时 连续仿真五次取其平均值作为仿真结果 由仿真结果可知当工人数c 10时 最优工人数为7 应用举例 可靠性问题 例 一设备上三个相同的轴承 每个轴承正常工作寿命为随机变量 其概率分布如表所示 任何一个轴承损坏都可以使设备停止工作 从有轴承损坏 设备停止工作 到检修工到达开始更换部件为止 称为一个延迟时间 延迟时间也是随机变量 其概率分布如下表所示 应用举例 可靠性问题 设备停工时每分钟损失5元 检修工每小时工时费12元 轴承每个成本16元 更换一个轴承需要20min 同时更换
14、两个轴承需要30min 同时更换三个轴承需要40min 现在有两种方案 方案一是损坏一个更换一个 方案二是一旦有轴承损坏就全部更换 试通过计算机仿真对这两种方案做出评价 在这一问题中 轴承寿命在1000到1900h之间 而延迟在5到15min之间 故若用时间步长法时 步长选取有些困难 步长小浪费很大 步长大又不精确 所以采用事件步长法 在事件发生时再考虑系统状态的变化情况 这就比较合理 应用举例 可靠性问题 为了进行仿真 首先对轴承寿命和延迟时间与随机数对应 对应规则分别如下两个表 轴承寿命随机数 延迟时间随机数 应用举例 可靠性问题 由于在这一问题中各个轴承的寿命完全决定了系统的运行状态 也
15、即决定了两个方案的费用大小 故我们选择轴承发生故障作为事件 这三个轴承发生故障的事件分别记为A B C 1 方案一的仿真 产生初始事件表 应用举例 可靠性问题 仿真时钟步进 计算费用 产生下一个事件 由表上看出 最早发生的事件是A 所以 t 1400hcost 5 20 5 4 1 16 145元 下一个A事件发生的时刻为第2400小时25分钟 随机产生轴承寿命为1000h 刷新事件表 即删去老的A事件 产生新的A事件 刷新后的事件表如下表 应用举例 可靠性问题 寻找事件表中的最早事件进行处理 由上表看出 B C事件同时发生在第1500h 故同时处理 时钟步进为t 1500h 再根据费用的计算
16、方法得 cost 145 15 30 5 6 2 16 408元 最后利用随机数产生新事件B和C 刷新事件表 得到的新事件表 应用举例 可靠性问题 重复 t 2400h25min cost 408 5 20 5 4 1 16 553元 重复这一过程 一直需要的时间结束即可得到方案的费用 应用举例 可靠性问题 2 方案二的仿真 方案二与方案一的区别就是一旦故障发生 就更换3个轴承 设初始事件表仍为方案一初始表 表中最早的事件是A 处理事件A时要考虑延时 更换3个轴承的时间和费用 cost 5 40 5 8 3 16 281元 应用举例 可靠性问题 根据下一次三个轴承发生故障的时刻刷新后的事件表 再重复上述过程 累加费用 即可得到方案二的总费用 最后比较两种方案的费用大小即可确定选取那一种 应用举例 可靠性问题 程序运行结果 T 100000h方案一 cost 32705元方案二 cost 24429元从而得出方案二较方案一优 应用举例 可靠性问题 可靠性问题 include include include defineTIMES100000structtable floatbegin i