结合clips和vc++实现规则推理的方法

结合clips和vc++实现规则推理的方法

ID:18423494

大小:166.00 KB

页数:6页

时间:2018-09-17

结合clips和vc++实现规则推理的方法_第1页
结合clips和vc++实现规则推理的方法_第2页
结合clips和vc++实现规则推理的方法_第3页
结合clips和vc++实现规则推理的方法_第4页
结合clips和vc++实现规则推理的方法_第5页
资源描述:

《结合clips和vc++实现规则推理的方法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、结合CLIPS和VC++实现规则推理的方法1.引言专家系统的开发一直是人工智能领域的一个重要研究方向。目前比较流行的专家系统开发语言主要有以下几种工具:⑴程序设计语言。包括通用程序设计语言(如C\C++,PASCAL)和人工智能语言(Prolog和Lisp)两种。⑵专家系统外壳。它是由一些已经成熟的具体专家系统通过抽取其中的具体知识,而保留它的体系结构和功能演变过来的。利用它可以快速产生—个专家系统。其主要缺点在于灵活性和通用性比较差,只局限于某些特定的域。⑶专家系统开发工具。它介于两者之间,为知识的表示提

2、供了固定的模式,使专家系统的构造更加方便。这三种方式各有优缺点,其中专家系统工具以其高效、简便成为最常用的工具;另一方面,VC++等面向对象的可视化编程工具早已成为科研人员熟悉的开发工具。选择两者结合的方法来开发专家系统,可以充分利用两者的特点实现优势互补。2.CLPS简介CLIPS基本结构是产生式系统,采用正向推理机制,CLIPS与一般的产生式系统的不同在于其推理过程中独特的rete模式匹配算法,极大地提高了系统的反应速度。CLIPS专家系统主要有三大部分组成:⑴知识库:包括初始事实和初始对象实例以及规则

3、库。⑵推理机构:控制整个规则的执行,决定规则是否应该执行和什么时候被执行。⑶黑板:由事实列表和对象实例列表组成,用于存储推理结果数据(黑板数据)。黑板数据包括开始推理以来得到的事实集对象实例集。3.CLIPS和VC++结合的优势利用VC++实现专家系统的主要缺点是C++在逻辑推理方面并不擅长,因此采用C++编写的推理机的开发程序量相对较大。CLIPS的优点包括:⑴逻辑推理方面的强大功能。使用CLIPS开发专家系统,推理机的设计可以大大简化。只需要将相关领域的知识按照给定的知识表示模型表示并按一定结构顺序组织

4、起来即可。⑵有利于和其他语言联合使用。CLIPS很容易实现和其他语言的接口,而且CLIPS写成的专家系统可以和VC++共同编译,极大地提高了系统运行速度和可移植性。从以上分析可以看出,VC++和CLIPS在开发专家系统方面都有各自突出的优势,也有其缺陷。两者具有很强的互补性:CLIPS在逻辑推理方面的强大功能使它适合编写专家系统的知识库和推理机部分;VC++用于开发人机界面、处理与数据库和外设的数据交换。CLIPS在推理过程中遇到的复杂数值运算则通过调用VC++编写的外部函数来完成。这样结合VC++和CLI

5、PS编程可以实现功能强大、界面友好的专家系统。1.CLIP嵌入VC++的一般过程⑴首先将CLIPS的源代码拷贝到VC++工程文件目录下。⑵在VC++中选取菜单:工程→添加工程→Files,将所有文件(*.C)都选上添加到工程中。⑶加入相应头文件声明为使在VC++中能识别CLIPS源程序,并可以在用户自定义函数中使用CLIPS中的方法函数,必须加入clips.h的头文件声明,声明代码为:extern“C”{#include“CLIPSSrcclips.H”}声明可在stdAfx.h头文件末尾加入,但在菜单工

6、程→设置→C/C++标签下,将/yustdAfx去掉或者在分类中将precompiledheader选取为不预处理头文件。⑷在UserFunctions函数中声明用户自定义函数用户自定义函数必须对CLIPS声明,以使它们能被CLIPS正常访问。用户自定义函数可以通过修改函数UserFunctions来向CLIPS声明。在UserFuncitons中,需为每个用户自定义函数调用函数DefineFuntion,这样用户的源代码才能被CLIPS编译和链接。例如:extern“C”voidUserFunctions

7、();voidUserFunctions(){externvoidTextOut(charstrl,charstr2);externintYesOrNo(char*strl,ehar*str2,ehar*str3);externvoidExplainOut(charstrl,charstr2);DefineFunction(“TextOut”,’v’,PTIFTextOut,”TextOut”);DefineFunction(“YesOrNo”,’b’,PTIFYesOrNo,”YesOrNo”);Defi

8、neFunetion(“ExplainOut”,’v’,PTIFExplainOut,”ExplainOut”);}DefineFunction的第1个参数是函数的名字,是一个字符串;第2个参数是返回CLIPS的值的类型。返回类型如表1所示:表1返回类型返回代码bcfio返回类型布尔型字符串型单精度浮点数整型实例名返回代码lvdaw返回类型长整型无返回值双精度浮点数外部地址符号第3个参数是指向实际函数的指针,它与

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。