實現離散事件系統數字仿真的專用的程式設計語言,是一類重要的仿真軟體。離散事件系統仿真語言一般由文本和軟碟的形式提供。它由模型定義語言、處理程式、實用程式庫和運行支援程式等組成。離散事件系統仿真語言按照對系統的描述方式而分為進程型、事件型和活動參考型三種形式。目前大多數離散事件系統仿真語言都屬於前兩種形式。

  進程型語言 進程型語言是面向進程的仿真語言。進程型語言按照系統表達達方式又可分為網絡型、語句型和框圖型三種類型。1961年美國國際商業機器公司(IBM)的G.戈登提出的GPSS語言就屬於框圖型語言。美國寶來公司的A.J.邁耶霍夫等人提出的寶來操作系統仿真語言BOSS(英文 Burroughs Operational System Simulator的縮寫)有很強的仿真功能,允許用戶在編碼過程中運用自己的與流程圖類似的模塊。BOSS語言也屬於框圖型語言。1966年挪威計算中心的 O. J.達爾和K.尼加德提出另一種面向過程的仿真語言 SIMULA(英文 Simulation Language的縮寫),它是在通用算法語言 ALGOL的基礎上擴展而成的,屬於語句型語言。一種連續離散混合系統仿真語言──交替建模仿真語言 SLAM(英文Simulation Language for Alternative Modeling的縮寫)則屬於網絡型語言(見SLAM語言)。

  事件型語言 事件型語言是基於事件調度的仿真語言。用事件型語言編制的源程序中,由主程序調用執行程序以控制仿真運行。執行程序首先調用初始化程序設置仿真語言中各變量的初值,並讀入描述模型的標準輸入語句。在執行程序中通常采用事件單位增長的方法撥動時鐘。初始化後,從事件表中找出第一個事件。執行程序隨之調用事件控制程序轉至相應的事件程序。其執行的結果是再調度其他事件發生,或修改系統狀態,或收集統計數據等。支持子程序庫會提供所需的程序。如此進行下去。仿真終止後,自動產生報告。事件型仿真語言提供一系列方便而直觀的語句供用戶定義系統及書寫主程序和事件程序。1963年美國蘭德公司的H.馬爾科維茨等人提出最早的事件型語言──仿真描述程序設計語言 SIMSCRIPT(英文Simulation Scripture的縮寫),它是在通用程序設計語言 FORTRAN的基礎上擴展而成的。用 SIMSCRIPT語言書寫的仿真程序,描述瞭整個系統的活動,程序設計的中心任務是安排將要產生的下一個事件。在 SIMSCRIPT語言系統中,對於實體及其屬性的操作是用事件例行程序來實現的。事件例行程序完成系統活動和事務處理的仿真。系統活動不論采用同時進行或順序進行的方式,均由事件表排定事件例行程序。為瞭執行的需要,可以重新調度事件例行程序。通過事件例行程序的執行,將改變仿真時鐘,並根據時間調度下一個事件。這在離散事件系統仿真中稱為按時間順序調度事件。B.普裡茲克爾等人提出另一種事件型語言──一般活動仿真語言GASP(英文General Activity Simulation Program的縮寫)。這種仿真語言也是在 FORTRAN語言的基礎上擴展而成的。用戶必須熟悉 FORTRAN語言程序設計。

  80年代後離散事件系統仿真語言又有瞭新的發展。離散事件系統仿真語言與仿真環境軟件(包括數據獲取與分析、仿真結果顯示分析、實驗設計等軟件)相結合而構成仿真軟件系統。並優化編譯程序。改善與數據庫的接口。引入連續系統仿真語言,發展成為連續離散混合系統仿真語言。

  

參考書目

 A.Alan,B.Pritsker,C.D.Pegden, Introduction to Simulation and SLAM, Halsted Press, New York,1979.

 G.戈登著,楊金標譯:《系統仿真》,冶金工業出版社,北京,1982。(G.Gordon, System Simulation, Prentice-Hall, Inc.,1978.)