开发一个决策支持系统,是一项费时费力的艰巨工作。决策支持系统的推广,必须
有一个良好的开发工具,即要求提供一套语言体系将数据部件、模型部件和对话部件三者
有机地结合起来。虽然这三个部件各自有一套比较成熟或逐步成熟的语言体系支持,但目
前还没有一种语言能将这三者所需要的功能都有机地结合在一起。
传统的算法语言如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%,同时大大提高了系统的技术水平和总体效果
大部分代码是C语言,架构相关的要相应的汇编代码。
DOS应该使用汇编语言写成的吧,而Windows是主要是以C语言写成的,当前一个操作系统不可能只有一种语言写成的