有壹個良好的開發工具,即要求提供壹套語言體系將數據部件、模型部件和對話部件三者
有機地結合起來。雖然這三個部件各自有壹套比較成熟或逐步成熟的語言體系支持,但目
前還沒有壹種語言能將這三者所需要的功能都有機地結合在壹起。
傳統的算法語言如FORTRAN、PASCAL等很適合數學模型的實現,但不支
持對數據庫的操作;各種DBMS語言適合數據庫的管理和操作,但不適宜數值運算。這
些語言,如果做為開發工具的主要語言而不加改進,是很難承擔重任的。
在分析決策支持系統的具體需求和現有語言的優缺點的基礎上,我們研制了壹個開發
工具:GFKD-DSS(GuoFangKeDa-Decision Suppor
t System)決策支持系統開發工具,設計了壹套計算機語言體系,把數值計算、
數據庫操作、模型運行控制和人機交互功能融為壹體,根本上滿足了開發決策支持系統的
需要。
利用這個工具開發壹個對於具體問題的決策支持系統,首先需要進行問題分解,把壹
個大而復雜的問題分解成若幹個較小且容易解決的子問題。對各子問題選用相應的模型來
求解,並建立所需的數據庫。這些模型應該是廣義的模型,可以是數學模型、智能推理模
型,也可以是繪圖模型和報表模型等。對各模型可以選用最合適的語言編寫實現,數學模
型用PASCAL、FORTRAN語言編寫,智能模型用PROLOG、LISP語言
編寫,報表模型用FOXBASE語言編寫。然後,在解決了這些子問題的基礎上,利用
工具提供的語言描述這些子問題的相互關系,如所需參數、所用數據庫、運行方式和次序
等等,經過編譯,就生成了對於這個特定問題的決策支持系統。
壹、系統結構和DSS語言
1.系統結構圖
GFKD-DSS決策支持系統開發工具的結構見圖1。系統根據使用人員和開發人
員的特點、要求不同,提供兩個入口,分別供決策用戶和開發人員(包括管理人員)使用
決策用戶的入口為運行控制系統,完成對DSS程序(該程序描述了該決策問題的求
解方法)的目標代碼解釋執行。在解釋執行的過程中實現對模型的調用、對多個模型的組
合運行控制、對數據庫中數據的存取等。開發(管理)人員的入口為管理系統,由DSS
管理語言實現對模型庫和數據庫的管理和維護工作,其中包括對模型程序的開發(編輯、
編譯)支持等。兩系統的簡介如下:
(1)運行控制系統
這個系統直接面對使用人員(DSS用戶)。它由DSS核心語言的解釋執行部分、
模型的驅動運行部分和數據庫操作支持部分等組成。
解釋執行部分對DSS核心語言程序經編譯後產生的目標代碼進行逐條解釋,完成數
值計算、邏輯運算、人機交互等功能,當遇到模型的執行語句時,就轉交模型的驅動運行
部分執行。
在本工具系統中,模型的可運行部分以帶.EXE或.COM後綴的可執行文件的形
式存放於磁盤上,對模型的壹次運行相當於對給定參數的子程序的壹次調用。驅動運行部
分根據模型的名稱,檢索字典庫,查出模型的執行程序名稱,利用MS-DOS操作系統
對進程的調度功能把模型的執行程序作為壹個子進程運行。
數據庫操作支持部分根據模型進程的要求,從數據庫中讀取數據,通過MS-DOS
傳送給模型進程或把模型進程的數據存入數據庫中。為實現這些功能,設置了壹組虛擬的
設備文件,這些虛擬文件是模型進程和數據庫的接口。
(2)管理系統
管理系統是由模型庫管理系統、數據庫管理系統和對模型文件的處理三部分組成。
模型庫管理系統完成對模型字典庫和相應的模型文件庫(模型源程序文件和目標程序
文件)的管理。這是由模型庫管理語言來完成的。
數據庫管理系統是dBASEⅢ管理系統,該系統已納入我們DSS工具的管理之下
對模型文件的處理是實現對模型源程序的編輯和編譯,形成模型目標程序。
2.DSS語言
GFKD-DSS工具的DSS語言稱為核心語言。
用戶(開發人員)使用核心語言編寫實際問題的決策支持系統,完成對模型目標程序
運行的控制、對數據庫中數據的存取以及人機對話等功能。
本系統核心語言由三個部(DIVISION)組成,總體結構為:
·IO DIVISION(描述本DSS程序所使用的數據庫、控制變量)
·USING DIVISION(描述本程序中調用的各個模型中使用的數據庫、
控制變量)
·PROGRAM DIVISION(決策問題DSS程序的處理和對模型控制運
行的具體表達)
在IO部和USING部中均分為三個節(SECTION)和有關語句。
PROGRAM部由說明部分和語句體兩部分組成。
說明部分包括對標號、類型、變量、過程及函數的說明語句。
語句體中有多種類型語句,即:
(1)程序基本語句
賦值語句、過程調用語句、GOTO、IF、CASE、FOR、REPEAT、W
HILE、WITH等語句。
(2)數據操縱語句
“數據庫符號”表示為:
#[庫編號]([記錄編號,]字段編號)
讀取數據庫數據:
初等量:=<數據庫符號>
存入數據庫數據:
<數據庫符號>:=<表達式>
(3)模型運行語句
RUN(“模型名”)
(4)執行操作系統命令語句
system(<DOS>)
(5)屏幕聲音類語句
CRTMODE等語句├├
二、模型庫和模型庫管理系統
1.模型庫
模型庫由模型字典庫和對應的模型文件庫所組成。
(1)模型字典庫
模型字典庫根據用戶的需要,按性質進行分類。
每個字典庫又包括若幹模型。每個模型在字典庫上占有壹個記錄。模型字典庫的數據
結構是關系型結構,包含屬性項目為:
模型名、源程序名、執行程序名、幫助文件名、數據描述文件名等等。
不同的模型可以利用相同的標準方法(模型)程序。由於解決的問題不壹樣,數據量
大小也不壹樣,我們應該把它們看成兩個模型,模型名不同,它們有兩個不同模型記錄,
但兩個記錄中可以有相同的源程序名和執行程序名。
(2)模型文件庫
所有模型的模型文件分別存入不同的文件庫中。各個模型文件分別在不同的子目錄下
各個目錄下的模型文件庫為;
/ECR 各模型的執行程序文件庫
/PRG 各模型的源程序文件庫
/IOD 各模型的數據描述文件庫
/HLP各模型的幫助文件庫
說明:
(1)源程序文件庫中存放的是所有模型以各種語言編寫的源程序文件。文件名的後
綴為.PAS、.FOR、.BAS、.PRG、.DSS,分別表示用不同語言編寫的
源程序。其中.DSS是用我們系統提供的DSS語言編寫的模型程序。
(2)目標(執行)程序文件庫中存放的是所有模型的可執行程序文件。以.COM
或.EXE為後綴的程序文件。
(3)數據描述文件庫中存放每個模型所需要的數據文件(數據庫文件或正文文件)
的說明。
(4)幫助文件庫中存放每個模型的技術說明。
2.模型庫管理系統(MBMS)
對模型庫的管理主要包括對模型字典庫的管理和相應子目錄下模型文件的管理。它的
功能由模型庫管理語言和對模型文件處理的外部命令來完成。
(1)模型庫管理語言(內部命令)
管理語言主要完成對模型庫的管理和對模型開發的支持等工作。對模型庫的管理不外
乎建立、刪除、檢索等工作,對模型開發的支持有編輯源文件和調用相應語言的編譯器進
行編譯等功能。
對模型字典庫有壹套完整的管理語言。
(2)對模型文件的處理(外部命令)
模型文件主要是模型程序文件。壹種是源程序,方便模型的編制、修改和閱讀;另壹
種是目標程序,實現對模型的運行。對模型文件的處理是DSS管理系統的壹個特定功能
。本DSS系統已經把操作系統中所提供的編輯程序,各種語言的編譯程序以及連接程序
都納入在DSS系統的控制之下。
三、數據庫、數據庫管理系統及數據傳輸
本系統中用到的數據都存放在數據庫中,它們都是關系型結構,應用微機上的dBA
SEⅢ數據庫。
數據庫由數據庫結構和數據記錄所組成。數據庫的關系結構和數組有很方便的對應關
系,數據庫的字段對應於數組的列,數據庫的記錄對應於數組的行。本系統中經常利用這
利對應關系。
數據庫比數組更能明確地表示字段項的含義和各記錄的內容,因此,它更面向決策用
戶。對DSS系統來說,用數據庫存放數據是壹個重要的特點(DSS系統經常要對數據
庫中某個數據進行修改,這就比數據以正文文件形式存放時,對某項數據的修改更明確和
方便)。
由於本系統中數據庫的格式為.DBF格式,所以在系統中把dBASEⅢ系統納入
我們的控制之下,做為本系統的數據庫管理系統(DBMS),完成諸如數據庫的建立、
刪除、數據錄入等維護、管理工作。
由於dBASE Ⅲ的規模龐大,且又是壹個封閉型的系統,模型程序不可能或很難
通過該DBMS對數據庫中的數據進行存取,所以模型程序在運行時不通過dBASE
Ⅲ,而在運行控制系統的幫助下直接對數據庫中的數據進行存取。這樣,dBASE Ⅲ
系統的用途便主要側重於對數據庫的維護、管理等工作。
為給使用各種語言編寫的模型以方便、統壹的方式存取數據庫中的數據,且又不對各
種語言的語法和編譯程序作修改(這樣導致不通用性和極大的工作量),考慮各種語言的
***性和MS-DOS操作系統的特點,決定采用文件接口作為數據傳送的媒介。
在本系統中,設置了若幹個名稱為SYSDBF*的虛擬文件(即MS-DOS的設
備文件),壹個虛擬文件與壹個數據庫相對應(這種對應關系可由程序指定)。從模型的
角度來看,從這些虛擬文件中讀數據,就相當於從數據庫中取出數據;向這些虛擬文件中
寫入數據,就相當於把數據存到數據庫中。由於各種高級語言都具有文件讀寫功能,所以
虛擬文件就成為統壹的接口形式。
這些虛擬文件安裝到MS-DOS的內核(利用系統的初始配置功能),由運行控制
系統提供輸入/輸出驅動程序,這些接口是用匯編語言完成的,通過中斷調用(A0H)
來傳遞信息。
模型存取數據命令(由各模型程序使用):
·CREAD:模型從DSS程序中讀取控制變量值
·CWRITE:模型把控制變量值回送給DSS程序
·MREAD:模型從數據庫中讀指定位置的數據到系統緩沖區
·MWRITE:模型將系統緩沖區的數據送入數據庫的指定位置
……
四、DSS核心語言的編譯實現
在本系統中,開發人員使用核心語言編寫DSS程序,構成實際的DSS系統。從結
構上來說,核心語言由三個部組成,它們分別是DSS主程序使用的數據庫映象定義部(
IO部)、主程序使用模型及模型所用數據庫映象的定義部(USING部)及主程序的
執行部分——語句部(PROGRAM部)。
前兩個部(IO部和USING部)主要是說明性的,每個部又由若幹節(SECT
ION)組成。這兩個部的編譯結果是生成壹個後綴為.STR的結構映象文件(見圖2
),其中記錄了映象的數據結構,以供運行控制系統在解釋目標代碼時參考。
PROGRAM部是程序的執行部分,它的編譯結果是生成壹個後綴為.RUN的目
標代碼件,可由運行控制系統解釋執行。
五、GFKD DSS工具的操作命令
本工具系統的主要操作命令匯總如下:
1.管理系統命令
·MCOMMAND:從操作系統進入工具管理系統
·MODIFY:編輯模型程序、DSS程序
·COMPILE:編譯模型源程序
·HELP:求助命令
·其他管理命令
2.核心語言編譯系統命令
·DSSC:編譯DSS源程序
·CODEANA:以文本方式顯示DSS程序的目標代碼(在.RUN文件中)
·LIBANA:以文本方式顯示DSS程序IO部和USING部的數據結構映象
(在.STR文件中)
3.運行控制系統命令;DSSR
六、決策支持系統的開發
對任壹個領域的決策問題,在分析了所需要調用的模型、所要使用的數據庫後,對模
型用最合適的語言編寫程序,並加入模型存取數據庫命令,編譯成目標程序,存入相應的
子目錄下,在模型字典庫中建立該模型的記錄。在dBASE Ⅲ下建立數據庫的結構並
輸入數據。在確定多個模型之間的聯結方式以及需要安排的人機對話方式以後,把決策問
題用核心語言寫成DSS程序,再編譯解釋執行之。
該DSS程序和模型庫、數據庫以及支持它們運行的GFKD-DSS系統,它們組
合的有機整體就形成了特定問題的決策支持系統。
DSS程序中包含直接存取數據庫操作、調用模型目標程序運行、數據處理和人機對
話等功能。DSS程序的運行結果也就是決策問題的決策結果。
模型程序包括對數據庫的存取和模型運行,它的運行也產生後果,這個結果有的是為
DSS程序服務的,有的是為決策用戶服務的。
任壹種語言(PASCAL、FORTRAN等)編寫的模型程序並不支持對數據庫
中數據進行操作。為解決該問題,需要對已編寫好的程序加入DSS工具提供的模型存取
數據庫命令(如CREAD、CWRITE、MREAD…等)。在進行模型程序編譯時
,就需要增加外部過程來實現模型目標程序和存取數據庫命令(目標程序)之間的連接,
從而完成模型與運行控制系統的接口。
七、GFKD-DSS工具的應用
本工具已完成了兩個實用系統:
1.松毛蟲智能預測系統
由南京林業大學提出問題、選擇預測數學模型、整理了大量的預測知識和林場數據,
由我們用GFKD-DSS工具生成了該系統。該系統由三大部分組成:專家咨詢(70
0多條知識)、模型預測(12個預測模型)、數據報表(有42個林場數據庫)。該系
統是壹個大型系統,全部程序4MB。
2.縣級規劃實施反饋決策支持系統
該系統具有系統分析、戰略研究和計劃決策三步決策模式,利用GFKD-DSS工
具研制該系統,縮短了研制時間50%,同時大大提高了系統的技術水平和總體效果