仿真输入模型的构建
输入模型是系统仿真模型的驱动力。在排队系统的仿真中,典型的输入模型是到达间隔时间的分布和服务时间的分布;在库存系统仿真中,输入模型包括需求量和提前期的分布;在进行系统可靠性仿真中,输入模型包括设备和部件的失效时间分布;在生产系统仿真中,输入模型包括作业工序时间、物料装卸时间、车辆运输速度以及各种设备失效时间的分布等。对于这些具有随机特性的输入数据进行合理有效的理论建模是成功仿真的关键因素之一。
构建有效的输入模型,需要按照如下4个步骤:
1 从感兴趣的现实系统中收集数据。收集数据往往需要足够的时间和资源支持,在某些情况下几乎不可能收集数据,例如当时间非常有限、或者输入过程还没有出现、或者法律和规则禁止收集数据。当数据无法获得时,就必须用专家的观点和对过程的认识来做出主观猜测。
2 确定能表示输入过程的概率分布。在获得数据之后,这一步基本上就是从识别数据的频度分布或直方图开始。在已知随机分布pdf曲线(即频度分布曲线)和输入过程认识的条件下,选定输入数据服从的分布类型
3 确定分布的参数。在数据和分布类型基础上,估计分布函数的相关参数值。
4 评价所选分布及参数与实际数据的拟合优良度。拟合优亮度可以通过非正规的方法---图表法或正规的方法---统计检验来评估。卡方检验和科尔莫戈洛夫-斯米尔诺夫检验是最常用的拟合优亮度检验方法。如果检验发现所选的分布对数据的近似不能令人满意,则再转到步骤2,重新选择一个分布类型,重复该过程。如果多次迭代都没能实现假设分布和所收集的数据之间的拟合,则需要考虑使用经验分布作为该数据的输入模型。
本节将讨论上面提到的每个步骤。虽然现在可以使用软件来完成步骤2、步骤3和步骤4,例如Matlab、Minitab、Sas等,但是了解构建输入模型的原理和方法仍然非常重要,这一方面有助于我们更好的使用软件,另一方面有助于我们开发更合适的随机输入模型。本节最后介绍了对无数据输入模型和非平稳泊松过程输入模型的构建问题。
一、收集数据
1.1 仿真系统输入数据分类
在进行运作系统仿真时,可能的输入数据可以划分为如下两类:
l 时间量:加工时间、故障时间间隔、维修时间、准备时间、运输时间
l 结构量:产品--种类、数量、存在方式、成本
设备—种类、数量、作业方式(Single、Assembly、)、成本
人员—类别、数量、作业能力、成本
仓库—类别、数量、容量、存储方式、成本
对于特定运作系统,结构量一般为确定性的数值,只需要将实际系统中对应的数据收集起来,运用到模型中即可,它是建立模型结构的基础,需要在建模之前完成;而时间量通常具有随机性,需要进行特别的统计处理,该类数据的收集处理可以在建模之前、当中、甚至在模型结构建立完成之后完成,但是对其收集和统计处理要花费较多的人力和复杂的处理。
1.2 收集数据的注意事项
自助洗衣店仿真数据收集示例:
作为初学仿真的学生,有两个被安排去仿真现有系统的运行。其中有这样一个看起来相当间单的系统,它是由10台洗衣机和6台干衣机构成的自助洗衣店。
问题的数据收集很快就变得相当庞大。到达间隔时间的分布并不相似:它每天随时在变,每周随天在变。洗衣店每周营业7天,每天营业16小时(或每周112小时)。在可利用的资源有限(这两个学生还有四门课程)和时间很紧(仿真要在四周内完成)的情况下,想观察洗衣店的所有的工作是不可能的。另外,一周内的到达间隔时间分布.在下一周可能不适用。作为一种折中,选择一种时间样本,并且根据到达速率(这种说法可能并不恰当),将到达间隔时间的分布分类为“高”、,‘中”、“低”。
通过多次的观察,发现服务时间的分布也存在一个难题:必须要观察和记录需要不同服务
组合的顾客的比例。最简单的情况是顾客需要一台洗衣机和一台干衣机。然而,顾客可能选择两台洗衣机和一台干衣机,或仅仅需要一台干衣机,等等。顾客使用编好序号的机器,这样就可以通过序号来跟踪顾客,而不需要根据个人特征来记住他们。由于每个顾客对洗衣机的需求和对干衣机的需求之间具有依赖关系,因此,将洗衣机的服务时间和干衣机的服务时间作为独立变量分开考虑是不恰当的。
某些顾客耐心地等待他们衣服的洗衣和干衣周期完成,然后立刻将它们取走。另一些顾客在衣服放入机器后可能会暂时离开,等他们衣服的洗衣周期完成之后再回来取。在比较忙的时期,在顾客的衣服洗完之后管理人员会将他们的衣服拿出来装在蓝子里。我们规定将机器里的东西清空的那个时间点作为服务终止时间,这个时间点需要被及时地预测。
机器也会不时的出现故障。故障时间的长度从一会儿(如果管理人员及时修理好机器)到几天(如果机器是在周五晚上出现的故障,需要的零件在洗衣店仓库中没有,要到下一星期一才能修好)。短期的修炼时间可以由学生小组来记录,长期的修理时间需要管理人员来估计。这样,故障就成为该仿真的一部分。
通过上面的示例可以发现收集数据有时是非常复杂的过程。
下面给出一些可以增强和帮助数据收集的建议,这些建议没有囊括问题的全部。
1.编制数据收集计划,设计数据收集表格和安排足够的时间。可以从一次实习或预观测开始编制计划,开始试着收集数据,并为这一目的设计表格。在收集实际数据之前,这些表格很可能被修改几次,要注意不寻常的环境,思考如何去处理它们。在可能的情况下,可以对系统进行录像,然后观看录像析取数据。计划编制对于确保采集到合适的数据是非常重要的,即使在自动数据收集的情况下(例如通过计算机数据收集)也是这样。当数据由其他人收集时,要确保有足够的时间来将收集转化为可用的形式。
2. 在数据收集的同时,试着分析数据。弄清楚所收集的数据是否足够,以便提供作为仿真输入所需的分布。看看某些收集到的数据对于仿真来说是否是无用的,没有必要收集多余的数据。
3. 试着合并相似的数据集。检查连续的时间周期和连续几天内相同的时间周期的数据的相似性。例如,要检查从下午2:00到下午3:00和下午3:00到下午4:00的数据的相似性,同时也有检查星期四和星期五下午2:00到下午3:00的数据的相似性。在检查相似性时,先用一个双样本的t检验看一看两个分布的均值(例如:平均间隔时间)是否相同。更彻底的分析需要进行分布的等价检验,这可能要借助于分位点-分位点图。
4. 做散布图来解释两个变量之间是否有关系。有时,用眼观察散布图就可以知道两个所关心的变量之间是否有关系。
5. 一系列看似无关的观察实际上却是自相关的,要考虑到这种可能性。自相关可能出现在连续时间周期或连续顾客的情况下。例如,第i个顾客的服务时间可能与第i+n个顾客的服务时间有关系。
6. 记住输入数据与输出数据或性能数据之间的区别,并确保收集的是输入数据。输入数据一向用来表示不确定的量,它大大超出系统控制,并且不会随着为改进系统所做的改变而变化。另一方面,输出数据表示的是系统性能,它取决于输入,也是我们试图改进的性能。在排队仿真中,顾客的到达时间经常是输入,而顾客的延误是输出。然而,性能数据对于模型的绩效改进是有用的。
二、根据直方图识别数据分布
在这一部分,讨论如何根据获得的数据,选择输入分布类型的方法。
2.1 直方图法绘制
直方图构造步骤
(1)将数据范围划分成区间(区间经常是等宽的;然而,如果调整了频度的高度,也可以使用不相等的宽度)
(2)在水平轴上做标记,以确定所选的区间;
(3)求每个区间里发生的频度;
(4)在垂直轴上做标记,以便能画出每个区间的总发生数;
(5)在垂直轴上画出频度。
分组区间的数量依赖于所观测数据的数量和数据的分散量或离散度。如果区间划分数量过多,直方图会有毛刺,并且数据也不平滑;如果区间划分数量过少,直方图就会太粗糙,又难以从直方图上观测出数据的分布类型。在实际中,当所选择的分组区间的数量近似等于样本大小的平方根时,经常会取得较好的效果。在下图中,给出了相同数据的有毛刺的、粗糙的、适当的直方图的例子。现代数据分析软件能够非常容易的和交互性的改变区间距离的大小,直到得出很好的直方图。
分组数量过多,形成有毛刺的直方图
分组数量太少,直方图太粗糙
合适的分组和直方图
连续数据的直方图与理论分布的概率密度函数相对应。如果数据是连续的,那么经过每个分组区间频度的中心点画出来的线,其形状与pdf曲线的形状是相似的。
如果直方图是关于离散数据的,则它看起来应该像概率质量函数。对于有大量数据点的离散数据的直方图,数据范围内的每一个值都应该有一个单元。然而,如果这里的数据点并不多,则有必要合并相邻的单元来消除直方图上的毛刺。
例 2 离散数据
在每周的5个工作日中,对每天上午7:00到7:05的五分钟内到达十字路口西南角的车辆进行观察,一共观察20周。表1中给出了观察结果数据,第一个条目表示有12次五分钟内没有车辆到达,第二个条目表示有10次一辆车到达,等等。
汽车的数量是一个离散变量,并且能得到充足的数据,因此对于数据范围内的每个可能值在直方图上都会有一个单元。相应的直方图如图2所示。
在5分钟周期内车辆到达数 |
||||||||||||
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
|
频度 |
12 |
11 |
20 |
17 |
10 |
8 |
8 |
7 |
7 |
5 |
4 |
1 |
例3 连续数据
在1.5倍额定电压下,对电子元件的随机样本进行寿命检验,几天中的寿命记录如下:
81.651 |
2.775 |
0.064 |
1.801 |
5.929 |
2.733 |
6.110 |
0.022 |
0.015 |
0.144 |
7.378 |
62.274 |
1.094 |
40.092 |
5.971 |
17.199 |
0.147 |
43.572 |
25.373 |
0.447 |
159.171 |
2.750 |
16.201 |
0.085 |
10.606 |
1.033 |
0.820 |
3.050 |
2.099 |
8.215 |
0.593 |
6.112 |
3.744 |
6.696 |
22.151 |
0.589 |
2.057 |
0.301 |
0.002 |
0.513 |
6.311 |
35.372 |
1.092 |
1.064 |
0.261 |
3.444 |
14.908 |
0.989 |
2.664 |
5.379 |
寿命通常被认为是连续变量,记录精确到小数点后3位。将数据放入分组区间中,准备做直方图。数据的范围相当大,从0.002天到144.695天。然而,大部分的数值(50个中有30个)在0到5天的范围内。如果使用区间为3,可以得到表2。根据表2中的数据可以做出图3所示的直方图。
Min |
Max |
频度 |
0 |
3 |
26 |
3 |
6 |
6 |
6 |
9 |
6 |
9 |
12 |
1 |
12 |
15 |
1 |
15 |
18 |
2 |
18 |
21 |
0 |
… |
… |
0 |
24 |
27 |
1 |
27 |
30 |
0 |
33 |
36 |
1 |
… |
… |
0 |
39 |
42 |
1 |
42 |
45 |
1 |
… |
… |
0 |
60 |
63 |
1 |
… |
… |
0 |
81 |
84 |
1 |
… |
… |
0 |
159 |
162 |
1 |
2.2 选择分布类型
在常用输入模型一节介绍了一些仿真中经常出现的分布,还展示了这些分布的概率密度曲线形状。准备直方图的目的是推断被处理数据服从一个已知的pdf或pmf。分布类型的选择基于对数据在现实系统中含义及其直方图形状的研究。如果所收集的到达间隔时间数据的直方图的形状与已有随机分布的pdf形状相似,则有理由假设它服从该种分布。
指数分布、正态分布、泊松分布是经常会遇到的随机分布形式,从分布函数的数学特征角度来讲,它们并不难分析和判断。在分析和判断贝塔分布、伽马分布和威布尔分布时,难度要大一些,但是它们的pdf曲线形状范围很宽,对特殊随机过程进行建模时,极有可能需要使用这几类分布。假设数据服从指数分布时,如果发现分布和数据拟合情况不理想,则需要通过检验不拟合的位置。如果不拟合位于分布的尾部,那么伽马分布或威布尔分布也许能够与数据较好的拟合。
已经建立的概率分布有数百种,很多是考虑特定的物理过程而建立的。熟悉分布的一些特征,有助于进行概率分布的选择。下面列举几个例子:
二项分布:对n次试验的成功次数进行建模,此时实验是独立的,具有共同的成功概率p。例如,从数量很大的n快计算机芯片中找出的残缺芯片数。
负二项分布(包括几何分布):对取得k次成功所需要的实验次数进行建模。例如,为了找到4块有残缺的芯片我们必须检查多少块芯片。
泊松分布:对在固定长度时间或固定大小空间内发生的独立事件的次数进行建模。例如:在1小时内到达商店的顾客人数,或在30平方米的金属板上所发现的残缺芯片数。
正态分布:对一个可以看成是许多子过程之和的过程的分布进行建模。例如,一个产品的组装过程所需要的时间是每个组装操作的时间的总和。注意:正态分布允许负值,这对于过程时间是不可能的。
对数正态分布:对于一个可以看出是许多子过程之积的过程的分布进行建模。例如:如果利润是复合的,则投资率是许多阶段回报的乘积。
指数分布:对独立事件之间的时间进行建模;或对于无记忆的过程时间进行建模(在过程结束之前,知道已经过去了多少时间并不能为得出还需要多少时间提供信息)。例如:数量巨大的相互独立的隐含顾客的到达之间的时间。指数分布是一个变化很强的分布,因为它经常得出易于处理的模型,因此在某些时候他被过度的使用。记住:如果事件的间隔时间服从指数分布,则一个固定时期内的事件发生次数服从泊松分布。
伽马分布:一个用于为非负随机变量建模的极其灵活的分布。通过加一个常数,伽马分布可以位移离开0点。
贝塔分布:这是一个用于为有界随机变量(有固定的上限和下限)建模的极其灵活的分布。通过加一个常数,该分布可以位移离开0点,也可以乘一个常数,而得到一个比【0,1】大的范围。
埃尔郎分布:对于一个可以看成是几个指数分布过程之和的过程进行建模。例如:当一台计算机和两台备用计算机都损坏时,计算机网络会出现故障。如果每台计算机的故障时间服从指数分布,这是计算机网络故障就服从埃尔郎分布。埃尔朗分布是伽马分布的一个特例。
威布尔分布:对部件的故障时间进行建模:所有的结果是等可能性的。当没有数据时,这种分布经常被不适当的使用。
三角分布:当只知道一个过程的分布的最小值、最可能值和最大值时,用它来建模。例如:检验一个产品所需要的最小、最可能和最大时间。这种模型通常是对均匀分布的一个明显改进。
经验分布:对收集到的实际数据再取样。常常在没有合适的理论分布的情况下使用。
在选择分布类型时,不要忽略过程的物理特性。过程的值在本质上是离散的还是连续的?是有界的还是没有界限的?通过这些数据的分析,有助于缩小备选的分布类型范围。