《人工智能实验报告.docx》由会员分享,可在线阅读,更多相关《人工智能实验报告.docx(95页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、人工智能实验报告 人工智能课内试验报告 (次)学院:自动化学院 班级:智能01姓名:刘少鹏(34)学号: 目 录 课内试验 1: 猴子摘香蕉问题得 VC 编程实现„„„„„„„„1 课内试验 2: 编程实现简洁动物识别系统得学问表示„„„5 课内试验 3:盲目搜寻求解数码问题„„„„„„„„„18 课内试验 4:回溯算法求解四皇后问题„&bdqu
2、o;„„„„„„„33 课内试验 5:编程实现一字棋嬉戏„„„„„„„„„„„37 课内试验 6:字句集消解试验„„„„„„„„„„„„ „课内试验 7:简洁动物识别系统得产生式推理„„„&b
3、dquo;„„6课内试验8:编程实现D-S证据推理算法„„„„„„„ „8人工智能课内试验报告 试验 1:猴子摘香蕉问题得 VC 编程实现 学院:自动化学院班级:智能 15姓名:刘少鹏 (33)学号:061504日期: 017—3—8 10:512:00试验 1: 猴子摘香蕉问题得 C VC 编程实现 一、试验目得 ()熟识谓词逻辑表示法; (2)驾驭人工智能谓词逻辑中得经典例子—-猴子摘香蕉问题得编程实现 二、编程环境 VC 语言 三、问
4、题描述 房子里有一只猴子(即机器人),位于 a 处。在处上方得天花板上有一串香蕉,猴子想吃,但摘不到。房间得 b 处还有一个箱子,假如猴子站到箱子上,就可以摸着天花板。如图1 所示,对于上述问题,可以通过谓词逻辑表示法来描述学问。要求通过 VC 语言编程实现猴子摘香蕉问题得求解过程。图 1猴子摘香蕉问题 四、源代码 #iludestdi、 unsignd i i; oid Monkey_Go_Box(unsgned hr , usgned car y) 猴示表x;) ,x ,+ ,"n%到走从eko:d peS"(fni子得位置,为箱子得位置 vid oke
5、y_Move_Box(cha , har y) printf("Se %d:monkey把箱子从%c运到%cn", +i, x, y);x表示箱子得位置,y为香蕉得位置 oi nnBox() pint(tep %:onkey爬上箱子n", +i); voi Monkey_Get_Bann() prnt(Step %d:monkey摘到香蕉n", +i); oid mai() ;ananaB ,xoB ,yeknMrahc dengiu ;)"n*班1051能智*(fnip ritf(*0615304*n)
6、;)"n*鹏少刘*(ftnir ;)"n置位得蕉香子箱子猴示表来c 用请"(nip ;)nananabtobekoM(tnirp scanf(c, Mnke);;)(ahte ;)t(tnipscanf(c, &Box);getcha();;)"t"(ftr ;)annB& ,%"(fnacs gcar();pint("操作步骤如下);)xoB ! yeknoM( fi ;) ,yeno(xo_oGyeM (Box != Banna) ;
7、)ananB ,xoB(xo_eoekno nkeyOn_Box();;)(anae_eknoM rntf(n");)(ratg 五、试验结果相关截图 六、心得体会 通过本次试验,我初步了学会了运用得新建工程,并且进行简洁得程序编写。此外我还学会如何运用一些谓词来解决生活中得一些简洁问题,并且用C 编程给出详细得操作步骤,感觉对 VC 编程有了新得相识。在试验中我也遇到过很多问题,比如在我写完代码进行编译时总就是会出现一个错误 ata eor C1010: 在查找预编译头时遇到意外得文件结尾,就是否遗忘了向源中添加#ilu ‘tdaf、’关于这个错误我
8、我问了几个同学得不出答案后,我确定通过上网查找,最终找到了解决方法,须要在该项目得每一个p结尾得文件属性中设置不运用预编译头即可。在这个过程中也熬炼了自己解决问题得实力。人工智能课内试验报告 试验 2:编程实现简洁动物识别系统得学问表示 学院:自动化学院班级:智能501 姓名:刘少鹏(3) 学号:0613034日期: 073—13 10:15—1:00试验:编程实现 简洁动物识别系统得学问 表示 一、试验目得 1、理解与驾驭产生式学问表示方法; 2、能够通过 VC 编程语言实现产生式系统得规则库。二、试验内容 、以动物识别系统得产生式规则为例; 2、用选定得编程语言建立
9、规则库与综合数据库,并能对它们进行增加、删除与修改操作. 三、试验步骤 1、确定须要识别得动物及其属性 本次试验得简洁动物识别系统总共能识别 7 种动物,即:老虎、金钱豹、斑马、长颈鹿、企鹅、鸵鸟与信天翁。2、建立识别七种动物识别系统得规则 3、选定编程语言并确定综合数据库与规则库结构 (1)选用语言作为编程语言 ()综合数据库得建立(3)规则库得建立 四、程序源代码 #inue iostream #incue <stig> usng amepc std; stru RULES it cunt;;52erp rahc ;55kcab ahc int ma; ; od
10、 chc(); RULES 1 = ,1 , 0,物动乳哺,发毛有 /全部规则静态数据库 , , 0,"物动乳哺,"奶有",1 , ,鸟,毛羽有, , 0,"鸟","蛋下&飞会 1,吃肉","食肉动物, , ,3 , ,物动肉食",方前着盯睛眼&爪有&齿牙得利锋有",2 , 0,物动乳哺类蹄有,&蹄有&物动乳哺,2 , 0,物动乳哺类蹄偶
11、有,&刍反&物动乳哺, , 0,"豹钱金,"&斑暗有色褐黄&物动肉食物动乳哺 ,"哺乳动物&食肉动物&黄褐色&黑色条纹&,老虎,0 , ,有蹄类哺乳动物&有长颈项有长腿&有暗斑&,"长颈鹿",0 , ,2 , 0,"马斑,"&纹条黑&物动乳哺类蹄有 5,&q
12、uot;鸟不会飞&有长颈项有长腿&黑白色","鸵鸟",0 , ",4 , 0,鹅企,"&色白黑泳游会&飞会不&鸟 2,"鸟&会飞&","信天翁,0 , ,1 0,"物动乳哺","刍反; in numbe; int m; nt cat = 5; it a; int lengh; /输入得事实
13、长度 srin f55; /组数实事得入输oi inut()wile (1) cat+; cout number < end; > rcat、cunt; cut < "输入事实,两种以上得事实请在每个事实后加上‘&’符号 < endl; ci > rca、pr; out < 输入结果 endl; i rcat、ack;;0 = kr、tcr )1( lihw cut < 输入1"接着添加规则,输入2查瞧规则库 &l
14、t; nl; ;p tni ;p > nc)1 = p( fi pt(); else f (p = 2) heck(); el ;ldn 入输新重,误错入输" tuc vi elate() cout < "输入要删除得条数" < endl;rab tni ;rb > n for (nt = 0; = ca; t+) ra — 1 = rba;br+; ;——tac;)(ehc vod ek() cout < endl <
15、规则库如下 < endl;for (int = 0; i = ct; i+)ct << i + < 、 "由 i、p < 可得" < ri、ac < end;ldne < tuc )1( ei out < 输入1接着添加规则,输入3删除选定得规则" end;m >> nic) = ( fi input(); le f (m = 3);)(ld it find_ule(it s)/ 则规得用
16、使可有还否是就中库则规找查)+ ;51 < ; = i tni( rf ;krm、*s = s /out<indrule结果<<<endl;;s rute in pae1(RULES r) /当前提条件为1时 int j 0, i = 1;sring str, ;sr = r、pe;hile (i = length) f (fi = s) sr2 = r、k;fength + 1 st2; /加入事实库 ;+tgl /事实库得长度加1; krm、r / 过用使已则规记标 brek; els;i ;kram、r rutr in
17、t pare2(RULS r) / 1为不件条提前strig b1;sin str, r2;0 = mun ,1 j ,i tni ; = a tni str = r、pre;组数换转/)+ ;01 =!i ;0 i( rof b = ";)i+ ;)(htnel、rts ! i ;0 = i( rof )& ! )(a、rs( fi ;)(、rts =+ esl j+; ;1 = i )to、r < ( elih )+j ;1 + hgne =!j ; j( rf if (j = bi) += 1; ;+i )tnuoc、r = a( sr2
18、r、bac; ;r 1 + tgelf /加入事实库 lenth+; /事实库得长度加1 ;1 kram、r /标记规则已运用过;ram、r nrutr void result();0 m ,1 = i tni wh (i ! length + 1)"豹钱金 = f( i u < 该动物就是金钱豹" endl;;1 = m ;kerb el )虎老" if( i cout "该动物就是老虎" endl;; ;kab els )"鹿颈长 = if( i cout &l
19、t; "该动物就是长颈鹿" < endl; ;1 = m ;eb ele if (fi = "斑马) ;ldn << "马斑是就物动该" << tc ; = m break; esle if (fi = 鸵鸟") ;ln "鸟鸵是就物动该" tuo ;1 ;kaerb esle )"鹅企 = i( i ;ldne < "鹅企是就物动该
20、 tuo m 1; break; esl )"翁天信 = f( fi cut << "信天翁" en; ; = m break; esle i+;) = ( i cut < 没有符合得动物,请确认特征,重新输入 < ndl; id etify() ;0 = u ,0 = i tni 则规得用使未有还中库则规果如/ )0 = )(eludni( f/ ;lde<则规得用使未有还tuoc ;hgnel = un tni)6i( lhw/历遍始开则规条一第从 )0 = ram、
21、r( fi/ 用使未则规条该果如 if (i、cunt = 1)/该条规则前提数为1 u = pare1(i);if ( = 1); = kram、r f (ri、ak = 1) out << 运用规则 < + 1; ;ldne a、ir 为实事新得入加且 uc esl ;)ir(2erap = u)1 = ( i ri、mrk = 1;if (ri、mk = 1) ot << 运用规则 << i + 1; o < "且加入得新事实为" &
22、lt; i、bac < endl; if (i = 15) f (nu != ength) ;0 = ;htgnel mun elsi = 6; e +; esle cut 全部得规则都已运用 l; ;)(tluse /*主函数* void ain();ldne *班101能智*" < uc ;ldne < *433160*" < uc cout < *刘少鹏* << en;cut 进行动物识别请输入7 endl;ut 进行规则库操作请输入8"
23、 << e;;a ic )8 = a(elihw while () ;d 2‘入输则规有已瞧查,’1‘入输则规加添 c cin >> m; ( = ) i(); esle )2 = ( fi heck(); ele ;ldn < 入输新重请误错入输 < tuoc if( = 7)in u = 0;ldne < "数征特得物动入输请" tuoc in length; cout << 请输入动物得特征
24、ed; )+i ;hgnel ;1 = i tn( rof ; idetiy(); ;)eua(metsys 五、试验结果相关截图 1、程序总体结构 2、 规则库操作→查瞧规则库 3、 规则库操作→添加规则→添加袋鼠规则4、 规则库操作→删除规则→删除袋鼠规则 5、动物识别→识别长颈鹿六、心得体会 通过本次试验我深刻得理解与驾驭产生式学问表示方法,并且能够通过 VC 编程语言实现产生式系统得规则库.本次试验我同样遇到很多问题,我通过自己查阅资料,与同学们探讨,逐步得将自己得问题解决,在这个过程中提高了我得问题解决实力。最终因为本次试验
25、只有对数据库有清晰得驾驭,同时熟识规则才能合理编程,因此我在平常得学习中应当加大数据库与数据结构得学习力度,提高自己得编程实力。人工智能课内试验报告 试验 3:盲目搜寻求解八数码问题 学院: 自动化学院班级:智能 150姓名:刘少鹏 (3)学号:0613034 日期:07-03—0 0:—2:0 人工智能课内试验 3: 盲目搜寻求解 8 8 数码问题1、试验目得 (1)熟识人工智能系统中得问题求解过程; (2)熟识状态空间中得盲目搜寻策略; (3)驾驭盲目搜寻算法,重点就是宽度优先搜寻与深度优先搜寻算法. 2、试验要求 用 VC 语言编程,采纳宽度优先搜寻与深度优先搜寻
26、方法,求解 8 数码问题 3、试验内容 (1)采纳宽度优先算法,运行程序,要求输入初始状态 假设给定如下初始状态 S 0283 1475 与目标状态 S g 21640853验证程序得输出结果,写出心得体会。(2)对代码进行修改( 选作),实现深度优先搜寻求解该问题 提示: :每次选扩展节点时,从数组得最终一个生成得节点起先找,找一个没有被扩展得节点。这样也须要对节点添加一个就是否被扩展过得标记。4 源代码及试验结果截图 (1)试验源代码 ince sdlb、h le <stdio、> yedef str e in nm9; /棋盘状态t depth; /派生得深度
27、 g(n)in diffnum; /不在位得数目 h(n)in ale; /耗散值 f(n)=g(n)h(n)stuc de * r;txen eoN tcurt struc Nde pent; uod;/* - nd of strt nuNde —— in oii9; /棋盘初始状态 int arge9; /棋盘目标状态 nt nuNoe_num, tota_tep; numNode *ope, close; /Oe表与 Close 表 mNoe *create_nmNoe() ;)edoNn(fozis(om)* eNmu( nrtrnuNoe petrst(umN
28、oe *head); /返回第一项,并从 Op表中删除 oi oeninsert(numNod hed, numNoe *itm); /向 Ope表中按序插入新节点 d cloe_ae(numNode hed, nmNode *it); /向 Ce 表中插入新节点 int exa(numod item); /扩展节点 int pnt_reslt(numde *itm); /打印结果 nu copy_mNde(numNode n); char sNewNode(nmNoe *open, numNoe *cos, num9); /就是否在 Open 表或 Cls表中 voi prin_num(in
29、t u9); /打印棋盘状态 int if(t nm9); /求不在位棋子得个数 vo ni(); 初始化,获得棋盘初始状态与目标状态 vod s *, nt ); nt oprate(int um, int ); vod fee_list(nuode *hea); /* Na: 主函數 /* Description:程序入口 int m(int agc, cha argv)/初始化 Oe表与loe 表;)"n*1051 能智*(ftnirp rnt("*刘少鹏*);)n*43031*"(ftp ;)(dNun_etaerc nep cls
30、e = creae_nuNoe();= txe—esol = erp>—esolc txen-nepo = erpnepoNULL;态状标目与始初入输户用由/ ;)(tin / 点节始初化始初 ;1p* domun ;)(Nmun_etaerc = p ;LUN tnp-1p ;0 = hped—1p ;0 = i i or ( = 0; i; i+);iro = iun>—1p pe_sert(pn, p1);uNdeum = 1; ope_efirs(en);whie (p != NU) ;)1p ,eso(nea
31、esolc )p(dnapxe( fi ;SEC_XE nruterp = oegtist(open); ;)!noitl oN(firprtun XT_SUE; * -—-—- ed of fucton mai -——-——-— */ vd iit()whil (1)pritf(ease nput oprginl satus:nFor example:123456780 stans frn 321 n 56 087 ;);01pmet rac ;)pt& ,"(naint i
32、 = ; pmet & 0 ’0’ pme && 9i ;0 = i( of- 0’ = 8; i+) orgini = ep - 0; rintf("Please inut target satus:n); ;)pmet& ,s%"(facs ; = j tni - jmet && 0 = 0 - pme & 9 ;0 = ( of0 <= ; j+) ;’0’ &mdas
33、h; jpmet = jtegrt;)"sc(mess (i 9 & j = ) ;kaerb /* —-—— f function it ——-— / void ope_inert(numNode *head, numNde ie);q* ,p* eoNmn ;txen>—daeh p = hd; )eulavp eulv>—mt LUN =! ( elihw ; = q;txen-p = —>net = it
34、em; = rp-eti ; = txen-eti f ( != NL) ;met = rp>—p /* ——-— end o ftin opn_insrt —-—- / nNode *ogetfirst(uNod *head) ;p eoNmun )L = txen-a( fi ;L nuter p = hed—nex;;txen>- tx-ae if (p—net != UL) p—>ne—pre = ead;p—p
35、NULL;p-nex = NUL;p nrute/* —-—— ed of funcion pen_getfirst -———— / void los_apped(nuoe hed, nuNde item);txen—daeh txn-mei ;ae e—meti dxt = item;)LLUN =!xenmeti( i ;mt = er—txn>-meti / ————- ed of fntion close_append -—— * i epand(numNde p) numNe p;int op = ;)+po ;4 = p ;1 po( rf p opy_numNoe();)po ,un—2p(etepif (isNewode(open, clo, p2num)= &rsq