計算機模擬

計算機模擬

計算機模擬是指建立研究對象的數學模型或描述模型並在計算機上加以體現和試驗。

計算機模擬的研究對象包括各種類型的系統,它們的模型是指藉助有關概念、變數、規則、邏輯關係、數學表達式、圖形和表格等對系統的一般描述。把這種數學模型或描述模型轉換成對應的計算機上可執行的程序,給出系統參數、初始狀態和環境條件等輸入數據后,可在計算機上進行運算得出結果,並提供各種直觀形式的輸出,還可根據對結果的分析改變有關參數或系統模型的部分結構,重新進行運算。

基本介紹


建立研究對象的數學模型或描述模型並在計算機上加以體現和試驗。研究對象包括各種類型的系統。
發展過程 當人們設計和構造複雜的系統時,或研究自然界、人類社會中漫長的演變過程和不易重複試驗的事物時,若對研究對象本身進行試驗,從時間、人力、物力等因素考慮要付出昂貴的代價,甚至不可能進行。因此,需要製造一個模型來進行各種試驗。
為了對系統模擬,首先要確定或表達所要研究的系統。用數學模型能較方便地確定一個系統,全面地反映對系統的已有認識或需要驗證的假設,但缺乏直觀性,也不便於進行試驗。在數學模型的基礎上,可進一步作出實物模型,它體現人們所要求的真實系統有關的性質,但在形式和規模上不必與真實系統完全一致。用實物模型試驗比較直觀、可信,但仍不夠經濟和方便。
可編程序的數字計算機出現以後,因它具有很強的數學運算和數據處理能力,可把數學模型編製成計算機程序,提供新的、通用的試驗方法。計算機也可用於模擬與運籌有關的活動,例如,可以模擬參加競爭的雙方所採取的步驟和最終的結局。它的應用領域很快就擴展到各種類型的系統,從規模巨大的系統一直到小型的系統,這些系統的數學描述常常非常複雜,要給出完全的解析解或精確的數值解非常困難。計算機模擬通過反覆試驗,幫助人們了解系統的性能,檢驗預想的假設,進行系統分析、設計、預測或評估,還可提供相當逼真的環境,藉以培養和訓練人員。計算機模擬已成為工程研製、自然學研究、經濟和社會問題研究、教學訓練活動、軍事研究、組織管理等許多領域中的一個有力的工具。
基本方法 計算機模擬一般從形成問題到最後模型確認須經過許多步驟。①形成問題,明確模擬的目的和要求。②儘可能收集和處理系統有關的數據。③形成數學模型,找出組成系統的各個部件,並描述它們在各時刻的狀態的有關變數(一般包括輸入變數、狀態變數和輸出變數)或參數;確定各部件之間相互作用和影響的規則,即這些描述變數之間的函數關係。選擇參數和變數的時候,還須考慮它們能否辨識或求解,以及模型最後是否適於根據真實系統的數據進行檢驗。④根據收集的數據確定或估計模型中的參數,並選擇模型的初始狀態。⑤設計邏輯或信息的流程圖,直至編製出計算機程序。⑥程序驗證,檢驗程序與數學模型之間的一致性,以及輸入量的合理性。⑦進行模擬試驗,對給定的輸入在計算機上執行程序。⑧結果數據分析,收集和整理試驗結果並作出解釋。必要時可改變輸入量或部分模型結構,重新進行試驗。⑨模型確認,檢驗由模型所得的結果與真實系統的性能數據的一致性程度。這是關係到計算機模擬是否有效的關鍵問題,它依賴於對真實系統本身進行試驗的水平、能否獲得足夠的觀測數據和判別一致性的準則。模型有效的級別可分為:重現有效的,即模型可重現真實系統的性能;預測有效的,即模型能有效地預測真實系統的未來性能;構成有效的,即模型能反映真實系統內部的結構。由於系統本身是隨時間變化的,或者具有隨機性,對真實系統數據和模型試驗結果的比較常常需要採用時間序列分析方法或統計分析的方法。
離散時間模型的模擬 離散時間模型中的時間表示為整數序列(代表某一時間單位的整數倍),只考慮系統在這些時刻上的狀態變化。這種模型的一個典型模擬程序包括下列步驟:①置模擬時間T 的初始值為t0。②置狀態變數的初始值。③給出當前模擬時間輸入變數的值后,根據模型中的狀態轉移函數,確定在下一時刻T=t+h狀態變數的值。再根據模型中的輸出函數確定在該時刻輸出變數的值。 ④把模擬時間T 推進一個單位時間h。⑤檢查模擬時間T是否達到預定終止時刻。若已達到即停止;否則轉移到步驟③。
離散事件模型的模擬 在離散事件模型中,系統的狀態改變只出現在離散的時刻,稱為離散事件。以排隊系統為例,建立這種模擬模型的基本步驟和方法是:①確定系統中包含的所有有關的“實體”及其屬性,系統狀態改變的一切“事件”及其前因後果。實體是系統的組成部件,每個實體的屬性由表示其性質的數值表示,構成系統的狀態。在排隊系統中最基本的實體是一定數量的“服務站”和要求服務的“顧客”,它們的屬性分別為“服務站”的“服務速率”和“顧客”的服務優先順序、到達服務系統的時刻等。基本的“事件”包括:新實體進入系統或現有實體離開系統、實體屬性發生變化、調度的時刻表變化等。②確定模擬時間推移的方法。如果把時間按等間隔劃分,順序考察在這些時刻系統是否出現事件,稱為固定時距方法;如果時間每次推移的長度以下一次事件發生的時刻為依據,稱為可變時距方法或“下一事件”方法。③由於系統中事件的出現常具有隨機性,服從一定的概率分佈,因而在計算機上需要產生這些分佈的隨機數。④為了靈活有效地記錄系統的狀態,進行事件的調度,積累有關性能數據並形成報表,保存和自動管理未來事件文件,在程序設計中採用資料庫技術非常適宜。
連續系統模擬 狀態隨時間連續地發生變化的系統稱為連續系統,狀態變化的速率滿足一定的微分方程。在計算機上建立對應的模擬模型,有賴於求解微分方程的有效的數值方法,並編製成標準子程序,以便能使用各種方程階數、係數、初值條件或邊值條件。對包含反饋和控制的系統的模擬是這種類型的典型例子。
模擬語言 編製模擬程序時可採用彙編語言、通用編程語言(如FORTRAN,ALGOL等),還可採用各種模擬語言。計算機模擬語言是一種高級的描述系統模型的編程語言,它提供表示系統模型中許多基本單元、部件和調度操作的模塊。用戶用它可較方便地確定模型的基本結構,只要再添加一些輔助的程序就可編出模擬程序。
模擬語言一般是在別的通用編程語言的基礎上建立的,它需要自己的編譯程序進行預編譯,把模擬語言程序轉換成通用編程語言程序,再經過一次編譯,轉換成計算機上可執行程序。模擬語言能減輕用戶的程序工作,但也不可避免地帶來一些限制,消耗更多的內存和運算時間。
模擬語言可分為離散事件模擬語言(如GPSS及其各種改型、SIMSCRIPT、GASD、CSL、SIMULA等)和連續系統模擬語言(如 DARE、ACSL、CSS、CSSL等)兩大類型。對於各種應用領域還有專用的模擬語言。
計算機模擬與計算機硬體和軟體技術的發展關係非常密切。為便於建立模型和進行模型的有效性檢驗,人們企圖使模擬模型在時間和空間上與真正的系統有一定程度的相似關係。在模擬過程中,希望能方便地改變參數甚至改變模型的結構,並能通過鍵盤命令隨時輸出數據和圖表。因此,計算機模擬要求計算機有很強的并行處理能力,有較高的運算速度,有人機交互能力和便於使用的模擬語言。
參考書目
G. Gordon, System Simulation,Prentice Hall,Englewood Cliffs, New Jersey, 1978.