人工智能动物识别专家系统

合集下载

动物识别专家系统的建立

动物识别专家系统的建立


















实用第一 智慧密集
… . . … … … … … .
家豫 绩

童 小 明
摘 要 :专 家 系统是 具 有人 工智 能和推 理功 能 的知识 系统 。 以一 个动 物识 别专 家 系统的 建 立为例 ,
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. 人工智能的定义与特征人工智能是指由人工设计和构建的系统或机器能够模拟和表现出与人类智能相似的一系列行为和能力。

人工智能系统经过计算机技术和算法等手段的设计和优化,能够进行知识表示、推理、学习和问题解决等任务。

人工智能的特征包括高效性、可靠性、可编程性以及能够处理大规模数据和信息等。

二、动物智能和人工智能的认知能力比较1. 感知能力动物通过感觉器官对外界刺激做出反应,感知到空间、物体、声音和气味等信息。

动物在感知能力上具有高度敏锐性和适应性,能够迅速反应,如通过嗅觉寻找食物或避开危险。

而人工智能需要通过传感器和输入设备来获取外部信息,并通过算法和模型进行处理。

2. 学习能力动物具有较强的学习能力,能够根据反馈信息调整行为和获取新知识。

动物学习主要包括条件性学习和认知学习。

人工智能通过机器学习和深度学习等技术,能够从大量的数据中进行模式识别和规律学习,并根据反馈不断优化算法和模型。

3. 推理能力动物通过推理和逻辑判断,能够解决一些复杂的问题。

例如,猴子使用工具来获取食物是一种推理行为。

人工智能通过逻辑推理和知识表示,能够进行推理和问题求解,如专家系统和规则引擎等。

三、动物智能和人工智能的应用比较1. 生物学和医学应用动物智能的研究为生物学和医学领域提供了有价值的参考。

(毕业论文)动物识别专家系统

(毕业论文)动物识别专家系统

摘要专家系统是目前人工智能中最活跃,最有成效的一个研究领域,它是一种基于知识的系统,它从人类专家那里获得知识,并用来解决只有专家才能解决的困难问题。

该动物识别专家系统是在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功能........................... 错误!未定义书签。

教科版高中信息技术选修5人工智能初步:什么是专家系统

教科版高中信息技术选修5人工智能初步:什么是专家系统

二、专家系统的作用和类型
1、作用:
总体来说,专家系统的作用主要有预测、解释数据、 诊断故障、维修调试、检测控制、规划、教学等。
二、专家系统的作用和类型
1、分类:
(1)预测型专家系统三、专家系统的构成
1、专家系统的组成部分
三、专家系统的构成
一、认识专家系统
3、专家系统的发展过程
1965年斯坦福大学的费根鲍姆(E.A. Feigenbaum)和化学 家勒德贝格(J. Lederberg)合作研制DENDRAL系统,使得人工 智能的研究以推理算法为主转变为以知识为主。20世纪70年代, 专家系统的观点逐渐被人们接受,许多专家系统相继研发成功, 其中较具代表性的有医药专家系统MYCIN、探矿专家系统 PROSPECTOR等。20世纪80年代,专家系统的开发趋于商品化,创 造了巨大的经济效益。
一、认识专家系统
3、专家系统的发展过程
1977年美国斯坦福大学计算机科学家费根鲍 姆 (E.A.Feigenballm)在第五届国际人工智能联合会议上提出知识 工程的新概念。他认为,“知识工程是人工智能的原理和方法, 对那些需要专家知识才能解决的应用难题提供求解的手段。恰当 运用专家知识的获取、表达和推理过程的构成与解释,是设计基 于知识的系统的重要技术问题。”知识工程是一门以知识为研究 对象的学科,它将具体智能系统研究中那些共同的基本问题抽出 来,作为知识工程的核心内容,使之成为指导具体研制各类智能 系统的一般方法和基本工具,成为一门具有方法论意义的科学。 20世纪80年代以来,在知识工程的推动下,涌现出了不少专家系 统开发工具,例如EMYCIN、CLIPS(OPS5, OPS83)、G2、KEE、 OKPS等。
一、认识专家系统 1、一个专家系统的实例——动物识别专家系统

动物识别系统实验报告

动物识别系统实验报告
{
stringFindMaxNumber ="select max(动物序号) from动物库";
SqlCommandcmd2 =newSqlCommand( FindMaxNumber ,con);
1.1功能需求
1.1.1动物识别正向推理
正向推理是从已知事实出发,通过规则库求的结论,也称为自底向上,或称为数据驱动方式。
正向推理过程的具体步骤是:
(1)读入事实集到工作存储器。
(2)取出某条规则,将规则的全部前件与工作存储器中的所有事实进行比较。如果匹配成功,则所得结果显示到屏幕上,转向(3);否则,直接转向(3)。
动物识别系统设计主体框架:本系统只用了一个页面实现,界面使用上下结构的框架设计,当用户进入系统的时候,打开Default.aspx,该页面分为上下两个部分,上面的部分是用于根据问题输入动物特征,下面的部分是新规则的加入功能部分,也是用户进行添加新规则的页面,这好似一个导航页面,用户可以更具自己的选择进行的操作,由上至下进入不同的功能部分。各个功能模块的设计:
staticint[] a =newint[7];
SqlConnectioncon =newSqlConnection("Server = PC-11; user id = sa;password = ;Database = animal;");
protectedvoidPage_Load(objectsender,EventArgse)
YesOption.Checked =false;
}
protectedvoidNoOption_CheckedChanged(objectsender,EventArgse)
{
a[Convert.ToInt32(Questionselected.SelectedValue)] = 0;

动物识别专家系统有MFC

动物识别专家系统有MFC

动物识别专家系统摘要专家系统的出现是人工智能在实际应用中最引人注目的成果,也是人工智能最活跃或最富有成效的研究领域。

本文介绍了专家系统的原理、结构和发展方向,在此我们实现了一种动物识别的专家系统,它用产生式规则来表示知识,共15条规则、可以识别七种动物。

关键词:专家系统;人工智能;先进技术;应用领域1专家系统介绍当人类迈步跨进21世纪的时候,信息技术的发展也迎来了新的机遇和挑战。

在最近的几十年中,人工智能技术逐渐得到了广泛地应用,其中专家系统更是获得了很大程度的普及。

专家系统系由知识库、推论引擎及接口为基础而组成的计算机化系统,其目的在于对某一特定领域的问题作判断、解释及认知。

但由于此特定领域可大可小,且对认知的定义亦有不同的解释,故可有小如某些汽车专家系统只能依照外型等特征辨认十余种车,亦有大如某些医学专家系统可依据十二万个不同的医学表征分辨八千余种疾病。

尽管专家系统的定义未尽明确,但基本上当此系统所能处理的问题,其复杂性、对专业知识的需求、以及其执行的信度及效度足可与专家相匹敌时,我们便可称之为专家系统。

而由于专家系统能够提供智能型的决策与辅助解决问题、并对求解的过程做某种程度的解释,因而也可以称为“智能型知识库系统”(Intelligent Knowledge-Based System,IKBS)。

专家系统简化结构如图1所示。

图1 专家系统简化结构我国专家系统的研究起步较晚,大约在80年代初期。

最初开发出来的大都是演示系统,达不到实际应用水平。

到目前为止,在理论研究和实际应用开发上都已有了丰硕的成果,并己应用到工业、农业、军事以及国民经济的各个部门乃至社会生活的许多方面。

1.1 知识库知识库系统的主要工作是搜集人类的知识,将之有系统地表达或模块化,使计算机可以进行推论、解决问题。

知识库中包含两种型态:一是知识本身,即对物质及概念作实体的分析,并确认彼此之间的关系;二是人类专家所特有的经验法则、判断力与直觉。

人工智能-动物识别专家系统算法Python+Pyqt实现

人工智能-动物识别专家系统算法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。

动物识别专家系统简介

动物识别专家系统简介

动物识别专家系统简介动物识别专家系统是经典的专家系统实验模型,它用产生式规则来表示知识,共15条规则,可以识别七种动物。

这些规则既少又简单,可以改造他们,也可以加进新的规则,还可以用来识别其他东西的新规则来取代这些规则。

2.1、建立动物识别专家系统的规则库,并用与/或图来描述这个规则库。

规则库由15条规则组成,编写一段程序,把15条规则组成一个表直接赋值给规则库rules,规则名分别是;rule1,rule2,┉,rule15。

( rules((rule1(if (animal has hair)) 若动物有毛发(F1)(then (animal is mammal))) 则动物是哺乳动物(M1)((rule2(if (animal gives milk)) 若动物有奶(F2)(then (animal is mammal))) 则动物是哺乳动物(M1)((rule3(if (animal has feathers)) 若动物有羽毛(F9)(then (animal is bird))) 则动物是鸟(M4)((rule4(if (animal flies)) 若动物会飞(F10)(animal lays eggs)) 且生蛋(F11)(then (animal is bird))) 则动物是鸟(M4)((rule5(if (animal eats meat)) 若动物吃肉类(F3)(then (animal is carnivore))) 则动物是食肉动物(M2)((rule6(if (animal Raspointed teeth)) 若动物有犀利牙齿(F4)(animal has claws) 且有爪(F5)(animal has forword eyes)) 且眼向前方(F6)(then (animal is carnivore))) 则动物是食肉动物(M2)((rule7(if (animal has mammal)) 若动物是哺乳动物(M1)(animal has hoofs)) 且有蹄(F7)(then (animal is ungulate))) 则动物是有蹄类动物(M3)((rule8(if (animal has mammal)) 若动物是哺乳动物(M1)(animal chews cud)) 且反刍(F8)(then (animal is ungulate))) 则动物是有蹄类动物(M3)((rule9(if (animal is mammal)) 若动物是哺乳动物(M1)(animal is carnivore) 且是食肉动物(M2)(animal has tawny color) 且有黄褐色(F12)(animal has dark sports)) 且有暗斑点(F13)(then (animal is cheetah))) 则动物是豹(H1)((rule10(if (animal is mammal)) 若动物是哺乳动物(M1)(animal is carnivore) 且是食肉动物(M2)(animal has tawny color) 且有黄褐色(F12)(animal has black stripes) 且有黑色条纹(F15)(then (animal is tiger))) 则动物是虎(H2)((rule11(if (animal is ungulate)) 若动物是有蹄类动物(M3)(animal has long neck) 且有长脖子(F16)(animal has long legs) 且有长腿(F14)(animal has dark sports)) 且有暗斑点(F13)(then (animal is giraffe))) 则动物是长颈鹿(H3)((rule12(if (animal is ungulate)) 若动物是有蹄类动物(M3)(animal has black stripes) 且有黑色条纹(F15)(then (animal is zebra))) 则动物是斑马(H4)((rule13(if (animal is bird)) 若动物是鸟(M4)(animal does not fly) 且不会飞(F17)(animal has long neck) 且有长脖子(F16)(animal has long legs)) 且有长腿(F14)(animal black and white)) 且有黑白二色(F18)(then (animal is ostrich))) 则动物是驼鸟(H5)((rule14(if (animal is bird)) 若动物是鸟(M4)(animal does not fly) 且不会飞(F17)(animal swims) 且会游泳(F19)(animal black and white)) 且有黑白二色(F18)(then (animal is penguin))) 则动物是企鹅(H6)((rule15(if (animal is bird)) 若动物是鸟(M4)(animal flies well)) 且善飞(F20)(then (animal is albatross))) 则动物是信天翁(H6)在上述规则的说明中,用F1-F20标记的是初始事实或证据,用M1-M4标记的是中间结论,用H1-H7标记的是最终结论。

动物识别专家系统

动物识别专家系统

动物识别专家系统随着科技的不断发展,人工智能技术在各个领域得到了广泛的应用,其中动物识别领域也不例外。

动物识别专家系统是一种基于人工智能技术的系统,它能够通过对动物的特征进行分析和识别,从而帮助人们更好地了解和保护动物世界。

本文将介绍动物识别专家系统的原理、应用和未来发展方向。

动物识别专家系统的原理。

动物识别专家系统基于人工智能技术,主要包括图像识别、声音识别和行为识别三个方面。

在图像识别方面,系统通过对动物的外貌特征进行分析和比对,从而识别出动物的种类和特征。

在声音识别方面,系统通过对动物的声音进行录制和分析,从而识别出动物的种类和特征。

在行为识别方面,系统通过对动物的行为进行观察和分析,从而识别出动物的种类和特征。

通过这些方法的综合应用,动物识别专家系统能够准确地识别出动物的种类和特征,为人们提供了一个更加直观和全面的了解动物世界的途径。

动物识别专家系统的应用。

动物识别专家系统在许多领域都有着广泛的应用,其中包括科研、保护和教育等方面。

在科研方面,动物识别专家系统能够帮助科研人员更好地了解动物的种类和特征,从而为动物学研究提供了更多的数据和信息。

在保护方面,动物识别专家系统能够帮助保护人员更好地监测和保护野生动物,从而为野生动物的保护工作提供了更多的支持和帮助。

在教育方面,动物识别专家系统能够帮助学生更好地了解动物的种类和特征,从而为动物教育提供了更多的资源和工具。

通过这些应用的综合推广,动物识别专家系统能够为人们提供一个更加全面和便捷的了解动物世界的途径。

动物识别专家系统的未来发展方向。

动物识别专家系统在未来有着广阔的发展前景,其中包括技术的进步、应用的拓展和服务的优化等方面。

在技术方面,动物识别专家系统将会不断引入新的人工智能技术,从而提高系统的识别准确度和效率。

在应用方面,动物识别专家系统将会不断拓展新的应用领域,从而为更多的人群提供更好的服务和支持。

在服务方面,动物识别专家系统将会不断优化用户体验和服务质量,从而为用户提供更加便捷和高效的服务。

人工智能课程设计报告--动物识别系统

人工智能课程设计报告--动物识别系统

文档从互联网中收集,已重新修正排版,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)....................................................................................................... 错误!未定义书签。

人工智能与专家系统

人工智能与专家系统
❖ 1.一种基于神经网络及网络间的连接机制与 学习算法的智能模拟方法。
❖ 2.通过大量的非线性并行处理器来模拟人脑 中众多的神经细胞(神经元),用处理器的 复杂连接关系来模拟人脑中众多神经元之间 的突触行为。
行为主义(Evolutionism )
❖ 1.一种基于“感知——行动”的行为智能模 拟方法。
Hale Waihona Puke 人工智能❖ 顾名思义,人工智能就是人造智能,其英文 表示是“Artificial Intelligence”,简称AI。 当然,这只是人工智能的字面解释或广义解 释。目前的“人工智能”一词是指用计算机 模拟或实现的智能,同时,人工智能又是一 个学科名称。
1.1.2 智能、智力和能力之间的区别与联系
1.2 人工智能的研究学派
❖ 1.2.1 符号主义 ❖ 1.2.2 联结主义 ❖ 1.2.3 行为主义
左脑
❖ 左脑就像个雄辩家,善于语言和逻辑分析; 又像一个科学家,长于抽象思维和复杂计算, 但刻板,缺少幽默和丰富的情感。
右脑
❖ 右脑就像个艺术家,长于非语言的形象思维 和直觉,对音乐、美术、舞蹈等艺术活动有 超常的感悟力,空间想像力极强。不擅言辞, 但充满激情与创造力,感情丰富、幽默、有 人情味。
❖ 2.维纳和麦洛克等人提出的控制论和自组织 系统。控制论把神经系统的工作原理与信息 理论、控制理论、逻辑以及计算机联系起来。
1.3 人工智能的研究目标
❖ (1)通过视觉、听觉、触觉等感官活动,接受并理解文字、 图象、声音、语言等各种外界的“自然信息”,这就是认识 和理解世界环境的能力。
❖ (2)通过人脑的生理与心理活动以及有关的信息处理过程, 将感性知识抽象为理性知识,并能对事物运动的规律进行分 析、判断和推理,这就是提出概念、建立方法,进行演绎和 归纳推理、作出决策的能力。

动物识别专家系统实验报告

动物识别专家系统实验报告

人工智能实验报告实验记录首先运行程序会出项上图界面,该界面显示了当前所有的动物,并且提出问题,用户可以根据问题进行选择,看到自己想要的动物。

对于每一个问题,都只能是真或者是假,因此在后续增加问题的时候也要注意。

其实可以有多种情况,但是要进行扩展,所以本实验没有增加该功能。

该系统中有不同的问题,根据问题的提示可以对现有的动物进行筛选,并且提出下一个问题,并使得提问的次数最少。

通过上面可以看出当生育方式是胎生的时候,那么就在哺乳动物中进行选择,哺乳动物中只有老虎是独居的,所以提问的时候就选择该问题。

这样提问两次就可以得出结论。

而当生育方式不是胎生的时候,就只有一个鸟类,所以可以直接获得结论。

for(int i=0;i<anc;i++){if(a[i]==1){if(an[i].flag[count]!=anser){a[i]=0;}}}代码分析:在回答一个问题之后,在剩下的动物判断提问的属性是否满足,如果满足,那么就留下;如果不满足,那么去除。

如上左所示,在增加了该动物之后,我们可以在下次提问的时候看到系统中的记录增加,并且可以根据问题获得刚刚增加的动物。

如上右图所示。

实验总结 本次实验运用了归结原理、规则演绎推理的推理方法,进行设计。

对于不同的属性可以有时间P1,P2…Pn 。

这样在满足不同的条件之后就可以进行推理,得到所要的动物了。

通过本次实验,我学习到了推理的使用方法,对于这种问题就的解决也有了理解。

这不仅仅让我学习到了如何进行推理问题的证明,也让我对该系统有了更深的了解。

这让我的编程的能力也有了进一步的提高。

人工智能动物识别系统JAVA

人工智能动物识别系统JAVA
实验报告课程名称人工智能与专家系统实验名称动物分类专家系统设计系别电子信息科学学院专业班级指导教师学号姓名实验日期201641实验成绩一实验目的1加深理解专家系统的结构原理与实际应用
实验报告
课程名称
系别电子信息科学学院专业班级指导教师
学号____________姓名____________实验日期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中选出一条知识进行推理,并将推出的新事实加入到数据库中作为下一步推理的已知事实,在此之后再在知识库中选取可适用的知识进行推理,如此重复,直到求得了所要求的解,或者知识库中再无可适用的知识为止。

什么是专家系统?

什么是专家系统?
family(swan),
voice(muffled_musical_whistle).
bird(trumpeter_swan) :-
family(swan),
voice(loud_trumpeting).
为了能够让这些规则能够分辨不同的鸟类,我们必须储存关于某种鸟的特定的信息。例如,如果我们加入下面两个事实的话:
family(goose),
season(winter),
country(united_states),
head(black),
cheek(white).
bird(canada_goose):-
family(goose),
season(summer),
country(canada),
什么是专家系统?
>专家系统是人工智能最重要的应用之一,它的目的是让电脑在某种程度上帮助或者替代某个领域的专家解决问题。例如医疗诊断系统、投资风险分析系统、家居设计系统等等。
Domain Expert就是某个领域的专家,他提供原始的知识。Knowledge Engineer是把专家的知识翻译成电脑所能够识别的知识的工程师。某领域的专家把他所知道的知识告诉knowlegde engineer以后,由knowlegde engineer对这些知识进行处理,最后做成知识库knowledge base。System Engineer是设计专家系统的程序员,他的主要任务是编写专家系统的推理机构inferface engine,和用户界面user interface。用户使用用户界面和专家系统打交道,他和专家系统之间的交流的一些信息由工作空间working storage储存。推理机构根据用户信息和知识库中的信息为用户提供服务。

实验一:产生式系统-动物识别系统

实验一:产生式系统-动物识别系统

《人工智能导论》实验报告实验一:产生式系统——动物识别系统一、实验目的1、掌握知识的产生式表示法2、掌握用程序设计语言编制智能程序的方法二、实验内容1、所选编程语言:C语言;2.拟订的规则:(1)若某动物有奶,则它是哺乳动物。

(2)若某动物有毛发,则它是哺乳动物。

(3)若某动物有羽毛,则它是鸟。

(4)若某动物会飞且生蛋,则它是鸟。

(5)若某动物是哺乳动物且有爪且有犬齿且目盯前方,则它是食肉动物。

(6)若某动物是哺乳动物且吃肉,则它是食肉动物。

(7)若某动物是哺乳动物且有蹄,则它是有蹄动物。

(8)若某动物是哺乳动物且反刍食物,则它是有蹄动物。

(9)若某动物是食肉动物且黄褐色且有黑色条纹,则它是老虎。

(10)若某动物是食肉动物且黄褐色且有黑色斑点,则它是金钱豹。

(11)若某动物是有蹄动物且长腿且长脖子且黄褐色且有暗斑点,则它是长颈鹿。

(12)若某动物是有蹄动物且白色且有黑色条纹,则它是斑马。

(13)若某动物是鸟且不会飞且长腿且长脖子且黑白色,则它是驼鸟。

(14)若某动物是鸟且不会飞且会游泳且黑白色,则它是企鹅。

(15)若某动物是鸟且善飞,则它是海燕。

2、设计思路:用户界面:采用问答形式;知识库(规则库):存放产生式规则,推理时用到的一般知识和领域知识,比如动物的特征,动物的分类标准,从哺乳动物、食肉动物来分,再具体地添加一些附加特征得到具体动物;建立知识库的同时也建立了事实库。

事实库是一个动态链表,一个事实是链表的一个结点。

知识库通过事实号与事实库发生联系。

数据库:用来存放用户回答的问题,存放初始状态,中间推理结果,最终结果;推理机:采用正向推理,推理机是动物识别的逻辑控制器,它控制、协调系统的推理,并利用知识库中的规则对综合数据库中的数据进行逻辑操作。

推理机担负两项基本任务:一是检查已有的事实和规则,并在可能的情况下增加新的事实;二是决定推理的方式和推理顺序。

将推理机制同规则对象封装在一起,事实对象记录了当前的状态,规则对象首先拿出前提条件的断言(只有这些前提都有符合时才会做这条规则的结论),询问事实对象集,如事实对象集不知道,则询问用户,如所有前提条件都被证实为真则结论为真,否则系统不知道结论真假。

模式识别、人工智能与医学专家系统之间的关系

模式识别、人工智能与医学专家系统之间的关系

03
博奕:博弈是研究使自己 取胜、战胜对手的策略。 在决策过程中要对形势做 出恰当的估计,搜寻各种 可能的策略组合,通过对 比分析确定对自己最有利 的策略。其中运用到问题 求解、模式识别等方法。
程序自动设计:程序自动化是为了设计一种算法。该算法是分层结构的, 先提出一些规定,形成最高一级的算法,并提出下一层算法的规定,然后 按照这些规定形成下一级的算法和再下一级的规定,最后完成整个程序。 程序自动化较多的研究工作放在了自动程序验证方面,即让计算机自动查 找程序中的错误。
记忆、归纳推理与信息处理
利用已有的经验来解决新的问题需要归纳和推理。人的这种能力是由人脑的记 忆构造决定的。人脑在发育的早期阶段记忆过程主要是素材和基本经验块堆的 建立和积累,即机械记忆。人脑在成熟阶段记忆过程主要是经验块堆的关联和 重组,即关联记忆。由关联记忆形成的人脑活动使人的思维模式天生具有归纳 推理能力。经验的重组使人得到了新的经验,获得了进步。人脑的这种记忆构 造的优点是具有模糊识别和记忆修补能力,缺点是老的关联成分会因打散而消 退, 即产生忘却。
02
而智能在人的个人 行为中主要是通过 个人情感和意志起 作用以处理新鲜感 受。
03
什么是人工智能
人工智能(Artificial Intelligence) 是利用设备或机器,用人工的方法,对人 脑的思维活动过程进行模拟;当使得设备或机器的功能与脑功能大体等价时, 这种设备或机器的功能就可以认为是具有某种程度的人工智能。人工智能应该 以平均智力商为评定标准,并在与对比者(人)同等条件状况下进行全面地综 合测试或进行某几种局部功能的单项测试;当测试结果不低于规定的智力商数 时,应当承认该设备或机器具有某种程度或某种意义的人工智能。
它们通过对感官的刺激而被识别;论 点、思想、信仰…则是非物质的客体, 对它们的研究主要属于哲学、政治学 的范畴。

专家系统

专家系统
AI· ES
LOGO
人工智能
——专家系统
Contents
1
2 3
专家系统介绍
专家系统特点和发展趋势
4
动物识别专家系统
专家系统
Part1:专家系统介绍
• 专家系统是一个具有大量的专门知识与经验的程序系统,它应用 人工智能技术和计算机技术,根据某领域一个或多个专家提供的 知识和经验,进行推理和判断,模拟人类专家的决策过程,以便 解决那些需要人类专家处理的复杂问题,从而达到与专家具有同 等解决问题能力。
专家系统的基本工作流程
• 专家系统的基本工作流程是,用户通过人机 界面回答系统的提问,推理机将用户输入的 信息与知识库中各个规则的条件进行匹配, 并把被匹配规则的结论存放到综合数据库中。 最后,专家系统将得出最终结论呈现给用户。 • 在这里,专家系统还可以通过解释器向用户 解释以下问题:系统为什么要向用户提出该 问题(Why)?计算机是如何得出最终结论 的(How)? • 领域专家或知识工程师通过专门的软件工具, 或编程实现专家系统中知识的获取,不断地统
专家系统
• 专家系统(expert system)是人工智能领域应用 研究最活跃和最广泛的课题之一。第一个专家系 统是在1956年由Allen Newell、Herbert Simon 及J. C. Shaw所发展。其后,许多专家系统也纷 纷随之建立,但在前期多半是属于研究性质的雏 形系统。1970年代之后,人工智能与专家系统专 用的程序语言及软件开发工具逐渐开始发展,而 各种知识表示法及算法也被广泛地研究,使得专 家系统的建构与发展方式产生了不小的改变。从 1980年代后期开始,专家系统便能够逐渐脱离实 验室的研究而广泛应用于各行业中。
知识获取
• 知识获取是专家系统知识库是否优越的关键, 也是专家系统设计的“瓶颈”问题,通过知 识获取,可以扩充和修改知识库中的内容, 也可以实现自动学习功能。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一.题目:动物识别专家系统二.实验目的1.理解并掌握基于规则系统的表示与推理2.学会编写小型的生产式系统,理解正向推理和反向推理的过程以及两者的区别3.学会设计简单的人机交互界面三.实验内容动物识别专家系统是流行的专家系统实验模型,它用产生式规则来表示知识,共15条规则、可以识别七种动物,这些规则既少又简单,可以改造他们,也可以加进新的规则,还可以用来识别其他东西的新规则来取代这些规则。

四.实验要求1、确定推理方法(正向还是反向),并根据问题设计实现一个简单的不通用推理机(匹配、冲突消解)2、规则库要求至少包含15条规则3、初始事实可以任意给定,输入初始事实后能够得到推理结果4、设计人机界面,解释模块提供查询规则的功能5、可以不考虑知识库管理模块6、提交实验报告,7、报告中要有推理树五.实验原理动物识别专家系统是流行的专家系统实验模型,它用产生式规则来表示知识,共15条规则、可以识别七种动物,这些规则既少又简单,可以改造他们,也可以加进新的规则,还可以用来识别其他东西的新规则来取代这些规则。

动物识别15条规则:规则1:如果:动物有毛发则:该动物是哺乳动物规则2:如果:动物能产奶则:该单位是哺乳动物规则3:如果:该动物有羽毛则:该动物是鸟规则4:如果:动物会飞,且会下蛋则:该动物是鸟规则5:如果:动物吃肉则:该动物是肉食动物规则6:如果:动物有犬齿,且有爪,且眼盯前方则:该动物是食肉动物规则7:如果:动物是哺乳动物,且有蹄则:该动物是有蹄动物规则8:如果:动物是哺乳动物,且是反刍动物则:该动物是有蹄动物规则9:如果:动物是哺乳动物,且是食肉动物,且是黄褐色的,且有暗斑点则:该动物是豹规则10:如果:如果:动物是黄褐色的,且是哺乳动物,且是食肉,且有黑条纹则:该动物是虎规则11:如果:动物有暗斑点,且有长腿,且有长脖子,且是有蹄类则:该动物是长颈鹿规则12:如果:动物有黑条纹,且是有蹄类动物则:该动物是斑马规则13:如果:动物有长腿,且有长脖子,且是黑色的,且是鸟,且不会飞则:该动物是鸵鸟规则14:如果:动物是鸟,且不会飞,且会游泳,且是黑色的则:该动物是企鹅规则15:如果:动物是鸟,且善飞则:该动物是信天翁六.推理树七.代码#include <>#include <>#include <>#include <>#define True 1#define False 0#define DontKnow -1char *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};intrulep[][6]={{22,23,12,3,0,0},{21,23,12,3,0,0},{22,19,20,11,0,0}, {21,11,0,0,0,0},{17,19,20,13,-9,0},{17,18,13,-9,0,0},{16,13,0,0,0 ,0},{15,0,0,0,0,0},{14,0,0,0,0,0},{10,0,0,0,0,0},{8,7,0,0,0,0},{7,0,0,0,0,0},{4,5,6,0,0,0},{2,3,0,0,0,0},{1,3,0,0,0,0}};int rulec[]={30,29,28,27,26,25,24,3,3,13,13,12,12,11,11,0};class fact{private:int Number;char Name[21];int Active;int Succ;public:fact *Next;fact(int Num,char *L){strcpy(Name,L);Number=Num;Active=False;Succ=DontKnow;Next=NULL;}char *GetName(){char *L;L=new char[21];strcpy(L,Name);return L;}int GetNumber(){return Number;}int GetAct(){return Active;}int GetSucc(){return Succ;}void PutAct(const int Act0,int Suc0) {Active=Act0;Succ=Suc0;}};fact *Fact;class list{private:int Number;public:list *Next;list(int Num){Number=Num;Next=NULL;}int GetNumber(){return Number;}};class rule{char *Name;list *Pre;int Conc;public:rule *Next;rule(char *N,int P[],int C);~rule();int Query();void GetName(){cout<<Name;}};rule::~rule(){list *L;while(Pre){L=Pre->Next;delete Pre;Pre=L;}delete Name;}rule::rule(char *N,int P[],int C){int i;list *L;Pre=NULL;Next=NULL;Name=new char[strlen(N)+1];strcpy(Name,N);i=0;while(P[i]!=0){L=new list(P[i++]);L->Next=Pre;Pre=L;}Conc=C;}int rule::Query(){char c;int Tag=0;list *L;fact *F;F=Fact;L=Pre;if(L==NULL)cout<<"\nError";while(L!=NULL){F=Fact;for(;;){if(abs(L->GetNumber())==F->GetNumber()) break;F=F->Next;}if(L->GetNumber()>0){if((F->GetSucc())==true) {L=L->Next;continue;} if((F->GetSucc())==false) return false;}else{if((F->GetSucc())==True)return False;if((F->GetSucc())==False){L=L->Next;continue;}}cout<<F->GetName()<<"(Y/N)"<<endl;c=getchar();flushall();if((c=='Y')||(c=='y')){if(L->GetNumber()>0)F->PutAct(1,True);if(L->GetNumber()<0){F->PutAct(1,True);Tag=-1;return False;}}else{if(L->GetNumber()<0)F->PutAct(-1,False);else{F->PutAct(-1,False);Tag=-1;return False;}}L=L->Next;}F=Fact;for(;;){if(Conc==F->GetNumber())break;F=F->Next;}if(Conc<24){F->PutAct(1,True);return False;}if(Tag!=-1){F=Fact;for(;;){if(Conc==F->GetNumber())break;F=F->Next;}if(Conc<24){F->PutAct(1,True);return False;}cout<<"\nThis aniamal is "<<F->GetName()<<endl; return True;}return False;}int main(){fact *F,*T;rule *Rule,*R;char ch[8];int i=1;Fact=NULL;while(str[i-1]){F=new fact(i,str[i-1]); F->Next=Fact;Fact=F;i++;}F=Fact;Fact=NULL;while(F){T=F;F=F->Next;T->Next=Fact;Fact=T;}i=0;ch[0]='R';ch[1]='U';ch[2]='L';ch[3]='E';ch[4]='_';ch[5]='a';ch[6]='\0';Rule=NULL;for(i=0;i<15;i++){R=new rule(ch,rulep[i],rulec[i]);R->Next=Rule;Rule=R;ch[5]++;}R=Rule;for(;;){i=R->Query();if((i==1)||(i==-1))break;R=R->Next;if(!R)break;}if(!R)cout<<"没有这种动物."<<endl;cout<<"press any key to exit."<<endl; getchar();return True;}八.截图九.感想通过这次课程设计我对专业课的学习有了更加深刻的认识,让我知道了学无止境的道理。

相关文档
最新文档