人工智能-基于规则的动物识别专家系统

合集下载

专家系统实例

专家系统实例

专家系统实例
专家系统是一种基于知识推理的智能信息系统,用于解决特定领域的问题。

它们利用专家知识和推理规则,通过询问用户的问题来识别问题的本质,然后提供相应的解决方案。

以下是一些专家系统实例: 1. 动物识别专家系统:该实例是一个基于人工智能技术的专家系统,用于识别动物物种。

它利用了计算机视觉和自然语言处理技术,通过询问用户有关动物的特征和属性来识别动物。

2. 医学诊断专家系统:该实例是一个用于医学诊断的专家系统,它利用医学知识和推理规则,通过对用户提供的症状和疾病特征进行分析,从而作出准确的医学诊断。

3. 工业控制专家系统:该实例是一个用于工业控制的专家系统,它利用控制理论和推理技术,通过对用户提供的控制命令进行分析和优化,以实现更高效、更安全的工业控制。

4. 农业施肥专家系统:该实例是一个用于农业施肥的专家系统,它利用植物营养知识和推理规则,通过对用户提供的肥料信息和植物需求进行分析,从而提供最佳的施肥方案。

这些专家系统实例展示了人工智能技术在各个领域的应用,可以帮助用户解决各种复杂问题。

产生式系统 识别动物 python 产生式系统的应用实例 转 -回复

产生式系统 识别动物 python 产生式系统的应用实例 转 -回复

产生式系统识别动物python 产生式系统的应用实例转-回复产生式系统(Production System)是人工智能领域中常用的一种知识表示和推理方式,也被广泛应用于自然语言处理、专家系统、智能搜索等领域。

产生式系统以if-then的规则形式表示知识,并通过模式匹配的方式进行推理和推断。

在本文中,我们将以"产生式系统识别动物python 产生式系统的应用实例转"为主题,逐步分析产生式系统的原理和应用,并介绍使用Python实现一个基础的动物识别系统的案例。

一、产生式系统原理及基本概念产生式系统是基于规则的知识表达和推理方式,它由条件部分和结论部分组成。

条件部分描述了一系列前提条件,结论部分则是满足条件部分的推论结果。

产生式系统通过匹配条件部分和已有的事实库进行推理,从而得到新的结论。

产生式系统的基本概念包括规则(rule)、事实(fact)、工作单元(working memory)和控制策略(control strategy)。

规则是产生式系统的基本单位,它包含了if-then的条件推理规则。

例如,一条规则可以是:“如果动物有毛发,并且有四条腿,那么它是哺乳动物”。

事实是产生式系统中的基本数据,它表示系统当前的知识状态。

例如,一条事实可以是:“这个动物有四条腿”。

工作单元是存储和管理事实的数据结构,它可以是一个列表或者一个数据库。

产生式系统通过与工作单元中的事实进行匹配来进行推理。

控制策略是产生式系统的推理策略,它决定了系统在工作单元中进行规则匹配和推理的顺序。

常见的控制策略包括深度优先、广度优先和最佳优先等。

二、动物识别的产生式系统实现在本节,我们将以一个简单的动物识别系统为例,介绍如何使用产生式系统来实现动物识别。

这个动物识别系统可以根据输入的动物特征判断其是什么类别的动物,比如哺乳动物、爬行动物等。

1. 确定知识库和规则库首先,我们需要确定动物特征的知识库和规则库。

知识库包括各种动物的特征信息,规则库则包含了各种动物的分类规则。

人工智能的专家系统与规则推理

人工智能的专家系统与规则推理

人工智能的专家系统与规则推理专家系统与规则推理是人工智能领域中的两个重要概念,它们在解决复杂问题、进行推理和决策过程中发挥着重要作用。

本文将深入探讨专家系统和规则推理的定义、原理、应用以及未来发展方向。

一、专家系统的概念和原理专家系统是通过模拟人类专家的知识和经验,以解决特定问题为目标的计算机程序。

它由知识库、推理机和用户界面三个主要组成部分构成。

知识库包含了专家知识的各种表达形式,这些知识可以是规则、事实、概念、关系等。

推理机是专家系统的核心,其作用在于根据知识库中的规则和事实,进行推理和判断,并提供解决问题的答案。

用户界面则是用户与专家系统进行交互的桥梁,使用户能够输入问题并接收系统的回答。

专家系统的原理基于规则推理,即依据一系列前提条件推导出结论的思维过程。

规则推理是基于规则库中的规则进行的,规则库是知识库的一个重要组成部分。

规则库中的规则通常采用条件-结论形式来表示,它由一个前提和一个结论组成。

前提是一个或多个条件,表示问题的特征或状态;结论是根据前提条件推导出来的结论或行动。

推理机会根据用户提供的前提条件,在规则库中寻找匹配的规则,并根据规则中的结论向用户提供答案或行动建议。

二、专家系统的应用领域专家系统的应用领域非常广泛,涵盖了医疗、金融、工业、农业等多个领域。

以下是几个典型的应用案例。

1. 医疗诊断:专家系统可以根据患者提供的症状和疾病数据库,通过规则推理的方式诊断患者疾病,给出相应的治疗建议。

2. 金融风险评估:专家系统可以根据海量的金融数据和分析模型,通过规则推理的方式评估客户的信用风险,为银行提供贷款决策的建议。

3. 工业故障诊断:专家系统可以根据设备传感器数据和故障数据库,通过规则推理的方式判断设备是否存在故障,并提供相应的维修建议。

4. 农业植物识别:专家系统可以根据植物图像和植物数据库,通过规则推理的方式识别出植物的种类以及相应的养护方法。

三、规则推理的概念和原理规则推理是基于规则库中的规则进行的推理过程,它是专家系统中的核心方法之一。

人工智能算法识别动物原理

人工智能算法识别动物原理

人工智能算法识别动物原理
人工智能算法识别动物的原理主要是通过计算机视觉和图像识别技术来实现。

下面是一般的人工智能算法识别动物的基本原理:
1. 数据收集:首先,需要收集一定数量和多样性的动物图像样本作为训练数据。

这些图像可以包含不同种类的动物、不同角度的拍摄和不同环境下的图像。

2. 数据预处理:对收集到的图像数据进行预处理,例如图像缩放、裁剪、去噪等。

这些预处理操作有助于提高后续算法的效果。

3. 特征提取:使用计算机视觉技术,从图像中抽取关键的特征。

常见的特征提取算法包括SIFT、HOG、SURF等。

这些特征
能够帮助算法识别出图像中的动物特征和形状。

4. 模型训练:使用机器学习算法,如支持向量机(SVM)、卷积
神经网络(CNN)等,对特征提取得到的数据进行训练。

在训练
过程中,算法会根据给定的标签,通过学习来建立一个模型,使得该模型能够准确地区分不同的动物类别。

5. 模型测试和验证:使用一部分未被训练过的图像数据,对训练好的模型进行测试和验证。

通过输入测试图像并运行训练好的模型,可以获得对图像中动物的分类结果。

与实际标签进行比较,以评估模型的性能和准确度。

6. 模型优化与迭代:根据测试结果,对模型进行优化和调整,以提高模型的准确率和鲁棒性。

调整可能包括改变特征提取算法、调整算法参数等。

通过以上步骤,人工智能算法可以学习并识别不同种类的动物。

随着更多的数据和更先进的算法的集成,人工智能算法的动物识别能力也将不断提高。

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

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

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

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

动物识别系统实验报告

动物识别系统实验报告
{
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。

动物识别专家系统

动物识别专家系统

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

动物识别系统实验报告

动物识别系统实验报告

暨南大学人工智能实验报告题目:基于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。

如果不考虑不确定性,需另附可信度度量值。

产生式过则的含义是:如果前件满足,则可得到后件的结论或者执行后件的相应动作,即后件由前件来触发。

一个产生式生成的结论可以作为另一个产生式的前提或语言变量使用,进一步可构成产生式系统。

人工智能主要分支介绍

人工智能主要分支介绍

人工智能主要分支介绍人工智能(Artificial Intelligence,AI)是计算机科学的一个重要领域,旨在研究和开发能够模拟和执行人类智能任务的计算机系统。

随着技术的不断发展,人工智能已经涵盖了许多不同的研究领域和应用领域。

本文将介绍人工智能的主要分支,包括机器学习、自然语言处理、计算机视觉和专家系统。

一、机器学习机器学习是人工智能领域的核心分支,旨在让计算机具备从数据中学习和改进的能力。

通过机器学习,计算机可以通过分析和理解大量的数据,自动发现数据中的模式和规律,并基于这些模式和规律做出预测和决策。

机器学习可以分为监督学习、无监督学习和强化学习三种类型。

监督学习是一种通过已有的标记数据来训练模型,从而使模型能够对未知的输入数据进行分类或预测的方法。

无监督学习则是在没有标记数据的情况下,通过对数据进行聚类和关联分析等方法来发现数据中的结构和模式。

强化学习是一种让计算机通过试错的方式学习和优化决策策略的方法,它通过与环境的交互来获得奖励,并根据奖励调整自己的行为。

二、自然语言处理自然语言处理(Natural Language Processing,NLP)是人工智能领域的一个重要分支,旨在让计算机能够理解和处理人类语言。

通过自然语言处理,计算机可以对文本进行自动解析、理解和生成,实现机器翻译、情感分析、智能问答等功能。

自然语言处理涉及词法分析、句法分析、语义分析和语言生成等技术。

词法分析主要是对文本进行分词、词性标注等处理,将文本转换为计算机可以理解和处理的形式。

句法分析则是分析句子的结构和语法规则,以便于进一步理解句子的意义。

语义分析是对句子的意义进行理解和推理,通过识别句子中的命名实体、情感等信息,从而更好地理解文本。

语言生成是将计算机生成的结果转换为自然语言文本的过程,使计算机能够产生自然流畅的语言输出。

三、计算机视觉计算机视觉(Computer Vision)旨在使计算机能够理解和解释图像和视频。

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

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

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

人工智能动物识别系统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中选出一条知识进行推理,并将推出的新事实加入到数据库中作为下一步推理的已知事实,在此之后再在知识库中选取可适用的知识进行推理,如此重复,直到求得了所要求的解,或者知识库中再无可适用的知识为止。

动物识别系统实验报告人工智能原理及其应用

动物识别系统实验报告人工智能原理及其应用

实验目的及要求:实验目的:1.熟悉产生式的特点,基本结构和设计思想2.掌握基于规则推理的基本过程和方法(在实验中采用正向推理过程)3.学会用高级程序设计语言开发基于规则的动物识别系统实验要求: 1.根据动物识别系统的规则建立合理的数据结构或数据库来表示知识。

2.利用所选开发语言来建立推理过程。

(该程序能正向推理识别动物过程)3.利用控制台或者图形界面给出合理的交互接口,实现基本演示功能。

4.提交实验报告和源程序,总结实验结论和经验教训。

实验原理:1.基于规则产生式系统结构:基于规则的产生式系统一般由规则库(知识库)、综合数据库和推理引擎(推理机)三部分组成,规则库中它的基本组成框架如下图1 所示。

知识库由谓词演算事实和有关讨论主题的规则构成,综合库又称为上下文,用来暂时存储推理过程中的结论和数据。

推理机是用规则进行推理的过程和行为,。

知识采集系统是领域专家把相关领域的知识表示成一定的形式,并输入到知识库中。

解释系统通过用户输入的条件来分析被系统执行的推理结构,并将专家知识以易理解的方式并把知识解释给用户。

知识库综合库图1规则产生式系统的基本结构2. 简单动物识别产生式系统结构:知识库 ANIMAL 的知识库非常小,仅仅包含16条规则(一 般说来,一个产生式系统的知识库应包含》几百条规则); 解空间很小,仅仅包含8个解,或8个最高假设(在一个特定 的动物园里,共有虎、豹、长颈鹿、斑马、鸵鸟、企鹅和信天 翁、八哥等8种动物);初始事实集合很小,仅仅包含21个事实,如图中的F1至F21; 数据(即事实、证据、断言),知识(即浅层知识,规则)和推 理都是精确的,即确定性的;知识库。

实验步骤:本识别系统需要通过正向推理,正向推理过程的具体步骤是:(1) 读入事实集到工作存储器。

(2) 取出某条规则,将规则的全部前件与工作存储器中的所有事实进行比较。

如果匹配成功,则所得结果显示到屏幕上,转向(3);否则,直接转向(3)。

产生式系统 识别动物 python 产生式系统的应用实例 转

产生式系统 识别动物 python 产生式系统的应用实例 转

产生式系统识别动物python 产生式系统的应用实例转题目:产生式系统及其在识别动物中的应用实例摘要:产生式系统是一种基于规则和推理的人工智能技术。

本文将详细介绍产生式系统的概念和工作原理,并探讨它在识别动物方面的具体应用实例。

结合代码示例,我们将展示如何利用Python实现一个简单的产生式系统,用于判断动物所属的分类。

1. 引言1.1 研究背景1.2 研究目的2. 产生式系统的概念和工作原理2.1 产生式规则2.2 推理机制2.3 前向推理和后向推理2.4 基于特征的产生式系统3. 动物识别的应用实例3.1 构建知识库3.2 设计产生式规则3.3 实现动物识别系统4. Python实现动物识别的产生式系统4.1 环境准备4.2 实现产生式规则4.3 实现推理机制4.4 构建动物识别系统5. 实验结果与分析5.1 测试数据集5.2 系统性能评估5.3 结果分析6. 结论6.1 主要研究发现6.2 研究展望关键词:产生式系统、动物识别、人工智能、Python、推理机制、产生式规则。

注意:文章的内容可以根据需要进行适当调整和补充。

Abstract:A production system is an artificial intelligence technology based on rules and reasoning. This article will provide a detailed introduction to the concept and working principle of production systems, and explore their specific applications in animal recognition. With the help of code examples, we will demonstrate how to implement a simple production system using Python to classify animals.1. Introduction1.1 Research background1.2 Research objectives2. Concept and working principle of production systems2.1 Production rules2.2 Inference mechanism2.3 Forward and backward reasoning2.4 Feature-based production systems3. Application example: Animal recognition3.1 Building the knowledge base3.2 Designing production rules3.3 Implementing an animal recognition system4. Python implementation of a production system for animal recognition4.1 Environment setup4.2 Implementation of production rules4.3 Implementation of the inference mechanism4.4 Building the animal recognition system5. Experimental results and analysis5.1 Test dataset5.2 System performance evaluation5.3 Result analysis6. Conclusion6.1 Main research findings6.2 Research outlookKeywords: production system, animal recognition, artificial intelligence, Python, inference mechanism, production rules.。

人工智能实验报告

人工智能实验报告

暨南大学人工智能实验报告题目:动物识别系统院系:信科院计算机系专业:计算机软件与理论学号: 0934061004学生姓名:张韶远成绩:日期: 2009年11月10日一、目的与要求1.掌握人工智能的知识表示技术,能用产生式表示法表示知识,并实现一个用于识别的专家系统。

2.推理策略采用正向推理和反向推理两种。

二、主要内容1.学习人工智能的知识表示技术,关键掌握产生式知识表示的具体应用方法。

2.实现的动物识别系统的主要功能如下:2.1系统能通过正向、反向推理得到正确的动物识别结果。

2.2系统能动态地添加规则、能显示推理过程。

三.实验原理产生式表示:产生式表示是知识表示的一种。

这种方法是建立在因果关系的基础上的,可很容易的描述事实、规则及其不确定性度量。

1.事实的表示:事实可看成是断言一个语言变量的值或是多个语言变量间的关系的陈述句,语言变量的值或语言变量间的关系可以是一个词。

不一定是数字。

一般使用三元组(对象,属性,值)或(关系,对象1,对象2)来表示事实,其中对象就是语言变量,若考虑不确定性就成了四元组表示(增加可信度)。

这种表示的机器内部实现就是一个表。

如事实“老李年龄是35岁”,便写成(Lee,age,35)事实“老李、老张是朋友”,可写成(friend,Lee,Zhang)2.规则的表示:规则用于表示事物间的因果关系,以if condition then action 的单一形式来描述,将规则作为知识的单位。

其中的condition 部分称为条件式前件或模式,而action部分称作动作、后件或结论。

后件。

前件和后件也可以是有“与”、“或”、“非”等逻辑运算符的组合的表达式。

条件部分常是一些事实的合取或析取,而结论常是某一事实B。

如果不考虑不确定性,需另附可信度度量值。

产生式过则的含义是:如果前件满足,则可得到后件的结论或者执行后件的相应动作,即后件由前件来触发。

一个产生式生成的结论可以作为另一个产生式的前提或语言变量使用,进一步可构成产生式系统。

专家系统

专家系统
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条规则、可以识别七种动物,这些规则既少又简单,可以改造他们,也可以加进新的规则,还可以用来识别其他东西的新规则来取代这些规则。

动物识别15条规则:r1 毛发哺乳动物r2 奶哺乳动物r3 羽毛鸟r4 会飞|下蛋鸟r5 吃肉食肉动物r6 犬齿|爪|眼睛盯着前方食肉动物r7 哺乳动物|蹄有蹄类动物r8 哺乳动物|反刍有蹄类动物r9 哺乳动物|食肉动物|黄褐色|暗斑点金钱豹r10 哺乳动物|食肉动物|黄褐色|黑色条纹虎r11 有蹄类动物|长脖子|长腿|暗斑点长颈鹿r12 有蹄类动物|黑条纹斑马r13 鸟|不会飞|长脖子|长腿|黑白色鸵鸟r14 鸟|不会飞|游泳|黑白色企鹅r15 鸟|善飞信天翁四.实验要求1、确定推理方法(正向还是反向),并根据问题设计实现一个简单的不通用推理机(匹配、冲突消解);2、规则库要求至少包含15条规则;3、初始事实可以任意给定,输入初始事实后能够得到推理结果;4、设计人机界面,解释模块提供查询规则的功能;5、可以不考虑知识库管理模块;6、提交实验报告,以word文档形式“学号+姓名”命名;①报告中要有程序源代码;②有程序运行结果截图;③要有推理树;④报告提交到:ftp://192.168.129.253/xstjzy/任建平/人工智能五.实验原理1.基于规则产生式系统结构基于规则的产生式系统一般由规则库(知识库)、综合数据库和推理引擎(推理机)三部分组成,规则库中它的基本组成框架如下图1所示。

知识库由谓词演算事实和有关讨论主题的规则构成,综合库又称为上下文,用来暂时存储推理过程中的结论和数据。

推理机是用规则进行推理的过程和行为。

知识采集系统是领域专家把相关领域的知识表示成一定的形式,并输入到知识库中。

解释系统通过用户输入的条件来分析被系统执行的推理结构,并将专家知识以易理解的方式并把知识解释给用户。

图1 规则产生式系统的基本结构2. 简单动物识别产生式系统结构:⑴知识库ANIMAL的知识库非常小,仅仅包含15条规则(一般说来,一个产生式系统的知识库应包含≥几百条规则);⑵解空间很小,在一个特定的动物园里,共有虎、金钱豹、长颈鹿、斑马、鸵鸟、企鹅和信天翁等7种动物;⑶初始事实集合很小,仅仅包含30个事实,cha⑷数据(即事实、证据、断言),知识(即浅层知识,规则)和推理都是精确的,即确定性的;⑸知识库。

3.正向推理过程分析:下面以一个具体的动物识别产生式系统模型来说明其原理。

初始事实集:动物身上有暗斑点、有长脖子、有长腿、有奶、有蹄要求解的问题是判断满足该事实集的是何种动物?推理过程:①首先从规则库取出第一条规则r1,将r1中的前提部分与初始事实集中的事实相比较,匹配失败;于是继续取第二条规则再试,匹配成功!将此规则的结论部分作为新事实加入到综合数据库的初始事实集中。

于是初始事实集变为:该动物身上有暗斑点、有长脖子、有长腿、有奶、有蹄、是哺乳动物。

②接着依次取r3、r4、r5、r6 与初始事实集匹配、均不成功,当执行到r7 时再次获得匹配,于是事实集中以增加一条事实:该动物身上有暗斑点、有长脖子、有长腿、有奶、有蹄、是哺乳动物、是有蹄类动物。

③此后,当搜索到r11 时又一次匹配成功,事实集变为:该动物身上有暗斑点、有长脖子、有长腿、有奶、有蹄、是哺乳动物、是有蹄类动物、该动物是长颈鹿。

于是得到最终结论---该动物是长颈鹿。

上述问题的求解过程是一个不断地从规则库中选取可用规则与综合数据库中的已知事实进行匹配的过程,规则的每一次匹配都会使综合数据库增加新的内容,并朝着问题的解决前进了一步。

这就是一个推理过程。

4.逆向推理过程分析:初始事实集:动物身上有暗斑点、有长脖子、有长腿、有奶、有蹄要求解的问题是判断满足该事实集的是何种动物?推理过程:①我们假设这个动物是长颈鹿的话,为了检验这个假设,根据规则r11,要求这个动物是长脖子,长腿,暗斑点且是有蹄类动物。

②这时数据库中已经有了长脖子,长腿,暗斑点事实,为此我们还要验证“动物是有蹄类动物”,根据规则r8要求动物反刍,且是哺乳动物,而事实库中没有反刍,根据规则r7要求动物有蹄,且是哺乳动物,事实中动物有蹄。

为此我们要验证动物是哺乳动物③我们要验证动物是哺乳动物,根据规则r2知道,要求动物有奶,事实中动物有奶,此时各个子目标都是已知事实,所以逆向推理成功。

上述问题的求解过程是从目标的(作为假设)状态出发,朝着出事状态前进,逆向适用规则的一种方法。

六.推理树七.具体代码如下#include <string.h>#include <math.h>#include <stdio.h>#include <iostream.h>#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};int rulep[][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;//-1 是已经推理,不符合。

1 是已经推理,符合。

Succ=DontKnow; //0 是无,-1 是不知道,1 是有。

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(){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; //已经推理,不符合。

相关文档
最新文档