一種專門為系統動力學設計的仿真語言,屬於連續系統仿真語言。系統動力學的建模採用四種基本模型和時滯組合成複雜模型,用以描述社會、經濟等具有資訊回饋的複雜系統。利用這種複雜模型進行電腦仿真就可研究各種控制因素對系統穩定性或發展趨勢的影響,並能根據仿真運行的結果提出建議,以便重新調整系統或改變方針政策。DYNAMO語言正是根據系統動力學建模思想而設計出來的面向用戶的仿真語言,即使沒有程式設計經驗的用戶也很容易學會使用這種語言。為瞭在電腦上執行用DYNAMO語語言編寫的仿真程序,已經設計出各種版本的DYNAMO軟件,以文本和軟磁盤的形式提供。

  簡史 1958年美國麻省理工學院的R.K.貝內特研制出不用方程式的工業管理問題仿真軟件SIMPLE(Simula-tion of Industrial Management Problem with Lostof Equations), 它具有圖形輸出。1959年 P.福克斯和 A.L.皮尤,對 SIMPLE作瞭改進, 並改稱現名 DYNAMO。1962年J.W.福雷斯特建議放寬對模型初值的限制。1965年重新編寫瞭 DYNAMO編譯程序。早期的 DYNAMO編譯程序是用算法語言 ALGOL編寫的。後來改用公式翻譯語言FORTRAN編寫。DYNAMO軟件已有多種版本,適用於不同的機型和操作系統,從適用於IBM公司大型計算機的DYNAMOⅣ/370到適用於小型機的 Mini-DYNAMO和適用於微型機的MicroDYNAMO。

  系統動力學建模 系統動力學的基本模型有四種:指數增長模型=kx,指數衰減模型=-kx,改進型指數增長模型=k( X-x),以及對數模型=kx(X-x)。這裡x是變量,是變量x對時間t的導數,表示變量的變化速率,X是變量x的極限值,k是比例系數。復雜的模型則可由上述基本模型加時滯等組合而成。系統動力學把被仿真的系統看作是信息反饋系統,利用可能收集到的經驗數據(即信息)來直觀地描述系統的結構。系統在每一瞬間的狀態用一組流位(在DYNAMO中稱為 LEVEL變量)來表示,狀態隨時間的變化則用流率(在DYNAMO中稱為RATE變量)來表示。而流率又決定於流位和其他因素。所以一個復雜系統實質上是由一系列信息反饋環交織在一起組成的。這就使得現實世界中許多無法用精確的數學函數描述的復雜系統的非線性大系統也能用計算機進行仿真。

  系統動力學在研究系統結構時,隻分析相關要素的直接關系,對於復雜的間接關系則看作是由簡單關系的串並聯組成的。這樣對一個個反饋環進行跟蹤,就可以比較真實地反映系統的結構。在進行仿真研究時采用時間步進法,根據前一時刻的系統狀態估計下一時刻的系統狀態,表示系統的動態變化過程。如果系統是穩定的,當時間步長取得足夠小時,仿真系統與真實系統的誤差保持在允許范圍內。

  

在DYNAMO語言中用1~5個字母組成的字符串表示變量名,並可由用戶自行規定。有些變量名則已預先規定好。例如,變量TIME用於產生時間基準。圖中示出時間流程的描述方法, K表示計算的起始時刻, J表示已經完成的前一個計算的起始時刻, L表示準備進行的下一個計算的起始時刻, JK表示已經過去的時間間隔, KL表示將要到來的時間間隔。計算過程在相同的時間間隔上進行, JK=KL。通常用 DT表示恒定的時間間隔, DT的大小由用戶自行選擇。在DYNAMO語言中在變量名稱後要附加一個詞尾 J,K,L,JKKL來標定計算時間,中間用句號隔開。在DYNAMO語言中用LEVEL變量來描述系統的狀態。LEVEL一般譯為級或流位或存量或水平量,表示系統的定量指標。系統在每一時刻的狀態可用一組指標來表示。選取系統的一組LEVEL變量來表示系統的狀態是建模中很關鍵的一步。在DYNAMO語言中用RATE變量來描述系統狀態隨時間的變化。RATE一般譯為流率或速率或變化率或決策變量。找出影響RATE變量的因素,即可掌握系統動態變化規律。用DYNAMO語言編制的源程序即系統動力學模型本質上是一個一階微分方程組。但是DYNAMO語言比微分方程的形式更為清晰。它用L方程表示每一個LEVEL的變化情況,再用R方程分別描述影響LEVEL變化的每一個因素。DYNAMO語言還提供瞭很多表示變化率與狀態之間關系的方法,如比例關系,算術運算關系,標準函數關系,表函數關系,以及這些關系的復合函數關系。如果關系比較復雜,則可用輔助變量AUXILI-ARY來表示,以減少函數嵌套的深度。對建模來說,用輔助變量可使模型更加清晰。通過輔助變量可以清楚地表達因果關系鏈中每一個別環節以及引起系統變化的外部原因。DYNAMO語言用常數變量CONSTANT來描述系統的參數或系數。用DYNAMO語言建模可以把時滯、結構和反饋環都清晰地表達出來。時滯DELAY是指某些因素並不立即起作用,而要經過若幹時間分若幹次顯示出來。時滯值的大小一般是系統的固有特性。在DYNAMO語言中為瞭使模型更加簡潔,當中間過程的細節可被忽略時,可以使用宏函數。一個宏函數相當於若幹個L方程和R方程。反饋環實質上是一種很復雜的因果關系。這樣整個系統可由一些簡單的環節組配而成。用DYNAMO語言建模往往先畫出系統流程圖。由實線貫穿著存量和速率,表明實物流的流動情況。由虛線聯系著存量、速率和其他外部因素,反映反饋關系和環境影響。

  從觀察系統到建立系統的流程圖是用DYNAMO語言編制仿真程序的關鍵。對於簡單的系統,很容易憑直覺就畫出系統的流程圖。一般可以根據系統分析,先找出實物流,再找出信息流。對於比較復雜的系統,可按下列步驟建模:①確定系統邊界。②找出因果關系和反饋環。③區分反饋環中LEVEL變量和RATE變量。④確定L方程和R方程的結構。

  DYNAMO程序 DYNAMO程序中有兩類語句:一類是模型描述語句,用來描述流程圖中的元素和變量的初始狀態,模型描述語句的集合就組成瞭系統動力學模型。另一類是控制語句,用來控制仿真運行,如規定仿真過程的步長及輸出報告的內容和格式等。

  模型描述語句共有八種,每種均以第一列的一個特定的字母為標識,指明這個語句描述的變量類型。從第三列起,書寫這一類型的變量方程。變量方程由變量名、時間下標、運算符號、各種標準函數、宏函數和數組成。其基本形式是:變量名。時間下標=表示式。變量名是由1~5個字母組成的字符串,由用戶自行規定。變量名後用時間下標表示變量在指定時刻進行計算,中間用句號隔開。方程中不允許有空格,否則就認為空格後的內容是註釋。

  在DYNAMO語言中有11種控制語句。用DYNAMO語言編制仿真程序時,為瞭使模型更加簡潔,可以調用一系列標準函數和宏函數。各種版本的DYNAMO軟件均有常用的標準函數和宏函數。

  

參考書目

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