马金 邢筠
(青岛学商学院理系 266071)
摘 文述知识库系统外部数源接口描述定义程序实现方法
关键词 知识库系统 数库 数源
1 引言
着智决策支持系统应领域断扩原模型库系统完成部分定量分析务知识库系统中求知识库中仅专家定性知识应该具计算知识形成广义知识库系统广义知识库系统中求推理机仅具般推理功够外部数源获取数数学模型进行求解功外部数源获取数推理机具模型求解功关键技术笔者生产成理知识库系统开发程中Visual c++60 成功研究开发该知识库系统外部数源接口拓宽推理机功收较效果外部数源指文数文件数库Excel电子表受篇幅限制文针知识库系统文数文件数库接口设计实现问题进行讨知识库系统Excel电子表接口问题笔者撰文介绍
2 接口描述定义
生产成理知识库中知识数块形式外部数源进行描述定义
21 文数文件接口定义格式
DATAFILE 定义文件接口
<文件句柄>OPEN(<文件名称>)接口中定义意输入数文件
<变量>READ(<文件句柄>行号列号)行
|
WITH <文件句柄>
<变量>READ(行号列号) 行
END WITH
END DATAFILE
22数库接口定义格式
DATABASE 知识库中定义样接口 CONNECTION
INPUTTABLE 接口定义输入块
RECORDSET
定义记录集象名
〈变量〉
WITH 〈ADO记录集象名>
<变量 > FIELDS(字段序号) 行
END WITH END INPUTTABLE
OUTPUTTABLE 定义存储结果数表接口接口定义输出块
RECORDSET
WITH
.FIELDS(变量序号)<变量>
END WITH END OUTPUTTABLE END DATABASE
述格式中〈变量〉指计算表达式模型中需户提供值参数存储表达式模型求解结果表示注释外笔者生产成理知识库系统开发工具中开发知识库外部数源接口定义辅助工具户利工具十分方便完成接口描述定义工作
3 接口程序实现
推理机运行前首先知识库读入存转换成计算机部表现形式接口程序根知识库外部数源接口定义外部数源数读入存缓区进行推理
便查找知识库外部数源接口定义语句首先定义数结构:
struct LineText 存储知识库语句行文
{ CString Text存储知识库语句行文
struct linetext *pNextLine行指针
} *pLineTextHead 知识库语句首行指针
struct DataObject 知识数块象索引表
{ CString ObjecType象类型
struct LineText *pTextLine象首行LineText中指针
struct DataObject *pNextObject}指知识数块象
struct KnowClsName 存储知识类名称定义语句文
{ CString ClsName知识类名称
struct KnowClsName *pNextCls知识类名称指针
struct LlineText *pTextLine知识类名称LineText中指针
struct DataObject *pFirstObject指知识类中第知识数块象指针
struct Method *pFirstMethod指知识类中第知识方法指针
}*pClsHead指知识类头指针
根述数结构定义接口程序总体实现程序流程图1示图1中pDo>ObjectType等DATAFILEDATABASEEXCEL时系统分调文数文件数库EXCEL电子表获取数接口函数中:文数文件接口函数程序流程图2示数库接口函数程序流程图3示OTHER表示知识库中知识数块象
开始pCls=pClsHead
终止
pDopCls->pFirstObject
pClsNULL??
No Yes
pDo->ObjectType
pDoNULL?
Yes No
pClspCls->pNextCls
A
B
C
DATABASE EXCEL OTHER
DATAFILE
pDopDo->pNextObject
图1 接口程序总体实现程序流程
31 数文件接口函数程序实现
存储外部数文件获取数定义数结构:
struct DataFileBuffer 数文件缓区
{ CString VariableName变量名称
double DataValue文文件获取变量值
struct DataBuffer *pNextPata指变量指针
}*pDataBufferHead*pDataBufferTail缓区头指针尾指针
绘出外部数文件获取数接口函数程序流程图2受篇幅限制图2仅出程序算法流程编程时必须考虑具体实现细节例:数行中确定数项数量找Col列创建DataFileBuffer链表结构等
32 数库接口函数程序实现
根述知识库数库接口定义格式知识库部存储结构绘制出数库接口函数程序总体流程图3示中:D表示输入数表接口程序流程图4示E表示输出数表接口程序流程
321 输入数表接口程序实现
存储输入数表获取数定义数结构:
struct InputDataBuffer 存储数库获数变量建立数区
{ _variant_t DataValue存储类型数
struct InputDataBuffer *pNextDataValue}
struct PremiseVariableBuffer 前提变量(变量)集区接受数库数
{ CString VariableName
struct InputDataBuffer *pInputDataBufferHead指数区头指针
struct PremiseVariableBuffer *pNextVariable指变量
}*pPremiseVariableBufferHeadpPremiseVariableBufferTail
绘制出知识库外部数库获取数接口程序流程图4示
A
pTL2pTL1nFind1pTL2>TextFind(OPEN)
定义变量初始化pTL1pDo->pTextLine
pTL1pTL1->pNextLine
nfind1>1
No Yes
pTL1->TextEND DATAFILE
找出文件名称文件句柄名称开数文件(设象名MyFile)Ptl2
No
Yes
返回
Ptl2>TextEND
DATAFILE?
Yes
pTL1pTL1>pNextLine
Yes
pTL2
Ptl2>Text中找出变量名称 VariableName行号(Row)列号(Col)MyFile.SeekToBegin()Bool flagMyFile.ReadString(mDataLine)设MyFile前行nLine1
Ptl2>Text中否存READ文件句柄名称?
No
Yes No
FlagFalse
No Yes
mDataLine中找Col列
RownLine
显示消息通知户存错误
No Yes
flagMyFileReadStirng(mDataLine)nLine++
找否?
No
数VariableName采
DataFIleBuffer结构存入存
Yes
图2 外部数文件获取数接口函数程序流程
B
nFind1pTL1>Text.Find(CONNECTION)
定义变量初始化pTL1pDo->pNextLine
pTL1pTL1->pNextLine
nFind1>1
No
找出ADO连接象名称连接字符串开连接
Yes
pTL1>TextEND DATABASE
pITpTL1pNextLinepOTpTL1>pNextLine
Yes No
返回
pIT>TextINPUTTABLE
pTL1pTL1>pNextLine
pITpIT>pNextLine
D
Yes
pOTpOT>pNextLine
No
pOT>TextOUTPUTTABLE
pIT>TextEND DATABASE
Yes No
E
pOT>TextEND DATABASE
No
No Yes
Yes
图3 数库接口程序实现总体流程
D
返回
pITpIT>pNextLine
pRec>TextEND INPUTTABLE
Yes
pIT>TextEND INPUTTABLE
Yes
No No
pRecpIT
pRec>Text中查找记录集象名称RecName已开连接象名称conName
找否?
pRecpRec>pNextLine
No
pRec>Text截出SQL命令字符串执行
Yes
pField>Text中找RecName
pField>TextEND INPUTTABLE
Yes
pFieldpRec>pNextLine
第nField字段值存入InputDataBuffer存缓区
RecName.MoveNext()
No
pFieldpField>pNextLine
找否?
Yes
No Yes
RecNameGetadoEOF()?
pField>Text中截出变量名存入PremiseVariableBuffer缓区截出字段序号nField
No
图4 外部数库获取数接口程序流程
322 输出数表接口程序实现
输出数表存储推理机表达式模型求解结果需推理机运行前根输出数表接口描述定义准确建立结果变量开数表记录集象间记录集象连接象间链接关系推理完成系统够正确连接数库开数表求解结果存入数表中定义数结构:
struct OutputDataBuffer推理机结果写入该区域
{ CString ConclVariableName推理完成变量名称排序
_Varian_t DataValue存储类型数
struct OutputDataBuffer *pNextDataValue
}*pOutputDataBufferHead*pOutputDataBufferTail
struct ConclVariableBuffer 结果变量缓区
{ CString VariableName
CString ConObjectName排序 减少连接数库次数
CString RecObjectName排序 减少开记录集次数
int nField字段序号
struct OutputDataBuffer *pOutputDataBuffer指输出数区指针
struct ConclVariableBuffer *pNextVariableName
}*pConclVariableHead*pConclVariableTail
struct ConnecObjectName 连接象缓区
{ CString ObjectName
CString ConnectionString
struct ConnecObjectName *pNextConnecObjectName
}*pConnecObjectNameHead
struct RecObjectName 记录集象缓区
{ CString ObjectName记录集象名称
CString RecStringSQL语句字符串
struct RecObjectName *pRecObjectName
}*pRecObjectNamehead
程序实现流程图4相类似处:初始化阶段需连接数库开数表找出结果变量开数表记录集象间连接象间应关系存述结构定义链表中推理机推理完成通指结果变量缓区头指针获整链表入口结果数存入输出数表中
4 结束语
文开发知识库系统外部数源接口作生产成理知识库系统开发工具重组成部分目前正两类型企业进行试运行已收较效果应实践证明该系统运行稳定接口描述定义格式简单实准备接口程序转ActiveX DLL 组件形式便知识库系统中获更效果
参考文献
1 Eugene Olafsen等著 王建华等译 MFC Visual C++6编程技术幕 机械工业出版社 2000年版
2 熊范纶等 雄风专家系统开发工具 清华学出饭社 1999年版
3 王永庆 工智原理方法 西安交通学出版社 1998年版
The Study on Interface
of a Knowledge Base System and External DataSource
Ma Jinping Xing jun
(Manangement Department QingDao University 266071)
Abstract This paper discussed describe definition and program implementation method on interface of a Knowledge Base System and External DataSource
Key words Knowledge Base System DataBase DataSource
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档