规则库:用于描述相应领域内知识的产生式系统。
综合数据库:又称为事实库、上下文、黑板,一个用于存放问题求解过程中各种当前信息的数据结构。
控制系统:又称推理机构,由一组程序组成,负责整个产生式系统的运行,实现对问题的求解。
char *feature[]={“有毛”,“产奶”,“有羽毛”,“会飞”,“会下蛋”,“吃肉”,“有犬齿”,“有爪”,“眼睛盯前方”,“有蹄”,“反刍”,“黄褐色”,“有斑点”,“有黑色条纹”,“长脖”,“长腿”,“不会飞”,“会游泳”,“黑白两色”,“善飞”,“哺乳类”,“鸟类”,“肉食类”,“蹄类”,“企鹅”,“海燕”,“鸵鸟”,“斑马”,“长颈鹿”,“虎”,“金钱豹”};
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} };
根据产生式规则构造规则库,以文本的形式展现,命名为rules.txt。
文件读取函数,通过读取文件,来获得规则库。
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()
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)
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')
项目总代码及实验报告详见链接:项目总代码