经过一段时间的学习。最终对专家系统有了一定的认识,在此发表一下个人的见解,希望和大家一起交流学习。
专家系统,通俗的讲。就是让计算机具有人类专家的知识、经验和技能,可以像人类专家一样解决实际问题。专家系统实质上是一段计算机程序,它可以以人类专家的水平完毕某一专业领域的任务。通过计算机。模拟人类专家怎样运用他们的知识和经验解决面临问题的方法、技巧和步骤。
基本系统结构(通常由人机交互界面、知识库、综合数据库、推理机、解释器、知识获取等6个部分构成):
以下是一个简单的动物识别的专家系统设计(简单推断蛇、蜥蜴、鸡、猫四种动物):
1. 实现流程:
1) 初始化规则集合
2) 初始化规则事实集合
3) 使用规则推导
2. 加入规则信息:
”冷血”,”有腿”,”羽毛”,”会飞”
3. 规则事实:
冷血+没有腿 -> 蛇
冷血+有腿 -> 蜥蜴
非冷血+有羽毛+不会飞 -> 鸡
非冷血+没有羽毛 -> 猫
4. 推理过程:
部分代码:
#define Chicken 0x02 //鸡 0010
#define Cat 0x00 //猫 0000
#define Snake 0x01 //蛇 0001
#define Lizard 0x05 //蜥蜴 0101
数据结构定义
typedef struct Rule
{
char *info; //规则信息
Rule *pYes; //匹配到的下一个规则
Rule *pNo; //未匹配到的下一个规则
int pos; //该规则的位置
}Rule;
unsigned char result = 0;
推导函数
void MatchRules(char *s, Rule *match)
{
if(!s || !match)
return;
//规则是否匹配上
if(CheckRule(s, match->info) > 0)
{
//记录位置
result += 1 << match->pos;
MatchRules(s, match->pYes)
}
else
{
//未匹配上
MatchRules(s, match->pNo);
}
}
推断result。得出结论
switch (result)
{
case Chicken:
printf("鸡!");
break;
case Cat:
printf("猫!");
break;
case Snake:
printf("蛇。");
break;
case Lizard:
printf("蜥蜴!");
break;
default:
printf("其它!");
break;
}
以上仅仅包括简单规则(4种动物推断,和4条规则),想要功能更完好。我们还能够加入很多其它精确的规则和事实。