基于Python/PYQT5的动物识别专家系统(人工智能实验)
生活随笔
收集整理的這篇文章主要介紹了
基于Python/PYQT5的动物识别专家系统(人工智能实验)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
基于Python/PyQT5的動物識別專家系統(人工智能課程實驗)
本學期人工智能實驗課要求完成一個動物識別專家系統。 功能:推理顯示結論;添加規則;推理失敗彈框提示。 本文采用Python+PyQT5去完成GUI的設計和程序編寫。一、系統主要邏輯:
(1)用戶輸入已知事實—>點擊推理
(2)獲取輸入的已知事實 加入 綜合數據庫DB
(3)獲取規則庫,將前提和結論分別存儲在兩個列表中命名為P和q,存在對應關系
(4)將前提和已知事實庫進行匹配:
如果存在一條前提,全部都出現在已知事實中,那么至少可以得出一個結論。將此結論加入綜合數據庫,將推理過程進行標記。存在一個推理列表中,其中存的數字為推理出來的前提和結論下標。用于顯示。
如果不存在這樣的前提,就說明一條中間結論也推不出來,跳轉(6)
(5)等循環完了,因為至少存在一個中間結論,所以直接輸出推理過程和(中間或者最終)結論。
(6)提示用戶什么也不能推出來,詢問是否進行補充,如果選擇是就回到主頁面,如果選擇否就關閉程序,跟用戶拜拜。
框:輸入事實的框,顯示推理過程的框,顯示結論的框,自動顯示當前規則庫的框,用來添加規則庫的框。
按鈕:點擊進行推理的按鈕,點擊添加規則庫并更新當前窗口的按鈕
對話提示框:詢問是否進行補充的框,跟用戶拜拜的框。
界面:
二、系統主要代碼部分:
#推理部分的代碼def inference(self):#推理input=self.textEdit.toPlainText() #獲取輸入的事實input=input.split('\n')DB=set(input)#將綜合數據庫以集合的形式存放[P,Q]=get_rules() #獲取規則庫self.process='' #用于存儲推理過程self.animal='' #存儲結論#下面開始正式推理flag=0for premise in P: #對前提條件進行遍歷if ListInSet(premise, DB):#能夠找到一個前提條件全部存在于數據庫DB.add(Q[P.index(premise)]) # 把結論放入綜合數據庫self.animal=Q[P.index(premise)]#更新結論self.process+= "%s --> %s\n" % (premise, Q[P.index(premise)])flag=1#至少有一個能夠推出來的結論if flag==0:#一個結論也推不出來,詢問用戶是否進行補充self.alert_window.show()self.alert_window.pushButton.clicked.connect(self.alert_window.close)self.alert_window.pushButton_2.clicked.connect(self.no)else: #flga!=0說明有結論生成#顯示出推理過程self.textEdit_2.setText(self.process)#顯示出結論self.lineEdit_2.setText(self.animal)添加新的規則部分的函數代碼:
def add_rule(self):#添加新規則new_rule=self.lineEdit.text()if(new_rule!=" "):self.textBrowser.append(new_rule)RD=open('RD.txt','a')RD.write(new_rule)RD.write('\n')四、完整代碼和文件
請直接運行myanimal.py文件,打開至IDE或者pycharm中再運行。
如果沒有圖形界面,可以下載并安裝PyQT庫
鏈接:https://pan.baidu.com/s/1pO7jBUQFT9AMsmJCqgl0sA
提取碼:me1i
總結
以上是生活随笔為你收集整理的基于Python/PYQT5的动物识别专家系统(人工智能实验)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux C高级编程——文件操作之系统
- 下一篇: LinuxC高级编程——线程间同步