以下是一些仿真疑问的澄清,对初学EXTEND的人员希望能有所帮助。全文地址 http://www.edgestone-it.com/suibi5.htm- p: ^+ h( w' l$ a
7 v1 E0 \ \" n H[引用请注明出处]; E/ E: ]# E n* L* B9 R
--------------------------------
# W: V7 Z T& c0 s3 E+ ]2 {, E
- m* Y8 n2 ]! w F: m系统仿真是影像制作吗?
8 g$ V3 j6 u' c9 E+ o5 g所有刚接触仿真或者听说仿真的人都可能都会产生这样的误解,就是把如何让模型更加和现实对象在质感、形体、行为的逼真再现放到了仿真要求的第一位。这样的想法是无可厚非的,这也是“仿真”这个词语所传递给任何人的一种无形的期望。但随着对仿真知识理解的进一步加深,如果还将仿真技术的终极目标放在外形的逼真上,那将是非常危险的,主要原因在于
5 x4 L5 F% Q$ J j% d) W(1)7 c/ K& b: M: o% q& t* }
市场上有另外很多软件,例如虚拟现实(Virtual Reality)和很多游戏软件,可以做得比现在任何一个仿真软件的感官效果都要好,仿真软 件整体而言在这个指标上处在劣势;
9 n6 {. L/ R/ `* f$ Q(2)1 X1 a K# T+ }
过分强调外观的逼真将使得仿真工程技术和管理人员必须要具备高超的影像制作能力,至少是集成影像制作的能力,这往往是他们力不从心的领域;
# |/ }; X: D. S$ `+ K(3)0 ^" x. m0 f0 y
仿真项目的周期一下子被拖长了很多,因为要花费很多时间在外形制作上,但除了具备演示功能之外,对项目最终的问题解决可能作用微乎其微,整个项目的性价比受到负面影响;
% k1 o! z( @9 s: h, {' `/ q% I. r(4)- e6 H4 d. X! z, H0 B% P
这种思维习惯无形之中排除了许多非常优秀的仿真软件,因为有些特定行业的仿真软件根本没有提供二维或者三维动画,直接是以EXCEL作为输入输出界面;
7 @7 I6 [$ N: D9 H3 e2 [' A(5)
: t1 `0 V8 A @0 I最关键的是,使得我们建立正确模型的难度增加,细节的取舍变得更加困难,过多的细节反而成为项目成功的障碍。
/ S# }% ?* _. d( i4 e大部分具备动画演示功能的仿真软件允许采用逻辑和界面分别制作的模式,也就是说,相同的逻辑可以通过改变显示布景,来表达不同的应用背景,比如说排队论中的 M/M/1模型,通过改变仿真的背景图来表示多种应用场合,例如洗车、快餐、加油站等等。这从一个侧面说明了仿真技术“透过现象看本质”的功效。/ ^# N$ u; `) T; }
, F" Q2 i. ?- m. p
. r5 l! q/ V# u( q系统仿真模型要和现实系统一一对应吗?
% a+ { b3 m1 Y5 |. e! x仿真是平衡取舍的技术和艺术。我们生活在一个现实的世界中,如果只是简单的、一一对应地在计算机中模拟现实的对象,我们充期量又多了一个还是充满不可解决问题的系统,一个是活生生的现实,一个是在计算机中的复制。仿真在解决问题时,需要有明确的目的,需要做审慎的取舍,需要做仔细的筛选,而不是漫无目标的模拟。- N% X. L8 P( ]# w! I
没有明确目标的仿真往往成功率会很低。就像模拟银行业务处理流程时,把银行中的沙发和植物模拟得惟妙惟肖对仿真的结果来说没有任何意义;在模拟生产系统时,如果关注的指标在于产品的制造周期,那么产品的成本信息就不需要包括在模型中。( Y9 C1 B1 ?) e( w
选择合适的仿真对象和抽象程度是应用仿真技术的难点。
3 w( H$ ^, Q e4 O$ ~ ) j3 [, C5 }7 x" H2 P
系统仿真对什么问题都适合吗?: p3 E7 N2 j8 W% J) t2 R# q- H9 @
4 W9 f% c% v+ Y9 M: H4 l4 b* S2 c在应用仿真的时候,我们需要知道仿真只是众多解决问题的工具之一。
/ M5 t) o e. _9 ~% u在评估动态系统的改进时,我们常用到3种类型的模型:1)评价模型;2)静态数学模型;3)仿真模型。6 I+ J- M* E& |8 g6 d
评价模型是以定性分析为主,以决策者个体或者决策群体的经验和判断作为决策依据。评价模型基本上不含有量化数据。8 V$ f6 U: F: l
静态数学模型依靠数学的方法描绘一个系统。一个系统的运作特征根据通过数学方程式的形式所描述出来。其他备选解决方案的就是通过对这个数学等式的再次运算获得,例如:
- C N6 Y* N6 ^. S(1)
3 g8 x; O+ O4 U X$ N4 D简单代数运算;
' c9 n! _1 ?' E& y(2)+ j0 Y: F+ V$ V( _
微分方程/方程组;
* I" g) j( m$ ~7 f# Y(3)
1 U. w+ X$ o' t) n线形规划;
/ S' ^9 a7 K6 w+ e" V(4)
5 d2 c1 f! [! k! Z+ e1 W, P其他可以用解析式表达的方法,等等。
! N& u7 G; X* P6 A% K6 ~2 b3 g大部分人对“建立模型”或者简称“建模”有一种陌生和距离感, 认为这是太理论、太学术化的东西。其实,很多人没有想过,当我们小时候开始学习 1+1+…=N的时候,我们已经开始了最广泛的建模。这个简单的公式可以代表我们看到的很多具体事物的抽象, 例如, 它可以描述天上肉眼可以看到星星的数量;可以描述库存的盘点,等等。因此,我们在生活中早已经在用一种或者多种方法来归纳我们所看到的现象,仿真技术无非是一种稍微复杂一点的方法。
2 s @; x2 n/ s- `- Z2 _有些时候,研究对象的结果是可以通过解析式的方式来表达,也就是说我们可以用符号的形式来用一个或者有限数量的公式来得到结果的精确解。例如,如果一个水库,每年的排污量是 X 吨,每年污水的流入量是 Y 吨,那么在第N年水库的总污物量是 min (0, (Y-X)N)。
$ \. I. W& _2 p; w无论X, Y, N具体是什么数值,我们只要带入到这个公式中,就可以得到确切的解。像这样的问题,我们不需要利用仿真来求解。/ Y* d3 Q* |% u0 J" X6 ~0 ], p5 \2 r
仿真模型本质上同样也是数学的模型,并且它也使用数字的等式的形式来描述系统的运作的特征。仿真模型与静态模型的区别在于仿真模型是事件驱动。事件的发生可能会改变等式计算中所使用的变量的值。在这里系统的表现及所得到的结果则是由将观察到的大量事件发生后得到的结果平均化而得出的。- x7 G5 M) A, H( ?
遗憾的是,在现实系统中,研究结果可以用静态数学公式表达的情况太少了。主要原因有
2 l: g8 A( X# ]. k0 r(1)7 M4 d9 a) X0 s) l! w0 v: v
复杂系统的各个变量之间关联是复杂的,很多时候是无法获知。例如,快餐店的顾客等待时间和客户到达频率之间是什么样的关系? 0 T7 g5 R7 |& ^6 Z3 l8 O
(2)
; j- ^# i2 c8 I; @( G复杂系统的各个变量之间关联虽然已知,但无法得到解析解,只能采用数值解。例如,在多重积分的求解过程中;9 s, ^7 z0 K! z3 Z+ ~- \/ ]
(3)4 x ?$ A$ f, j2 s* ~0 D P
复杂系统存在随机波动,使得整个系统成为具有不确定元素的随机系统。而这往往构成了仿真研究系统的主要部分。例如,在我们提到的水库排污系统,如果X、Y、N不是确定量,而是有一定波动的随机变量,那么,结果就可能不再是一个确切的表达式,而仿真成为可以应用的唯一方法。
* E; h3 U6 n0 o* u! p9 m! g+ v(4)0 K" E2 f& t% @4 V8 o8 v
复杂系统随时间变化,但变化的时间点又不可预知。这类问题的代表就是离散事件仿真。作为随机过程的一个主要研究工具,仿真扮演着模拟事件发生和协调系统状态变化的重要作用,而这些是无法或者很难通过一个明确的、闭合的表达式来表达。
( U, b! D4 r1 @+ Z& r4 N仿真技术,做为数值求解(和解析式求解对应)的一类重要方法,主要应用的系统存在以下一个或者几个特点:, i3 O8 J5 J( l* \. I) i$ _1 \& ]
(1)
' Y N/ b) N0 h" ~4 a: W9 \存在随机波动,或者需要研究系统的随机波动;: u/ S0 i* Z6 M7 ^& B' S9 ]
(2)
/ `2 ?, [ n/ k+ ~存在系统变量之间、变量和试验指标之间的关系无法用明确、闭合的解析表达式表达( R, t1 _( @- Z! d4 D
(3)5 U5 X5 T" [3 K$ k \ y
系统状态的变化是发生在离散的时间点上,而且时间点具备不确定性。4 ?( b- x: A& l
等等3 u8 ~, m6 r, H& O; j
其实这些特点,特别是第一条,几乎涵盖了现实世界中所有的系统。我们系统本质是随机的,也就是说我们无论怎样试图去测量我们的世界,这个世界就是没有办法精确的测量出来。7 P6 m. |( u7 {$ i
仿真是研究管理系统不确定性的非常有效的工具。4 F. J; ^ |/ j9 H
1 b* t( [) V& x2 k2 T6 J+ Y- A系统仿真项目如何起步呢?
9 ^3 B3 A5 g! o- [ 9 l' i) l2 N4 j: T
系统仿真中所说的复杂系统所包含的范围非常广泛,从宏观的范围可以包括
; l( q) M/ G/ A$ n* l, i(1)
. S( C9 L! M9 r生产和制造系统;
+ a) V7 r+ v4 K* _; [(2)
0 r. G+ r% B2 F: o Q9 W物流和供应链系统;
" k6 p4 _( J y! M3 p9 `( I(3)
! _1 {- w" Y) D$ D商业服务系统;
D# L7 b# F7 }& N% j(4)
% X9 R) Z+ z0 y: t+ T医疗系统;& v0 `: z: H: O; q* P4 V& ^2 C
(5)
' l+ j* S. C# b% R' s社会经济系统;4 K9 F* x, z) j- `
(6)1 |5 ]2 \4 Z2 @1 V2 P8 W
生态系统;等等* q7 B) `5 [/ W. u+ }+ f9 B) J
从微观的角度,在以上系统中又是由无数更小的系统组成。系统的划分和界定也没有固定的模式和内容,而是按照研究的需要来界定。2 H X$ X8 Y z0 M; T+ V- }8 M9 e! k
建立“系统”的概念和划分,是应用仿真技术很重要的必要条件。这个概念也许对于理论科研人员来说不是问题,但对于更广泛的仿真应用群体来说,搞清楚研究的对象似乎并不是一件很容易的事情。; r: D* M p, {; M# U( z/ l
当我们提到“系统”这个词语的时候,脑海中我们的空间位置已经在开始提升,开始俯视我们所考察的研究对象。我们可以在三万米、三十米或者更低的空中在观察和想象,不同的观察距离产生不同的视角、视野和细部特征。观察不同,建立的仿真模型自然也可能不会相同。
- [4 o2 Y: i# E. j. ]在仿真应用中,我们无时无刻不犯这样的错误,就是我们的观察距离在不停、没有规律的摇摆,像过山车一样起伏。这种错误的直接体现就是以模拟为导向的仿真,与之对应的是以问题为导向的仿真。
" D" v0 H1 _) R7 ], Z2 h/ |在以模拟为导向的仿真里,仿真的起点以这样的问题开始,“我们需要把立体仓库模拟一下”,“把生产线模拟一下”,“把物流系统模拟一下”,等等。这类问题的重心放在模拟上,而对模拟的目的表述很小。( I/ v. {9 ~1 v
而以问题为导向的仿真,仿真的起点是以类似这样的问题开始,“我们需要知道立体仓库的最佳容量是多少?”,“我们需要提高一下生产线的利用率”,“我们的物流系统需要提供客户订单的按时满足率”,等等。这类问题的重心放在目标上,而仿真模拟恰好是回答这类问题的一个可选的手段和工具。
- x' z- [4 f o! q3 Q6 ?" ]这两类问题的表述为什么这么重要,因为这直接反映了提问者(往往是仿真项目的发起人和出资人)的期望。如果仿真人员面对的是第一类问题者,我们需要做更多额外的仿真知识的普及,与用户进行更多项目期望的调整;否则,仿真项目很有可能得不到最终用户的认可,因为,在他/她的脑海中,“模拟”所代表更多的是一种视觉感官上的相似,或者说他们还不是很清楚仿真到底要解决什么问题,而追求视觉上的相似恰恰是仿真软件和仿真人员的弱项。
* C/ d8 m7 _, C* q& |如果是第二类问题,恭喜你,项目的成功已经有了基本的保证,因为,问题的提出者已经认同了仿真不只是花哨的摆设,更是一个可以依赖的解决问题的工具,而且对解决什么样的问题已经有了共识。
+ W1 u3 v, ?7 p2 L/ e3 n那我们应该站在多高的距离来观察我们的对象呢?
0 J+ `* C) w; D4 h7 x$ N; q也就是说,我们如何来建立合理的系统构成和细部特征呢?. s" B* [4 T% W' m& D
这是一个关键而非常难以回答的问题。虽然没有确切的答案,但有一点是确定的:系统的构成和我们的研究目标有密切关系。! H4 {+ Y. S7 X' i6 R! a# F
例如如果需要研究整个供应链客户的按时满足率,那么需要考虑的对象包括! k. m- o1 s' O: w+ {! ?
(1)$ Q0 |6 U% d5 Y+ I
所有组装厂;6 c; H, U C4 b U3 g3 z/ V8 M/ u
(2)2 s, s& \* {* A" [) J% O# r
所有供应商;9 n% j9 K7 S0 H' ^
(3)+ v. ?3 F9 f* Y' E7 ~3 G) `
自己公司;
& ?+ Y6 p0 b% n$ D- v(4)
/ ^' _/ l1 ^! h! d$ u- E第三方物流公司;等等2 p. S% b% c7 S0 E8 w5 i
这些对象可以采用比较抽象的方式,比如将每个对象(包括自身公司)想象成一个基本节点。每个节点具备一些基本功能,比如生产、仓储、采购、运输等。
. s" }3 r( \7 _如果需要研究公司内部的生产能力的利用率,那么需要考虑的对象包括& ~4 r# ]& I7 W5 L
(1)
% _3 k. v9 d+ V- k% z2 _- ?: y生产线;1 C3 m! s; c/ x! H9 M# m* S
(2)0 Y) f/ l( M1 I V& F* e
物流和搬运设备;
3 Y: J* a- w" [这时,这些对象的处理能力、处理方式、依赖关系(例如调度策略)等就需要更具体地描述;; e' G, v- Z) B* m. w/ e V4 }# h
如果需要研究成品库存的安全库存,那么需要考虑的对象包括! u% x+ g( m7 f
(1)( H) i; L5 ?; C+ ]0 J, N D: h
库存的输入端:生产线、生产计划、原料供应;3 V% B# U, ^0 Y2 E% u+ {
(2), E$ t# [3 m* }! t% J$ i
库存的输出端:各组装厂的采购订单、预测计划和提货单;
/ u+ r! y5 @/ Q1 [将库存考虑成一个蓄水池,既有输入口,也有输出口,那么似乎在整体构思上,我们需要考虑的内容的大体方向就比较明确了。 V, Y8 s& w5 p2 O
没有一个模型可以适合所有的问题,也没有一个模型可以包含所有的研究对象,因为,所谓的“研究对象”本身就是主观的,是经过我们不同视角观察和筛选之后的产物。! p- e' @3 J* I. \% R) b& M9 f5 H
我们一向提倡,在进行仿真之前,先不要急着就进行计算机上的模拟,首先,和构建一座建筑物一样,先作好构思和设计。这个构思和设计包括" k1 \6 d4 K/ N( X. |8 P
(1) V( b- Y8 a! h; X+ j- l
确定我们要解决的问题;9 \+ H! O/ d: }0 H0 j3 X) b" I
(2)
% v- V; g: C7 c" M/ F3 [: ^4 n' h确定我们要研究的系统范围和组成;
4 \( A) u- `3 P2 l7 [5 s$ W/ \(3)
% l# O5 _1 ]& s g. d2 o: H确定明确量化的绩效指标,并确定明确的优先级;6 f9 y1 m3 b- H' v+ J; Y3 c% b4 j) E
(4)
- d; V* E- t: B0 n& `确定我们希望测试哪些内容或者哪些策略, 在建模开始的时候就考虑事后实验的问题和可能采取的改善策略是保障模型具备灵活性和可扩展性的保障;* L( Q) ~% k* C
(5)' w t4 W0 p/ o& e: p
根据内容(4)来确定我们考虑的关键模型参数, 实验参数, 控制参数(需要调整或者优化的参数);0 |0 O5 y: y6 w9 t" c) \
(6)( f4 k" |4 v9 L7 j$ E4 t
模型搭建的难点问题, 进而开始设计模型的整体架构.1 N* P2 O: T8 N" C+ Z
在以上内容明确之后,再开始仿真模型的搭建,这样的过程是一个比较系统的流程,对于大型复杂系统的建模非常必要。磨刀不误砍材工,在仿真项目中尤其必要。 |