动物识别专家系统
动物识别专家系统的建立
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
实用第一 智慧密集
… . . … … … … … .
家豫 绩
l
童 小 明
摘 要 :专 家 系统是 具 有人 工智 能和推 理功 能 的知识 系统 。 以一 个动 物识 别专 家 系统的 建 立为例 ,
1 1 3 4
()吃 肉的哺 乳类 称为食 肉动 物 ( 肉 &哺乳 类 _ 肉类) 5 吃 >食 。 ( )反 刍食 物 的 哺 乳 类 是 偶 蹄 类 f 刍 食 物 & 哺 乳 类 一 6 反 >
“ 有蹄 类“黄 褐 色” , “ , 1 1 1 1 1 0 2 2 2 4 2 6 5 6 7 8 9 2 1 2 3 2 5 2
父节点 &父节点 子 节点 ( )有 毛 发 的动 物 是 哺 乳 类 ( 毛发 & 动物 一 1 有 >哺 乳 类) 。 ( )有 奶 的动 物 是 哺 乳 类 ( 奶 & 动物 一 2 有 >哺 乳 类) 。
长 脖
鸵 鸟 潜 水 企 鹅 f 毛 发 ¨动 物 ¨哺 乳 类 ¨ 有 奶 ¨ 有 羽 毛 鸟 有 . 类n会 飞-生 蛋 n吃 肉 “反刍 食 物 ”偶 蹄 类 ”有 蹄 * ” , “ , - , * , 一 , ・ 一 ,
( )吃 肉 的 哺 乳类 称 为 食 肉动 物 ; ( )反 刍食 物 的 哺 乳 类 是 5 6 偶蹄 类 ; ( )有 蹄 的 哺乳 类 是 有 蹄 类 ; ( ) 黄褐 色有 暗斑 点 7 8 的 食 肉类 是 金 钱 豹 ; ( )黄 褐 色有 黑 色 条 纹 的食 肉类 是 老 虎 ; 9 (0 1 )尖 牙 利 爪 且 眼 睛 向前 的 是 食 肉动 物 ; ( 1 脖 有 黄 褐 色 1)
专家系统实例
专家系统实例
专家系统是一种基于知识推理的智能信息系统,用于解决特定领域的问题。
它们利用专家知识和推理规则,通过询问用户的问题来识别问题的本质,然后提供相应的解决方案。
以下是一些专家系统实例: 1. 动物识别专家系统:该实例是一个基于人工智能技术的专家系统,用于识别动物物种。
它利用了计算机视觉和自然语言处理技术,通过询问用户有关动物的特征和属性来识别动物。
2. 医学诊断专家系统:该实例是一个用于医学诊断的专家系统,它利用医学知识和推理规则,通过对用户提供的症状和疾病特征进行分析,从而作出准确的医学诊断。
3. 工业控制专家系统:该实例是一个用于工业控制的专家系统,它利用控制理论和推理技术,通过对用户提供的控制命令进行分析和优化,以实现更高效、更安全的工业控制。
4. 农业施肥专家系统:该实例是一个用于农业施肥的专家系统,它利用植物营养知识和推理规则,通过对用户提供的肥料信息和植物需求进行分析,从而提供最佳的施肥方案。
这些专家系统实例展示了人工智能技术在各个领域的应用,可以帮助用户解决各种复杂问题。
简单动物识别系统的知识表示
•简单动物识别系统的知识表示• 1. 实验目的•理解产生式知识表示方法,能够用选定的编程语言设计产生式系统的规则库和综合数据库。
• 2. 实验环境•在微型计算机上,选一种编程语言。
• 3. 实验要求•(1) 以动物识别系统的产生式规则为例。
•(2) 用选定的编程语言建造知识库和综合数据库,并能对它们进行增加、删除和修改操作。
•学习任务•通过网络搜索,以“专家系统的作用”为主题进行调查。
搜集各种应用专家系统的实例,分析其用途,并根据不同的用途进行分类。
•请上网查找专家系统的相关资料,从不同的角度追溯专家系统的发展史。
•作品结果:把上面两个任务结果,形成一个WORD文档。
其中对专家系统的用途分类形成一个表格。
•用Intermodeller设计一个小型的专家系MYCIN是一个通过提供咨询服务来帮助普通内科医生诊治细菌感染性疾病的专家系统,其于1972年开始研制,74年基本完成,并投入实际应用。
MYCIN的取名来自多种治疗药物的公共后缀,如clindamycin、erythromycin、kanamycin等。
如果说能推测有机化合物分子结构的DENDRAL是世界上第一个有重要实用价值的专家系统,那末MYCIN则是最有影响力的专家系统。
围绕着MYCIN的各种研究工作一直沿续了10年,对于推动知识工程以及专家系统学科的建立和发展具有重要影响。
可以说,早期的专家系统,尤其是医疗诊断和咨询型专家系统,许多都参照了MYCIN系统的技术,如知识表示、不确定推理、推理解释、知识获取等。
MYCIN也设计为典型的产生式系统,由规则库、综合数据库和控制系统三个部分组成;只是基于规则的推理采用逆向方式,即从问题求解的目标出发,搜寻原始证据对于目标成立的支持,并传递和计算推理的不确定性。
从KB系统的组成来看,规则库就是MYCIN的知识库,综合数据库和控制系统联合形成推理机。
其中,综合数据库用以保存问题求解的原始证据(初始状态)和中间结果。
(毕业论文)动物识别专家系统
摘要专家系统是目前人工智能中最活跃,最有成效的一个研究领域,它是一种基于知识的系统,它从人类专家那里获得知识,并用来解决只有专家才能解决的困难问题。
该动物识别专家系统是在VC编程环境下编写的基于Windows操作平台上的图形用户界面程序,依据15条规则,构建知识库,能判别七种动物。
该系统具有较好的扩充性,可移植性、透明性,算法简单高效,使用方便,用户界面友好。
在层次树结构的数据结构基础上,采用正向推理的技术构建推理机,解释机构的实现采用了唱片技术和追踪技术。
构建该动物识别专家系统主要目的是为了提高人工智能的理论水平,更深入地了解专家系统的原理、历史、构成和各组成部件的基本原理,并提高VC的编程能力。
关键字:专家系统,知识库,规则,推理机,解释机AbstractExpert system is one of the most active and effective research realms. It can solve difficult problems, which can only be solved by experts. It is a system based on knowledge and can achieve knowledge from experts.This expert system is the visual interface program, which based on Windows operation system in the situation of Visual C++ programming. It can distinguish seven kinds of animals by constructing knowledge base, which is based on 15 rules. This system is moveable, transparent, and expansible. It can be easily used. Its mathematic is simple and efficient the user interface is friendly. The construction of reasoning machine adopts the positive reasoning technology and the realization of explanation adopts the record and pursuit technologyThis animal distinguish expert system aims to raise the theory standard of artificial intelligence. The writer intended to know about the principle, the history and the composition theory of expert system, and upgrade the programming ability.Key W ords: expert system, repository, rule, reasoning machine, explanative machine目录摘要 (1)Abstract (2)目录 (3)前言 (4)第一章需求分析 (6)1.1 需求状况 (6)1.2专家系统的设计要求 (6)1.3组成部分 (10)1.4推理机 (12)第2章概要设计 (14)2.1总体流程的设计 (14)2.1.1创建知识库 (14)2.1.2 设计推理机的工作流程 (17)2.2用户界面设计 (19)2.2.1 用户界面设计的原则 (19)2.2.2设计的用户界面 (20)第3章详细设计 (22)3.1学习VC有感 (22)3.1.1认识VC (22)3.1.2使用MSDN (23)3.2 详细编码 (24)第4章测试与完善 (37)4.1 测试系统 (37)4.2 完善功能 (38)4.2.1改善explain功能 (38)4.2.2 添加backspace功能........................... 错误!未定义书签。
专家系统举例分析
知识获取可以划分为两个阶段: 一个是在知识库尚未建立起来时,从领域专家及有关文献资料那获取知识。 对于这种情况,为了实现自动知识获取,需要解决自然语言的识别与理解以及从大量事例中归纳知识等问题。 一个是在系统运行过程中,通过运行实践不断总结归纳。 对于这一种情况,还需要解决如何从系统的运行实践中发现问题以及通过总结经验教训,归纳出新知识、修改旧知识等问题。
专家系统MYCIN - 知识表示
领域知识的表示
专家系统MYCIN - 知识表示-领域知识的表示
领域知识用规则表示,其一般形式为: RULE * * * IF <前提> THEN <行为> 1. * * * 是规则的编号。 2.前提的一般形式是: ($ AND <条件-1> <条件-2> … <条件-n>) 3.行为部分由行为函数表示,MYCIN中有三个专门用于表示动作的行为函数:CONCLUDE, CONCLIST和TRANLIST。其中以CONCLUDE用得最多,其形式为: ( CONCLUDE C P V TALLY CF)
创 建 知 识 库
建 立 数 据 库
推 理 机
解 释 机 构
标志结论性规则
释放规则链表
释放事实链表
匹配已知事实
动物识别系统 - 知识表示
知识用产生式规则表示,相应的数据结构为: struct RULE-TYPE{ char * result; int lastflag; struct CAUSE-TYPE* cause-chain; struct RULE-TYPE * next; }; 已知事实用字符串描述,连成链表,其数据结构为: struct CAUSE-TYPE { char cause; struct CAUSE-TYPE* next; };
919144-C语言程序设计教程——面向计算思维和问题求解-第4章-新
if (y > max)
/*如果y > max,则把y赋给max*/
max = y;
printf ("max=%d\n", max); /*输出max的值*/
}
4.3.1 if语句
运行结果:程序运行时若输入:59↙,结果如下图。
4.3.2 if-else语句
if-else语句用于双分支选择结构。根据条件的判定结果,选 择执行两种操作中的一种。if-else语句的基本格式如下:
4.2.2 逻辑运算及其表达式
同样,对于逻辑表达式:(表达式1) || (表达式2),如果表达 式1的值为1,直接得出整个表达式的值也为1,而不再计算表达 式2的值。
if条件语句一般用于只有两种选择的情况。满足判定条件 执行一种操作,否则执行另一种操作。对if条件语句进行嵌套, 可以处理多种选择情况。
4.3.2 if-else语句
问题分析:目前只需要对动物分成两类。依题意,分类的条件 应为 “动物有毛发,且分泌乳汁”,条件为真时输出“是哺乳 动物”;否则输出“是鸟”。 算法设计:本例算法简单,采用if-else语句可实现该功能。算法 流程图略。
/*输出面积,保留两位小数*/
}
else
/*否则*/
printf ("构不成三角形\n");
/*输出“构不成三角形”*/
}
4.3.2 if-else语句
运行结果:程序运行时若输入345↙,结果如下图所示。
4.3.2 if-else语句 例4-5 用if-else语句求两个整数中的最大值。
问题分析:在例4-3中用if语句求出了两个整数中的最大值,实 现这一功能也可以采用if-else语句。方法是:比较两个变量x和y 的值,如果x>y则输出x,否则输出y。
禽兽系统管理
动物识别专家系统一试验题目动物识别专家系统二、试验内容动物识别专家系统是流行的专家系统实验模型,它用产生式规则来表示知识,共15条规则、可以识别七种动物,这些规则既少又简单,可以改造他们,也可以加进新的规则,还可以用来识别其他东西的新规则来取代这些规则。
动物识别15条规则的中文表示是:规则1:如果:动物有毛发则:该动物是哺乳动物规则2:如果:动物有奶则:该单位是哺乳动物规则3:如果:该动物有羽毛则:该动物是鸟规则4:如果:动物会飞,且会下蛋则:该动物是鸟规则5:如果:动物吃肉则:该动物是肉食动物规则6:如果:动物有犬齿,且有爪,且眼盯前方则:该动物是食肉动物规则7:如果:动物是哺乳动物,且有蹄则:该动物是有蹄动物规则8:如果:动物是哺乳动物,且是反刍动物则:该动物是有蹄动物规则9:如果:动物是哺乳动物,且是食肉动物,且是黄褐色的,且有暗斑点则:该动物是豹规则10:如果:如果:动物是黄褐色的,且是哺乳动物,且是食肉,且有黑条纹则:该动物是虎规则11:如果:动物有暗斑点,且有长腿,且有长脖子,且是有蹄类则:该动物是长颈鹿规则12:如果:动物有黑条纹,且是有蹄类动物则:该动物是斑马规则13:如果:动物有长腿,且有长脖子,且是黑色的,且是鸟,且不会飞则:该动物是鸵鸟规则14:如果:动物是鸟,且不会飞,且会游泳,且是黑色的则:该动物是企鹅规则15:如果:动物是鸟,且善飞则:该动物是信天翁动物分类专家系统由15条规则组成,可以识别七种动物,在15条规则中,共出现 30个概念(也称作事实),共30个事实,每个事实给一个编号,从编号从1到30,在规则对象中我们不存储事实概念,只有该事实的编号,同样规则的结论也是事实概念的编号,事实与规则的数据以常量表示,其结构如下:Char *str{}={"chew_cud","hooves","mammal","forward_eyes","claws", "pointed_teeth","eat_meat","lay_eggs","fly","feathers","ungulate", "carnivore","bird","give_milk","has_hair","fly_well","black&white_color","can_swim","long_legs","long_neck","black_stripes","dark_spots","tawny_color","albatross","penguin","ostrich","zebra","giraffe","tiger","cheetah","\0"}程序用编号序列的方式表达了产生式规则,如资料中规则15,如果动物是鸟,且善飞,则该动物是信天翁。
动物识别专家系统有MFC
动物识别专家系统摘要专家系统的出现是人工智能在实际应用中最引人注目的成果,也是人工智能最活跃或最富有成效的研究领域。
本文介绍了专家系统的原理、结构和发展方向,在此我们实现了一种动物识别的专家系统,它用产生式规则来表示知识,共15条规则、可以识别七种动物。
关键词:专家系统;人工智能;先进技术;应用领域1专家系统介绍当人类迈步跨进21世纪的时候,信息技术的发展也迎来了新的机遇和挑战。
在最近的几十年中,人工智能技术逐渐得到了广泛地应用,其中专家系统更是获得了很大程度的普及。
专家系统系由知识库、推论引擎及接口为基础而组成的计算机化系统,其目的在于对某一特定领域的问题作判断、解释及认知。
但由于此特定领域可大可小,且对认知的定义亦有不同的解释,故可有小如某些汽车专家系统只能依照外型等特征辨认十余种车,亦有大如某些医学专家系统可依据十二万个不同的医学表征分辨八千余种疾病。
尽管专家系统的定义未尽明确,但基本上当此系统所能处理的问题,其复杂性、对专业知识的需求、以及其执行的信度及效度足可与专家相匹敌时,我们便可称之为专家系统。
而由于专家系统能够提供智能型的决策与辅助解决问题、并对求解的过程做某种程度的解释,因而也可以称为“智能型知识库系统”(Intelligent Knowledge-Based System,IKBS)。
专家系统简化结构如图1所示。
图1 专家系统简化结构我国专家系统的研究起步较晚,大约在80年代初期。
最初开发出来的大都是演示系统,达不到实际应用水平。
到目前为止,在理论研究和实际应用开发上都已有了丰硕的成果,并己应用到工业、农业、军事以及国民经济的各个部门乃至社会生活的许多方面。
1.1 知识库知识库系统的主要工作是搜集人类的知识,将之有系统地表达或模块化,使计算机可以进行推论、解决问题。
知识库中包含两种型态:一是知识本身,即对物质及概念作实体的分析,并确认彼此之间的关系;二是人类专家所特有的经验法则、判断力与直觉。
人工智能-动物识别专家系统算法Python+Pyqt实现
⼈⼯智能-动物识别专家系统算法Python+Pyqt实现⼀、基础知识库有⽑发哺乳动物 -有奶哺乳动物 -有⽻⽑鸟 -会飞会下蛋鸟 -吃⾁⾷⾁动物 -有⽝齿有⽖眼盯前⽅⾷⾁动物 -哺乳动物有蹄有蹄类动物 -哺乳动物反刍动物有蹄类动物 -哺乳动物⾷⾁动物黄褐⾊⾝上有暗斑点⾦钱豹 *哺乳动物⾷⾁动物黄褐⾊⾝上有⿊⾊条纹虎 *有蹄类动物长脖⼦有长腿⾝上有暗斑点长颈⿅ *有蹄类动物⾝上有⿊⾊条纹斑马 *鸟长脖⼦有长腿不会飞有⿊⽩⼆⾊鸵鸟 *鸟会游泳不会飞有⿊⽩⼆⾊企鹅 *鸟善飞信天翁 *最后⼀个字符为 - 表⽰结论为中间结果为 * 表⽰为⼀种动物⼆、QT界⾯源码# -*- coding: utf-8 -*-# Form implementation generated from reading ui file '动物识别专家系统.ui'## Created by: PyQt5 UI code generator 5.9.2## WARNING! All changes made in this file will be lost!from PyQt5 import QtCore, QtGui, QtWidgetsfrom PyQt5.QtGui import QFontclass Ui_Animals(object):def setupUi(self, Animals):Animals.setObjectName("Animals")Animals.resize(1127, 710)Animals.setAutoFillBackground(True)self.TL = QtWidgets.QTextEdit(Animals)self.TL.setGeometry(QtCore.QRect(670, 200, 251, 211))self.TL.setObjectName("TL")self.input = QtWidgets.QTextEdit(Animals)self.input.setGeometry(QtCore.QRect(240, 100, 151, 321))self.input.setAutoFillBackground(False)self.input.setObjectName("input")self.result = QtWidgets.QTextEdit(Animals)self.result.setGeometry(QtCore.QRect(670, 100, 251, 51))self.result.setObjectName("result")self.result.setReadOnly(True)self.input_lable = QtWidgets.QLabel(Animals)self.input_lable.setGeometry(QtCore.QRect(100, 80, 141, 41))self.input_lable.setObjectName("input_lable")self.input_lable.setFont(QFont("Roman times", 10, QFont.Bold))self.TL_label = QtWidgets.QLabel(Animals)self.TL_label.setGeometry(QtCore.QRect(750, 150, 101, 61))self.TL_label.setObjectName("TL_label")self.TL_label.setFont(QFont("Roman times", 10, QFont.Bold))self.result_label = QtWidgets.QLabel(Animals)self.result_label.setGeometry(QtCore.QRect(750, 70, 111, 31))self.result_label.setObjectName("result_label")self.result_label.setFont(QFont("Roman times", 10, QFont.Bold))self.scrollArea = QtWidgets.QScrollArea(Animals)self.scrollArea.setGeometry(QtCore.QRect(90, 120, 141, 20))self.scrollArea.setWidgetResizable(True)self.scrollArea.setObjectName("scrollArea")self.scrollAreaWidgetContents = QtWidgets.QWidget()self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 139, 18))self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")boBox = QtWidgets.QComboBox(self.scrollAreaWidgetContents)boBox.setGeometry(QtCore.QRect(0, 0, 141, 21))boBox.setObjectName("comboBox")self.scrollArea.setWidget(self.scrollAreaWidgetContents)self.pushButton = QtWidgets.QPushButton(Animals)self.pushButton.setGeometry(QtCore.QRect(500, 240, 93, 28))self.pushButton.setObjectName("pushButton")self.pushButton.setFont(QFont("Roman times", 10, QFont.Bold))self.checkBox = QtWidgets.QCheckBox(Animals)self.checkBox.setGeometry(QtCore.QRect(500, 190, 91, 19))self.checkBox.setObjectName("checkBox")self.checkBox.setFont(QFont("Roman times", 10, QFont.Bold))self.pushButton_2 = QtWidgets.QPushButton(Animals)self.pushButton_2.setGeometry(QtCore.QRect(10, 120, 61, 21))self.pushButton_2.setObjectName("pushButton_2")self.pushButton_2.setFont(QFont("Roman times", 10, QFont.Bold)) self.pushButton_3 = QtWidgets.QPushButton(Animals)self.pushButton_3.setGeometry(QtCore.QRect(500, 300, 91, 31)) self.pushButton_3.setObjectName("pushButton_3")self.pushButton_3.setFont(QFont("Roman times", 10, QFont.Bold)) self.retranslateUi(Animals)self.pushButton.clicked.connect(Animals.test)boBox.activated['int'].connect(Animals.selectChange)self.checkBox.stateChanged['int'].connect(Animals.checkChange) self.pushButton_2.clicked.connect(Animals.selectInit)self.pushButton_3.clicked.connect(Animals.rules)QtCore.QMetaObject.connectSlotsByName(Animals)def retranslateUi(self, Animals):_translate = QtCore.QCoreApplication.translateAnimals.setWindowTitle(_translate("Animals", "Form"))self.input_lable.setText(_translate("Animals", "请输⼊已知事实")) self.TL_label.setText(_translate("Animals", "推理过程"))self.result_label.setText(_translate("Animals", "专家分析结果"))self.pushButton.setText(_translate("Animals", "推理"))self.checkBox.setText(_translate("Animals", "反向推理"))self.pushButton_2.setText(_translate("Animals", "初始化"))self.pushButton_3.setText(_translate("Animals", "修改规则库")) View Code三、后端处理 Python源码# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'animal.py'## Created by: PyQt5 UI code generator 5.9.2## WARNING! All changes made in this file will be lost!from动物识别专家系统import Ui_Animalsfrom PyQt5 import QtWidgetsfrom PyQt5 import QtGuiimport sysimport osimport tkinterfrom tkinter import messageboxdef IsEvidence(x):for i in mywindow.fact:if x == i[-2]:return Falsereturn Truedef getData(x):data = []for i in mywindow.fact:tr = []if x == i[-2]:for j in range(0, len(i) - 1):tr.append(i[j])data.append(tr)return datadef backs(data):c = 0flag = Falsefor i in data:d = "if "for s in range(0, len(i)):if s == len(i)-2:d = d + str(i[s]) + " then "else:d = d + str(i[s]) + ""window.TL.append(d)for j in range(0, len(i) - 1):if (IsEvidence(i[j])):root = ()root.withdraw()a= messagebox.askquestion("提⽰", i[j]+"吗")#print(i[j] + "吗?")#r = input()print(a)if a == "yes":c = c + 1else:temp = getData(i[j])if (backs(temp)):c = c + 1if c >= i.__len__() - 1:flag = Trueprint(i[-1])print("验证成功")breakelse:flag = Falseprint(i[-1])print("验证失败")if (flag):return Trueelse:return Falseclass mywindow(QtWidgets.QWidget,Ui_Animals):fact = []conditions = set("")res = set("")def__init__(self):super(mywindow, self).__init__()f = open("rules.txt", "r")for line in f:ls = line.strip('\n').split("")mywindow.fact.append(ls)f.close()for i in mywindow.fact:for j in range(0,len(i)-2):mywindow.conditions.add(i[j])mywindow.res.add(i[-2])self.setupUi(self)def resizeEvent(self, event):palette = QtGui.QPalette()pix = QtGui.QPixmap('images/3.jpg')pix = pix.scaled(self.width(), self.height())palette.setBrush(QtGui.QPalette.Background, QtGui.QBrush(pix)) self.setPalette(palette)def test(self):if self.checkBox.isChecked():#逆向推理i = boBox.currentIndex()s = boBox.itemText(i)print(s)data=getData(s)print(data)if (backs(data)):root = ()root.withdraw()a = messagebox.showinfo("提⽰", "该动物是" + data[0][-1]) self.result.setText("专家分析该动物是"+data[0][-1])else:root = ()root.withdraw()self.result.setText("专家分析该动物不是" + data[0][-1])a = messagebox.showinfo("提⽰", "该动物不是" + data[0][-1])else: #正向推理s= self.input.toPlainText()tl =""description = s.split("\n")print("des")print(description)line = 0for i in mywindow.fact:same = 0for j in range(0, len(i)):if j >= len(i) - 2:breakfor k in range(0, len(description)):if i[j] == description[k]:same = same + 1breakif k == len(description):breakif same == i.__len__() - 2:print("same=i")line = 1if i[-1] == "*": # 是结论d = "if "for s in range(0,len(i)-1) :if s == len(i)-3:d=d+str(i[s])+" then "else:d=d+str(i[s])+""tl = tl + d + "\n"self.TL.setText(tl)self.result.setText("专家分析该动物是"+i[-2])print(i[-2])else:line = 1d = "if "for s in range(0, len(i) - 1):if s == len(i) - 3:d = d + str(i[s]) + " then "else:d = d + str(i[s]) + ""tl = tl + d +"\n"self.TL.setText(tl)self.result.setText("专家也不知道具体是什么动物,⼤概率推测是"+i[-2]) # print(i[-1])description.append(i[-2])if line ==0:self.result.setText("专家也不知道具体是什么动物")def selectInit(self):mywindow.fact.clear()mywindow.conditions.clear()mywindow.res.clear()f = open("rules.txt", "r")for line in f:ls = line.strip('\n').split("")mywindow.fact.append(ls)f.close()for i in mywindow.fact:for j in range(0, len(i) - 2):mywindow.conditions.add(i[j])mywindow.res.add(i[-2])boBox.clear()self.input.clear()self.result.clear()self.TL.clear()if(self.checkBox.isChecked()):for x in mywindow.res:boBox.addItem(str(x))else:for x in mywindow.conditions:boBox.addItem(str(x))def selectChange(self):if self.checkBox.isChecked():self.input.clear()i = boBox.currentIndex()s = boBox.itemText(i)self.input.append(s)else:i = boBox.currentIndex()s = boBox.itemText(i)self.input.append(s)def checkChange(self):boBox.clear()if self.checkBox.isChecked():for x in mywindow.res:boBox.addItem(str(x))else:for x in mywindow.conditions:boBox.addItem(str(x))def rules(self):os.startfile('rules.txt')app = QtWidgets.QApplication(sys.argv)window = mywindow()window.show()sys.exit(app.exec_())View Code。
动物识别专家系统
动物识别专家系统随着科技的不断发展,人工智能技术在各个领域得到了广泛的应用,其中动物识别领域也不例外。
动物识别专家系统是一种基于人工智能技术的系统,它能够通过对动物的特征进行分析和识别,从而帮助人们更好地了解和保护动物世界。
本文将介绍动物识别专家系统的原理、应用和未来发展方向。
动物识别专家系统的原理。
动物识别专家系统基于人工智能技术,主要包括图像识别、声音识别和行为识别三个方面。
在图像识别方面,系统通过对动物的外貌特征进行分析和比对,从而识别出动物的种类和特征。
在声音识别方面,系统通过对动物的声音进行录制和分析,从而识别出动物的种类和特征。
在行为识别方面,系统通过对动物的行为进行观察和分析,从而识别出动物的种类和特征。
通过这些方法的综合应用,动物识别专家系统能够准确地识别出动物的种类和特征,为人们提供了一个更加直观和全面的了解动物世界的途径。
动物识别专家系统的应用。
动物识别专家系统在许多领域都有着广泛的应用,其中包括科研、保护和教育等方面。
在科研方面,动物识别专家系统能够帮助科研人员更好地了解动物的种类和特征,从而为动物学研究提供了更多的数据和信息。
在保护方面,动物识别专家系统能够帮助保护人员更好地监测和保护野生动物,从而为野生动物的保护工作提供了更多的支持和帮助。
在教育方面,动物识别专家系统能够帮助学生更好地了解动物的种类和特征,从而为动物教育提供了更多的资源和工具。
通过这些应用的综合推广,动物识别专家系统能够为人们提供一个更加全面和便捷的了解动物世界的途径。
动物识别专家系统的未来发展方向。
动物识别专家系统在未来有着广阔的发展前景,其中包括技术的进步、应用的拓展和服务的优化等方面。
在技术方面,动物识别专家系统将会不断引入新的人工智能技术,从而提高系统的识别准确度和效率。
在应用方面,动物识别专家系统将会不断拓展新的应用领域,从而为更多的人群提供更好的服务和支持。
在服务方面,动物识别专家系统将会不断优化用户体验和服务质量,从而为用户提供更加便捷和高效的服务。
动物识别系统实验报告
暨南大学人工智能实验报告题目:基于web的动物识别系统院系:信科院计算机系专业:计算机技术学号:27学生姓名:ming fang成绩:日期:2010年12月10日一、目的与要求1.掌握人工智能的知识表示技术,能用产生式表示法表示知识,并实现一个用于识别的专家系统。
2.推理策略采用正向推理和反向推理两种。
二、主要内容1.学习人工智能的知识表示技术,关键掌握产生式知识表示的具体应用方法。
2.实现的动物识别系统的主要功能如下:2.1系统能通过正向、反向推理得到正确的动物识别结果。
2.2系统能动态地添加规则、能显示推理过程。
三.实验原理产生式表示:产生式表示是知识表示的一种。
这种方法是建立在因果关系的基础上的,可很容易的描述事实、规则及其不确定性度量。
1.事实的表示:事实可看成是断言一个语言变量的值或是多个语言变量间的关系的陈述句,语言变量的值或语言变量间的关系可以是一个词。
不一定是数字。
一般使用三元组(对象,属性,值)或(关系,对象1,对象2)来表示事实,其中对象就是语言变量,若考虑不确定性就成了四元组表示(增加可信度)。
这种表示的机器内部实现就是一个表。
如事实“小王年龄是22岁”,便写成(Lee,age,22)事实“小李、小张是朋友”,可写成(friend,Lee,Zhang)2.规则的表示:规则用于表示事物间的因果关系,以IF condition THEN action 的单一形式来描述,将规则作为知识的单位。
其中的condition 部分称为条件式前件或模式,而action部分称作动作、后件或结论。
产生式一般形式为:前件后件。
前件和后件也可以是有“与”、“或”、“非”等逻辑运算符的组合的表达式。
条件部分常是一些事实的合取或析取,而结论常是某一事实B。
如果不考虑不确定性,需另附可信度度量值。
产生式过则的含义是:如果前件满足,则可得到后件的结论或者执行后件的相应动作,即后件由前件来触发。
一个产生式生成的结论可以作为另一个产生式的前提或语言变量使用,进一步可构成产生式系统。
人工智能课程设计报告--动物识别系统
文档从互联网中收集,已重新修正排版,word格式支持编辑,如有帮助欢迎下载支持。
计算机科学与技术学院《人工智能》课程设计报告设计题目:动物识别系统设计人员:学号:学号:学号:学号:学号:学号:指导教师:2015年7月目录目录 (1)摘要 (2)Abstract (2)一、专家系统基本知识 (3)1.1专家系统实际应用 (3)1.2专家系统的开发 (3)二、设计基本思路 (4)2.1知识库 (4)....................................................................................................... 错误!未定义书签。
2.1.2 知识库建立 (4)2.1.3 知识库获取 (5)2.2 数据库 (6)....................................................................................................... 错误!未定义书签。
....................................................................................................... 错误!未定义书签。
三、推理机构 (7)3.1推理机介绍 (7)3.1.1 推理机作用原理 (7)....................................................................................................... 错误!未定义书签。
3.2 正向推理 (7)3.2.1 正向推理基本思想 (7)3.2.2 正向推理示意图 (8)3.2.3 正向推理机所要具有功能 (8)3.3反向推理 (8)....................................................................................................... 错误!未定义书签。
基于Python的动物识别专家系统
基于Python的动物识别专家系统1. 利用pyqt5来设计专家系统的界面。
如下图一:图一起始界面相应的运行过程的界面,如图二:图二相应的运行过程界面2. 设置规则文本 guizhe.txt有毛发哺乳动物有奶哺乳动物有羽毛鸟会飞下蛋鸟吃肉食肉动物有犬齿有爪眼盯前方食肉动物哺乳动物有蹄有蹄类动物哺乳动物嚼反刍动物有蹄类动物哺乳动物食肉动物黄褐色暗斑点金钱豹哺乳动物食肉动物黄褐色黑色条纹虎有蹄类动物长脖子长腿暗斑点长颈鹿有蹄类动物黑色条纹斑马鸟长脖子长腿黑白二色不飞鸵鸟鸟会游泳不飞黑白二色企鹅鸟善飞信天翁3. 编写思路1)首先将规则库里面的规则进行相应的排序和数据处理,以便之后的推理信息的匹配,在这里我们将规则信息进行相应的拓扑排序,代码如下:inn = []for i in P: sum = 0 for x in i: if Q.count(x) > 0: # 能找到,那么sum +=Q.count(x) inn.append(sum)while (1): x = 0 if inn.count(-1) == inn.__len__(): break for i in inn: if i == 0: str = ' '.join(P[x]) # print("%s %s" %(str, Q[x])) ans = ans + str + " " + Q[x] + "\n" # 写入结果 # print("%s -- %s" %(P[x],Q[x])) inn[x] = -1 # 更新入度y = 0 for j in P: if j.count(Q[x]) == 1: inn[y] -= 1 y += 1 x += 12)整理好规则库之后,我们开始进行推理功能的编写,在这里我们根据相应的规则匹配模式,对用户输入的需要推理的信息进行相应的判断,然后一步步的询问用户相关的规则信息,进行进一步的推理,直到完全匹配出推理信息。
人工智能动物识别系统JAVA
实验报告
课程名称
系别电子信息科学学院专业班级指导教师
学号____________姓名____________实验日期2016.4.1实验成绩___________
}
jp.add(lblImage);lblImage.setBounds(630,30,300,400);this.add(jp);
this.setTitle("动物识别系统");this.setBounds(100,100,1000,500);this.setVisible(true);
}
publicvoidactionPerformed(ActionEvente){
/用数组创复选框
{newCheckbox("有毛发"),newCheckbox("有奶"),newCheckbox("有羽毛"),
newCheckbox("会飞,且生蛋"),newCheckbox("吃肉"),
newCheckbox("有犬齿,且有爪,且眼盯前方"),newCheckbox("有蹄"),
publicclassRZSextendsJFrameimplementsActionListener{privatestaticJPaneljp=newJPanel();
privateJLabeljl1=newJLabel("请选择条件:");sta ticCheckbox[]Checkbox=
人工智能动物识别系统 实验报告
人工智能导论实验报告题目动物识别专家系统学院信息科学与工程学院专业计算机科学与技术姓名侯立军学号 *********** 班级计信1301二O一五年十一月二十六日1 设计内容题目:动物识别专家系统内容:动物识别专家系统是流行的专家系统实验模型,他用产生是规则来表示知识可以识别不同的动物。
这些规则既少又简单,可以改造他们,也可以加入新的规则,还可以用来识别其他新规则来取代这些规则。
2 基本原理2.1 产生式系统的问题求解基本过程:(1) 初始化综合数据库,即把欲解决问题的已知事实送入综合数据库中;(2) 检查规则库中是否有未使用过的规则,若无转 (7);(3) 检查规则库的未使用规则中是否有其前提可与综合数据库中已知事实相匹配的规则,若有,形成当前可用规则集;否则转(6);(4) 按照冲突消解策略,从当前可用规则集中选择一个规则执行,并对该规则作上标记。
把执行该规则后所得到的结论作为新的事实放入综合数据库;如果该规则的结论是一些操作,则执行这些操作;(5) 检查综合数据库中是否包含了该问题的解,若已包含,说明解已求出,问题求解过程结束;否则,转(2);(6) 当规则库中还有未使用规则,但均不能与综合数据库中的已有事实相匹配时,要求用户进一步提供关于该问题的已知事实,若能提供,则转(2);否则,执行下一步;(7) 若知识库中不再有未使用规则,也说明该问题无解,终止问题求解过程。
2.2 正向推理正向推理是以已知事实作为出发点的一种推理,又称数据驱动推理、前向链推理及前件推理等。
2.2.1 正向推理的基本思想:从用户提供的初始已知事实出发,在知识库KB中找出当前可适用的知识,构成可适用知识集KS,然后按某种冲突消解策略从KS中选出一条知识进行推理,并将推出的新事实加入到数据库中作为下一步推理的已知事实,在此之后再在知识库中选取可适用的知识进行推理,如此重复,直到求得了所要求的解,或者知识库中再无可适用的知识为止。
实验一:产生式系统-动物识别系统
《人工智能导论》实验报告实验一:产生式系统——动物识别系统一、实验目的1、掌握知识的产生式表示法2、掌握用程序设计语言编制智能程序的方法二、实验内容1、所选编程语言:C语言;2.拟订的规则:(1)若某动物有奶,则它是哺乳动物。
(2)若某动物有毛发,则它是哺乳动物。
(3)若某动物有羽毛,则它是鸟。
(4)若某动物会飞且生蛋,则它是鸟。
(5)若某动物是哺乳动物且有爪且有犬齿且目盯前方,则它是食肉动物。
(6)若某动物是哺乳动物且吃肉,则它是食肉动物。
(7)若某动物是哺乳动物且有蹄,则它是有蹄动物。
(8)若某动物是哺乳动物且反刍食物,则它是有蹄动物。
(9)若某动物是食肉动物且黄褐色且有黑色条纹,则它是老虎。
(10)若某动物是食肉动物且黄褐色且有黑色斑点,则它是金钱豹。
(11)若某动物是有蹄动物且长腿且长脖子且黄褐色且有暗斑点,则它是长颈鹿。
(12)若某动物是有蹄动物且白色且有黑色条纹,则它是斑马。
(13)若某动物是鸟且不会飞且长腿且长脖子且黑白色,则它是驼鸟。
(14)若某动物是鸟且不会飞且会游泳且黑白色,则它是企鹅。
(15)若某动物是鸟且善飞,则它是海燕。
2、设计思路:用户界面:采用问答形式;知识库(规则库):存放产生式规则,推理时用到的一般知识和领域知识,比如动物的特征,动物的分类标准,从哺乳动物、食肉动物来分,再具体地添加一些附加特征得到具体动物;建立知识库的同时也建立了事实库。
事实库是一个动态链表,一个事实是链表的一个结点。
知识库通过事实号与事实库发生联系。
数据库:用来存放用户回答的问题,存放初始状态,中间推理结果,最终结果;推理机:采用正向推理,推理机是动物识别的逻辑控制器,它控制、协调系统的推理,并利用知识库中的规则对综合数据库中的数据进行逻辑操作。
推理机担负两项基本任务:一是检查已有的事实和规则,并在可能的情况下增加新的事实;二是决定推理的方式和推理顺序。
将推理机制同规则对象封装在一起,事实对象记录了当前的状态,规则对象首先拿出前提条件的断言(只有这些前提都有符合时才会做这条规则的结论),询问事实对象集,如事实对象集不知道,则询问用户,如所有前提条件都被证实为真则结论为真,否则系统不知道结论真假。
专家系统
LOGO
人工智能
——专家系统
Contents
1
2 3
专家系统介绍
专家系统特点和发展趋势
4
动物识别专家系统
专家系统
Part1:专家系统介绍
• 专家系统是一个具有大量的专门知识与经验的程序系统,它应用 人工智能技术和计算机技术,根据某领域一个或多个专家提供的 知识和经验,进行推理和判断,模拟人类专家的决策过程,以便 解决那些需要人类专家处理的复杂问题,从而达到与专家具有同 等解决问题能力。
专家系统的基本工作流程
• 专家系统的基本工作流程是,用户通过人机 界面回答系统的提问,推理机将用户输入的 信息与知识库中各个规则的条件进行匹配, 并把被匹配规则的结论存放到综合数据库中。 最后,专家系统将得出最终结论呈现给用户。 • 在这里,专家系统还可以通过解释器向用户 解释以下问题:系统为什么要向用户提出该 问题(Why)?计算机是如何得出最终结论 的(How)? • 领域专家或知识工程师通过专门的软件工具, 或编程实现专家系统中知识的获取,不断地统
专家系统
• 专家系统(expert system)是人工智能领域应用 研究最活跃和最广泛的课题之一。第一个专家系 统是在1956年由Allen Newell、Herbert Simon 及J. C. Shaw所发展。其后,许多专家系统也纷 纷随之建立,但在前期多半是属于研究性质的雏 形系统。1970年代之后,人工智能与专家系统专 用的程序语言及软件开发工具逐渐开始发展,而 各种知识表示法及算法也被广泛地研究,使得专 家系统的建构与发展方式产生了不小的改变。从 1980年代后期开始,专家系统便能够逐渐脱离实 验室的研究而广泛应用于各行业中。
知识获取
• 知识获取是专家系统知识库是否优越的关键, 也是专家系统设计的“瓶颈”问题,通过知 识获取,可以扩充和修改知识库中的内容, 也可以实现自动学习功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
动物识别专家系统1、专家系统的基本工作原理尽管专家系统有众多类型, 名称各异, 但基本原理框图一致, 如图1 所示。
专家系统的核心是知识库和推理机, 其基本工作过程为: 系统根据知识库中的知识和用户提供的事实进行推理, 不断地由已知前提推出一些初步结论, 并将这些初步结论作为中间结果存放在数据库中, 然后将其作为新的已知事实进行下一步推理, 往复循环, 逐步逼近求解目标。
在这个过程中, 系统可以通过人机接口不断地与用户交流, 向用户提问, 或对用户提出的问题做出解释。
知识库是专家系统的知识存储器, 用来存放求解问题的领域知识。
推理机是专家系统中用来实现推理的程序。
其主要功能是模拟领域专家的思维过程, 控制并执行对问题的求解。
它能根据当前已知的事实, 利用知识库中的知识, 按一定的推理方法和控制策略进行推理, 直到得出相应的结论为止。
它包括推理方法和控制策略两个部分。
大多数专家系统都采用人机对话的交互式解释方法。
知识获取机构主要实现机器学习。
人机接口是领域专家、知识工程师、一般用户间进行交互的界面, 由一组程序及相应的硬件组成, 用于完成输入输出工作。
2、动物识别专家系统在PROLOG 下的实现和使用说明为了更好地阐明专家系统的基本工作原理, 我们用PROLOG语言实现一个简单的动物识别专家系统。
该系统可以识别老虎、金钱豹、斑马、长颈鹿、鸵鸟、企鹅、海燕这7 种动物1、知识库在本系统当中, 知识库中的知识用产生式规则来表示。
本系统能够识别7 种动物, 知识库中共有以下15 条规则。
R1 IF 该动物有毛发THEN 该动物是哺乳动物R2 IF 该动物有奶THEN 该动物是哺乳动物R3 IF 该动物有羽毛THEN 该动物是鸟R4 IF 该动物会飞AND会下蛋THEN 该动物是鸟R5 IF 该动物吃肉THEN 该动物是肉食动物R6 IF 该动物有犬齿AND 有爪AND 眼盯前方THEN 该动物是肉食动物R7 IF 该动物是哺乳动物AND 有蹄THEN 该动物是有蹄类动物R8 IF 该动物是哺乳动物AND 是嚼反刍动物THEN 该动物是有蹄类动物R9 IF 该动物是哺乳动物AND 是肉食动物AND 是黄褐色们AND 身上有暗斑点THEN该动物是金钱豹R10 IF 该动物是哺乳动物AND 是肉食动物AND 是黄褐色AND 身上有黑色条纹THEN 该动物是虎R11 IF 该动物是有蹄类动物AND有长脖子AND 有长腿AND 身上有暗斑点THEN 该动物是长颈鹿R12 IF 该动物是有蹄类动物AND身上有黑色条纹THEN 该动物是斑马R13 IF 该动物是鸟AND 有长脖子AND 有长腿AND 不会飞THEN 该动物是鸵鸟R14 IF 该动物是鸟AND 会游泳AND不会飞AND 有黑白二色THEN 该动物是企鹅R15 IF 该动物是鸟AND 善飞THEN 该动物是海燕在知识库中, 并非简单地给每一种动物一条规则。
首先, 将动物粗略地分为哺乳动物、鸟、肉食动物3 大类,然后逐步缩小分类范围, 最后给出识别7 种动物的规则。
2、数据库假设数据库中存放以下事实: 动物有暗斑, 有长脖子, 有长腿, 有奶, 有蹄。
求解目标: 该动物是什么动物?3、推理机的工作过程首先从规则库中取出第一条规则R1, 检查其前提是否可与数据库中的已知事实相匹配。
R1 的前提是/ 有毛发, 但事实库中没有这一事实, 故匹配失败。
接着取规则R2, 它的前提可以与事实库中的已知事实/ 有奶相匹配, R2 被执行, 并将其结论/ 该动物是哺乳动物作为新的事实加入到数据库中。
此时, 数据库的内容变为: 动物有暗斑, 有长脖子, 有长腿, 有奶, 有蹄, 是哺乳动物。
再从规则库中取R2, R3, R4, R5, R6 进行匹配, 结果都匹配失败。
接着取R7, 其前提与事实库中的已知事实/ 是哺乳动物和/ 有蹄相匹配, 因此R7 被执行, 并将其结论/ 该动物是有蹄类动物作为新的事实加入到数据库中。
此时, 数据库中内容变为: 动物有暗斑, 有长脖子, 有长腿, 有奶, 有蹄, 是哺乳动物, 是有蹄类动物。
最后, 规则R8, R9, R10 均匹配失败。
取R11, 其前提/ 该动物是有蹄类动物AND 有长脖子AND 有长腿AND身上有暗斑点与事实库中的已知事实相匹配, R11 被执行, 并推出/ 该动物是长颈鹿。
由于/ 长颈鹿已经是目标集合中的一个结论, 即已推出最终结果, 故问题求解过程结束4、使用说明运行程序后根据提示,如果符合数据库,就输入yes按下回车键,反之输入no按下回车键,直到输出结果例如:3、PROLOG 源程序/ *谓词说明* /databasexpositive(symbol,symbol)xnegative(symbol,symbol)predicatesrunanimal_is(symbol)it_is(symbol)positive(symbol,symbol)negative(symbol,symbol)clear_factsremember(symbol,symbol,symbol)ask(symbol,symbol)/ *推理过程* /clausesrun:-animal_is(X),!,write("\nYour animal may be a(n)",X),nl,nl,clear_facts.run:-write("\nUnable to determine what"),write("your animal is. \n\n"), clear_facts.positive (X,Y):-xpositive (X,Y),!.positive (X,Y):-not(xnegative(X,Y)),ask(X,Y).negative (X,Y):-xnegative (X,Y),!.negative (X,Y):-not(xpositive(X,Y)),ask(X,Y).ask(X,Y):-write(X,"it",Y,"\n"),readln(Reply),remember(X,Y,Reply).remember(X,Y,yes):-asserta(xpositive(X,Y)).remember(X,Y,no):-asserta(xnegative(X,Y)),fail.clear_facts:-retract(xpositive(_,_)),fail.clear_facts:-retract(xnegative(_,_)),fail.clear_facts:-write("\n\nPlease press the space bar to Exit!"), readchar(_)./ *为推理机提供知识* /animal_is(cheetah):-it_is(carnivore),positive(has,tawny_color),positive(has,black_spots).animal_is(tiger):-it_is(carnivore),positive(has,tawny_color),positive(has,black_stripes).animal_is(giraffe):-it_is(ungulate),positive(has,long_neck),positive(has,long_legs),positive(has,tawny_color),positive(has,dark_spots).animal_is(zebra):-it_is(ungulate),positive(has,white_color),positive(has,black_stripes).animal_is(ostrich):-it_is(bird),negative(does,fly),positive(has,long_neck),positive(has,long_legs),positive(has,black_and_white_color).animal_is(penguin):-it_is(bird),negative(does,fly),positive(does,swim),positive(has,black_and_white_color). animal_is(salangane):-it_is(bird),positive(does,fly_well).it_is(mammal):-positive(has,hair).it_is(mammal):-positive(does,give_milk).it_is(bird):-positive(has,feathers).it_is(bird):-positive(does,fly),positive(does,lay_eggs).it_is(carnivore):-positive(does,eat_meat).it_is (carnivore):-positive(has,pointed_teeth),positive(has,claws),positive(has,forward_eyes).it_is (ungulate):-it_is (mammal),positive(has,hooves).it_is (ungulate):-it_is (mammal),positive(does,chew_cud).。