⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 模型说明.cpp

📁 一个面向对象的产生式推理模型
💻 CPP
字号:
						专家系统通用模型介绍
	传统的智能语言,如prolog等,由于采用DOS界面、编程思想复杂、支持计算机其他性能较差,
已经无法适应飞速发展的计算机技术,不能满足用户的应用需求。
	为方便以后的开发,我们用VC 5.0编写了一组类库,来实现基于Horn子句的规则推理,
提供给不熟悉智能语言的用户,用它来实现推理这一编程需要。(VC是目前众多流行编程语言中对
“面向对象”这一特性支持最佳的语言,而且用它开发的代码可以被多种编程语言调用。)
	我们编写了诸如命题类、规则类等总共八个类的代码,充分利用了C++面向对象的封装性、
多态性,在类的内部实现了对整个系统的事实和规则的存储、按事实和规则进行搜索等各项功
能。其中,对事实、规则的书写可以实现对命题的取反(在prolog中不支持),在搜索方式中
包含了正向推理、反向推理、启发式推理等多种搜索机制。
	在设计框架时,我们考虑了以后应用的各种需求,使我们的代码具有很强的通用性、易用
性。下面给出使用这个框架的一个例子的代码:

#include "AiExpert.h"			    //包含专家系统框架的头文件,只需这一个。
AiExpert myExpert;					//定义一个专家系统的对象。
AiAssert P("有翅膀","没有翅膀");	//定义一个判断,两个字符串分别为该
AiAssert Q("翅膀有力","翅膀无力");	//    断言成立和不成立时相应的说明,
AiAssert R("会飞","不会飞");		//    该断言会自动被加入到myExpert中。
myExpert.AddRule(P&Q,R);			//添加规则,参数中前一个表达式为规则前提,
myExpert.AddRule(!P,!R);			//    后一个表达式为规则结论,仅当   
									//    规则前提表达式成立时,才推出规则结论。
myExpert.AddFact(Q);				//添加事实,确认该命题已经成立。
myExpert.AddGoal(R);				//添加一个命题为系统搜索目标,可有多个目标。	
									//上述四个语句的出现次序可任意。
myExpert.Search();					//启动搜索,默认依次进行正向搜索,反向启发式搜索,
									//    直到推出目标或确定无法推出时停止。
CString str;
str = myExpert.GetAnswerString();   //取得搜索的结论。
BOOL result = myExpert.GetFact(R);  //取得系统中的某个命题是否成立。

#include "AiExpert.h"
AiExpert myExpert;	
myExpert.LoadFromFile(filename);
myExpert.Search();
myExpert.StoreToFile(filename);

	
	最后,在此模型框架的基础上,我们编写了一个可视化的工具,通过它可以对事实、规则
等直接进行编辑、存盘,并可测试推理过程。一旦文件被调入后,即可进行基于此文件中的事实、
规则的推理,并可显示搜索过程(推理依据)。使用该工具可很方便地建立类似“动物识别”
一类的专家系统。








	
	模型框架改进方向:推理方式、规则中加入过程、给其它语言的接口。
	搜索方法有错

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -