DYNAMO語言
正文
一種專門為系統動力學設計的仿真語言,屬於連續系統仿真語言。系統動力學的建模採用四種基本模型和時滯組合成複雜模型,用以描述社會、經濟等具有信息反饋的複雜系統。利用這種複雜模型進行計算機仿真就可研究各種控制因素對系統穩定性或發展趨勢的影響,並能根據仿真運行的結果提出建議,以便重新調整系統或改變方針政策。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,JK或KL來標定計算時間,中間用句號隔開。在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.)