动物识别专家系统

一、产生式系统简介

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

二、构造规则库

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。
动物识别专家系统_第2张图片

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')

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

你可能感兴趣的:(python,动物识别专家系统)