重庆大学人工智能作业(动物识别系统)
人工智能实验报告
暨南大学人工智能实验报告题目:动物识别系统院系:信科院计算机系专业:计算机软件与理论学号:学生姓名:张韶远成绩:日期: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。
如果不考虑不确定性,需另附可信度度量值。
产生式过则的含义是:如果前件满足,则可得到后件的结论或者执行后件的相应动作,即后件由前件来触发。
一个产生式生成的结论可以作为另一个产生式的前提或语言变量使用,进一步可构成产生式系统。
人工智能大作业
大作业1、引言
1.1 背景
1.2 目的
1.3 范围
1.4 定义
2、文献综述
2.1 关于的研究历史
2.2 相关研究成果与应用领域
3、问题陈述
3.1 问题描述
3.2 研究的动机和意义
3.3 研究的目标和假设
4、方法ology
4.1 数据收集
4.2 数据处理与清洗
4.3 特征选择与提取
4.4 算法选择与实现
4.5 模型训练与优化
5、实验结果与分析
5.1 数据集描述
5.2 实验设置
5.3 结果分析与讨论
5.4 实验效果评估
6、结论与展望
6.1 主要研究结果总结 6.2 讨论与不足之处
6.3 对未来工作的展望附件:
附件1:数据集来源信息附件2:代码仓库
附件3:实验结果数据表格法律名词及注释:
1、:指通过模拟和模仿人类智能的方法和技术,使计算机系统能够自动执行任务、学习、适应和改进。
2、数据处理与清洗:指对原始数据进行筛选、过滤、去除噪声以及修复缺失值等操作,以提高数据的质量和可用性。
3、特征选择与提取:指从原始数据中选择最相关或最具代表性的特征,或通过计算、变换等方法提取出更具信息量的特征。
4、算法选择与实现:指根据问题的特点和要求,选择合适的算法,并通过编程实现。
5、模型训练与优化:指使用训练数据对选定的算法模型进行训练,并通过调整参数、改进算法等方式优化模型性能。
动物识别系统实验报告
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;
大工20秋《人工智能》大作业题目及要求精选全文
可编辑修改精选全文完整版学习中心:专业:年级:年春/秋季学号:学生:完整答案下载后可见题目:深度优先搜索算法1.谈谈你对本课程学习过程中的心得体会与建议?通过这学期的学习,我对人工智能有了一定的感性认识,个人觉得人工智能是一门极富挑战性的科学,从事这项工作的人必须懂得计算机知识,心理学和哲学。
人工智能是包括十分广泛的科学,它由不同的领域组成,如机器学习,计算机视觉等等,总的说来,人工智能研究的一个主要目标是使机器能够胜任一些通常需要人类智能才能完成的复杂工作。
人工智能的定义可以分为两部分,即“人工”和“智能”。
“人工”比较好理解,争议性也不大。
有时我们会要考虑什么是人力所能及制造的,或者人自身的智能程度有没有高到可以创造人工智能的地步,等等。
但总的来说,“人工系统”就是通常意义下的人工系统。
关于什么是“智能”,就问题多多了。
这涉及到其它诸如意识、自我、思维等等问题。
人唯一了解的智能是人本身的智能,这是普遍认同的观点。
但是我们对我们自身智能的理解都非常有限,对构成人的智能的必要元素也了解有限,所以就很难定义什么是“人工”制造的“智能”了。
关于人工智能一个大家比较容易接受的定义是这样的:人工智能是人造的智能是计算机科学、逻辑学、认知科学交叉形成的一门科学,简称AI。
人类正向信息化的时代迈进,信息化是当前时代的主旋律。
信息抽象结晶为知识,知识构成智能的基础。
因此,信息化到知识化再到智能化,必将成为人类社会发展的趋势。
人工智能已经并且广泛而有深入的结合到科学技术的各门学科和社会的各个领域中,她的概念,方法和技术正在各行各业广泛渗透。
而在我们的身边,智能化的例子也屡见不鲜。
在军事、工业和医学等领域中人工智能的应用已经显示出了它具有明显的经济效益潜力,和提升人们生活水平的最大便利性和先进性。
2.《人工智能》课程设计,从以下5个题目中任选其一作答。
《人工智能》课程设计题目三:深度优先搜索算法要求:(1)撰写一份word文档,里面包括(算法思路、算法程序框图、主要函数代码)章节。
动物识别系统实验报告
condition[numbers] = Int32.Parse(this.CheckBoxList1.Items[j].Value.ToString());
numbers++;
}
}
//添加用户自己输入的项
在推理过程中,当规则表中某条规则的前提可以和综合数据库中的已知事实相匹配时,该规则被激活。由它推出的结论将被作为新的事实放入数据库,称为后面推理的已知事实。所以数据库系统结构如下:
4. 系统设计
本系统分为三个功能模块,分别是动物识别、添加规则、删除规则。系统实现如下,其中distinguish.aspx实现动物识别;Addrule.aspx实现添加规则;Deleterule.aspx实现删除规则;主页实现为main.aspx和top.aspx;连接数据库调用DBFunction.cs。
using (DBFunction DBfun = new DBFunction(DBTransactionType.WithTran)) { //如果用户填写了这个空并且这个条件不在数据库中,就将它添加到数据库中。
if (this.TextBox1.Text.ToString() != "" && !check(this.TextBox1.Text.ToString(),DBfun)) {
bool check = true;
for (int j = 1; j < 6; j++){
if (dt.Rows[i][j].ToString() == "")
{ }
else{
人工智能-动物识别专家系统算法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。
人工智能大作业(一)2024
人工智能大作业(一)引言:人工智能(Artificial Intelligence,简称AI)是近年来备受关注的热门领域。
随着计算能力的提高和算法的进步,人工智能正在日益渗透到各个行业和领域中。
本文将探讨人工智能大作业的相关内容,着重分析了其中的五个重要方面。
正文:一、机器学习(Machine Learning)1.1 监督学习(Supervised Learning)的基本概念及示例1.2 无监督学习(Unsupervised Learning)的基本概念及应用领域1.3 强化学习(Reinforcement Learning)的基本原理和算法1.4 深度学习(Deep Learning)的基本结构和典型应用1.5 机器学习在人工智能大作业中的实践与挑战二、自然语言处理(Natural Language Processing)2.1 词法分析和语法分析的基本原理和任务2.2 语义分析和语义关系的理论基础和实践应用2.3 文本分类和情感分析的相关技术和方法2.4 机器翻译和语音识别的高级应用和发展趋势2.5 自然语言处理在人工智能大作业中的应用与挑战三、计算机视觉(Computer Vision)3.1 图像处理和特征提取的基本原理和方法3.2 目标检测和图像识别的常用算法和技术3.3 图像分割和场景理解的相关研究和实践3.4 视频分析和行为识别的进展和应用领域3.5 计算机视觉在人工智能大作业中的应用案例和前景展望四、数据挖掘(Data Mining)4.1 数据预处理和数据清洗的基础知识和常用技术4.2 数据集成和数据转换的数据挖掘流程和方法4.3 关联规则和聚类分析的基本概念和算法4.4 分类和预测分析的实践案例和评价指标4.5 数据挖掘在人工智能大作业中的应用与发展趋势五、智能决策系统(Intelligent Decision System)5.1 知识表示和推理的基本方法和知识表示语言5.2 不确定性建模和决策制定的技术和策略5.3 专家系统和推荐系统的典型特征和实现方法5.4 异常检测和智能优化的相关研究和应用5.5 智能决策系统在人工智能大作业中的实践案例和展望总结:人工智能大作业(一)涵盖了机器学习、自然语言处理、计算机视觉、数据挖掘和智能决策系统等五个重要方面。
人工智能课程设计报告--动物识别系统
文档从互联网中收集,已重新修正排版,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)....................................................................................................... 错误!未定义书签。
20秋大工人工智能课程大作业
20秋大工人工智能课程大作业一、项目背景随着人工智能技术的快速发展,在我国高等教育中,人工智能课程的地位日益凸显。
为了让学生更好地掌握人工智能的基本理论、方法和技术,提高其实践能力,我校开设了20秋季人工智能课程。
本课程的大作业旨在让学生将所学知识应用到实际问题中,培养其解决复杂问题的能力。
二、项目要求1. 学生需在指导下,独立完成一个与人工智能相关的研究项目。
2. 项目需涉及人工智能的基本理论、方法和技术,如机器学习、深度学习、自然语言处理等。
3. 项目应具有实际应用价值,能够解决某一具体问题。
4. 项目需提交详细的研究报告,包括项目背景、研究方法、实验结果和结论等。
三、项目评分标准1. 项目选题:是否有实际应用价值,是否涉及人工智能的基本理论、方法和技术(20%)2. 研究方法:是否合理运用了相关理论和方法,是否充分考虑了实验条件(30%)3. 实验结果:是否取得了预期的效果,是否对结果进行了合理的分析(30%)4. 报告撰写:报告结构是否清晰,论述是否合理,表达能力如何(20%)四、项目时间表1. 项目启动:2020年9月30日2. 项目中期检查:2020年11月30日3. 项目结题:2020年12月31日五、项目支持1. 教师指导:教师将提供必要的学术支持,解答学生疑问,指导项目完成。
2. 资源保障:学校将提供实验室、计算资源等支持,确保项目顺利进行。
六、项目预期成果通过本课程大作业,学生将能够:1. 掌握人工智能的基本理论、方法和技术。
2. 提高解决实际问题的能力。
3. 培养团队合作、创新和沟通能力。
七、项目疑问及反馈如有疑问,请及时与指导教师沟通。
我们将及时解答您的疑问,确保项目的顺利进行。
{content}。
动物识别系统实验报告
人工智能实验报告二班级:XXXX 姓名:XXXX 学号:XXXXX 一.实验目的1. 理解并掌握基于规则系统的表示与推理。
2. 学会编写小型的产生式系统,理解正向推理和反向推理的过3. 程以及两者的差别。
4. 学会设计简单的人机交互界面。
二.实验预习内容及实验环境:1. 了解动物识别系统问题;2. 产生式系统的组成部分,正向推理,逆向推理的算法和产生式系统的类型。
三、实验内容和步骤:1.内容:结合第五章内容,以动物识别系统(或货物袋装系统)为例,实现基于规则的系统构造实验。
2.要求:1>结果显示要求(1)有若干选择动物特征的选择列表;(2)表现判断动物时,使用了哪些规则;(3)表现数据库的变化;(正向推理中表现每使用一次规则后,产生新事实。
反向推理中表现新的目标事实有哪些需要证明,哪些已经得到证实);(4)显示规则的调用次序;(5)显示最后的结果,包含动物能识别出来和动物不能识别出来两种情况。
(6)至少检查两个例子实现正向推理和反向推理的区别;老虎的例子如上所示,以下为金钱豹的例子:正向推理:反向推理:2>指出综合数据库和规则库分别使用哪些函数实现的?综合数据库和规则库均采用数组完成。
其中的综合数据库为一个string类型的数组,内容为事实的名称字符串,下标则为该事实的序号。
数组长度为33,表示共有33个事实(最后7个为动物名称)。
代码如下:string facts[factnum]={"有爪","有犬齿","有奶","有毛发","目视前方","吃肉","有蹄","有羽毛","会飞","生蛋","不会飞","黑白色","会游泳","善飞","不怕风浪","长腿","长脖子","有暗斑点","白色","黑色斑点","黑色条纹","黄褐色","食肉动物","鸟","哺乳动物","有蹄动物","老虎","金钱豹","长颈鹿","斑马","鸵鸟","企鹅","海燕"};规则库为一个结构体数组。
人工智能动物识别系统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. 掌握深度学习在图像识别中的应用,学习使用神经网络进行图像分类。
3. 实现一个基于人工智能的动物识别系统,提高动物识别的准确率和效率。
二、实验环境1. 操作系统:Windows 102. 编程语言:Python3.63. 开发工具:PyCharm4. 依赖库:TensorFlow、OpenCV、NumPy、Pandas三、实验内容1. 数据收集与预处理实验使用的数据集为公开的动物图像数据集,包含多种动物图片,共3000张。
数据预处理步骤如下:(1)将原始图像转换为统一尺寸(如224x224像素);(2)对图像进行灰度化处理,减少计算量;(3)对图像进行归一化处理,使图像像素值在0到1之间;(4)将图像数据转换为NumPy数组,方便后续处理。
2. 模型构建与训练实验采用卷积神经网络(CNN)进行图像识别。
模型构建步骤如下:(1)定义卷积层:使用卷积层提取图像特征,卷积核大小为3x3,步长为1,激活函数为ReLU;(2)定义池化层:使用最大池化层降低特征维度,池化窗口大小为2x2;(3)定义全连接层:将卷积层和池化层提取的特征进行融合,输入层大小为64x64x32,输出层大小为10(代表10种动物类别);(4)定义损失函数和优化器:使用交叉熵损失函数和Adam优化器进行模型训练。
训练模型时,采用以下参数:(1)批处理大小:32;(2)学习率:0.001;(3)训练轮数:100。
3. 模型评估与测试训练完成后,使用测试集对模型进行评估。
测试集包含1000张图像,模型准确率为80.2%。
4. 系统实现与演示根据训练好的模型,实现一个基于人工智能的动物识别系统。
系统功能如下:(1)用户上传动物图像;(2)系统对上传的图像进行预处理;(3)使用训练好的模型对图像进行识别;(4)系统输出识别结果。
四、实验结果与分析1. 模型准确率:80.2%,说明模型在动物识别任务中具有一定的识别能力。
实验一:产生式系统-动物识别系统
《人工智能导论》实验报告实验一:产生式系统——动物识别系统一、实验目的1、掌握知识的产生式表示法2、掌握用程序设计语言编制智能程序的方法二、实验内容1、所选编程语言:C语言;2.拟订的规则:(1)若某动物有奶,则它是哺乳动物。
(2)若某动物有毛发,则它是哺乳动物。
(3)若某动物有羽毛,则它是鸟。
(4)若某动物会飞且生蛋,则它是鸟。
(5)若某动物是哺乳动物且有爪且有犬齿且目盯前方,则它是食肉动物。
(6)若某动物是哺乳动物且吃肉,则它是食肉动物。
(7)若某动物是哺乳动物且有蹄,则它是有蹄动物。
(8)若某动物是哺乳动物且反刍食物,则它是有蹄动物。
(9)若某动物是食肉动物且黄褐色且有黑色条纹,则它是老虎。
(10)若某动物是食肉动物且黄褐色且有黑色斑点,则它是金钱豹。
(11)若某动物是有蹄动物且长腿且长脖子且黄褐色且有暗斑点,则它是长颈鹿。
(12)若某动物是有蹄动物且白色且有黑色条纹,则它是斑马。
(13)若某动物是鸟且不会飞且长腿且长脖子且黑白色,则它是驼鸟。
(14)若某动物是鸟且不会飞且会游泳且黑白色,则它是企鹅。
(15)若某动物是鸟且善飞,则它是海燕。
2、设计思路:用户界面:采用问答形式;知识库(规则库):存放产生式规则,推理时用到的一般知识和领域知识,比如动物的特征,动物的分类标准,从哺乳动物、食肉动物来分,再具体地添加一些附加特征得到具体动物;建立知识库的同时也建立了事实库。
事实库是一个动态链表,一个事实是链表的一个结点。
知识库通过事实号与事实库发生联系。
数据库:用来存放用户回答的问题,存放初始状态,中间推理结果,最终结果;推理机:采用正向推理,推理机是动物识别的逻辑控制器,它控制、协调系统的推理,并利用知识库中的规则对综合数据库中的数据进行逻辑操作。
推理机担负两项基本任务:一是检查已有的事实和规则,并在可能的情况下增加新的事实;二是决定推理的方式和推理顺序。
将推理机制同规则对象封装在一起,事实对象记录了当前的状态,规则对象首先拿出前提条件的断言(只有这些前提都有符合时才会做这条规则的结论),询问事实对象集,如事实对象集不知道,则询问用户,如所有前提条件都被证实为真则结论为真,否则系统不知道结论真假。
动物识别系统_人工智能课程实验
2 规则库
规则库RB(rule base)是一个用来存放与求 解问题有关的所有规则的集合,也称为知识库K B(knowledge base)。它包含了将问题从初始 状态转换成目标状态所需的所有变换规则。规则 库是产生式系统进行问题求解的基础。
3 控制系统(1)
控制系统(control system)也称为推理机, 其主要工作如下: 按一定的策略从规则库中选择规则与综合数据 库中的已知事实进行匹配。 当匹配成功的规则多于一条时,按照某种策略 选择一条执行。 对于要执行的规则,如果该规则的结论不是问 题的目标,将其加入综合数据库中。
动物识别系统
目录
You can briefly add outline of this slide page in this text box.
一、产生式系统的基本结构 二、产生式系统的类型
三、动物识别系统的相关策略
四、实验结果
一、产生式系统的基本结构
1 2 3
综合数据库
规则库 控制系统
1 综合数据库
综合数据库DB(data base)也称为事实库, 是一个用来存放与求解问题有关的各种当前信息 的数据结构。当某条规则的前提与综合数据库中 的已知事实相匹配时,该规则将被激活,并把其 结论放入综合数据库成为后面推理的已知事实。
四、实验结果(1实验结果(3)
四、实验结果(4)
二、产生式系统的类型(2)
3.2逆向推理产生式系统 也称目标驱动方式,它是从目标(作为假设) 状态出发,朝着初始状态前进,反向使用规则的 一种推理方法。所谓逆向使用规则,是指以问题 的目标状态作为初始综合数据库,仅当综合数据 库中的事实满足某条规则的后件时,该规则才被 使用。 优点:不使用与问题无关的规则。因此,对 那些目标明确的问题,使用反向推理方式是一种 最佳选择。
人工智能实验报告
暨南大学人工智能实验报告题目:动物识别系统院系:信科院计算机系专业:计算机软件与理论学号: 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。
如果不考虑不确定性,需另附可信度度量值。
产生式过则的含义是:如果前件满足,则可得到后件的结论或者执行后件的相应动作,即后件由前件来触发。
一个产生式生成的结论可以作为另一个产生式的前提或语言变量使用,进一步可构成产生式系统。
国开作业人工智能专题-专题二 测验32参考(含答案)
题目:人们需要把分类器学习的样本的特点进行量化,这些量化后的数据,如鸢尾花的高度、花瓣的长度、花瓣的宽度等就是鸢尾花的特征。
这些特征都是有效的,可以提供给分类器进
行训练。
选项A:对
选项B:错
答案:错
题目:P(A∣B)代表事件A发生的条件下事件B发生的概率。
选项A:对
选项B:错
答案:错
题目:状态空间图是对一个问题的表示,通过问题表示,人们可以探索和分析通往解的可能
的可替代路径。
特定问题的解将对应状态空间图中的一条路径。
选项A:对
选项B:错
答案:对
题目:谓词逻辑是应用于计算机的逻辑形式,其逻辑规则、符号系统与命题逻辑是一样的。
选项A:对
选项B:错
答案:错
题目:现实世界中的规划问题需要先调度,后规划。
选项A:对
选项B:错
答案:错
题目:分层规划中包含基本动作和高层动作。
选项A:对
选项B:错
答案:对
题目:贝叶斯定理是为了解决频率概率问题提出来的。
选项A:对
选项B:错
答案:错
题目:人工智能利用遗传算法在求解优化问题时,会把问题的解用“0”和“1”表示。
0,1就是就是“遗传基因”,01组成的字符串,称为一个染色体或个体。
选项A:对
选项B:错
答案:对
题目:深度学习是计算机利用其计算能力处理大量数据,获得看似人类同等智能的工具。
选项A:对
选项B:错
答案:对
题目:下图表示的是前向状态空间搜索。
)
选项A:数据
选项B:数学模型
选项C:摩尔定律
选项D:数据结构。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
人工智能及其应用作业姓名:学号:一、作业题目:设计一个动物识别系统,运用产生式系统的思想,设在综合数据库中存放下列已知事实:该动物身上有暗斑点,长脖子,长腿,奶,蹄,这些事实与规则库中的知识从第一条开始匹配,最终得出该动物是长颈鹿。
二、程序设计分析:根据产生式系统的原理,该系统一般由规则库、综合数据库、控制系统三部分构成。
先定义规则库结构体,里面包括Condition[6][20],result[20]和规则数Cnum,再定义综合数据库即事实库,里面包括item[20][20],和事实数Fnum,主要用到的参数就是这些。
然后初始化规则库和综合数据库,编辑规则库。
之后就是主程序,也就是推理机的作用:先让用户输入事实,然后与规则库中的知识从第一条开始逐条匹配,当匹配成功时,将结论插入事实库并更新事实库,再逐条匹配,依次循环..最终如果能匹配成功就显示‘该动物是..’,否则显示‘无法识别该动物’,程序结束。
三、程序流程图如下图:图一、系统程序流程图四、我的源程序如下:#include "iostream.h"#include "stdio.h"#include "conio.h"#include "string.h"typedef struct Rule//定义规则库{char Condition[6][20];char Result[20];int Cnum;bool used;}rule;typedef struct Fact//定义综合数据库{char item[20][20];int Fnum;}fact;rule r[100];fact f;void Create_Rules();//初始化规则库void Create_Facts();//初始化综合数据库int Get_RulesNum();void Ratiocinate(int n);void main(){int Rnum=0;Create_Rules();Create_Facts();Rnum=Get_RulesNum();//cout<<Rnum<<endl; Ratiocinate(Rnum);}void Create_Rules(){strcpy(r[0].Condition[0],"有毛发"); strcpy(r[0].Result,"哺乳动物");r[0].Cnum=1;r[0].used=false;strcpy(r[1].Condition[0],"奶");strcpy(r[1].Result,"哺乳动物");r[1].Cnum=1;r[1].used=false;strcpy(r[2].Condition[0],"有羽毛"); strcpy(r[2].Result,"鸟");r[2].Cnum=1;r[2].used=false;strcpy(r[3].Condition[0],"会飞");strcpy(r[3].Condition[1],"会下蛋"); strcpy(r[3].Result,"鸟");r[3].Cnum=2;r[3].used=false;strcpy(r[4].Condition[0],"吃肉");strcpy(r[4].Result,"食肉动物");r[4].Cnum=1;r[4].used=false;strcpy(r[5].Condition[0],"有犬齿"); strcpy(r[5].Condition[1],"有爪");strcpy(r[5].Condition[2],"眼盯前方"); strcpy(r[5].Result,"食肉动物");r[5].Cnum=3;r[5].used=false;strcpy(r[6].Condition[0],"哺乳动物"); strcpy(r[6].Condition[1],"蹄");strcpy(r[6].Result,"有蹄动物");r[6].Cnum=2;r[6].used=false;strcpy(r[7].Condition[0],"有蹄动物"); strcpy(r[7].Condition[1],"嚼反刍动物"); strcpy(r[7].Result,"有蹄动物");r[7].Cnum=2;r[7].used=false;strcpy(r[8].Condition[0],"哺乳动物"); strcpy(r[8].Condition[1],"食肉动物"); strcpy(r[8].Condition[2],"黄褐色"); strcpy(r[8].Condition[3],"身上有暗斑点"); strcpy(r[8].Result,"金钱豹");r[8].Cnum=4;r[8].used=false;strcpy(r[9].Condition[0],"哺乳动物"); strcpy(r[9].Condition[1],"食肉动物"); strcpy(r[9].Condition[2],"黄褐色"); strcpy(r[9].Condition[3],"有黑色条纹"); strcpy(r[9].Result,"虎");r[9].Cnum=4;r[9].used=false;strcpy(r[10].Condition[0],"有蹄动物");strcpy(r[10].Condition[1],"长腿");strcpy(r[10].Condition[2],"长脖子");strcpy(r[10].Condition[3],"身上有暗斑点");strcpy(r[10].Result,"长颈鹿");r[10].Cnum=4;r[10].used=false;strcpy(r[11].Condition[0],"有蹄类动物");strcpy(r[11].Condition[1],"身上有黑色条纹");strcpy(r[11].Result,"斑马");r[11].Cnum=2;r[11].used=false;strcpy(r[12].Condition[0],"鸟");strcpy(r[12].Condition[1],"有长脖子");strcpy(r[12].Condition[2],"长腿");strcpy(r[12].Condition[3],"不会飞");strcpy(r[12].Condition[4],"有黑白两色");strcpy(r[12].Result,"鸵鸟");r[12].Cnum=5;r[12].used=false;strcpy(r[13].Condition[0],"鸟");strcpy(r[13].Condition[1],"会游泳");strcpy(r[13].Condition[2],"不会飞");strcpy(r[13].Condition[3],"有黑白两色");strcpy(r[13].Result,"企鹅");r[13].Cnum=4;r[13].used=false;strcpy(r[14].Condition[0],"鸟");strcpy(r[14].Condition[1],"善飞");strcpy(r[14].Result,"海燕");r[14].Cnum=2;r[14].used=false;}void Create_Facts(){printf("请输入该动物特性(中间加空格,Enter键结束)\n");scanf("%s%s%s%s%s",&f.item[0],&f.item[1],&f.item[2],&f.item[3],&f.item[4]);f.Fnum=5;int Get_RulesNum(){int num=0;int i=0;while(1){if(r[i].Condition[0][0]=='\0'){break;}i++;num++;}return num;}void Ratiocinate(int n){bool FindFact(char * str);void InsertIntoFact(char * str);int i=0,j;/// i用来控制查找的是第几条规则,j用来控制查找的规则中的第几条while(1){if(r[i].used==false){for(j=0;j<r[i].Cnum;j++){if(FindFact(r[i].Condition[j])){continue;}else{cout<<"规则"<<i+1<<"匹配失败"<<endl;break;}}}if(j==r[i].Cnum) ///如果所有的前件都满足{r[i].used=true;cout<<"规则"<<i+1<<"匹配成功,结论插入到综合数据库"<<endl;if(!FindFact(r[i].Result)){InsertIntoFact(r[i].Result);///插入事实cout<<"新增加的事实为:"<<f.item[f.Fnum-1]<<endl;}i=0;//continue;}else i++;//查看下条规则if(i==n){cout<<"没有你要找符合要求的动物,请增加新的规则"<<endl;break;}else if(strcmp(f.item[f.Fnum-1],"老虎")==0||strcmp(f.item[f.Fnum-1],"金钱豹")==0||strcmp(f.item[f.Fnum-1],"长颈鹿")==0||strcmp(f.item[f.Fnum-1],"斑马")==0||strcmp(f.item[f.Fnum-1],"鸵鸟")==0||strcmp(f.item[f.Fnum-1],"企鹅")==0||strcmp(f.item[f.Fnum-1],"海燕")==0){cout<<"与你给的事实匹配的动物:"<<f.item[f.Fnum-1]<<endl;break;}}}//查看综合数据库中的事实否否等于前件,或者是存在这条事实,那么新的结论就不用加到综合数据库中bool FindFact(char * str){int i;for(i=0;i<f.Fnum;i++){if(strcmp(f.item[i],str)) continue;else return true;}return false;}//插入新的事实void InsertIntoFact(char * str){strcpy(f.item[f.Fnum],str);f.Fnum++;}五、程序运行结果:。