2009年4月10日 星期五

Computer Simulation電腦模擬

在工程和科學的領域當中,除了實際測量或是試驗之外,我們還可以模擬自然或人為(man-made)的現象。其中所模擬的對象是系統(system),什麼是系統呢?一個系統可以視為元件的集合,組織這些元件使得它們可以完成一件目的。好比說一台電腦就是一個系統,包含無數個元件(CPU、記憶體、硬碟、主機板、鍵盤...),這些元件可以完成你要的一個目的,比方說上網、玩遊戲、看電影...。

所謂的模擬(simulation)是根據以往經驗(empirically)來決定系統特性(characteristics)的一個實驗,主要方式為產生(generation)與觀察(observation)系統的資料,於是就能夠知道系統的一些結論(inference)。

為何說是根據經驗呢?因為人類所知有限,根據人類的觀察和所推討的理論,盡可能來推測真實的發生情形。例如我們都知道東西會往下掉,推導出萬有引力的理論,那是不是全宇宙都是符合這個定律?我們不曉得,根據以往經驗來看是這樣的(東西會往下掉)。同樣的道理,模擬也是基於這樣的觀念,模擬必須有個模型(model),而此模型則是基於經驗與理論的基礎,並且要盡可能模仿(mimic)仿真(emulate)系統的行為。

一個模型中的狀態以狀態變數(state variable)來表示,電腦上則是程式的變數(variable),一個模擬軟體事實上就是改變這些狀態變數,最後來觀測這些變數的數值,那要怎麼改變呢?則依照系統的模型(數學關係)。

模擬所需的模型有下列幾種分類方法:
  1. Continuous/Discrete
  2. Deterministic/Stochastic
  3. Terminating/Steady-State
  4. Synthetic(Distribution-Driven)/Trace-Driven
  5. Sequential/Distributed
  6. Symbolic
  7. Event-Oriented/Process-Oriented
回到基本問題(模擬哲學),如果我們已經建立模型,而且證實這個模型式可用的、可靠的,我們要如何求解這個模型呢?方法有兩種,一個是模擬解(Simulative Solution),另一個是分析解(Analytic Solution),到底該用哪一種方法呢?

沒有留言:

張貼留言