ComputerEraNo.122005
(void**)&pSample);pSample->Hello();pSample->Release();pCF->Release();
FreeLibrary(hDllInst);}
这种方法是把COM当作普通DLL处理:直接从dll中得到DllGetClassObject,接着的操作类似方法二,通过函数Dll-GetClassObject创建类厂对象,然后用得到的类厂对象的接口指针创建组件的ISampleInterface接口指针,接口成员函数调用完成后把类厂对象释放,最后释放DLL资源。这种方法可以使组件不用在注册表里注册,也是最原始的方法。然而这样做没
什么意义,至少失去了COM对用户的透明性,一般来说不宜选择这种方法。
5结束语
通过以上几种访问COM组件的方法介绍,有助于开发人员更好掌握COM技术,针对复杂的应用程序,实现组件化的软件设计。
参考文献:
[1]潘爱民.COM原理与应用.清华大学出版社,2001.[2]徐晓梅,高丽等.VisualC++程序设计.科学出版社,2003.
[3]DaleRogerson.InsideCOM.MicrosoftPress,1997.1CLIPS简介
CLIPS(CLanguageIntegratedProductionSystem)是由美国航空航天局约翰逊空间中心开发的一种专家系统工具,由C语言编写而成。它是目前应用最为广泛的AI系统开发工具之一。在政府、工业界和学术界等领域都拥有大量的用户。
CLIPS开发的系统是产生式结构,由知识库、推理机构和黑板三大部分组成。一般采用正向推理机制。与一般的产生式系统不同,其推理过程中独特的RETE模式匹配算法,极大地提高了系统的反应速度。
在知识表示方面,CLIPS支持产生式和面向对象两种知识表示方法。这两种方法既可以单独使用也可以结合起来使用,因此可以实现优势互补。
2CLIPS和VC++结合的优势和方法
任何一种语言都有自己的优势和缺陷,CLIPS用于开发知识库系统的优点在于:
!逻辑推理方面的强大功能使用CLIPS开发专家系统,
推理机的设计可以大大简化,只需要将相关领域的知识按照给定的知识表示模型表示并按一定结构顺序组织起来即可。
"可移植性好CLIPS由C语言写成,可移植性很好,不必改变代码就能移植到不同的平台上。
#可扩展性好CLIPS免费提供全部源代码,可以根据需要方便地修改和剪裁。
⑷易于和其他语言联合使用CLIPS很容易实现和其他语
言的接口,而且CLIPS写成的知识库系统可以和VC++共同编译,极大地提高了系统运行速度和可移植性。
CLIPS的主要缺点在于:
⑴它在数值计算、数据采集和与外设的数据交换等方面并不擅长。
⑵CLIPS只提供基于文本的交互环境,界面不友好,缺少良好的图形用户界面。
由以上特点可以看出,要实现一个功能强大、界面友好的AI系统仅仅靠CLIPS一种工具是不够的,
因此我们又引入了VC++作为补充。
C++是当前主流的程序设计语言,在人工智能领域也有广泛的应用。它具有功能强大、效率高,运行速度快、可移植性好等一系列优点。而且C++是一种面向对象的语言,便于实现框架或面向对象的知识表示。目前常用的C\C++编程工具(如VC++)功能强大完善而且有易用的图形用户界面开发功能,VC++已经成为大家熟悉的主流开发环境。利用VC++实现专家系统的主要缺点是C++在逻辑推理方面并不擅长,因此采用C++编写的推理机的开发程序量相对较大。
从以上分析可以看出,VC++和CLIPS在开发专家系统方面都有各自突出的优势,也有其缺陷。两者具有很强的互补性:CLIPS在逻辑推理方面的强大功能使它适合编写知识库系统的知识库和推理机部分;VC++可以用于开发人机界面、处理与数据库和外设的数据交换。CLIPS在推理过程中遇到的复杂数
一种基于CLIPS 的知识库系统的模块化设计方法
霞,姜
(淮海工学院计算机科学系,江苏连云港222005)
摘要:知识库系统体系结构的研究是人工智能领域的一个重要研究方向,模块化结构则是当前软件结构的一个潮流。文章以电力营销决策支持系统的开发为例,探讨了一种结合CLIPS和VC++两种开发工具实现其模块化结构的方法。关键词:CLIPS;VC++;知识库系统;模块化
26··
计算机时代2005年第12期
值运算则通过调用VC++编写的外部函数来完成。这样结合VC++和CLIPS编程我们可以实现功能强大、界面友好的知识库系统。
下面以电力营销决策支持系统的开发为例,介绍系统模块化的实现方法。
3知识库系统的模块化实现方法
电力营销决策支持系统围绕电力部门用电营销的管理活动,对每月的营销数据进行统计、汇总和加工,并以此为基础进行相关推理,为电力部门的管理者提供决策支持。系统的功能结构如图1所示。
图1电力营销决策支持系统结构图
其中业务监控用于对电力系统供电时的一些重要指标如
线损率、非正常送变电损失、负载率等进行实时性监控。综合业务决策支持用于对电力营销活动的各种日常业务提供决策支持;即席查询可以向用户提供各种统计数据,并可以以图表的形式对指标数据进行同期对比、趋势分析。
这一系统也是一个典型的知识库系统,我们采用前面提到的VC++和CLIPS进行系统的开发。由于CLIPS开发的系统是基于文本的,系统的运行需要用户以规定的形式将事实和规则通过命令行输入,并以文本的形式显示,这显然不符合实际要求。为提高效率和系统的反应速度,知识库系统运行时所需要的驱动数据应直接由应用程序或用户通过图形人机界面提供。因此我们以VC++作为整个系统的基本开发平台,用于开发人机界面、处理知识库系统与数据库系统和外设之间的数据交换;CLIPS则用于开发高层知识库系统的核心部分-知识库和推理机,并以动态链接库的形式嵌入在VC++主程序中运行。VC++主程序负责从数据库中或人机界面读取相关参数作为新的事实传递给知识库系统,触发其推理的进行。
对于这样一个系统,要根据其功能实现其结构的模块化,需要从两方面考虑:既要实现VC++程序的模块化又要实现CLIPS程序的模块化。前者的实现较为简单,这里不再冗述。而CLIPS对模块化设计也提供了支持:CLIPS允许开发者提前把知识库中的知识以CLIPS特定的表示形式(产生式或面向对象两种知识表示方法)表示出来,并以.clp文件的形式保存起来。当系统运行时,在需要的时候把这些文件加载到系统中,供推理使用。利用这一特点我们可以把CLIPS开发的知识库按功能划分为对应的若干个模块,每个模块就对应着一个.clp文件。这些文件当系统运行时可以动态地加载进来。
在本系统的开发中我们利用VC++编写的工作者线程把这些由CLIPS开发的知识库模块封装起来。
由VC++线程负责各知识库模块的加载和卸载,以及系统运行时知识库模块与人机界面和推理机之间的数据交换。这些工作者线程根据用户操
作由人机界面程序在适当的时候启动和终止。整个系统的原理如图2所示。
图2知识库系统模块化结构原理图
系统运行时,根据用户的选择,人机界面程序启动相应的工作者线程,线程启动后会首先加载对应的知识库模块(.clp文件)。这样推理机就可以根据其中的知识进行相关推理。推理所用到的事实和其他参数由线程从数据库和人机界面读取并
传递给推理机。推理得到的结果由线程通过人机界面反馈给用户,也可以由CLIPS推理机以对话框的形式直接反馈给用户。此外用户还可以向知识库模块中添加新的知识,推理过程中有可能还会产生一些新的知识,这些都可以通过VC++线程写入到对应的知识库模块中。
在电力营销决策支持系统开发中,我们设计了业务监控、用户需求预测、业扩报装等一系列的知识库模块(.clp文件),针对每个知识库模块再设计一个对应的工作者线程。这样两者结合就可实现系统的各个功能模块。推理机则由CLIPS提供。在电力营销决策支持系统的各个模块中业务监控模块作为常驻模块,系统启动时就自动加载运行。其他模块可根据用户需求动态地加载。这样有助于减少系统
规模,提高运行效率。至于电力营销决策支持系统中的即席查询模块只是提供各种统计数据查询的功能,不涉及到知识库系统的推理。因此在系统开发时作为人机界面的一部分,而不以工作者线程的形式实现。
4结束语
CLIPS作为一种优秀的专家系统开发工具,有着广阔的应用前景。我们采用它与VC++相结合进行了电力营销决策支持系统的开发,并且实现了系统的模块化结构设计。与其它方式相比,这种方法具有系统安全可靠、可移植性好、结构灵活、反应速度快、易于维护等明显优势。对它的研究有着较高的实用价值和理论意义。
参考文献:
[1]唐红娥,文晟.CLIPS在工程制图专家系统中的应用研究.计算机应
用,2003.2.
[2]程瑞琪.用C++开发专家系统的一种新方法.小型微型计算机系统,
1999.3.
[3]STBofNASA.CLIPSArchitectureManual,2001.
[4]STBofNASA,CLIPSReferenceManualAdvancedProgramming
Guide,2001.
[5]叶雪梅,原清,谭书伦.在C++Builder中嵌入CLIPS的技术实现.计
算机应用,2000.4.
CE
27··模块化设计的优点

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。