測試
反復(fù)測試、修改,直到你認為它達到預(yù)定目標(biāo)為止。陶在樸認為,模型測試是一個持續(xù)的過程,包括機械錯誤測試、強健性測試、敏感性測試與情景測試、極端條件測試以及回測數(shù)據(jù)檢驗等。約翰·斯特曼教授認為,系統(tǒng)動力學(xué)建模測試包括邊界充分測試、結(jié)構(gòu)評估測試、量綱一致性測試、參數(shù)評估、極端條件測試、積分錯誤測試、行為重現(xiàn)測試、行為異常測試、家族成員測試、驚異行為測試、敏感性分析、系統(tǒng)改進測試等12種。
下面,我將主要的測試項目分別做簡要介紹:
(1)基本錯誤檢查
基本錯誤指的是許多非結(jié)構(gòu)、非邏輯性的表面錯誤,諸如方程式兩端的單位不同、量綱不一致、計算符號錯誤、不允許或不可能為負數(shù)的存量出現(xiàn)負數(shù)(如不論需求有多大,庫存都不可能降為負數(shù)),或某些變量無限增長,有悖物理規(guī)律(如物質(zhì)守恒定律等),等等。
檢查基本錯誤靠的是細心,可以把計算結(jié)果用圖表形式輸出,然后進行仔細觀察和甄別。
(2)邊界充分性檢查
測試目的是確定系統(tǒng)模型的邊界是否適當(dāng)。檢驗標(biāo)準(zhǔn)包括:第一,用來描述問題的重要概念是否被當(dāng)作內(nèi)部變量;第二,當(dāng)邊界假設(shè)被放寬時,模型的行為是否變動劇烈;第三,當(dāng)邊界假設(shè)被擴展時,有關(guān)政策的建議是否會發(fā)生變化。
該項測試可使用因果關(guān)系圖、存量流量圖、多重原因圖、實體關(guān)系圖等工具,并直接檢查模型的方程,修改部分構(gòu)成變量,觀察系統(tǒng)的過程。同時,可通過面談、研討會等方式聽取專家的意見,獲取文獻資料。
(3)強健性測試
強健性(Robustness)測試指的是檢驗?zāi)P湍芊窠?jīng)得住不同情況或各種變化的沖擊,也被稱為“魯棒性”測試??捎梅椒òǎ旱谝?,在一些關(guān)鍵變量方程中加上諸如階躍或脈沖之類的函數(shù)(STEP或PULSE),使流量突然加大并由此觀察存量能否維持合理的狀態(tài);第二,檢視某些關(guān)鍵變量的動態(tài)反應(yīng)是否有異?,F(xiàn)象,并根據(jù)試驗的反應(yīng)進行相應(yīng)調(diào)整。
(4)現(xiàn)實性檢驗(極端條件測試)
陶在樸認為,對系統(tǒng)的極端狀況了解愈多,對系統(tǒng)行為的理解愈深。同時,模型應(yīng)該在極端條件下依然可靠。這意味著,不管輸入值或加載模型上的政策多么極端,模型的表現(xiàn)都應(yīng)該符合現(xiàn)實。所謂極端條件,指的是模型發(fā)展趨勢的極限值,例如最終產(chǎn)品的庫存為0等。通過極端條件的測試,可以發(fā)現(xiàn)模型結(jié)構(gòu)的“裂縫”,或找出遺漏的變量或挑出流量、存量不能自圓其說的瑕疵。
極端條件測試可以兩種方式進行:通過對模型方程的直接檢查和通過模擬進行。第一種方式是,在檢查模型方程時,詢問一下自己,在方程的每個輸入值取其最大或最小值時,決策的輸出是否依然可行而合理;第二種方式是,在模擬過程中測試一些極端情況,例如公司產(chǎn)品價格上升10億倍或開除所有的工人,然后觀察相關(guān)變量的變化情況。在前一種情況下,對公司產(chǎn)品的需求應(yīng)立即降為0;在后一種情況下,生產(chǎn)也應(yīng)該立即降為0。這種測試也被稱為“現(xiàn)實性檢驗”。
(5)敏感性測試和情景測試
一般情況下,系統(tǒng)模型并不因參數(shù)變化而改變系統(tǒng)的動態(tài),換言之,只要模型的參數(shù)或表函數(shù)設(shè)計正確,模型對參數(shù)的變動并不敏感。敏感性測試就是通過尋找能使系統(tǒng)行為改變的敏感參數(shù)(含外部參數(shù)),并逐個測試,觀察模型行為的變化,以便找到模型的參數(shù)設(shè)置和影響關(guān)系。
對于外部變量,設(shè)置不同的參數(shù),對它們的數(shù)值變化做敏感性測試而產(chǎn)生的行為便是情景測試。
(6)回測數(shù)據(jù)檢驗
回測即回顧的“預(yù)測”,將預(yù)測的時間變量取負值,以回測的數(shù)據(jù)與實際的歷史數(shù)據(jù)相比較,來檢驗?zāi)P偷馁|(zhì)量。
當(dāng)然,測試并不用以證明模型是否正確。正如約翰·斯特曼所說,事實上,模型完全的有效性和檢驗是不可能的。但是,測試對于發(fā)現(xiàn)錯誤的假設(shè)或缺陷,提高模型的適用性和有用性,具有重要價值。