计算机模拟

在数字计算机上对一个复杂系统的行为进行大量的动态仿真或重演,从而获得刻画该系统特征的数量指标,为决策过程提供依据的一种方法。模拟是利用模型来研究某些现象的性质的一种方法,自古有之。在中国几千年前就出现的弈(围棋)及中国象棋,就是模拟古代战争的一种游戏。18世纪中期,著名的布丰问题(见概率),用投针试验的结果来计算π值,就是利用大量的重复试验的所得结果来进行数值计算的方法。19世纪70年代,德国在普法战争中应用沙盘作业进行模拟。20世纪40年代才出现计算机模拟。1944年前后,J.冯·诺伊曼和S.M.乌拉姆在原子弹的研究中利用计算机模拟中子在裂变物质中随机扩散的某些概率计算问题。他们把这种基于大量的统计试验的数值计算方法,称之为蒙特卡罗法。以后,由于高速度大容量的电子计算机的制成和使用,促使计算机模拟的更大发展而成为运筹学的一个独立分支。

计算机模拟已在生产管理、工程技术、军事演习科学实验、财政经济以及社会科学中都得到了广泛的应用。为便于在数字计算机上实施模拟,自60年代起就开发出了多种通用软件,如模拟语言 GPSS、SIMSCRIPT和SLAM等。但是,计算机模拟所获得是一些不精确的统计量,若要使其精度提高一个数量级,则其模拟次数将是原来的100倍,要付出大量的时间,这是它的最大弱点。因此,在可以用解析方法求解时,通常就不使用计算机模拟。计算机模拟主要应用于对大型复杂系统进行分析,例如,预测经济发展和市场需求、预测地震的后果、大量的设计方案的比较和选优、估计设计参数和评价建成后的效果、预测港口(铁路)的运行情况、代替费用高昂或有危险性的各种试验,等等。

模拟的基本步骤

主要包括:

(1)系统分析,确定系统的边界和模拟的目标函数以及可控变量,找出系统的实体及其属性与活动。

(2)构造模型,使用一个逻辑流程图对实体、属性和活动之间的关系进行描述。在构造模型中控制模拟动态进程,有两种方法:一是以等间隔步进,如年、月、日甚至微秒,并称之为等步法。一是按一个事件所延续的时间步进,如一个工件的加工时间,并称之为事件步长法。一个模型既要确切真实地反映系统本身,又要作些必要的抽象和简化。

(3)模似的实施,根据所建立的数学模型,在计算机上进行大量的重复试验,把多次试验的结果经过统计处理以获得所需的信息。这一步的主要工作是编制和调试程序。目前已有多种通用模拟语言,编写程序很简便。

(4)结果分析,即把输出的结果与理论分析或相似系统的结果进行比较,验证模型的正确性。为了提高模拟结果的精度,往往使用缩小方差的方法,如重要抽样法、对偶变量法、控制变量法和分层法等。

随机数的产生方法

由于大多数现实系统中的量都具有随机性,在模拟时就需要产生这些随机变量的独立的实现值。在理论上,可以借助于直接抽样、函数变换、舍选补偿、渐近和组合等方法,用一种具有连续分布的随机数产生其他任一分布的随机数。

数学方法产生的均匀随机数称为伪随机数。使用[0,1]上的伪随机数产生其他分布随机数,有以下的方法:

(1)逆变换法,设u为[0,1]上的伪随机数,F(x)是随机变量X 的连续分布函数,记 F_1F 的逆函数。可以证明,F_1(u)是具有分布函数F(x)的随机数。用此方法可以产生指数分布随机数。它的分布函数是,令,作逆变换

x是参数为λ的指数分布随机数。

(2)渐近法,用它可产生正态分布随机数。根据中心极限定理,若 u1u2,…,un是[0,1]上的独立均匀随机数,当n充分大时,随机变量

渐近于N(0,1)。x是一个标准正态分布随机数。实用中n=5就有足够的精度。

(3)组合法,利用简单的随机数来组合一个所需的随机数。如用伪随机数连乘,可以得到一个泊松分布随机数。设u0u1,…,是[0,1]上的伪随机数,若k使得

k为以 λ为参数的泊松分布随机数。

(4)经验分布或称直方图的随机数,设X有分布 P{X=xi}=Pi>0,i=0,1,2,…,其中xi是递增的。记

,则xjX 的随机数。产生随机数的方法还有舍选法、复合抽样等。

物理方法、随机数表法、计算机移位法以及数学方法都可用来生成均匀随机数。在计算机上产生伪随机数的算法应该简单。产生的伪随机数要具有良好的随机性、均匀性和独立性,这可由统计方法进行检验。此外,随机数序列要具有长的循环周期。由于计算机所表示的数受其字长的限制,因此一个好的算法就应使伪随机数重复的周期尽量的长。最常用的算法是乘同余法,,以及混合同余法,m为所用二进制计算机的尾部字长,参数αb以及种子数x0是根据方法不同而不同。如乘同余法, 令α=4μ+1,x0=2δ+1,μ 和 δ为正整数,则其最大周期为

参考书目
  1. J.J.Moder,et al.ed.,Handboo噚 of Operations Research,Van Nostrand Reinhold Co.,New York, 1978.
  2. G.S.Fishman,Principles of Discrete Eveut Simulation,John Wiley & Sons,New York,1978.