1、第 1 章 什么是仿真仿真(simulation)是模仿实际系统行为的一类广泛方法和应用手段,通常借助计算机和相应的软件来实现。事实上, “仿真”一词具有非常宽泛的含义,其思想可应用于各种不同的领域和行业。目前,随着计算机和软件前所未有的高速发展,仿真变得越来越普及和功能强大。本书为读者较为全面地阐述了仿真的一般理论,特别讲述了一种专用仿真工具软件Arena 的使用。本书第 1 章和第 2 章介绍了仿真的一般思想和逻辑,第 39 章着重讲述Arena 的使用。然而,我们并不准备把本书作为包罗 Arena 一切的一本完整的参考手册(Arena 的在线帮助系统具有此项功能) 。第 10 章告诉读者
2、如何把 Arena 与外部文件及其它应用程序相集成,并对 Arena 的一些高阶功能进行了总结评述;第 11 章介绍了如何应用Arena 对连续系统和离散/连续混合系统加以建模;第 12 13 章讨论了有关如何对仿真试验进行计划、如何对结果加以解释、以及如何管理仿真项目等问题。附录 A 是一个为华盛顿邮报实施的仿真项目的详细记述;附录 B 给出了近期 “Arena 建模学生竞赛”中几个相当复杂的问题,该竞赛是由美国工业工程师协会(Institute of Industrial Engineers)与Rockwell 软件公司(先前的 System Modeling 公司)联合举办的;附录 C
3、提供了仿真所必须的概率论与数理统计知识的快速复习;附录 D 描述了 Arena 用到的各种概率分布;附录E 提供了软件的安装指南。阅读完本书以后,读者应能应用 Arena 对各种系统进行建模,并能成功且有效地从事仿真研究。本章讲述了仿真的一般概念。1.1 节提出了一些应如何研究系统模型的一般思路,并给出了几个例子说明仿真在什么情况下有用。1.2 节包含了有关仿真及其普及性的更具体的信息,介绍了仿真的长处(及一项短处) ,并尝试对人们所作的各种仿真加以分类。 1.3 节简要介绍了实现仿真的几种方式。最后,1.4 节追溯了仿真手段和应用场合的发展变化。阅读完本章后,读者应能明确仿真所适用的场合、仿
4、真能完成什么功能、以及 Arena 是如何帮助你完成的。1.1 建模像大多数分析方法一样,仿真也涉及到系统和系统模型。因此,本节首先给出了一些系统模型的例子,并描述了几种如何通过研究这些模型以了解相应系统的模式。1.1.1 对什么建模?计算机仿真需要处理系统模型。一个系统(system )指的是实际存在或计划中的一个设施或过程,例如: 一个制造工厂,含有机器,人员,运输设备,传送带以及存储空间。 一个银行,含有各种不同顾客,银行员工,以及各种服务设施,如柜员窗口、自动提款机(ATM) 、贷款服务台、顾客保险箱等。 一个机场,包括离港旅客登记,通过安全检查,前往登机口,登机;离港班机等待牵引拖车
5、与跑道;到港班机等待跑道,登机口与地面服务人员;到港旅客前往行李提取处等待提出行李;行李搬运系统处理延迟、安全以及设备故障等问题。 一个配送网络,包括工厂、仓库、以及运输通道。 医院中的急救中心,包括医务人员、急诊室、急救设备、救护物资、以及病人运送工具。 器械或办公设备的区域服务运作,包括散布在一个地理区域中的潜在客户,各种不同资质的服务技术人员,装运各种零件与工具的卡车,以及一个中央仓库和调配中心。 一个计算机网络,包括服务器、客户机、磁盘驱动器、磁带驱动器、打印机、联网设备、操作员。 一个高速公路系统,包括路段、交叉口、控制设施、通行车辆。 一个中央保险索赔办公室,包括各种办公人员和设备
6、,完成接收各类申请文件、审查、复制、存档、寄送等工作。 一个法院审判系统,包括法庭、法官、辅助人员、缓刑监督官、假释官、被告方、原告方、各种条例等。 一个化工厂,包括存储罐、输送管道、反应罐、装运成品的铁路液罐车。 一家快餐店,包括各类员工、顾客与设施。 一家超级市场,包括存货控制、收款与顾客服务。 一个主题公园,包括娱乐设施、商店、餐馆、工作人员、游客与停车场。 应急人员对灾难事件的响应。人们通常通过研究一个系统来度量它的性能、改进它的运行、或对未来系统加以设计。而系统的管理人员或控制人员也希望在日常运作中随时能够得到帮助,譬如在一个工厂中当一台重要设备出现故障时应如何应对。我们甚至了解到有
7、一些管理人员要求使用仿真却并不真的关心最后能得到什么结果,他们的主要目的在于了解他们的系统是如何工作的。在建立仿真模型之前,必须要定义系统的工作过程,而仿真分析人员发现,通过对系统工作过程的分析经常可以透彻地理解在哪些方面需要加以改造。部分原因是由于很少能有某个人负责了解整个系统是如何工作的。在机械设计、物料搬运、加工等方面分别有各自的领域专家,但在系统的日常运作方面就没有了。所以在阅读本书时一定要明确一点,仿真绝不仅仅只是建立一个模型并完成一个统计实验。在实施仿真项目的每一步都必须要从中了解必要的信息,你在整个过程中所作的每一个决策都会极大地影响到研究结果的意义。1.1.2 能直接对实际系统
8、作实验吗?对某些系统而言,可以直接对实际系统加以实验研究,例如: 某些城市已经在高速公路系统安装了进口坡道交通信号灯,通过对不同的信号顺序加以实验研究,以找到一种理想的设置方式,使高峰时段尽可能平稳和安全。 超级市场的经理可以尝试几种不同的存货控制和收款出口人员安排策略,以了解什么样的组合形式最能赢利,而且能提供最好的服务。 航空公司可以检验一下提高自动检票机的使用率(可以让雇员们要求旅客使用它们)能否提高检票速度。 可对一个计算机设施尝试不同的网络布局与作业处理优先级,以检验其是如何影响计算机利用率与任务处理时间的。这种方法当然有其不可比拟的优点。如果可以直接对系统某些方面加以实验研究,同时
9、保证系统其它方面不发生显著变化,则毫无疑问可以得到正确无误的结果,而且不必担心模型是否按要求忠实模仿了实际系统行为。1.1.3 不能(或不应)直接对实际系统作实验的场合在许多情况下,直接对实际系统本身加以实验研究是十分困难、昂贵、或完全不可能的。 显然,当一个工厂尚未建起时是无法对其设施布局方案加以实验的。 即使在已有的工厂里,把设施布局变成要进行实验研究的布局方案(可能根本就无法实现)也将会是非常昂贵的。 一家银行若要考察关闭附近一个分行会带来什么影响的话,它也不可能真的去关闭它,因为再次恢复营业恐怕就不大可能会重新吸引到原来那么多的顾客了。 在机场尝试一种新的检票登机程序时,若该程序发生了
10、不可预见的问题,将会造成大量乘客误机。 在医院里将急诊室人员随意安置显然更不可能。在以上场合中,只能建立一个模型(model)作为替代品来研究有关的系统,并提出相关问题:如果这样做或那样做,系统会发生什么?如果出现某些无法控制的情况,系统又会怎么样?在这种情况下,不会出现人身伤害,而且可以对 模型在很大范围内随意探索各种可能性,从而找出一些在真实 系统中你可能根本无法去尝试 的方案。不过,在建立模型时必须充分小心和细致,这样才能使从模型中了解的情况与对系统直接研究得到的结果保持一致 1。这种一致性的验证过程称为模型 确认(validity) ,将在第13 章讨论。1.1.4 物理模型模型可分为
11、很多种。模型一词也许最早就源于实际系统的物理复制品或按比例缩放实物模型,有时也称为形象(iconic)模型。例如: 人们经常对物料搬运系统制作一种桌面实物模型(tabletop model) ,实际上就是各种设施的微缩版,与电动火车玩具没什么差别,可用于研究布局、车辆路径、以及运输装置等各种不同方案对系统性能的影响。 Swart 与 Donno(1981)描述了一个建在仓库中的同比例快餐店实物模型,用于对各种服务程序进行实验研究。事实上,多数大型快餐连锁企业如今都在其公司办公楼内建有同比例快餐店,用于对新的产品和服务加以实验研究。 核电厂会建有模拟控制室用于培训操作人员。 实物飞行模拟器被广泛
12、用于飞行员培训。还有一种飞行模拟计算机程序,其形式跟计算机游戏一样,是一种在计算机内部执行的纯粹的逻辑模型。此外,还可在实物1 或者说基本一致。飞行模拟器上安装计算机显示屏来模拟机场道路,这样的复合模型既有实物模型的成分也包含了计算机仿真模型的内容。尽管物理模型在许多领域具有重要作用,但本书将不作更多介绍。1.1.5 逻辑(或数学)模型本书所研究的模型属于系统的逻辑模型(logical model)或数学模型(mathematical model) 。这种模型由一系列定量、结构化的近似公式和假设条件组成,用以描述系统当前或未来的行为。逻辑模型通常可用计算机程序来表示,通过程序运行来解答有关模型
13、行为的各种问题。如果模型有效表示了真实系统,通过分析模型运行结果也将能了解实际系统的行为。由于我们所处理的仅仅是计算机程序而不是实际系统本身,因此只需通过简单地改变程序的输入和形式就可以得到关于模型及系统的诸多问题的答案,这一过程非常容易、廉价且快捷。这样一来,我们就把可能的错误留在了计算机分析阶段,而不会带到实际系统中。像其它众多领域一样,近年来计算机威力的奇迹般发展(以及计算成本的持续下降)大大提高了对逻辑模型进行计算机分析的能力。1.1.6 如何处理逻辑模型对目标系统建立完毕一个有效的逻辑模型所需的各种近似公式和假设条件之后,接下来就要对模型进行处理和分析。如果模型足够简单,则可以应用传
14、统的数学工具(如排队论、微分方程、或线性规划等)求取所需的结果。这是一种很理想的情况,因为可以得出相当简单的数学表达式来回答相关问题,很容易进行数值评价;对这些公式进一步分析处理(例如对可控输入参数求偏导)可以得到对问题更为全面透彻的理解。即使不能求得一个简单的解析表达式,而只是得出一个求取问题数值解的算法,依然还是能够获得问题的精确解答(最多存在一点儿舍入误差) ,而不是充满不确定性的估计值。但是,人们所建模研究的绝大多数系统都相当复杂,有效的模型 2也相当复杂。对于这些模型,可能无法解出精确答案,只有依靠仿真来解决。2 也可以对一个复杂系统建立简单(或许简化)模型,但这个模型既有可能是无效
15、的。如果继续处理和分析这一模型,虽然也会得到完美、简洁的答案,但可惜问题本身是错误的。这种错误有时被称为第 III 类错误 求解一个错误的问题(统计学中已定义过第 I 类和第 II 类错误) 。1.2 计算机仿真计算机仿真(computer simulation)指的是一类通过数值评价手段来研究各种不同的实际系统模型的方法,其评价过程借助了专门软件来模仿系统的运作或特征(通常随时间变化) 。从应用的角度来看,仿真是一个设计和建立实际系统或设想系统的计算机模型的过程,其目的是通过数值实验来更好地理解系统在给定条件下的行为。尽管也可以用它来研究一些简单系统,但只有在研究复杂系统时,其威力才能真正得
16、以充分发挥。虽然仿真可能不是研究系统模型的唯一工具,但绝对是常用方法。这是因为为了忠实反映实际系统,我们能够建造出非常复杂的仿真模型,而且能够对其进行有效的仿真分析。而采用其它方法建模,则在对模型加以分析时可能需要对问题作出很强的简化假设,这将会给模型的有效性带来问题。1.2.1 流行与优势在最近二、三十年中,仿真一直被誉为最流行的运筹学工具: Rasmussen 与 George(1978)曾向 Case Western Reserve 大学的运筹学系硕士研究生做过调查(因为该系建系时间较长,所以接受调查的学生有很多) ,询问他们毕业后感觉最有价值的方法。排在前四位的分别是统计分析、预测、系
17、统分析、以及信息系统,所有这些都是非常泛的大类。接下来排的就是仿真,其排名比线性规划与排队论等其它传统运筹学工具高得多。 Thomas 与 DaCosta(1979)向 137 家大型公司的分析人员提供了一份分析工具名录,请他们标出所使用过的工具。统计分析排第一,93%的公司使用过(很难想像竟会有大公司不用它) ,接下来就是仿真(84%) 。再次得出,仿真比线性规划、网络计划(PERT/CPM) 、存储理论、以及非线性规划等应用广泛。 Shannon,Long,与 Buckles(1980)对美国工业工程师协会(即现在的工业工程师协会)运筹学分会的会员做过调查,发现在他们所列出的工具中,仿真在
18、实用性和趣味性方面均排名最高。而在熟悉度方面,仿真仅次于线性规划,排第二,这表明仿真在学术圈中也得到了很高的重视。 Forgionne( 1983) ,Harpell ,Lane,与 Mansour(1989) ,以及 Lane,Mansour,与Harpell(1993)均提到,在大公司从业者所使用方法的应用方面,统计分析用得最多,仿真位列第二。可见,虽然在学术圈中,仿真排在线性规划之后,但这只不过是因为线性规划教得比仿真多;而在实践中,仿真无疑用得比线性规划多。 Morgan(1989)考察了很多类似以上的评论,得到结论为:不断地发现在“很大强度”地使用仿真。即使在运筹学被最少报道使用的行
19、业(传送机) ,仿真也被列为使用最多的工具。仿真之所以能如此流行,主要是因为它能处理描述复杂系统的极其复杂的模型,这使它成为一个极为有力的通用工具。仿真越来越流行的另一个原因是计算机硬件性能/价格比的显著提高,这使得在几年前由于高昂的计算费用而不敢问津的事情得以实现。最后,仿真软件日益改善的能力、灵活性以及易用性,也使得这一方法从枯燥、易错、低层的编程活动领域走上了制定快速、有效决策的竞技场。正是随着计算机硬件与软件的高速发展,可以预计,如今仿真的普及性与有效性比前面调查披露的还要高。1.2.2 不好的消息当然,仿真也不可能是完美无缺的。由于实际系统受大量不可控及随机因素的影响,许多仿真模型的
20、输入存在随机性(stochastic)成分,这使得模型的输出也是随机的。例如,一个配送中心模型中会有服从特定概率分布的随机到达、离开、与批量,这些随机性会随着模型逻辑向后传播,使得产出量与系统滞留时间等模型输出项所描述的系统性能指标值也具有随机性。因此,运行一次随机仿真模型就像做了一次随机的物理实验,或对配送中心只做了某一天的观察 下一次你可能会看到完全不同的结果,即使你没有对模型作出任何改变。在很多仿真中,随着时间跨度变得越来越长(几个月而不是一天) ,大多数的平均结果会变得越来越稳定,但很难确定时间多长才算“足够长” ,以至于能使这些结果平稳下来。此外,模型或研究工作可能都要求仿真过程必须
21、在一个特定的时间停下来(例如,某家银行只在 9 点到 5 点营业) ,所以,为使输出变得平稳而延长仿真运行时间也是不合适的。因此,在设计与分析仿真实验时必须要认真考虑结果中的不确定性,尤其是模型中的时间跨度相对较短的情况下。本书将在后面章节中多次探讨这一问题,并介绍一些适当的统计设计与分析工具(有些工具是嵌入在 Arena 内部的) ,但其它更多的时候就要靠自己小心了。即便在仿真输出中存在不确定性,我们还是能处理、量化与减少它们。可以通过引入许多超级简化假设来彻底去除不确定性,这样能得到简单好看的模型,以及不带随机性的输出。不过,遗憾的是这种过度简化的模型很可能无法有效表示实际系统,而且这种模
22、型无效性带来的误差是无法度量和降低的。对我们而言,宁愿要一个正确问题的近似答案,也不愿要一个错误问题的精确结果(还记得第 III 类错误吗?)1.2.3 仿真分类仿真模型有很多种分类方式,不过一种有用的方式是按以下三个方面进行分类: 静态(static)与动态(dynamic):静态模型与时间没有关系,但在动态模型中时间却扮演着不可或缺的角色。将在 1.3.1 节介绍的 Buffon 投针问题就属于静态仿真,而在第 2 和第 3 章描述的小型制造车间模型则属于动态模型。绝大多数运行的模型是动态的,Arena 也是特意为它们而设计的,因此本书的注意力主要集中在这类模型上。 连续 (continu
23、ous )与离散(discrete ):在连续模型中,系统状态随时间连续变化,例如水库蓄水和放水、以及出现降水和蒸发时,水位的变化即属此类。而在离散模型中,仅在离散的时间点上发生变化,例如在制造系统中,零件会在特定的时间到达和离开,机器会在特定的时间出现故障及被修复,工人也会在特定的时间开始休息。还有的模型中,既有连续变化的成分,也有离散变化的因素,这种模型被称为连续/离散混合模型(mixed continuous-discrete model) ,例如在炼油厂中,储油罐中的压力是连续变化的,但会在离散时间点上发生间歇。Arena 可以处理连续、离散与混合模型,但本书主要篇幅着重研究离散模型,
24、只在第 11 章讨论连续与混合模型。 确定(deterministic)与随机(stochastic):没有随机输入的模型为确定型模型,严格预约时间与固定服务时间的运作过程即属此类。而随机模型中,至少存在一部分随机输入 例如在银行中,顾客的到达时间与服务时间都是随机变化的。一个模型中也可同时包括确定的和随机的输入成分,哪些属于确定型因素、哪些属于随机因素是建模时要考虑的重要问题。利用 Arena 可以很容易地处理确定型与随机输入,它提供了许多概率分布和过程用来表示随机输入。因为在现实中总会存在一些不确定性因素,所以本书绝大多数地方都会在模型中涉及到随机输入。如前所述,随机模型会得到不确定性输出
25、,因此在设计仿真实验和解释仿真结果时必须精心考虑。1.3 如何实施仿真确定了仿真类型后,接下来就要决定如何实施仿真。下面将讨论执行仿真的几种模式,包括软件的使用。1.3.1 手工仿真一开始,人们确实只能用手工进行仿真(第 2 章将给出一个手工仿真的例子,你会发现这一过程会有多么痛苦) 。在 1733 年左右,一个叫 Georges Louis Leclerc 的人(后来由于其在仿真方面的杰出才能而被封为 Buffon 伯爵)描述了一个用来估计 值的实验:如果向一个画有平行线的桌子上投掷针,针的长度为 l,平行线的间隔宽度为 d(d l) ,则可得到针与平行线相交的概率为 p=2l/(d)。图
26、1-1 显示了估计 值的这一仿真实验(别在家里尝试这一实验,至少不要用太大的针) 。图 1-1 Buffon 投针实验虽然这个实验看起来很简单(甚至也许觉得有些笨拙) ,但却具有大多数仿真所具备的一些共性: 目的是估计某个很难精确计算得出的参数值(本例为 ,在 1733 年可能真的不好计算) 。 最后得出的估计值不可能准确无误,也即会带有一定的误差,能搞清楚这个误差可能有多大就挺不错。 直观上感觉,投针次数越多(即 n 越大)误差应该越小,也即估计值可能越好。 事实上,可以作一系列连续实验,不断地把针投下去,直到可能的误差小到可接受的范围以内,这样就不必事先确定 n 值了。 只要预先做一些工作
27、,即使不增加投针次数也可能减小误差。把两根相同长度但不同颜色的针在中点位置焊成直角交叉形状,称其为 Buffon 十字架(Buffon cross) 。同样在桌面上画好平行线,然后向桌上投掷这种十字架。每投一次,就要分别记录各针与平行线相交的情况(可能两根针都与平行线相交,两根针和平行线都不相交,一根相交另一根不相交) 。这样可以得到 的两个不同估计值。直观上感觉(真高兴确实如此) “一根针与平行线相交”和“另一根针与平行线相交”是彼此负相关的,因此所得到的两个 值估计也是彼此负相关的。这两个估计值的均值同样是 的无偏估计,但在相同投针次数条件下,其方差要小于使用单针实验得到的估计值,这是因为
28、一旦其中一个估计值偏大,另一个估计值就可能会偏小(这实际上是对所谓方差衰减技术(variance-reduction technique)的物理模拟,更具体地说是其中一种对偶变量法(antithetic variate) ,有关内容将在 12.4.2 节中讨论。这看起来好想有点骗人,但却是一场公平的游戏) 。等后面遇到更加有兴趣和更有帮助的仿真问题时,我们还会回到这类话题上(若想更多地了解有关 Buffon 投针问题以及其它一些有趣的历史轶事,可参阅 Morgan,1984) 。在 20 世纪 20 年代和 30 年代,统计学家开始在数值实验中使用随机数机器和随机数表来帮助他们建立和理解统计理
29、论。例如,Walter A. Shewhart(质量控制的先驱)设计了一种数值实验,通过从碗中抽取标有数字的筹码来研究最早的控制图。Guinness 酿酒厂的雇员 W. S. Gossett 也做过类似的数值抽样实验以帮助他深入了解数理统计的内部世界(为保护他在 Guinness 酿酒厂的工作,他用假名“Student ”发表了其研究成果,并建立了在统计推断中被广泛使用的 t 分布) 。多年以来,工程师、物理学家与数学家使用过各种各样的手工仿真思想来解决各种千差万别的问题。1.3.2 用通用程序设计语言编程仿真随着 20 世纪 50 到 60 年代计算机的出现,人们开始利用通用程序语言(如FO
30、RTRAN)来编写计算机程序用以对更加复杂的系统进行仿真。还开发出了各种支撑软件包用于帮助完成各种例行程序,如表处理、模拟事件的跟踪、以及统计记录等。这种仿真方法具有很高的灵活性,且易于功能定制(无论是模型还是操作) 。但由于每次建模时都需要编写大量代码,因此极为枯燥痛苦,而且容易出错(此外,一点变动可能也会让你花相当多的时间重新建模) 。如果想详细了解离散事件仿真语言的发展历史,请参阅 Nance(1996)以及 Nance 与 Sargent(2003) 。1.3.3 仿真语言不久之后,出现了专用仿真语言(simulation language) ,如 GPSS、Simscript 、SL
31、AM以及 SIMAN,它们为多数人使用的各类仿真提供了一个更好的框架。仿真语言现已经变得非常流行,而且得到广泛使用。然而,人们还是需要花相当多的时间来学习这些仿真语言的特征及如何有效地使用它们。而且,使用者还不得不面对苛刻、严格的语法要求(随用户界面不同而有很大差异) ,即使是一个老手也不易应对。1.3.4 高层仿真器在这种情况下,人们开始研究并推出了高层“仿真器” (simulator) ,一种真正易用的产品。典型的仿真器具有直观的图形用户界面、菜单和对话框,用户可以选择仿真器提供的各种仿真建模构件,将其连结为模型,并在动画环境下来运行模型。不过,许多仿真器有相当严格的应用领域(如制造或通讯
32、) ,而且使用起来不是很灵活,从而对建立有效的系统模型有一定影响。有些人觉得这些高层仿真器在软件“食物链”结构中所处的位置太高,以至于为了达到“易于使用”的目的损失了过多的灵活性。1.3.5 Arena 所处的层次Arena 结合了高层仿真器的易用性和仿真语言的灵活性,如果需要,甚至可以与Microsoft Visual Basic或 C 通用程序语言相集成。Arena 提供了多种建模模板(template) ,在每个模板中含有许多用于图形仿真建模与分析的模块(module) ,将这些模块组合起来就能建出各种不同的仿真模型。为了方便组织和显示,各模块按类型组合在一个面板(panel )中,构成
33、模板。通过面板间的切换,可以很方便地找到所有不同的仿真建模构件集。绝大多数情况下,不同面板面板中的模块可以在同一模型中混合使用。Arena 通过图 1-2 所示的完整层次结构保持了建模的灵活性。在任何时候都可以使用Blocks 与 Elements 面板中的低层模块,而且有必要的话可以把其它模板中的高层模块与SIMAN 构件混合使用,这样可以具有与仿真语言一样的灵活性(Arena 实际上就是建立在SIMAN 仿真语言基础上的,而且涵盖了 SIMAN,有关 SIMAN 的完整论述可参见Pedgen,Shannon,与 Sadowski(1995) ) 。对于特定需求,如复杂决策算法或访问外部应用
34、程序的数据,可以通过用户自己编写 Visual Basic 或 C/C+程序段并嵌入模型来实现。所有这一切,无论建模层次多高或多低,都可以在同一个图形用户界面下实现。事实上,Arena 的模块是由 SIMAN 的成分构成的,用户可以针对各种系统建立自己的模块,并将其收集到自己的模板中。例如,Rockwell 软件公司(原先的 System Modeling公司)已经针对一般系统建模(即 Arena 模板,本书将着重介绍) 、高速包装、联络中心、以及其它一些行业建立了专门的模板。其他有些用户也针对各自不同行业建立了其公司自己的模板,如采矿、自动制造、快餐、森林资源管理等。按照这种方式,可以同时达
35、到建模灵活和易于使用的目的。尽管本书着重讲述如何应用 Arena 模板建模,但还是在第 10 章扼要介绍了如何建立自己的模块。此外,Arena 具有在同一工作环境下的动画显示能力,而且还对某些统计设计和分析提供了包括图形在内的整体支持,这是良好仿真研究的重要组成部分。1.4 什么时候使用仿真随着近四、五十年以来仿真语言与软件包无论在能力方面还是在成熟度方面的迅猛发展,仿真的实施方式和适用场合也发生了相应的变化。想要全面了解计算机仿真从早期开始的发展历程的话,可参阅 Nance 与 Sargent(2003) 。1.4.1 早期阶段在 20 世纪 50 年代末到 60 年代,仿真是很昂贵和非常专
36、业化的工具,通常只在大型企业需要进行重大投资时才使用。典型的仿真用户一般是钢铁与航空企业。这些企业一般会成立由 6 到 12 人组成的小组(大多数具有博士学位) ,利用现有的程序语言(如FORTRAN)来建立大型复杂的仿真模型,然后在大型计算机上运行。当时的运行费用约每小时 600 到 1,000 美元。有趣的是,如今大多数工程师桌子上的个人计算机比 60 年代大型计算机的功能强的多而且速度也快得多。1.4.2 成长阶段现代仿真的应用开始于 20 世纪 70 年代到 80 年代初。计算机变得越来越快速和便宜,很多其它行业开始意识到仿真的价值,尽管认识到这一点的主要还是一些大企业。不过在这段时期
37、,一般直到出现大问题时才会考虑使用仿真。此时仿真已成为许多大企业解决问题的工具之一,特别是在汽车行业和重工业,用来确定为什么会出现问题,以及问题出在哪里。一个例子是某企业建成了一条汽车装配生产线,其投资超过 1 亿美元,但却没有充分达到其预期生产能力。这条装配线是用来制造一种刚投放市场的车型的,这种车型的需求量很大 远大于该生产线当时的产出。管理层任命了一个 S.W.A.T 小组去分析问题所在,小组很快估算出每天所损失的潜在利润超过 50 万美元。于是,小组得到指示要“找出问题并设法解决” 。小组用了大约 3 周的时间建立起一个仿真模型并用于寻找问题,最后发现这个问题根本就没在一开始所设想的各
38、种可能问题之中。企业最终决定改造了那条装配线,产出也确实上去了,不过很遗憾,那段时间里它的竞争对手制造出了一种类似的车型,多出来的产品已没了市场。具有讽刺意味的是,在设计这条装配线时,还建立过仿真模型用以确定其可行性。可惜的是,由于有许多新的加工过程,因此在工程上需要依靠设备供应商来提供故障和产出情况的估计,而供货商的估计往往是过分乐观的。如果原来的设计团队能利用仿真对那些有疑问的数据做一个很好的敏感性分析,就有可能发现有关的问题,并在实施以前予以解决。在这一时期,仿真在学术界正式立足,成为工业工程与运筹学专业课程体系的标准组成部分。它在工业界越来越多的应用迫使大学更为广泛地讲授其内容。与此同
39、时,仿真开始进入定量商业研究计划,了解其潜在能力的学生和研究人员的数量及种类变得越来越多。1.4.3 近期阶段在 20 世纪 80 年代后期,仿真开始真正植根于商业领域。这在很大程度上归功于个人计算机和动画技术的出现。尽管此时仿真还是主要被用于分析出现问题的系统,但已有很多人开始要求在正式投产前进行仿真分析(但多数情况下还是太晚了,已不能对系统设计产生影响,不过它真的为工厂经理和系统设计人员们提供了一些机会能使其在经历中增加不少亮点) 。到了 80 年代末,许多大公司都已承认了仿真的价值,其中有些公司在批准任何重大投资前都要求要做仿真分析。然而,仿真在这一阶段还是没有达到普及程度,小企业很少使
40、用。1.4.4 当前阶段仿真真正走向成熟是在 20 世纪 90 年代。许多小公司也拥有了这一工具,而且开始用在项目的初期阶段 能产生最大影响的阶段。更好的动画、更容易的使用、更快的计算机、与其它软件包的方便集成、以及仿真器的出现,所有这一切促使仿真成为许多企业中的一个标准工具。尽管绝大多数管理人员愿意承认仿真能为他们的企业增加价值,但它还没有变成存在于每个人电脑中的一个标准工具。仿真的使用方式也发生了变化,在设计的早期阶段就已开始使用仿真,而且经常随操作系统的变化而不断更新。这使得仿真模型被很快用于系统分析领域。而且,目前仿真已进入服务行业,正被用于许多非传统领域。妨碍仿真成为更广泛、全方位应
41、用工具的因素,是建立成功仿真模型所需的大量建模时间和较高的技能。这可能也就是为什么你正在读这本书的原因!1.4.5 未来阶段近年来,仿真的发展速度不断加快,完全有理由相信它将不断快速发展下去,得到广泛接受。仿真软件利用新操作系统的优势实现了更强的易用性,对首次使用仿真的用户这尤为重要。如果要使仿真成为每台系统分析计算机中的重要工具的话,就必须要保持这一趋势。新一代操作系统还能够帮助仿真更好地与其它软件包(如电子表格、数据库及字处理系统)相集成。可以预见,仿真软件将来有可能与其它软件实现完全集成,包括在前端完成系统数据的收集、储存与分析的软件,和在后端完成系统控制的软件。互联网与企业内部网对企业
42、的经营模式产生了重大影响。实时的信息分享不仅成为可能,而且变得必不可少。目前正在开发能支持分布式建模、分布式处理、以及远程结果分析的仿真工具。不久,就能开发出一套企业范围的软件工具,使得所有雇员能够借助它们解决一些关键的(甚至日常的)问题。为使更多人能容易地使用仿真,今后还会开发针对性更强的仿真软件。这种软件包含有专门为相应行业或企业具体环境设计的建模构件,使分析人员能更容易地建立仿真模型。虽然这种仿真工具是针对具体应用环境的,但它们也能够对每个仿真项目所独有的任何系统活动建模描述。现在市场上已经有了一些这类产品,其应用领域包括通信系统、半导体、联络中心、以及企业流程再造等。如今,仿真对复杂系
43、统的设计或重新设计起着重要作用,经常需要处理复杂的系统控制问题,这就需要建立新的系统控制逻辑,并利用已开发的仿真模型来进行检验。今后要做的是用相同的仿真来控制实际系统(Wysk,Smith,Sturrock,Ramaswamy,Smith 与Joshi,1994) 。这种方法要求仿真模型保持当前状况,但当系统或产品随时间变化时又要易于对新的系统控制加以检验。当我们发展到这一步的时候,一个具体的仿真模型将不再是一次性的了,而会成为日常系统运作的关键组成部分。随着计算机与软件业的飞速发展,很难预计在遥远的将来仿真会变成什么样,现如今我们能看到的正在开发实现的新特征有自动统计分析、系统变更推荐软件、与系统操作软件完全集成的仿真、以及虚拟现实等。