欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    人工智能实验报告大全(共87页).doc

    • 资源ID:13342354       资源大小:1.13MB        全文页数:86页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    人工智能实验报告大全(共87页).doc

    精选优质文档-倾情为你奉上 人工智能课内实验报告(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) 学 号: 日 期: 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走到%cn", +i, x, y);/x表示猴子的位置,y为箱子的位置void Monkey_Move_Box(char x, char y) printf("Step %d:monkey把箱子从%c运到%cn", +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("*n"); printf("*刘少鹏*n"); printf("请用a b c来表示猴子箱子香蕉的位置n"); printf("Monkeytboxtbananan"); scanf("%c", &Monkey); getchar(); printf("t");scanf("%c", &Box); getchar(); printf("tt"); 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) 学 号: 日 期: 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 pre255; char back255; int mark;void check();RULES r100 = 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 f255;/输入的事实数组void input() while (1) cat+; cout << "number" << endl; cin >> rcat.count; cout << "输入事实,两种以上的事实请在每个事实后加上&符号" << endl; cin >> rcat.pre; cout << "输入结果" << endl; cin >> rcat.back; rcat.mark = 0; while (1) cout << "输入“1”继续添加规则,输入“2”查看规则库" << endl;int p;cin >> p;if (p = 1)input();elseif (p = 2)check();elsecout << "输入错误,重新输入" << endl; void delate() cout << "输入要删除的条数" << endl; int bar; cin >> bar; for (int t = 0; t <= cat; t+) rbar - 1 = rbar; bar+; cat-; check();void check() cout << endl << "规则库如下" << endl; for (int i = 0; i <= cat; i+) cout << i + 1 << "." << "由" << ri.pre << "可得" << ri.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*ri.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 (fi = str)str2 = r.back;flength + 1 = str2;/加入事实库length+;/事实库的长度加1r.mark = 1;/标记规则已使用过break;elsei+;return r.mark;int compare2(RULES r)/前提条件不为1string b10;string str, str2;int i, j = 1, num = 0;int a = 0;str = r.pre;for (i = 0; i != 10; +i) /转换数组bi = ""for (i = 0; i != str.length(); +i)if (str.at(i) != '&')bj += str.at(i);elsej+;i = 1;while (i <= r.count)for (j = 1; j != length + 1; j+)if (fj = bi)a += 1;i+;if (a = r.count)str2 = r.back;flength + 1 = str2;/加入事实库length+;/事实库的长度加1r.mark = 1;/标记规则已使用过return r.mark;void result()int i = 1, m = 0;while (i != length + 1)if (fi = "金钱豹")cout << "该动物是金钱豹" << endl;m = 1;break;elseif (fi = "老虎")cout << "该动物是老虎" << endl;m = 1;break;elseif (fi = "长颈鹿")cout << "该动物是长颈鹿" << endl;m = 1;break;elseif (fi = "斑马")cout << "该动物是斑马" << endl;m = 1;break;elseif (fi = "鸵鸟")cout << "该动物是鸵鸟" << endl;m = 1;break;elseif (fi = "企鹅")cout << "该动物是企鹅" << endl;m = 1;break;elseif (fi = "信天翁")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 (ri.mark = 0)/如果该条规则未使用if (ri.count = 1)/该条规则前提数为1u = compare1(ri);if (u = 1)ri.mark = 1;if (ri.mark = 1)cout << "使用规则" << i + 1;cout << "且加入的新事实为" << ri.back << endl;elseu = compare2(ri);if (u = 1)ri.mark = 1;if (ri.mark = 1)cout << "使用规则" << i + 1;cout << "且加入的新事实为" << ri.back << endl;if (i = 15)if (num != length)i = 0;num = length;elsei = 16;elsei+;elsecout << "所有的规则都已使用" << endl;result();/*主函数*/void main()cout << "*智能1501班*" << endl;cout << "*" << 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();elseif (m = 2)check();elsecout << "输入错误请重新输入" << endl; if (a = 7)int u = 0;cout << "请输入动物的特征数" << endl;cin >> length;cout << "请输入动物的特征" << endl;for (int i = 1; i <= length; i+)cin >> fi;idetify();system("pause");五、 实验结果相关截图1、程序总体结构 2、 规则库操作查看规则库 3、 规则库操作添加规则添加袋鼠规则4、 规则库操作删除规则删除袋鼠规则5、动物识别识别长颈鹿六、心得体会 通过本次实验我深刻的理解和掌握产生式知识表示方法,并且能够通过VC编程语言实现产生式系统的规则库。本次实验我同样遇到许多问题,我通过自己查阅资料,与同学们讨论,逐步的将自己的问题解决,在这个过程中提高了我的问题解决能力。最后因为本次实验只有对数据库有清楚的掌握,同时熟悉规则才能合理编程,因此我在平时的学习中应当加大数据库与数据结构的学习力度,提高自己的编程能力。人工智能课内实验报告实验3:盲目搜索求解八数码问题学 院: 自动化学院 班 级: 智能1501 姓 名: 刘少鹏 (33) 学 号: 日 期: 2017-03-30 10:15-12:00 人工智能课内实验3:盲目搜索求解8数码问题1、 实验目的(1) 熟悉人工智能系统中的问题求解过程;(2) 熟悉状态空间中的盲目搜索策略;(3) 掌握盲目搜索算法,重点是宽度优先搜索和深度优先搜索算法。2、 实验要求用VC语言编程,采用宽度优先搜索和深度优先搜索方法,求解8数码问题3、 实验内容(1) 采用宽度优先算法,运行程序,要求输入初始状态假设给定如下初始状态S02 8 31 6 47 0 5 和目标状态Sg 2 1 6 4 0 8 7 5 3 验证程序的输出结果,写出心得体会。 (2)对代码进行修改(选作),实现深度优先搜索求解该问题提示:每次选扩展节点时,从数组的最后一个生成的节点开始找,找一个没有被扩展的节点。这样也需要对节点添加一个是否被扩展过的标志。4 源代码及实验结果截图(1) 实验源代码 #include <stdlib.h>#include <stdio.h>Typedef struct Node int num9; /棋盘状态 int deepth; /派生的深度 g(n) int diffnum; /不在位的数目 h(n) int value; /耗散值 f(n)=g(n)+h(n) struct Node * pre; struct Node * next; struct Node * parent;numNode; /* - end of struct numNode - */int origin9; /棋盘初始状态int target9; /棋盘目标状态int numNode_num, total_step;numNode *open, *close; /Open表和Close表numNode *create_numNode() return (numNode *)malloc(sizeof(numNode);numNode *open_getfirst(numNode *head); /返回第一项,并从Open表中删除void open_insert(numNode *head, numNode *item); /向Open表中按序插入新节点void close_append(numNode *head, numNode *item); /向Close表中插入新节点int expand(numNode *item); /扩展节点int print_result(numNode *item); /打印结果numNode *copy_numNode(numNode *orgin);char isNewNode(numNode *open, numNode *close, int num9); /是否在Open表或Close表中void print_num(int num9); /打印棋盘状态int diff(int num9); /求不在位棋子的个数void init(); /初始化,获得棋盘初始状态和目标状态void swap(int *a, int *b);int operate(int num, int op);void free_list(numNode *head);/* Name: 主函數/* Description: 程序入口int main(int argc, char *argv) /初始化Open表和Close表 printf("*智能1501*n"); printf("*刘少鹏*n"); printf("*n"); open = create_numNode(); close = create_numNode(); open->pre = open->next = close->pre = close->next = NULL; init(); /由用户输入初始和目标状态/初始化初始节点 numNode *p1; p1 = create_numNode(); p1->parent = NULL; p1->deepth = 0; int i = 0; for (i = 0; i<9; i+) p1->numi = origini; open_insert(open, p1); numNode_num = 1; p1 = open_getfirst(open); while (p1 != NULL) close_append(close, p1); if (expand(p1)return EXIT_SUCCESS;p1 = open_getfirst(open); printf("No solution!n"); return EXIT_SUCCESS; /* - end of function main - */void init()while (1)printf("Please input opriginal status:nFor example: stands forn""1 2 3n""4 5 6n""7 8 0n");char temp10;scanf("%s", &temp);int i = 0;for (i = 0; i<9 && tempi - '0' >= 0 && tempi - '0' <= 8; i+)origini = tempi - '0'printf("Please input target status:n");scanf("%s", &temp);int j = 0;for (j = 0; j<9 && tempj - '0' >= 0 && tempj - '0' <= 8; j+)targetj = tempj - '0'system("cls");if (i = 9 && j = 9)break; /* - end of function init - */void open_insert(numNode *head, numNode *item)numNode *p, *q;p = head->next;q = head;while (p != NULL && item->value > p->value)q = p;p = p->next;q->next = item;item->pre = q;item->next = p;if (p != NULL)p->pre = item; /* - end of function open_insert - */numNode *open_getfirst(numNode *head)numNode *p;if (head->next = NULL)return NULL;p = head->next;head->next = p->next;if (p->next != NULL)p->next->pre = head;p->pre = NULL;p->next = NULL;return p; /* - end of function open_getfirst - */void close_append(numNode *head, numNode *item)item->next = head->next;item->pre = head;head->next = item;if (item->next != NULL)item->next->pre = item; /* - end of function close_append - */int expand(numNode *p1)numNode * p2;int op = 1;for (op = 1; op <= 4; op+)p2 = copy_numNode(p1);operate(p2->num, op);if (isNewNode(open, close, p2->num) = 'N')p2->parent = p1;p2->deepth = p1->deepth + 1;p2->diffnum = diff(p2->num);p2->value = p2->deepth + p2->diffnum;if (p2->diffnum = 0)total_step = print_result(p2);printf("Total step: %dn", total_step);free_list(open);free_list(close);return 1;elsenumNode_num+;open_insert(open, p2);elsefree(p2);return 0; /* - end of function expand - */int operate(int m, int op)int blank;blank = 0;while (mblank != 0 && blank<9)+blank;if (blank = 9)return 1;switch (op) case 1: /* up */if (blank>2)swap(m + blank, m + blank - 3);break;case 2: /* down */if (blank<6)swap(m + blank, m + blank + 3);break;case 3: /* left */if (blank != 0 && blank != 3 && blank != 6)swap(m + blank, m + blank - 1);break;case 4: /* right */if (blank != 2 && blank != 5 && blank != 8)swap(m + blank, m + blank + 1);break;default: return 1;return 0;void swap(int *a, int *b)int c;c = *a;*a = *b;*b = c;numNode * copy_numNode(numNode *origin)numNode *p;p = create_numNode();p->deepth = origin->deepth;p->diffnum = origin->diffnum;p->value = origin->value;int i;for (i = 0; i<9; i+)(p->num)i = (origin->num)i;return p; /* - end of function copy_numNode - */intdiff(int num9)int i, diffnum = 0;for (i = 0;

    注意事项

    本文(人工智能实验报告大全(共87页).doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开