动物识别专家系统

一、产生式系统简介

在这里插入图片描述
规则库:用于描述相应领域内知识的产生式系统。
综合数据库:又称为事实库、上下文、黑板,一个用于存放问题求解过程中各种当前信息的数据结构。
控制系统:又称推理机构,由一组程序组成,负责整个产生式系统的运行,实现对问题的求解。

二、构造规则库

1.题目事实(概念)

char *feature[]={“有毛”,“产奶”,“有羽毛”,“会飞”,“会下蛋”,“吃肉”,“有犬齿”,“有爪”,“眼睛盯前方”,“有蹄”,“反刍”,“黄褐色”,“有斑点”,“有黑色条纹”,“长脖”,“长腿”,“不会飞”,“会游泳”,“黑白两色”,“善飞”,“哺乳类”,“鸟类”,“肉食类”,“蹄类”,“企鹅”,“海燕”,“鸵鸟”,“斑马”,“长颈鹿”,“虎”,“金钱豹”};

2.题目产生式规则

Rule rule[15]={ {{0,-1},20}, {{1,-1},20}, {{2,-1},21}, {{3,4,-1},21},
{{20,5,-1},22}, {{6,7,8,-1},22}, {{20,8,-1},23}, {{20,9,-1},23},
{{22,11,12,-1},30}, {{22,11,13,-1},29}, {{23,14,15,12,-1},28},
{{23,13,-1},27}, {{21,14,15,16,-1},26}, {{21,19,-1},25},
{{21,17,18,16,-1},24} };

3.规则库

根据产生式规则构造规则库,以文本的形式展现,命名为rules.txt。
在这里插入图片描述

4. 获得规则库

文件读取函数,通过读取文件,来获得规则库。

def storeRules(filePath):   
file_data = ""
    	with open(filePath, 'r', encoding='utf-8') as f:
        for line in f:  # 将文件按行读取            
file_data += line
    	f.close()
    	d.close()

三、主要函数

1.推理函数

def inference(self):
    input=self.textEdit.toPlainText()     #获得规则库
    input=input.split('\n')
    DB=set(input)
[P,Q]=get_rules()
    self.process='' 
    self.animal='' 
    flag=0
    for premise in P:                  #对规则库进行遍历
        if  ListInSet(premise, DB):
            DB.add(Q[P.index(premise)])             
self.animal=Q[P.index(premise)]
flag=1
if flag==0:
    self.lineEdit_2.setText("未知动物")   #如果遍历不成功则表示为未知动物
    else: #flga!=0
         self.lineEdit_2.setText(self.animal)

2.增加规则函数

def addrule(self):
    new_rule=self.lineEdit.text()  #在文本框输入新规则
    if(new_rule!=" "):
        self.textBrowser.append(new_rule)
        RD=open('roles.txt', 'a')
        RD.write(new_rule)     #将规则写入rules.txt
        RD.write('\n')

项目总代码及实验报告详见链接:项目总代码

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

啊噗呲咔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值