人工智能实验报告大全

合集下载

人工智能实验报告大全

人工智能实验报告大全

人工智能实验报告大全人工智能课内实验报告(8次)学院:自动化学院班级:智能1501姓名:刘少鹏(34)学号: 06153034目录课内实验1:猴子摘香蕉问题的VC编程实现 (1)课内实验2:编程实现简单动物识别系统的知识表示 (5)课内实验3:盲目搜索求解8数码问题 (18)课内实验4:回溯算法求解四皇后问题 (33)课内实验5:编程实现一字棋游戏 (37)课内实验6:字句集消解实验 (46)课内实验7:简单动物识别系统的产生式推理 (66)课内实验8:编程实现D-S证据推理算法 (78)人工智能课内实验报告实验1:猴子摘香蕉问题的VC编程实现学院:自动化学院班级:智能1501姓名:刘少鹏(33)学号: 06153034日期: 2017-3-8 10:15-12:00实验1:猴子摘香蕉问题的VC编程实现一、实验目的(1)熟悉谓词逻辑表示法;(2)掌握人工智能谓词逻辑中的经典例子——猴子摘香蕉问题的编程实现。

二、编程环境VC语言三、问题描述房子里有一只猴子(即机器人),位于a处。

在c处上方的天花板上有一串香蕉,猴子想吃,但摘不到。

房间的b处还有一个箱子,如果猴子站到箱子上,就可以摸着天花板。

如图1所示,对于上述问题,可以通过谓词逻辑表示法来描述知识。

要求通过VC语言编程实现猴子摘香蕉问题的求解过程。

图1 猴子摘香蕉问题四、源代码#include<stdio.h>unsigned int i;void Monkey_Go_Box(unsigned char x, unsigned char y){printf("Step %d:monkey从%c走到%c\n", ++i, x, y);//x表示猴子的位置,y为箱子的位置}void Monkey_Move_Box(char x, char y){printf("Step %d:monkey把箱子从%c运到%c\n", ++i, x, y);//x表示箱子的位置,y为香蕉的位置}void Monkey_On_Box(){printf("Step %d:monkey爬上箱子\n", ++i);}void Monkey_Get_Banana(){printf("Step %d:monkey摘到香蕉\n", ++i);}void main(){unsigned char Monkey, Box, Banana;printf("********智能1501班**********\n");printf("********06153034************\n");printf("********刘少鹏**************\n");printf("请用a b c来表示猴子箱子香蕉的位置\n");printf("Monkey\tbox\tbanana\n");scanf("%c", &Monkey);getchar();printf("\t");scanf("%c", &Box);getchar();printf("\t\t");scanf("%c", &Banana);getchar();printf("\n操作步骤如下\n");if (Monkey != Box){Monkey_Go_Box(Monkey, Box);}if (Box != Banana){Monkey_Move_Box(Box, Banana);}Monkey_On_Box();Monkey_Get_Banana();printf("\n");getchar();}五、实验结果相关截图六、心得体会通过本次实验,我初步了学会了使用VC的新建工程,并且进行简单的程序编写。

《人工智能》实验报告

《人工智能》实验报告

一、实验目的1. 了解机器学习的基本概念和常用算法。

2. 掌握使用Python编程语言实现图像识别系统的方法。

3. 培养分析问题、解决问题的能力。

二、实验环境1. 操作系统:Windows 102. 编程语言:Python3.73. 开发工具:PyCharm4. 机器学习库:TensorFlow、Keras三、实验内容1. 数据预处理2. 模型构建3. 模型训练4. 模型评估5. 模型应用四、实验步骤1. 数据预处理(1)下载图像数据集:选择一个适合的图像数据集,例如MNIST手写数字数据集。

(2)数据加载与处理:使用TensorFlow和Keras库加载图像数据集,并进行预处理,如归一化、调整图像大小等。

2. 模型构建(1)定义网络结构:使用Keras库定义神经网络结构,包括输入层、隐藏层和输出层。

(2)选择激活函数:根据问题特点选择合适的激活函数,如ReLU、Sigmoid等。

(3)定义损失函数:选择损失函数,如交叉熵损失函数。

(4)定义优化器:选择优化器,如Adam、SGD等。

3. 模型训练(1)将数据集分为训练集、验证集和测试集。

(2)使用训练集对模型进行训练,同时监控验证集的性能。

(3)调整模型参数,如学习率、批大小等,以优化模型性能。

4. 模型评估(1)使用测试集评估模型性能,计算准确率、召回率、F1值等指标。

(2)分析模型在测试集上的表现,找出模型的优点和不足。

5. 模型应用(1)将训练好的模型保存为模型文件。

(2)使用保存的模型对新的图像进行识别,展示模型在实际应用中的效果。

五、实验结果与分析1. 模型性能:在测试集上,模型的准确率为98.5%,召回率为98.3%,F1值为98.4%。

2. 模型优化:通过调整学习率、批大小等参数,模型性能得到了一定程度的提升。

3. 模型不足:在测试集中,模型对部分图像的识别效果不佳,可能需要进一步优化模型结构或改进训练方法。

六、实验总结通过本次实验,我们了解了机器学习的基本概念和常用算法,掌握了使用Python编程语言实现图像识别系统的方法。

人工智能实验报告大全

人工智能实验报告大全

人工智能课内实验报告(8次)学院:自动化学院班级:智能1501 姓名:刘少鹏(34)学号: ********目录课内实验1:猴子摘香蕉问题的VC编程实现 (1)课内实验2:编程实现简单动物识别系统的知识表示 (5)课内实验3:盲目搜索求解8数码问题 (18)课内实验4:回溯算法求解四皇后问题 (33)课内实验5:编程实现一字棋游戏 (37)课内实验6:字句集消解实验 (46)课内实验7:简单动物识别系统的产生式推理 (66)课内实验8:编程实现D-S证据推理算法 (78)人工智能课内实验报告实验1:猴子摘香蕉问题的VC编程实现学院:自动化学院班级:智能1501姓名:刘少鹏(33)学号: 06153034日期: 2017-3-8 10:15-12:00实验1:猴子摘香蕉问题的VC编程实现一、实验目的(1)熟悉谓词逻辑表示法;(2)掌握人工智能谓词逻辑中的经典例子——猴子摘香蕉问题的编程实现。

二、编程环境VC语言三、问题描述房子里有一只猴子(即机器人),位于a处。

在c处上方的天花板上有一串香蕉,猴子想吃,但摘不到。

房间的b处还有一个箱子,如果猴子站到箱子上,就可以摸着天花板。

如图1所示,对于上述问题,可以通过谓词逻辑表示法来描述知识。

要求通过VC语言编程实现猴子摘香蕉问题的求解过程。

图1 猴子摘香蕉问题四、源代码#include<stdio.h>unsigned int i;void Monkey_Go_Box(unsigned char x, unsigned char y){printf("Step %d:monkey从%c走到%c\n", ++i, x, y);//x表示猴子的位置,y为箱子的位置}void Monkey_Move_Box(char x, char y){printf("Step %d:monkey把箱子从%c运到%c\n", ++i, x, y);//x表示箱子的位置,y为香蕉的位置}void Monkey_On_Box(){printf("Step %d:monkey爬上箱子\n", ++i);}void Monkey_Get_Banana(){printf("Step %d:monkey摘到香蕉\n", ++i);}void main(){unsigned char Monkey, Box, Banana;printf("********智能1501班**********\n");printf("********06153034************\n");printf("********刘少鹏**************\n");printf("请用a b c来表示猴子箱子香蕉的位置\n");printf("Monkey\tbox\tbanana\n");scanf("%c", &Monkey);getchar();printf("\t");scanf("%c", &Box);getchar();printf("\t\t");scanf("%c", &Banana);getchar();printf("\n操作步骤如下\n");if (Monkey != Box){Monkey_Go_Box(Monkey, Box);}if (Box != Banana){Monkey_Move_Box(Box, Banana);}Monkey_On_Box();Monkey_Get_Banana();printf("\n");getchar();}五、实验结果相关截图六、心得体会通过本次实验,我初步了学会了使用VC的新建工程,并且进行简单的程序编写。

人工智能深度学习实验报告

人工智能深度学习实验报告

人工智能深度学习实验报告一、实验背景随着科技的迅猛发展,人工智能(AI)已经成为当今世界最具创新性和影响力的领域之一。

深度学习作为人工智能的一个重要分支,凭借其强大的学习能力和数据处理能力,在图像识别、语音处理、自然语言处理等众多领域取得了显著的成果。

本次实验旨在深入探索人工智能深度学习的原理和应用,通过实践操作和数据分析,进一步理解其工作机制和性能表现。

二、实验目的1、熟悉深度学习的基本概念和常用模型,如多层感知机(MLP)、卷积神经网络(CNN)和循环神经网络(RNN)。

2、掌握使用 Python 编程语言和相关深度学习框架(如 TensorFlow、PyTorch 等)进行模型训练和优化的方法。

3、通过实验数据,分析不同模型在不同任务中的性能差异,探索影响模型性能的关键因素。

4、培养解决实际问题的能力,能够运用深度学习技术解决简单的图像分类、文本分类等任务。

三、实验环境1、操作系统:Windows 102、编程语言:Python 383、深度学习框架:TensorFlow 244、开发工具:Jupyter Notebook四、实验数据1、图像分类数据集:CIFAR-10 数据集,包含 10 个不同类别的60000 张彩色图像,其中 50000 张用于训练,10000 张用于测试。

2、文本分类数据集:IMDB 电影评论数据集,包含 25000 条高度极性的电影评论,其中 12500 条用于训练,12500 条用于测试。

五、实验步骤1、数据预处理对于图像数据,进行图像归一化、数据增强(如随机旋转、裁剪、翻转等)操作,以增加数据的多样性和减少过拟合的风险。

对于文本数据,进行词向量化(如使用 Word2Vec、GloVe 等)、数据清洗(如去除特殊字符、停用词等)操作,将文本转换为可被模型处理的数值向量。

2、模型构建构建多层感知机(MLP)模型,包含输入层、隐藏层和输出层,使用 ReLU 激活函数和 Softmax 输出层进行分类任务。

人工智能课内实验报告1

人工智能课内实验报告1

人工智能课内实验报告(一)----主观贝叶斯一、实验目的1.学习了解编程语言, 掌握基本的算法实现;2.深入理解贝叶斯理论和不确定性推理理论;二、 3.学习运用主观贝叶斯公式进行不确定推理的原理和过程。

三、实验内容在证据不确定的情况下, 根据充分性量度LS 、必要性量度LN 、E 的先验概率P(E)和H 的先验概率P(H)作为前提条件, 分析P(H/S)和P(E/S)的关系。

具体要求如下:(1) 充分考虑各种证据情况: 证据肯定存在、证据肯定不存在、观察与证据 无关、其他情况;(2) 考虑EH 公式和CP 公式两种计算后验概率的方法;(3) 给出EH 公式的分段线性插值图。

三、实验原理1.知识不确定性的表示:在主观贝叶斯方法中, 知识是产生式规则表示的, 具体形式为:IF E THEN (LS,LN) H(P(H))LS 是充分性度量, 用于指出E 对H 的支持程度。

其定义为:LS=P(E|H)/P(E|¬H)。

LN 是必要性度量, 用于指出¬E 对H 的支持程度。

其定义为:LN=P(¬E|H)/P(¬E|¬H)=(1-P(E|H))/(1-P(E|¬H))2.证据不确定性的表示在证据不确定的情况下, 用户观察到的证据具有不确定性, 即0<P(E/S)<1。

此时就不能再用上面的公式计算后验概率了。

而要用杜达等人在1976年证明过的如下公式来计算后验概率P(H/S):P(H/S)=P(H/E)*P(E/S)+P(H/~E)*P(~E/S) (2-1)下面分四种情况对这个公式进行讨论。

(1) P (E/S)=1当P(E/S)=1时, P(~E/S)=0。

此时, 式(2-1)变成 P(H/S)=P(H/E)=1)()1()(+⨯-⨯H P LS H P LS (2-2) 这就是证据肯定存在的情况。

(2) P (E/S)=0当P(E/S)=0时, P(~E/S)=1。

人工智能实验报告大全

人工智能实验报告大全

人工智能课内实验报告(8次)学院:自动化学院班级:智能1501 姓名:刘少鹏(34)学号: 06153034目录课内实验1:猴子摘香蕉问题的VC编程实现 (1)课内实验2:编程实现简单动物识别系统的知识表示 (5)课内实验3:盲目搜索求解8数码问题 (18)课内实验4:回溯算法求解四皇后问题 (33)课内实验5:编程实现一字棋游戏 (37)课内实验6:字句集消解实验 (46)课内实验7:简单动物识别系统的产生式推理 (66)课内实验8:编程实现D-S证据推理算法 (78)人工智能课内实验报告实验1:猴子摘香蕉问题的VC编程实现学院:自动化学院班级:智能1501姓名:刘少鹏(33)学号: 06153034日期: 2017-3-8 10:15-12:00实验1:猴子摘香蕉问题的VC编程实现一、实验目的(1)熟悉谓词逻辑表示法;(2)掌握人工智能谓词逻辑中的经典例子——猴子摘香蕉问题的编程实现。

二、编程环境VC语言三、问题描述房子里有一只猴子(即机器人),位于a处。

在c处上方的天花板上有一串香蕉,猴子想吃,但摘不到。

房间的b处还有一个箱子,如果猴子站到箱子上,就可以摸着天花板。

如图1所示,对于上述问题,可以通过谓词逻辑表示法来描述知识。

要求通过VC语言编程实现猴子摘香蕉问题的求解过程。

图1 猴子摘香蕉问题四、源代码#include<stdio.h>unsigned int i;void Monkey_Go_Box(unsigned char x, unsigned char y){printf("Step %d:monkey从%c走到%c\n", ++i, x, y);//x表示猴子的位置,y为箱子的位置}void Monkey_Move_Box(char x, char y){printf("Step %d:monkey把箱子从%c运到%c\n", ++i, x, y);//x表示箱子的位置,y为香蕉的位置}void Monkey_On_Box(){printf("Step %d:monkey爬上箱子\n", ++i);}void Monkey_Get_Banana(){printf("Step %d:monkey摘到香蕉\n", ++i);}void main(){unsigned char Monkey, Box, Banana;printf("********智能1501班**********\n");printf("********06153034************\n");printf("********刘少鹏**************\n");printf("请用a b c来表示猴子箱子香蕉的位置\n");printf("Monkey\tbox\tbanana\n");scanf("%c", &Monkey);getchar();printf("\t");scanf("%c", &Box);getchar();printf("\t\t");scanf("%c", &Banana);getchar();printf("\n操作步骤如下\n");if (Monkey != Box){Monkey_Go_Box(Monkey, Box);}if (Box != Banana){Monkey_Move_Box(Box, Banana);}Monkey_On_Box();Monkey_Get_Banana();printf("\n");getchar();}五、实验结果相关截图六、心得体会通过本次实验,我初步了学会了使用VC的新建工程,并且进行简单的程序编写。

人工智能实践实习报告

人工智能实践实习报告

一、实习背景随着科技的飞速发展,人工智能(AI)已成为当今世界最具发展潜力的领域之一。

为了深入了解人工智能技术,提高自身在相关领域的实践能力,我于2023年6月至8月期间在一家知名人工智能企业进行了为期两个月的实习。

二、实习单位及岗位实习单位:XX科技有限公司实习岗位:人工智能研发实习生三、实习内容在实习期间,我主要参与了以下工作内容:1. 项目参与:参与公司正在进行的一个AI图像识别项目,负责对图像进行预处理、特征提取和分类。

2. 算法研究:阅读相关文献,研究图像识别领域的先进算法,包括卷积神经网络(CNN)、循环神经网络(RNN)等。

3. 代码实现:使用Python等编程语言,实现算法模型,并进行实验验证。

4. 数据标注:对部分图像数据进行标注,为后续实验提供数据支持。

5. 问题解决:在项目过程中遇到问题时,与团队成员共同探讨解决方案,并逐步解决问题。

四、实习收获1. 技术能力提升:通过实习,我对人工智能技术有了更深入的了解,掌握了图像识别领域的相关知识,并能够将理论知识应用于实际项目中。

2. 团队协作能力:在实习过程中,我与团队成员紧密合作,共同解决问题,提高了团队协作能力。

3. 沟通能力:与导师和同事进行沟通交流,锻炼了沟通表达能力。

4. 实践经验:通过实际参与项目,积累了宝贵的实践经验,为今后的职业发展奠定了基础。

五、实习感悟1. 理论与实践相结合:在实习过程中,我深刻体会到理论与实践相结合的重要性。

只有将所学知识应用于实际项目中,才能真正掌握技术。

2. 不断学习:人工智能领域发展迅速,需要不断学习新知识、新技术,才能跟上时代的步伐。

3. 团队协作:在团队中,每个人都是不可或缺的一部分,只有团结协作,才能取得更好的成果。

4. 问题解决能力:在项目过程中,遇到问题是不可避免的。

关键在于如何分析问题、解决问题,提高自己的问题解决能力。

六、总结通过这次人工智能实习,我不仅提高了自己的技术能力,还锻炼了团队协作和沟通能力。

人工智能实验报告大全

人工智能实验报告大全

人工智能实验报告大全
报告题目:基于人工智能的图像处理
报告内容:
1.人工智能概述
近几年来,人工智能技术的发展迅猛,并在图像处理领域发挥着重要
作用。

人工智能包括机器学习、深度学习、自然语言处理等技术,它们能
够结合图像处理的各种算法,实现从图像到期望结果的精确转换,使图像
处理技术获得巨大进步。

2.图像处理原理
图像处理技术可以通过编程技术,利用图像处理算法对图像进行自动
处理、处理增强和分析,以获得用户需要的图像信息。

图像处理涉及的算
法包括图像锐化、图像压缩、图像增强、图像分类、图像分割、图像辨识、图像变形等多种算法。

在图像处理的过程中,技术人员需要编写一定的程序,实现图像的处理、增强和分析功能。

3.人工智能在图像处理中的应用
随着人工智能技术的发展,它已经为图像处理带来了巨大的变化,并
在图像处理技术的发展中发挥了重要作用。

人工智能主要应用于以下几个
方面:
(1)图像识别:通过人工智能技术,可以将图像转换成一组数据,
然后通过机器学习对这些数据进行分类分析,最终实现图像的识别。

(2)图像识别:通过深度学习和机器学习。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

人工智能课内实验报告(8次)学院:自动化学院班级:智能1501姓名:刘少鹏(34)学号:06153034目录课内实验1:猴子摘香蕉问题的VC编程实现 (1)课内实验2:编程实现简单动物识别系统的知识表示 (5)课内实验3:盲目搜索求解8数码问题 (18)课内实验4:回溯算法求解四皇后问题 (33)课内实验5:编程实现一字棋游戏 (37)课内实验6:字句集消解实验 (46)课内实验7:简单动物识别系统的产生式推理 (66)课内实验8:编程实现D-S证据推理算法 (78)人工智能课内实验报告实验1:猴子摘香蕉问题的VC编程实现学院:自动化学院班级:智能1501姓名:刘少鹏(33)学号:06153034日期:2017-3-8 10:15-12:00实验1:猴子摘香蕉问题的VC编程实现一、实验目的(1)熟悉谓词逻辑表示法;(2)掌握人工智能谓词逻辑中的经典例子——猴子摘香蕉问题的编程实现。

二、编程环境VC语言三、问题描述房子里有一只猴子(即机器人),位于a处。

在c处上方的天花板上有一串香蕉,猴子想吃,但摘不到。

房间的b处还有一个箱子,如果猴子站到箱子上,就可以摸着天花板。

如图1所示,对于上述问题,可以通过谓词逻辑表示法来描述知识。

要求通过VC语言编程实现猴子摘香蕉问题的求解过程。

图1 猴子摘香蕉问题四、源代码#include<stdio.h>unsigned int i;void Monkey_Go_Box(unsigned char x, unsigned char y){printf("Step %d:monkey从%c走到%c\n", ++i, x, y);//x表示猴子的位置,y为箱子的位置}void Monkey_Move_Box(char x, char y){printf("Step %d:monkey把箱子从%c运到%c\n", ++i, x, y);//x表示箱子的位置,y为香蕉的位置}void Monkey_On_Box(){printf("Step %d:monkey爬上箱子\n", ++i);}void Monkey_Get_Banana(){printf("Step %d:monkey摘到香蕉\n", ++i);}void main(){unsigned char Monkey, Box, Banana;printf("********智能1501班**********\n");printf("********06153034************\n");printf("********刘少鹏**************\n");printf("请用a b c来表示猴子箱子香蕉的位置\n");printf("Monkey\tbox\tbanana\n");scanf("%c", &Monkey);getchar();printf("\t");scanf("%c", &Box);getchar();printf("\t\t");scanf("%c", &Banana);getchar();printf("\n操作步骤如下\n");if (Monkey != Box){Monkey_Go_Box(Monkey, Box);}if (Box != Banana){Monkey_Move_Box(Box, Banana);}Monkey_On_Box();Monkey_Get_Banana();printf("\n");getchar();}五、实验结果相关截图六、心得体会通过本次实验,我初步了学会了使用VC的新建工程,并且进行简单的程序编写。

此外我还学会如何使用一些谓词来解决生活中的一些简单问题,并且用VC编程给出具体的操作步骤,感觉对VC编程有了新的认识。

在实验中我也遇到过许多问题,比如在我写完代码进行编译时总是会出现一个错误“ fatal error C1010: 在查找预编译头时遇到意外的文件结尾,是否忘记了向源中添加“#include ‘stdafx.h’”关于这个错误我我问了几个同学得不出答案后,我决定通过上网查找,最终找到了解决方法,需要在该项目的每一个cpp结尾的文件属性中设置不使用预编译头即可。

在这个过程中也锻炼了自己解决问题的能力。

人工智能课内实验报告实验2:编程实现简单动物识别系统的知识表示学院:自动化学院班级:智能1501姓名:刘少鹏(33)学号:06153034日期:2017-3-13 10:15-12:00实验2:编程实现简单动物识别系统的知识表示一、实验目的1、理解和掌握产生式知识表示方法;2、能够通过VC编程语言实现产生式系统的规则库。

二、实验内容1、以动物识别系统的产生式规则为例;2、用选定的编程语言建造规则库和综合数据库,并能对它们进行增加、删除和修改操作。

三、实验步骤1、确定需要识别的动物及其属性本次实验的简单动物识别系统总共能识别7种动物,即:老虎、金钱豹、斑马、长颈鹿、企鹅、鸵鸟和信天翁。

2、建立识别七种动物识别系统的规则3、选定编程语言并确定综合数据库和规则库结构(1)选用C语言作为编程语言(2)综合数据库的建立(3)规则库的建立四、程序源代码#include<iostream>#include<string>using namespace std;struct RULES{int count;char pre[255];char back[255];int mark;};void check();RULES r[100] = {{ 1,"有毛发","哺乳动物",0 }, //所有规则静态数据库{ 1,"有奶","哺乳动物",0 },{ 1,"有羽毛","鸟",0 },{ 2,"会飞&下蛋&","鸟",0 },{ 1,"吃肉","食肉动物",0 },{ 3,"有锋利的牙齿&有爪&眼睛盯着前方&","食肉动物",0 },{ 2,"哺乳动物&有蹄&","有蹄类哺乳动物",0 },{ 2,"哺乳动物&反刍&","有偶蹄类哺乳动物",0 },{ 4,"哺乳动物&食肉动物&黄褐色&有暗斑&","金钱豹",0 },{ 4,"哺乳动物&食肉动物&黄褐色&黑色条纹&","老虎",0 },{ 4,"有蹄类哺乳动物&有长脖子&有长腿&有暗斑&","长颈鹿",0 },{ 2,"有蹄类哺乳动物&黑条纹&","斑马",0 },{ 5,"鸟&不会飞&有长脖子&有长腿&黑白色&","鸵鸟",0 },{ 4,"鸟&不会飞&会游泳&黑白色&","企鹅",0 },{ 2,"鸟&会飞&","信天翁",0 },{ 1,"反刍","哺乳动物",0 }};int number;int m;int cat = 15;int a;int length; //输入的事实长度string f[255]; //输入的事实数组void input(){while (1){cat++;cout <<"number"<< endl;cin >> r[cat].count;cout <<"输入事实,两种以上的事实请在每个事实后加上‘&’符号"<< endl;cin >> r[cat].pre;cout <<"输入结果"<< endl;cin >> r[cat].back;r[cat].mark = 0;while (1){cout <<"输入“1”继续添加规则,输入“2”查看规则库"<< endl;int p;cin >> p;if (p == 1){input();}else{if (p == 2){check();}else{cout <<"输入错误,重新输入"<< endl;}}}}}void delate(){cout <<"输入要删除的条数"<< endl;int bar;cin >> bar;for (int t = 0; t <= cat; t++){r[bar - 1] = r[bar];bar++;}cat--;check();}void check(){cout << endl <<"规则库如下"<< endl;for (int i = 0; i <= cat; i++){cout << i + 1 <<"."<<"由"<< r[i].pre <<"可得"<< r[i].back << endl;}cout << endl;while (1){cout <<"输入“1”继续添加规则,输入“3”删除选定的规则"<< endl;cin >> m;if (m == 1){input();}else{if (m == 3)delate();}}}int find_rule(int s) //查找规则库中是否还有可使用的规则{for (int i = 0; i <= 15; i++)s = s*r[i].mark;//cout<<"find_rule结果"<<s<<endl;return s;}int compare1(RULES r) //当前提条件为1时{int j = 0, i = 1;string str, str2;str =r.pre;while (i <= length){if (f[i] == str){str2 =r.back;f[length + 1] = str2; //加入事实库length++; //事实库的长度加1r.mark = 1; //标记规则已使用过break;}elsei++;}return r.mark;}int compare2(RULES r) //前提条件不为1{string b[10];string str, str2;int i, j = 1, num = 0;int a = 0;str =r.pre;for (i = 0; i != 10; ++i) //转换数组{b[i] ="";}for (i = 0; i != str.length(); ++i){if (str.at(i) != '&'){b[j] += str.at(i);}else{j++;}}i = 1;while (i <= r.count){for (j = 1; j != length + 1; j++){if (f[j] == b[i]){a += 1;}}i++;}if (a == r.count){str2 =r.back;f[length + 1] = str2; //加入事实库length++; //事实库的长度加1r.mark = 1; //标记规则已使用过}return r.mark;}void result(){int i = 1, m = 0;while (i != length + 1){if (f[i] =="金钱豹"){cout <<"该动物是金钱豹"<< endl;m = 1;break;}elseif (f[i] =="老虎"){cout <<"该动物是老虎"<< endl;m = 1;break;}elseif (f[i] =="长颈鹿"){cout <<"该动物是长颈鹿"<< endl;m = 1;break;}elseif (f[i] =="斑马"){cout <<"该动物是斑马"<< endl;m = 1;break;}elseif (f[i] =="鸵鸟"){cout <<"该动物是鸵鸟"<< endl;m = 1;break;}elseif (f[i] =="企鹅"){cout <<"该动物是企鹅"<< endl;m = 1;break;}elseif (f[i] =="信天翁"){cout <<"信天翁"<< endl;m = 1;break;}elsei++;}if (m == 0)cout <<"没有符合的动物,请确认特征,重新输入"<< endl;}void idetify(){int i = 0, u = 0;if (find_rule(u) == 0) //如果规则库中还有未使用的规则{//cout<<"还有未使用的规则"<<endl;int num = length;while (i<16) //从第一条规则开始遍历{if (r[i].mark == 0) //如果该条规则未使用{if (r[i].count == 1) //该条规则前提数为1{u = compare1(r[i]);if (u == 1)r[i].mark = 1;if (r[i].mark == 1){cout <<"使用规则"<< i + 1;cout <<"且加入的新事实为"<< r[i].back << endl;}}else{u = compare2(r[i]);if (u == 1)r[i].mark = 1;if (r[i].mark == 1){cout <<"使用规则"<< i + 1;cout <<"且加入的新事实为"<< r[i].back << endl;}}}if (i == 15){if (num != length)i = 0;num = length;}elsei = 16;}else{i++;}}}else{cout <<"所有的规则都已使用"<< endl;}result();}/*主函数*/void main(){cout <<"******智能1501班********"<< endl;cout <<"******06153034**********"<< endl;cout <<"******刘少鹏************"<< endl;cout <<"进行动物识别请输入7"<< endl;cout <<"进行规则库操作请输入8"<< endl;cin >> a;while(a == 8){ while (1){cout <<"添加规则输入‘1’,查看已有规则输入‘2’"<< endl;cin >> m;if (m == 1){input();}else{if (m == 2){check();}cout <<"输入错误请重新输入"<< endl;}}}if(a == 7){int u = 0;cout <<"请输入动物的特征数"<< endl;cin >> length;cout <<"请输入动物的特征"<< endl;for (int i = 1; i <= length; i++)cin >> f[i];idetify();}system("pause");}五、实验结果相关截图1、程序总体结构2、规则库操作→查看规则库3、规则库操作→添加规则→添加袋鼠规则4、规则库操作→删除规则→删除袋鼠规则5、动物识别→识别长颈鹿六、心得体会通过本次实验我深刻的理解和掌握产生式知识表示方法,并且能够通过VC编程语言实现产生式系统的规则库。

相关文档
最新文档