人工智能专家系统的简单实现

通过一段时间的学习。最终对专家系统有了必定的认识,在此发表一下我的的看法,但愿和你们一块儿交流学习。html

 专家系统,通俗的讲。就是让计算机具备人类专家的知识、经验和技能,能够像人类专家同样解决实际问题。专家系统实质上是一段计算机程序,它能够以人类专家的水平完毕某一专业领域的任务。

经过计算机。模拟人类专家怎样运用他们的知识和经验解决面临问题的方法、技巧和步骤。数据库


基本系统结构(一般由人机交互界面、知识库、综合数据库、推理机、解释器、知识获取等6个部分构成):数据结构


如下是一个简单的动物识别的专家系统设计(简单推断蛇、蜥蜴、鸡、猫四种动物):函数

1. 实现流程:post

1)    初始化规则集合学习

2)    初始化规则事实集合spa

3)    使用规则推导设计

2. 加入规则信息:code

”冷血”,”有腿”,”羽毛”,”会飞”htm

3. 规则事实:

冷血+没有腿 -> 蛇

冷血+有腿 -> 蜥蜴

非冷血+有羽毛+不会飞 -> 鸡

非冷血+没有羽毛 -> 猫

4. 推理过程:


部分代码:

#define Chicken 0x02	//鸡		0010
#define Cat     0x00	//猫		0000
#define Snake   0x01	//蛇		0001
#define Lizard  0x05	//蜥蜴	0101

4 位二进制位分别表示:能飞、有腿、有羽毛、冷血,匹配上则为1,不然为0
数据结构定义

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条规则),想要功能更无缺。咱们还可以加入不少其它精确的规则和事实。

相关文章
相关标签/搜索