第6章 Arena附属工具介绍 再看.doc_第1页
第6章 Arena附属工具介绍 再看.doc_第2页
第6章 Arena附属工具介绍 再看.doc_第3页
第6章 Arena附属工具介绍 再看.doc_第4页
第6章 Arena附属工具介绍 再看.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第6章终态仿真输出分析在本书2.6节中曾提醒读者,当建立仿真模型时,随机数据(即分布或概率驱动的)输入会带来输出的随机性及相关统计分析问题,这是迄今为止本书中建立的所有模型都面临的问题。本章中,将以第5章中所建立的汽车维修店仿真模型5-2为例,教读者如何在仿真中采集适当的数据,如何从已得到的输出报告对这些数据进行统计分析。同时,本章还介绍如何使用输出分析器(Output Analyzer)做更为深入复杂的统计分析(对仿真模型中两个不同方案进行比较),如何使用过程分析器(Process Analyzer)(通过运行多种可行的备选方案,从中选择出最佳方案,或是衡量输入数据对输出数据的影响作用),以及如何使用Arena中的OptQuest for Arena工具 与Arena配套的仿真优化软件(它将控制仿真模型的运行,从而寻找输入控制参量的最佳配置)。在第6.1节中,将讨论仿真运行的时间类型,它对输出统计分析有很大影响。在6.2和6.3节中将以模型5-2为例,介绍单变量数据收集并对其进行统计分析的基本技巧。6.4节中将对该模型的输入参数进行简单的改动并利用Arena中的输出分析器来验证仿真结果是否发生改变。6.5节将引入更多的模型变化,使用过程分析器以一种更高效有序的方式运行它们,从而找出那些效果可能最好的参数,并且分析输入数据对输出结果的影响作用。最后,6.6节中将应用OptQuest for Arena工具在大量可能的模型输入参数组合中,快捷高效地搜寻至少在某种意义下是最优的模型结构。总之,本章将阐明获得精确可靠结果的统计分析方法,这些数据将帮助决策者做出正确且富有远见的决策。过去许多人几乎忽略了上述的问题,所幸那令人羞愧的事现在已经没有了。如果仅仅运行一次仿真模型,之后就试验几个随机抽出的方案(并且只运行一次),那么这样的结果或结论的有效性、精确性或者一般性显然是无法保证的。有时候结论的有效性、精确性以及一般性是不正确的,因此有可能做出不适当的估计及错误的决策。读者将会发现,要做好这些事情其实不费太多的力气,只是你的计算机可能会忙碌一些,但无论如何计算机在大部分的工作时间里还是闲置的,并且机器运行是廉价的(相对于读者将要根据仿真结果所做出的决策而言)。读者已经辛苦地建好了仿真模型,现在该是让模型(及计算机)运行并检验其性能的时候了,这样你才能有充分的把握将这些结论应用到决策中去。6.1 仿真类型多数仿真都可以被归类为终态仿真或稳态仿真。对大多数模型来说,这主要取决于研究目的,与模型的内部逻辑或是结构没有太大关系。终态仿真就是在仿真模型中明确地规定了仿真开始和结束的条件,这些条件是目标系统实际运行模式的反映。正如其名称所显示的,仿真运行将在模型中某个定义好的规则或是条件下终止。譬如,一家商店在早晨9点开门营业,正常情况下晚上9点关门结束营业,但是当还有顾客排队时,商店会适当延长营业时间直到所有顾客都离去。另一个例子,某流水线车间根据订单需要生产500件产品,那么系统就一直运行到所有500件产品都装配完成为止。在终态仿真的时间结构中,最关键的一点是有一个明确定义的起始点以及一个明确定义的自然的终止点(尽管可能在仿真开始时并不知道这个终止时间是多少)。与终态仿真不同,稳态仿真中对于数量的估计是建立在长期运行的基础上的,理论上运行时间是趋于无穷的。在理论上(尽管在实际中常常不是这样)仿真的初始条件是不影响仿真结果的。当然,稳态仿真也会在某一时刻终止,读者可以猜想到那是相当长的一个运行过程;读者还需要做另外一些工作来确保仿真运行时间已足够长,这将是本书在7.2节中讨论的问题。以急诊室为例,它将永远不会真正停止工作或是重新开始,故而采用稳态仿真将是非常恰当且合乎实际的。有时人们在做一个系统的稳态仿真时也会让它在一定的时候终止下来,这样做的目的是为了设计某些最坏的情形或是峰值负荷的情形。本章中,将以第五章中的汽车维修店仿真模型5-2为例,对其进行终态仿真统计分析,该系统将在第五章中描述的情形下开始运行,并在20个工作日(每个仿真工作日为12小时)后终止仿真运行,仿真时间大约一个月。(本模型同样适用于稳态仿真,让运行时间大大超过20个工作日即可,但除了仿真长度外没有别的变化;这里选择运行20个工作日只是将其作为终态仿真来研究而已。)稳态仿真的统计分析与终态仿真是不同的(本书将在第7.2节中以7.1节建立的模型为例进行说明)。6.2 数据收集及分析策略对于终态仿真,要为统计分析收集恰当的数据从概念上讲是非常简单的 做n次独立的重复运行即可。虽然概念上很简单,但也说明了对于大型的或是有很多变量的仿真模型来说,需要大量的运行时间。为完成这一工作,打开Run Setup Replication Parameters 对话框,在Number of Replication选项中键入读者希望的重复仿真次数n。值得注意的是,要确保Initialize Between Replications栏中的两个复选框都是被选中的(缺省值),这样才能保证系统状态变量以及统计累加器在每次仿真结束后都被清零,也即各次重复仿真所使用的是独立同分布(IID)的数据。这些设置将能够保证仿真重复运行n次,每次运行都从初始状态开始运行(初始的系统状态及清空的统计累加器)并且应用了独立随机数来驱动仿真实际上,每次重复仿真都是由同一随机数流推进的,在12章中将介绍随机数发生器如何工作以及如何控制它。对每次重复仿真而言,都独立产生该次仿真的输出报告,可通过Category by Replication报告查看。表6-1 模型5-2重复仿真10次所得的每天平均利润(Daily Profit)与未能按时完成服务的等待顾客数(Daily Late Wait Jobs)重复次数Daily Profit(美元)Daily Late Wait Jobs1475.430.65002525.170.65003513.986.55004389.420.60005513.960.70006401.201.05007450.520.65008388.710.90009574.670.400010565.810.2500举例来说,我们对模型5-2进行n=10次独立重复仿真试验,可得到如表6-1所示的Daily Profit与Daily Late Wait Jobs的性能指标。一定要记住表中的任何一个值都是基于一次完整仿真运行过程的结果,并且它们都只是在某一次具有特定开始和终止条件的随机重复仿真中,代表Daily Profit与Daily Late Wait Jobs的随机变量的一个“观测值”(或者“实现值”)。我们能提前得知n=10是恰当的重复仿真次数吗?答案是否定的。而且如果我们不对这些数据进行分析,那么就仍然不能知道重复仿真多少次是恰当的,这是因为我们无法预先知道仿真结束后在输出报告中的输出变量变化范围是多少。下面将说明如何找到(或是猜测)一个合理的样本量。顺便说一下,为了统计分析而进行重复运行时,读者也许希望关掉动画,可以通过如下操作完成:选择Run Run Control并选择Batch Run (No Animation),从而消除动画。若想以后再恢复动画,只需再回去清除上述的选择即可。相信读者不希望将每次重复仿真的所有性能指标的观测值都先复制出来,再应用统计软件包、或是电子数据表格、或是计算器来进行分析。值得庆幸的是,Arena内部自动跟踪了输出报告中每一次重复仿真的记录。如果读者进行了多于一次的重复仿真,在Arena的分类汇总报告(Category Overview report)中将会给出各次重复仿真的输出结果的均值,并给出输出结果的置信度为95%的置信区间;这些内容将在第6.3节介绍。读者可以将每次重复仿真结果中感兴趣的部分保存到扩展名为 “.dat” 的二进制文件中(以后可以导入到Arena输出分析器中,6.4节中将谈到这一应用)。可在Statistic数据模块中定义输出文件的名字,这个文件就将记录表6-1中的数据。6.3 终态仿真系统的置信区间正如在2.6.2节中的手工仿真那样(应用那里给出的公式),可以总结一下表6-1中重复仿真10次所得到的输出数据。在表6-2中给出了样本均值、样本标准差、95%置信区间半长、以及各次重复仿真输出结果的最小值和最大值。表6-2 模型5-2的10次重复仿真输出结果统计分析Daily Profit(美元)Daily Late Wait Jobs样本均值479.890.6400样本标准差70.170.051095%置信区间半长50.200.1616最小值388.710.2500最大值574.671.0500如果读者在Run Setup Replication Parameters中选择多于一次重复仿真的话,在Arena的分类汇总报告中会自动记录表6-2中的信息(样本标准差除外,但是在半长中已经包含了本质上相同的信息)。图6-1显示了模型5-2重复仿真10次后的分类汇总报告中的相关内容;除了微小的舍入误差外,这些数据与表6-1中手算的数值是吻合的。需要提醒读者的是,当进行多次重复仿真后,关于分类汇总报告有几点需要注意。第一,当进行不多于100次的重复仿真时,在“半长”(Half Width)栏显示的置信区间的半长值是精确的;否则这些项将比实际数据大,导致这样的结果是由于生成这项报告的Crystal Report软件所存在的一些局限。但是,在扩展名为“.out”的文件中的半长值是准确的,其它一些Arena内部处理过程以及一些应用分析工具(如输出分析器、过程分析器、与Arena配套的仿真优化软件)的数据都是准确的。第二,对某些在单次仿真中取整数值的仿真输出数据(例如对某种物体的计数),虽然其在多次仿真下的平均值未必是整数,但在报告中却会对它们舍入取整;但这样的问题也只出现在分类汇总报告中,而在“.out”文件或是其它内部处理及应用分析中都不会出现。(这些问题可通过下载一个补丁得以解决;详见附录E。)如果读者想要改变一些条件或是报告内容,比如定义非0.95的置信度,或是以某种组合形式输出结果,或者绘制置信区间、最小值、最大值的曲线图,就需要将数据保存在某一“.dat”文件中,并应用输出分析器来完成这样的工作(详见6.4节)。读者也可以使用过程分析器来得到置信区间的曲线图。显而易见,如果想要减少Daily Profit与Daily Late Wait Jobs的期望值的置信区间半长,就要增加样本数量n。但是到底增加多少才合适呢?如果读者在心中已有一个希望半长大小的预期值,就可以很容易地算出大概多大的n可以达到这个目标(尽管这可能不是一个准确值)。假定读者根据初始的几次重复仿真得到了样本均值及标准差,以及一个半长相当大的置信区间。例如,从我们初始的10次重复仿真中得到的Daily Profit,可得出样本均值是479.89,样本标准差是70.17,以及0.95置信度的置信区间的半长是它表示点估计值479.89有一个10.5%的误差范围。如果读者想要得到一个特定的半长h(当然比初始重复仿真得到的半长要小一些),就可以应用上面的半长公式来求得相应的n的值:这里存在的困难是,公式右端项也依赖于n的取值(t分布的自由度与n有关,样本标准差s也与n有关,并且s不但依赖于n的值,而且依赖于n次重复仿真所得到的数据集)。然而,为了得到样本量的一个粗略估计值,读者可以将公式中的t分布用标准正态分布来替代(二者在n大于30的条件下是接近的),并且假定当前估计的标准差s与计算大样本时的值是相同的。这样就得到如下所示的近似求取一定置信度下特定半长h所要求的样本量n的公式:上式中,s是根据初始重复仿真所得到初始数据计算出的标准差(这一数值需要提前计算出来)。另外一个更简单但是稍微不同的近似公式是(将代数证明留给读者来完成)上式中,n0表示初始重复仿真次数,h0表示初始数据求得的半长。在上面Daily Profit值的例子中,若想把h0 = $50.20减少到h = $20.00,则所需要的重复仿真次数为:(按第一个公式的近似)或(按第二个公式的近似)第二个公式算出的近似值一般比较大,原因是公式中使用了而不是。要注意的是,样本量是以半长减小倍数的平方增长的 即若要减小半长到初始值的一半,就需要原来4倍的样本量。这看起来可能是不经济的(得到两倍的效果却需要做四倍的工作),并且读者会感到重复运行的次数越多,每一次运行带来的新信息也越少。因为模型在无动画时运行得非常快,所以保守的决策(从统计意义上)是做100次重复仿真。模型5-2所需要的修改仅是在Run Setup Replications Parameters中,将重复次数由10改为100,并且在Run Run Control 中选择Batch Run (No Animation)使仿真快速运行。将这一改动后的模型命名为模型6-1。这轮仿真结束后得到的95%置信区间为:492.6313.81或是表示为478.82,506.44(此处省略了$符号)。这样就达到了我们想要将半长减小到20或更小的目标。理解什么是置信区间是非常重要的。同样以Daily Profit的输出值为例。每次仿真都得到一个Daily Profit值,但因为随机输入的影响,这些值在不同的重复仿真中是不同的。读者会同意这100个值的均值比任何一次仿真得到的值都更具代表性。同理,做的重复仿真次数越多,得到的均值效果就越好。均值的期望值常常用表示,可以被认为是经无限多次仿真运行得出的均值;也即,是不存在什么不确定性的。但不幸的是,我们人类不可能等待无限多次重复仿真运行,所以要用一个有限样本来加以估计,例如用100次重复仿真得出均值估计492.63。以492.63为中心的置信区间可被当作是一个“随机”区间(下一轮100次重复仿真会得出一个不同的区间),此例中,这一区间以95%的概率包含或是覆盖,也就是说如果做许多轮的100次重复仿真运行,并从每一轮中求出一个区间,大约有95%的区间都会包含。因此,置信区间将给出的点估计(492.63),同时也给出了这一估计的精确度。置信区间并不意味着95%的重复仿真得出的Daily Profit值会落在这个区间里,那样的区间被称为预测区间(prediction interval),它同样可以由相同的一批数据得到,并且也是非常有用。两者之间的主要区别就在于:随着n的增加,置信区间会缩至一个单点,而预测区间不会,因为每次重复仿真的变化都会影响到后者。关于置信区间,最后需要提及的是有关置信度的定义(“大约”95%等)。Arena应用的是标准方法,即假定数据(如经重复仿真得到的100个Daily Profit观察值)是独立同分布的(对我们来说这是满足的),且服从正态分布(实际上这是不满足的)。从原理上说,置信区间公式中的t分布要求数据来自正态母体。那么,若违背了正态假设会对实际的置信区间产生什么样的影响呢?我们可以肯定地说,这与很多因素有关,包括数据及它们的真实分布、以及重复仿真次数n。只要n足够“大”,根据中心极限定理可以确保我们得到满意的答案(实际的置信度与所定义的非常接近)。但是n到底需要多大?答案是不可预估的,而且取决于数据的实际分布与正态分布的近似程度,尤其是对称性。这些可以通过对数据绘制直方图来检验,在图6-2中绘制了n=1000次重复仿真(而非初始100次)时Daily Profit的直方图(只有100个数据点的直方图没有很好的说明性)。为绘制这张图,对模型6-1做了如下改动,首先将Run Setup Replications Parameters中的重复次数由100改为1000,其次将这1000个Daily Profit值保存到一个名为Daily Profit. Dat的文件中,这只需在Statistic 数据模块中的Output File栏内输入该文件名即可,这样就得到了模型6-2。接着运行Arena的输出分析器(将在6.4节中介绍这一独立的软件)来读取Daily Profit. dat,并将该文件导入到一个纯ASCII文本文件中(File Data File Export),在电子数据表格系统中对该数据进行重新整理使其成为一列,再将它存为一个纯ASCII文本文件,然后把它导入到输入分析器中(详见4.5.4节内容)。采用目测就可以看出,直方图的形状(图中的阴影柱状)与我们熟悉的正态密度函数钟形曲线差距不大(尽管图形有一点向右偏斜,但不很严重),这就预示了使用标准置信区间的方法是可行的,尽管n的数值相对小了一些。对这个模型而言,在一台2 GHz的机器上做1000次运行只用了不超过2分钟时间。本例中为了检验数据的近似正态性所做的1000次重复仿真就像一个轻松的游戏,但如果是大型工业系统的模型,是不可能做这类实验的,那样应该如何检验呢?尽管不存在一条通用的准则,但很多仿真经验(由中心极限定理的各种广义形式所支持)告诉我们:如果从每次重复仿真中得到的某个值是“和”或“均值”的形式、而不是极值的话,那么使用标准正态理论的统计推断方法是相当安全的。本例中的Daily Profit值是均值,这或许可以解释图6-2中的近似正态分布的现象,也可以验证Arena中使用基于正态理论的统计方法的正确性。6.4 比较两个备选方案在大多数仿真研究中,人们最终感兴趣的是比较一些一般模型中不同的方案。不同方案间的区别,可以小到参数变化,大到完全不同的逻辑结构。在某些例子中,需要应用统计方法来比较不同方案的输出结果,从而保证做出恰当的结论。本节中,仅限于比较两个方案的情况,在6.5节中将会比较更多方案。将模型6-2做如下改动就得到模型6-3:将Run Setup Replications Parameters中的重复仿真次数减小到原来的100次;在Statistic数据模块中,在点击Output File列、Daily Profit行确定的方框中,把每次重复仿真的Daily Profit值保存到Daily Profit. dat文件中。我们将比较两个方案。第一个称之为基准方案,与第五章中的模型5-2相同,具有完全相同的输入参数和运行条件(除了做重复仿真100次而不是10次)。第二个方案即我们称之为多预约方案,也就是将基准方案模型中的输入参数Max Load(在Variable 数据模块中)的初始值由24小时改为28小时。我们的考虑是通过增加预约工作数量,使系统里的资源更加忙碌,从而增加收入,相应地提高Daily Profit。当然这只是最好的打算,因为同时也会出现负面结果,如增加了付给工人的加班费,增加了一天里本应修完而没能完成的车数,并为此需要支付更多的租车费用 这还不包括失去顾客信任的损失。故而并不清楚这项改变会对全部利润的影响,以及具体数量将是多少 这正是仿真可以完成的工作。通过运行基准方案和多预约方案(一次仿真运行,长度为20个工作日,每个工作日12小时),得到的Daily Profit输出值分别为475.43美元和737.95美元。表面上看来,后一种方案更佳,因为收入明显高于为加班和支付租车费所付出的成本。但是如果读者仔细阅读6.3节(或是第2.6.3节)的话,就会明白:只通过一次仿真运行而没有对输出结果做统计分析就轻易下结论的话,是很容易做出错误决策的。下面将运用一种能够使我们得到正确统计结论的方法来做比较。在使用正确的方法做比较之前,先用一种貌似合理却不很正确的方法来比较。在第6.3节中,注意到经100次重复仿真,Daily Profit的期望值的95%置信区间是492.6313.81,或者 478.82,506.44返回到多预约方案,同样运行100次重复仿真得到的置信区间为:564.5322.59,或者 541.94,587.12这两个区间根本没有重合的部分,说明两个方案中Daily Profit的期望值是截然不同的。然而,比较两个置信区间是否重合并不是进行方案比较的最佳方法;正确的比较方法要使用Arena的输出分析器,下面将予以介绍。正如我们以前提到的那样,输出分析器(Output Analyzer)是一个独立于Arena的应用程序,它使用由Arena经Statistic数据模块生成的输出文件(即.dat文件)。尽管Arena可以完成输出分析器的一些工作(如生成期望输出值的置信区间),但是输出分析器具有更多的优势,包括对两种方案进行统计比较。为了将每次重复仿真的Daily Profit值保存到.dat文件中供输出分析器使用,在Statistic 数据模块中的Output file列、Daily Profit行交叉处的方框中输入Daily Profit. dat。当仿真结束时,文件中就会有100次重复仿真得到的100个Daily Profit值;文件的格式是二进制的,输出分析器只能识别这种类型的文件,而其他类型(如字处理或是电子数据表格)都无法识别。因为此处需要保存两种方案各自100次重复仿真所得到的Daily Profit值,需要两个这样的文件,这就要在运行仿真前更改Statistic模块中的名字(如Daily Profit Base Case. dat和 Daily Profit More Bookings . dat),也可以在一个方案运行结束后在操作系统中修改Daily Profit.dat的名字。当对两种方案都做了100次重复仿真之后,打开输出分析器(它应该与Arena在同一文件夹中,除非读者做了非常规的安装)。在输出分析器中,选择File New (或者快捷键 Ctrl+N 或按钮 ) 来建立一个新的数据组。这不是一个包含具体数据的.dat文件,而是包含许多.dat文件的组群,读者可以选择感兴趣的文件加入该组群,这样就可以筛去许多现有的、但不需要的.dat文件,可以使得操作时更简便。读者可以保存这类组群文件(缺省的文件扩展名为.dgr),当读者打开它时就同时打开了其中的.dat文件,而不需要分别打开许多个.dat文件了。此处将这个数据组保存为Output Analysis 06-Ol.dgr。使用数据组窗口的Add按钮,可以选择打开Daily Profit Base Case. dat和 Daily Profit More Bookings . dat中的文件,使它们可以进行比较。可以使用输出分析器中的“均值比较”分析工具(Analyze Compare Means)进行比较。如输入界面6-1所示。首先将这些数据文件加入进去,然后需要对两个备选方案指定一些参数(即在对话框中称之为A和B的两个方案,在Replications栏都选择Lumped,这就意味着两个方案的100次重复运行的输出值都“集总”到一起用于统计分析),接着需要在Title后输入这个比较的名字,并接受或是改变比较的置信度。然后有两个选择按钮 Paired-t Test(缺省选项)和Two-Sample-t Test对应两种检验策略,它们与随机数分配及统计独立性有关,这些内容在12.4.1节中会加以讨论。Paired-t Test方法更具一般性,并且当通过精心的随机数分配来提高仿真精度时(这里没有用到),这一方法更适用。比较结果如图6-3所示。输出分析器对A、B两方案的均值按A-B进行了相减;因为方案A为基准方案,方案B为多预约方案,而更多的预约意味着增加Daily Profit值,所以两个方案Daily Profit均值间的差应为负值(492.63-564.53= -71.90)。为了发现均值间是否存在统计上显著的差异性(即差值是否远离0点),输出分析器给出了一个期望差值的95%的置信区间。因为本例中置信区间不包括0,故可以得出结论:二者之间存在统计意义上的显著差异,即当预约增加时Daily Profit会更高。置信区间的确可以更好地说明这一切,因为它通过检验得出了“拒绝统计假设”的结论(区间里不包括0),而且还量化出了差值的大小。读者现在就可以明了,按这种方案增加预约数量将会如何提高Daily Profit的值。6.5 用过程分析器做多方案评价在6.4节中定义了不同输入参数(Max Load)的两个方案系统,然后对这两个方案运行仿真模型,并且进行了统计分析,从而得到正确的结论,即两方案在Daily Profit这项输出值上存在显著差异。然而,当读者想要运行并比较多于两个方案的情形时,又该怎么做呢?我们面临以下两个问题:(1) 系统地管理模型中的各种变更。在不同备选方案比较中,如果存在许多方案时,对模型进行修改和运行管理将是非常枯燥费力的,在设定每一个备选方案的模型时将涉及到许多参数的变化,而且在运行每一个备选方案模型时,又要改变所有需要保存的输出文件的名称。(2) 从统计上有效地评价这些方案,并且挑选出哪些方案与其它方案有显著差异,哪些方案比其他方案明显更优,甚至挑选出这些方案中的最佳方案。Arena中提供了另外一个独立的应用程序 过程分析器(Process Analyzer,或缩写为PAN),它可以很好地解决用户面临的第一个问题,并且为第二个问题提供强有力的支持,从而帮助用户以一种统计上可靠的方式评估所得到的仿真结果,然后做出正确的决策。PAN处理的是Arena的程序文件,这些文件通常用.p作为扩展名;当运行完一个仿真模型后,就会生成相应的.p文件,或者也可以不运行模型而只通过模型检验来生成这个文件(Run Check Model或F4键或按钮)。读者可进行如下操作来运行过程分析器,比如通过Windows的开始按钮来启动它(标准安装时,它与Arena位于在同一个目录下),即运行Start Programs Rockwell Software Arena 7.0 Process Analyzer即可;也可以在Arena中通过Tools Process Analyzer菜单选项来启动。无论哪种方式,PAN都会在一个独立于Arena的窗口中单独运行(如果Arena也在运行的话)。过程分析器中的基本元素是“情景”(scenarios),所谓“情景”包括以下内容的组合:存在于计算机中某个地方的程序文件(.p)、一个所选择的输入“控制”(controls)变量值的集合、一个所选择的系统输出“响应”(responses)值的集合,以及该“情景”的描述性名称。一个PAN“项目”(project)就是一个由许多“情景”构成的集合,可以将其保存为一个PAN文件(扩展名为.pan)供以后使用。为不同“情景”定义的程序文件(.p)可以是同一个程序文件,也可以由不同的Arena模型(.doe)文件产生。不难看出,读者可以选择模型中的变量和资源容量作为“控制”变量,可以选择模型输出的内容(由Arena生成)或者读者在Variables中自定义的其它变量作为“响应”。一旦用户定义好“情景”,PAN就会根据用户为每个“情景”定义好的控制变量的集合,带入那些所选定的变量值去运行仿真(如果愿意的话用户可以选定所有控制变量值),并且对应每一个“情景”的控制变量值给出相应的输出响应结果, 所有结果被列在一个表中。这些工作也可通过以下操作来完成:用户将每个“情景”中的不同控制变量值依次代入Arena模型并“手动”运行仿真。很显然, 在PAN中操作更容易、更快捷,并且能够对结果进行有效的统计比较。为了高效使用PAN,用户在建立自己的模型之前就要考虑哪些输入参数是为了定义不同的情景而需要改变的,并确保在模型中通过Variables定义它们,或在Resource中将其定义为容量(capacity),这样才能在PAN的“情景”中作为“控制”变量被选定。启动过程分析器后,可以通过File New(或者Ctrl+N或 )创建一个新的PAN项目,或者通过File Open(或者Ctrl+O或)打开一个先前保存过的项目文件(文件扩展名为.pan)。PAN只能一次打开一个项目窗口,但是用户可以同时运行PAN中的多个例子。当为项目增加一个新的“情景”时,只需在指定位置双击打开“情景属性”(Scenario Properties)对话框,在此对话框中用户可以为“情景”命名并在Tool Tip处填写说明性文字,并在Program File处把这个“情景”与已存在的某个程序文件(.p)联系起来(可使用Browse按钮来搜寻你所需要的.p文件)。本节中用于PAN实验的是模型6-4,除了将Statistic 数据模块中Output File处填入的Daily Profit. dat删掉之外,它与模型6-3基本上是相同的,因为PAN可以自动跟踪这些数据,故而将它们写到读者自己定义的文件中只是浪费时间。此处仍然对每种“情景”做100次重复仿真。首先检验这个模型(Run Check Model或F4键或按钮),这样就生成了Model 06-04. p文件,并将它选作此处的程序文件。如果之后读者想要编辑这些内容,只需右击情景所在的行并选择Scenario Properties即可。为了给这个“情景”选择“控制”变量,右击其所在的行(不要右击该行的左边缘),或者右击顶部的Scenario Properties标签,然后选择“插入控制”(Insert Control)调出一个对话框,其中包含一个可扩充的树状结构,在这个可扩充树中包含有资源(resources)、系统变量(system)(重复运行的次数及长度)以及用户自定义变量(User Specified)中可能的控制变量;单击任何一棵树的“+”标记可以详细显示它的各条目,从而用户可以双击选择任何输入,使它在“情景”这一行中显示为一个控制变量。在本模型的实验中,选择了3个控制变量,它们都来源于用户自定义的变量:n Max Load,在第6.4节中已讨论过,它使得我们可以更改每天允许预约的工作小时数。n Max Wait,在每一天中我们可接受的就地等待服务的最大车辆数。n Wait Allowance,根据预定服务时间(book time)确定所承诺的服务时间时所引入放宽因子(小时)。一旦选定了所有需要的控制变量,可在本行或者顶端再次右击,选择“插入响应”(Insert Response)来选取所需要的响应项;本例中从用户自定义组中选择了两个响应,Daily Profit和Daily Late Wait Jobs(后者揭示了不能在承诺的时间内完成的“等待”工作的平均数量,这一指标必须维持很低以保证客户的满意度)。控制变量显示的是模型中已经定义好的值,但是读者在PAN项目窗口中的“情景”所在行中可以很容易地编辑它们的值(这就是PAN用处的体现),因而执行相应情景时可以很方便地修改它们。在基准方案情景中,控制变量值与原始模型中的相同(分别为24,5,1)。因为还未曾运行这一情景,所以响应栏的值是空白。图6-4给出了PAN项目窗口的部分内容,这是在定义完此情景并将项目保存为Experiment 06-01. pan 后的窗口(之所以称之为实验,因为它实际上确实是一个设计好的实验过程)。读者可以重复以上步骤来加入更多的情景。然而,如果它们与以前已经定义的情景相似,则可以先复制(在左边的情景编号处右击,并选择“复制情景”(Duplicate Scenario),然后在复制的情景中编辑即可。我们可以随机改变控制变量的输入,来观察它们如何影响输出响应。通过PAN很容易做到,但那样我们却不能系统地学到很多知识。而且,需要记住的是做仿真归根结底就像是在化学实验室中做实验一样(只是它不会产生难闻的气味),所以我们可以应用实验设计的原理,对本模型设计一个系统的实验,通过一定的方式(这就是设计)来改变控制变量取值(在实验设计中称为因子),从而观察它们如何影响输出响应(在实验设计中我们也这样称呼它们)。对初学者来说,如果实验中每个因子(控制变量)有两种水平,“低”或者“高”(传统上分别用“-”和“+”表示),这里有k=3个因子(控制变量),就可以得出所有高低两个水平值的2k种组合方式,它被称之为2k 因子试验设计问题,在本例中包含2k=23=8种不同的情景。虽然因子(控制变量)的高低水平值的选择往往是主观的,但是可以尽量从实际问题出发并拓展,因此我们选定Max Load的高、低水平值分别为40、20,Max Wait的高、低水平值分别为7、1,Wait Allowance的高、低水平值分别为2、0.5(注:对每个控制变量而言,基准方案的值包括在此范围内)。每种情景都可以描述成三种“-”和“+”符号的组合序列;比如,“+-+”表示了Max Load = 40 ,Max Wait = 1, Wait Allowance = 2的情景。图6-5给出了9种情景的PAN项目,其中也包括基准方案情景。要运行一部分或全部情景,可以通过单击每行最左列来选择本行(Ctrl+ Click可以增加选择的行,或者Shifts+ Click来选择相邻数行)。之后选择Run Go(或者F5功能键或者按钮)。图6-6给出了运行这9种情景后的结果,在Rresponse列中给出了每种情景重复仿真100次的均值。观察Daily Profit列,可以清楚地看出Max Load增大时Daily Profit值也相应提高,当Max Load降低时也随之降低。但是Daily Profit与Max Wait和Wait Allowance之间的变化关系却不显著。观察Daily Late Work Jobs列,却很难看出哪一个控制变量的变化对输出响应有明显的影响。上图中的结论是基于对每种备选方案的仿真运行次数都多于1次得到的(读者应该还记得,在模型文件中每种情景我们设置重复仿真次数为100次,因为我们没有选用“系统控制变量”(System Controls)里的Num Reps项来控制重复仿真次数,所以对每一个情景PAN都运行了100次重复仿真),当然,如果能够知道这些数据的统计有效性那就更好了。为研究Daily Profit值的统计有效性,选择对应的列(单击Daily Profit单元格上方的Response标签,选中这一列的结果),接着选择Insert Chart (或,或在本列中单击右键并选择Insert Chart)。这里有许多选项可选,本节只完成其中的一种,读者可以通过Help的帮助文档来学习其余的。在Chart Type对话框里,选择Box and Whisker(盒状图),单击Next,选择Use these Responses下的Daily Profit,再点击Next并且接受这个(第3个)窗口的缺省值。在最后一个(第4个)窗口中,选中Identify Best Scenarios方框,并确保选择了Bigger is Better这一项(“越大越好”,为缺省值),并且在误差容限(Error Tolerance)处填入0(不管那里的缺省值是什么)。这些工作都完成后,就会看到类似于图6-7中出现的内容。若读者想要使图更大一些,可以选中图片然后拖动四周的边框即可。如果右击图片,选择Chart options,接着选择Data标签,读者就会看到一个表格,在表格中给出了每一种情景的除均值外的数值结果,如多次重复仿真后的最小值和最大值、95%置信区间半长、以及置信区间的最小和最大边界值等。在图中,垂直方向上的方框给出了每种情景下Daily Profit期望值的95%的置信区间,红色的(奇数项情景)与蓝色的(偶数项情景)区间相比,在Daily Profit期望值这一项上明显更好(指出颜色是为了使单色印刷的书中内容更生动)。更准确的说,这也意味着“红色的”情景所构成的子集合,在Daily Profit期望值方面,有95%的可能包含了真实的、最佳的情景。如果选择的Error Tolerance大于0,则“红色的”子集合有95%的概率包含最佳的方案、或者误差容限范围内的最好方案。必须记住,这些结论是基于每种情景所定义的重复仿真次数所得出的(在本例中,定义每种情景重复仿真100次,但是也可以为不同的情景定义不同的重复仿真次数);如果读者想要使被选定的(红色)集合变得更小,可以增加这些情景的重复仿真运行次数,或者读者也可以将Error Tolerance定义为一个正数,这意味着在这一个数量范围内就算所选择的情景比真正最佳的方案差也是可以接受的。所以使用正的Error Tolerance可以减少被选定的情景数量,不过要冒一点风险,即所选择的情景可能比真正最佳的情景略差一点。这一选择过程的统计理论基础,是2001年由Nelson, Swann, Goldsman, 和 Song所建立的。当然,读者还可以做一个类似于图6-7的关于Daily Late Waiting Jobs的输出响应图(建议大家这样做)。然而,这个图在控制变量水平如何影响输出方面,没有明显的意义。现在回到Daily Profit输出响应结果和图6-7,显而易见,影响力最大的控制变量(至少在这三个控制变量中)是Max Load,它的值越大则利润值越好。在图6-7中很直观地显示了这种关系模式,我们也可以计算出每种控制变量的主要影响(main-effect estimate),得到量化结果(可参看文献Law and Kelton 2000的第12章)。去掉Max Wait和Wait Allowance两个控制变量的影响(将它们固定为基准模型中的水平,即5和1),然后来研究Max Load单独发挥作用的情况,让它们取介于20和40之间更多的值(20,22,24,38,40)。为此,我们建立一个新的.pan文件(Experiment 06-02. pan),结果如图6-8所示。图中显示,利润上升到某一点后就开始下降,很明显,太大的Max Load起了负面的影响。由图中可以看出,将Max Load设置在30时可使利润最大化(图中红色与蓝色的底色显示,本实验的结果有统计显著性,即Max Load介于26和36之间时比其它情况更好)。仔细观察图6-8,在右上部的Daily Late Work Jobs输出响应栏,随着Max Load的增加也有增加的趋势,尽管不很明显。这从模型本身也能看出其含义 如果接受了越来越多的工作预约而又没有增加工作能力,那么因无法按期完工而被延误的等待作业数量显然会越来越大。在最佳的(利润最大化)Max Load处(其值为30),Daily Late Work Jobs是0.908,对于每天只允许有5项就地等待服务的工作来说,这个值太大了一些,因为这样每天几乎都有一项工作不能准时完成。虽然主要目标是提高利润,但是我们不能接受Daily Late Work Jobs太大的情况(比如大于0.75),因为太多的延期交货会激怒并失去部分客户。如果我们能保持在Daily Late Work Jobs不超过某个值(比如0.75)的情况下,使得利润最大化,那不是更好吗? 6.6节将介绍如何来做。6.6 用OptQuest寻找最佳备选方案 在满足Daily Late Work Jobs输出响应不超过0.75的条件下寻求Daily Profit最大值的过程中, 6.5节所评价的那些情景只不过是无数可能性中的几种罢了。假定读者可以自由地选择关于Max Load、Max Wait和Wait Allowance(在所定义的范围内)可能取值的组合,因为共有3种输入控制变量,这一过程就可以看作是在三维空间中寻找可以使Daily Profit最大的3维向量。由于存在许多种可能的组合,因此对它们全部评估是不现实的。应该从哪里开始着手呢?一个合理的位置就是迄今为止所知的最佳点。在图6-6和图6-8的所有情景中,很显然当Max Load = 30、Max Wait = 5和Wait Allowance = 1时,Daily Profit = 581为最佳点;然而此时Daily Late Work Jobs的值却很大(为0.908,现在要求这个值最大不超过0.75),所以这一情景不可接受。再观察图6-6和图6-8,寻找一个Daily Late Work Jobs小于0.75、而同时Daily Profit值很高的情景,看来基准方案(Max Load = 24、Max Wait = 5和Wait Allowance = 1,此方案的Daily Profit值为492,Daily Late Work Jobs略小于0.70)是迄今为止所发现的最好的可接受的情景。(这一结果是否令人沮丧?是否这意味着在第6.5节中我们是在浪费时间呢?答案是否定的,因为我们也学到了许多关于三个控制变量如何影响两个输出响应值的知识,现在我们要寻找一个更好的方法。)所以我们在3维空间中,从代表基准方案的点出发开始搜索。接下来该向哪个方向搜索呢?这不是一个容易回答的问题。许多人在这方面做了很多年的研究工作,并且建立了解决这一问题的许多方法。Arena中带了一个从OptTek System Inc.购置的名为OptQuest的软件包,它应用了禁忌搜索(tabu search)和散点搜索(scatter search)等启发式算法,在输入控制变量空间中巧妙地移动,以达到快速、可靠地向最优点接近的目的。OptQuest在一定程度上与PAN类似,它们都“操纵”Arena模型的运行;区别在于PAN是模拟用户指定的那些情景,而OptQuest则自己决定对哪些情景进行仿真运行,并且这些情景以一种迭代的方式向最佳的输入控制变量组合靠近。欲了解关于OptQuest如何与Arena协同工作的更详细的内容,请查看Help Product Manuals OptQuest for Arena Users Guide。要运行OptQuest for Arena,首先激活所要研究的模型的Arena窗口(此处用模型6-4),选择Tools OptQuest for Arena来打开OptQuest应用系统窗口,接着通过File New(或者Ctrl+N或 )打开一个新的文件。这样就打开了模型中现有控制变量(输入参数)的“控制选择”(Control Selection)窗口,其中包括资源水平(没有在Schedule中定义为可变容量)和变量。沿着左列向下,选择(勾选上那些对应的方框)Max Load、Max Wait和Wait Allowance,接着单击左下方的Reorder按钮将这些条目提到顶端以便后面使用(OptQuest不会改变未勾选上的输入项,它们会保持模型中既定的值不变)。每行的建议值(Suggested Value)就是用户提供给

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论