簡介
計算機模擬,又稱為計算機仿真,是指用來模擬特定系統之抽象模型的電腦程式。
歷史
計算機模擬的發展與電腦本身的迅速發展是分不開的。它的首次大規模開發是著名的曼哈頓計畫中的一個重要部分。在第二次世界大戰中,為了模擬核爆炸的過程,人們套用蒙特·卡羅方法用12個堅球模型進行了模擬。計算機模擬最初被作為其他的方面研究的補充,但當人們發現它的重要性之後,它便作為一門單獨的課題被使用得相當廣泛。
種類
通常分為如下幾類:
•離散模擬
•類比模擬
•基於探元的模擬
•隨機過程或決定論模式的模擬
計算機模擬的優缺點
在套用計算機模擬進行風險分析的問題上,最後應當指出:這種方法要求取得投資支出、單位銷售量、產品價格、投入要素價格、資產使用期限等許多變數的機率分布,並需要支出相當多的程式設計費用與計算機運轉費用。因此,全盤模擬一般並不適用(但如關於擴建大型工廠或生產新產品等規模大而花錢多的計畫的決策除外)。在這些例外情況下,即企業要決定是否實行一項需要支出千百萬美元的大規模計畫時,計算機模擬有助於深入評比各個可供選擇的方案的優缺點。
發展過程
當人們設計和構造複雜的系統時,或研究自然界、人類社會中漫長的演變過程和不易重複試驗的事物時,若對研究對象本身進行試驗,從時間、人力、物力等因素考慮要付出昂貴的代價,甚至不可能進行。因此,需要製造一個模型來進行各種試驗。
為了對系統模擬,首先要確定或表達所要研究的系統。用數學模型能較方便地確定一個系統,全面地反映對系統的已有認識或需要驗證的假設,但缺乏直觀性,也不便於進行試驗。在數學模型的基礎上,可進一步作出實物模型,它體現人們所要求的真實系統有關的性質,但在形式和規模上不必與真實系統完全一致。用實物模型試驗比較直觀、可信,但仍不夠經濟和方便。
可程式序的數字計算機出現以後,因它具有很強的數學運算和數據處理能力,可把數學模型編製成電腦程式,提供新的、通用的試驗方法。計算機也可用於模擬與運籌有關的活動,例如,可以模擬參加競爭的雙方所採取的步驟和最終的結局。它的套用領域很快就擴展到各種類型的系統,從規模巨大的系統一直到小型的系統,這些系統的數學描述常常非常複雜,要給出完全的解析解或精確的數值解非常困難。計算機模擬通過反覆試驗,幫助人們了解系統的性能,檢驗預想的假設,進行系統分析、設計、預測或評估,還可提供相當逼真的環境,藉以培養和訓練人員。計算機模擬已成為工程研製、自然學研究、經濟和社會問題研究、教學訓練活動、軍事研究、組織管理等許多領域中的一個有力的工具。
基本方法
計算機模擬一般從形成問題到最後模型確認須經過許多步驟。①形成問題,明確模擬的目的和要求。②儘可能收集和處理系統有關的數據。③形成數學模型,找出組成系統的各個部件,並描述它們在各時刻的狀態的有關變數(一般包括輸入變數、狀態變數和輸出變數)或參數;確定各部件之間相互作用和影響的規則,即這些描述變數之間的函式關係。選擇參數和變數的時候,還須考慮它們能否辨識或求解,以及模型最後是否適於根據真實系統的數據進行檢驗。④根據收集的數據確定或估計模型中的參數,並選擇模型的初始狀態。⑤設計邏輯或信息的流程圖,直至編制出電腦程式。⑥程式驗證,檢驗程式與數學模型之間的一致性,以及輸入量的合理性。⑦進行模擬試驗,對給定的輸入在計算機上執行程式。⑧結果數據分析,收集和整理試驗結果並作出解釋。必要時可改變輸入量或部分模型結構,重新進行試驗。⑨模型確認,檢驗由模型所得的結果與真實系統的性能數據的一致性程度。這是關係到計算機模擬是否有效的關鍵問題,它依賴於對真實系統本身進行試驗的水平、能否獲得足夠的觀測數據和判別一致性的準則。模型有效的級別可分為:重現有效的,即模型可重現真實系統的性能;預測有效的,即模型能有效地預測真實系統的未來性能;構成有效的,即模型能反映真實系統內部的結構。由於系統本身是隨時間變化的,或者具有隨機性,對真實系統數據和模型試驗結果的比較常常需要採用時間序列分析方法或統計分析的方法。
離散時間模型的模擬
離散時間模型中的時間表示為整數序列(代表某一時間單位的整數倍),只考慮系統在這些時刻上的狀態變化。這種模型的一個典型模擬程式包括下列步驟:①置模擬時間 T 的初始值為 t0。②置狀態變數的初始值。③給出當前模擬時間輸入變數的值後,根據模型中的狀態轉移函式,確定在下一時刻 T= t+ h狀態變數的值。再根據模型中的輸出函式確定在該時刻輸出變數的值。 ④把模擬時間 T 推進一個單位時間 h。⑤檢查模擬時間 T是否達到預定終止時刻。若已達到即停止;否則轉移到步驟③。
離散事件模型的模擬
在離散事件模型中,系統的狀態改變只出現在離散的時刻,稱為離散事件。以排隊系統為例,建立這種模擬模型的基本步驟和方法是:①確定系統中包含的所有有關的“實體”及其屬性,系統狀態改變的一切“事件”及其前因後果。實體是系統的組成部件,每個實體的屬性由表示其性質的數值表示,構成系統的狀態。在排隊系統中最基本的實體是一定數量的“服務站”和要求服務的“顧客”,它們的屬性分別為“服務站”的“服務速率”和“顧客”的服務優先權、到達服務系統的時刻等。基本的“事件”包括:新實體進入系統或現有實體離開系統、實體屬性發生變化、調度的時刻表變化等。②確定模擬時間推移的方法。如果把時間按等間隔劃分,順序考察在這些時刻系統是否出現事件,稱為固定時距方法;如果時間每次推移的長度以下一次事件發生的時刻為依據,稱為可變時距方法或“下一事件”方法。③由於系統中事件的出現常具有隨機性,服從一定的機率分布,因而在計算機上需要產生這些分布的隨機數。④為了靈活有效地記錄系統的狀態,進行事件的調度,積累有關性能數據並形成報表,保存和自動管理未來事件檔案,在程式設計中採用資料庫技術非常適宜。
連續系統模擬
狀態隨時間連續地發生變化的系統稱為連續系統,狀態變化的速率滿足一定的微分方程。在計算機上建立對應的模擬模型,有賴於求解微分方程的有效的數值方法,並編製成標準子程式,以便能使用各種方程階數、係數、初值條件或邊值條件。對包含反饋和控制的系統的模擬是這種類型的典型例子。
模擬語言
編制模擬程式時可採用彙編語言、通用程式語言(如FORTRAN,ALGOL等)。還可採用各種模擬語言。計算機模擬語言是一種高級的描述系統模型的程式語言,它提供表示系統模型中許多基本單元、部件和調度操作的模組。用戶用它可較方便地確定模型的基本結構,只要再添加一些輔助的程式就可編出模擬程式。
模擬語言一般是在別的通用程式語言的基礎上建立的,它需要自己的編譯程式進行預編譯,把模擬語言程式轉換成通用程式語言程式,再經過一次編譯,轉換成計算機上可執行程式。模擬語言能減輕用戶的程式工作,但也不可避免地帶來一些限制,消耗更多的記憶體和運算時間。
模擬語言可分為離散事件模擬語言(如GPSS及其各種改型、SIMSCRIPT、GASD、CSL、SIMULA等)和連續系統模擬語言(如 DARE、ACSL、CSS、CSSL等)兩大類型。對於各種套用領域還有專用的模擬語言。
計算機模擬與計算機硬體和軟體技術的發展關係非常密切。為便於建立模型和進行模型的有效性檢驗,人們企圖使模擬模型在時間和空間上與真正的系統有一定程度的相似關係。在模擬過程中,希望能方便地改變參數甚至改變模型的結構,並能通過鍵盤命令隨時輸出數據和圖表。因此,計算機模擬要求計算機有很強的並行處理能力,有較高的運算速度,有人機互動能力和便於使用的模擬語言。
套用
計算機模擬的尺度既可以是巨觀的,也可以是微觀的。在巨觀尺度上,可以用實驗資料庫預測工藝流程、操作條件及系統的性質,計算材料的力學和加工性能,一般用於化工過程模擬、機械製造等領域。在微觀尺度上,微觀粒子的結構和性質起重要作用,一般用於反應機理研究、巨觀性質模擬等。
舉例說明
為了舉例說明這種方法,讓我們來研究一下某紡織工廠的建設情況。該廠的建造成本還不能準確計算出來,估計約為 15000萬美元。如果在建造過程中不發生困難,成本可能低到 12500萬美元。但也有可能由於發生各種不測事件——如罷工、原材料意外漲價、技術上出問題等——而使投資支出高達22500萬美元。
新廠將可經營好多年,其產品銷售收入取決於該地區的人口和居民收入的增長情況、同行業的競爭程度、合成纖維的研究和開發以及外國紡織品的進口限額。其經營成本則將取決於生產效率、原材料和工資水平的升降趨向,等等。由於銷售收入和經營成本都是不確定因素,每年利潤也就不確定了。
假使能為每個主要的成本因素與收入因素提算出機率分布,就能建立一個電腦程式來模擬可能發生的事件。計算機實際上從每個有關分布中任取一值,把它與從其他分布中選出的其他值結合起來,提供估計利潤額與投資淨現值即利潤率。這個特定的利潤額與利潤率只適合於這次試驗選出的特定值的組合。計算機繼續選擇其他各組的值,就可能為幾百次試驗算出另外一些利潤額與利潤率。把計算各個不同利潤率的次數加以統計保存下來,計算機運轉完畢後,可按照不同利潤率的出現次數繪成一個頻數分布。