人工智能实验报告解读_第1页
人工智能实验报告解读_第2页
人工智能实验报告解读_第3页
人工智能实验报告解读_第4页
人工智能实验报告解读_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、人工智能课内实验报告主观贝叶斯方法的研究实验题目主观Bayes方法的研究。实验目的在证据不确定的情况下,根据充分性量度 LS必要性量度LN E的先验 概率P(E)和H的先验概率P(H)作为前提条件,分析P(H/S)和P(E/S)的 关系。实验原理2.1、证据不确定性的表示在主观Bayes方法中,证据的不确定性用概率表示。对于证据E,由 用户根据观察S给出P(E|S),即动态强度。用P(E|S)描述证据的不 确定性(证据E不是可以直接观测的)。证据肯定存在时,P(E|S)=1 ;3. 证据肯定不存在时,P(E|S)=0 ;4. 证据具有不确定性时,0VP(E|S)v1。1.2、LN和LS的意义1

2、. 当证据E愈是支持H为真时,则应是使相应的LS值愈大。 若证据E对H愈是必要,则相应LN的值愈小。2. 不能出现LS1且LN1的取值因为:LS1 :表明证据E是对H有利的证据。LN1:表明证据?E是对H有利的证据。3. 不能出现LS1且LN1的取值因为:LS1,LNV1。3、证据不确定的情况在现实中,证据肯定存在和肯定不存在的极端情况是不多的,更多 的是介于二者之间的不确定情况。对初始证据来说,由于用户对客观 事物或现象的观察不是很精确,因而所提供的证据是不确定的;另外, 一条知识的证据往往来源于另一条知识推出的结论,一般也具有某种 程度的不确定性。所以我们要在S对E的观察的先验概率OVP(

3、E/S)v1 的情况下确定H的后验概率P(H/S)。在证据确定的情况下,我们因该用杜达等人1976年证明了的公式来进一步讨论:P( H /S) = P(H /E)* P(E/S)+P(H /-E)* P(-E / S)分四种情况讨论这个公式:1. P (E/S)=1当P(E/S)=1时,P(-E/S)=0。此时公式变成(肯定存在的情况):P(H /S) =P(H /E)=LS* P(H )(LS 1)* P(H )+12. P (E/S)=0当P(E/S)=0时,P(-E/S)=1.此时公式变成(肯定不存在的情况):P(H /S) =P(H /-E)=LN * P(H)(LN -1)* P(H

4、 )+13. P (E/S)=P(E)当P(E/S)=P(E)时,表示E与S无关。利用全概率公式就将公式变为:P(H /S) = P(H /E)* P(E)+P(H /-E)* P(-E) = P(H)4.当P(E/S)为其它值时,通过分段线性插值就可得到计算P(H/S)的公式:P(H /-E) + P(H);P(H /E)* P(E/S),若0P(E/S) P(E)P( h) + P(H /E) P(H)* p (e/s)-P( E),若 P (E) P(E/S) 1 1-P(E)该公式称为EH公式或UED公式。P(H /S) =四、实验程序ls=i npu t(ls=);ln=inpu t

5、(l n二);p h=i npu t( ph二);p e=i npu t( pe=);phe=(ls* ph)/(ls-1)* ph+1);phfe=(l n*p h)/(l n-1)* ph+1);phs=;for pes=0:0.01:1if p es 二pea=p hfe+( ph-phfe)/pe*pes;phs=p hs,a;elsea=p h+( phe-p h)/(1- pe)*( pes-p e);phs=p hs,a;end end pes=0:0.01:1;plot(pes,phs)五、实验结果0,9 -0.8-0.7-0.6-0.5-040.30.2M (mi) , G:

6、 =ADD针对M中子节点的不同情况,分别进行如下处理:对于那些未曾在G中出现过的M成员设置一个指向父节点(n)的指针,并把它放入OPEN表;对于那些先前已在 G中出现过的M成员,确定是否要修改指向父节点的指针;对于那些先 前已在G中出现,并且已经扩展了的 M成员,确定是否需要修改其后继结点指向父节点的 指针。(6) 按某种搜索策略对 OPEN表中的节点进行排序(7)转第2步。2.2.2A*算法我在实验中采用 A*算法实现重排九宫格。A*算法是一种全局择优的启发式算法,可以证明它具有最优性。A*算法可以描述为f(n) =h (n) +g (n)的形式。其中,h (n)被称作启发函数,是当前结 点

7、到目标结点的代价描述;而g (n)是代价函数,描述了起始结点到当前结点的代价;f ( n)是估价函数。A*算法是不回溯的,每次都选择f值最小的路径推进。在程序中,我按如下思路实现了A*算法。其中,启发函数 h (n)我选取的是当前结点和目标结点状态不同的个数。f,并将初始结点入表,设置链表头和尾指(1) 建立一个链表,计算初始结点的估价函数针。(2) 取出头(头指针所指)结点,如果该结点是目标结点,则输出路径,程序结束。否则 对结点进行扩展。(3) 检查扩展出的新结点是否与链表中的结点重复,若与不能再扩展的结点重复(位于头指针之前),则将它抛弃;若新结点与待扩展的结点重复(位于头指针之后),则

8、比较两个结点的估价函数中g的大小,保留较小g值的结点。跳至第五步。(4 )如果扩展出的新结点与链表中的结点不重复,则按照它的估价函数f大小将它插入头结点后待扩展结点的适当位置,使它们按从小到大的顺序排列,最后更新尾指针。(5 )如果头结点还可以扩展,直接返回第二步。否则将头指针指向下一结点,再返回第二 步。四、实验程序#in elude #i nclude #in elude #in clude /#i nclude using n ames pace std;con st int ROW = 3;/ 行数con st int COL = 3;/ 列数con st int MAXDISTANC

9、E = 10000;/ 最多可以有的表的数目 con st int MAXNUM = 10000;typ edef struct _Nodeint digitROWCOL;int dist; / dista nee betwee n one state and the dest in atio n 个表和目的表的距离int dep; / the depth of node 深度/ So the comment function = dist + dep.估价函数值int in dex; / point to the locati on of parent 父节点的位置 Node;Node sr

10、c, dest;/父节表 目的表vector no de_v;/ store the no des 存储节点bool isE mp tyOfO PEN() /o pen 表是否为空 for (i nt i = 0; i no de_v.size(); i+) if (n ode_vi.dist != MAXNUM)return false;return true;bool isEqual(i nt in dex, i nt digitCOL) /判断这个最优的节点是否和目的节点一样for (i nt i = 0; i ROW; i+)for (i nt j = 0; j COL; j+) if

11、 (n ode_vi ndex.digi tij != digitij)return false;return true;ostrea m& op erator(ostream& os, Node& node) for (i nt i = 0; i ROW; i+) for (int j = 0; j COL; j+)os no de.digitij ;os en dl;return os;void PrintSteps(int index, vector& rstep_v)/ 输出每一个遍历的节点深度遍历rstep_v. push_back (no de_vi ndex);in dex =

12、no de_vi ndex.i ndex;while (in dex != 0)rstep_v.pu sh_back (no de_vi ndex);in dex = no de_vi ndex.i ndex;cout = 0; i-)/ 输出每一步的探索过程cout step: ” rstep_v.size() - iendl; endl rstep_vi en dl void Swap(int& a, i nt& b) int t;t = a;a = b;b = t; void Assig n(N ode & no de, int in dex)for (i nt i = 0; i ROW

13、; i+)for (int j = 0; j COL; j+)no de.digitij = no de_vi ndex.digitij;int GetMinNode()/找到最小的节点的位置即最优节点int dist = MAXNUM;int loc; / the locati on of mini mize nodefor (i nt i = 0; i no de_v.size(); i+)if (n ode_vi.dist = MAXNUM)con ti nue;else if (no de_vi.dist + no de_vi.de p) dist) loc = i;dist = no

14、 de_vi.dist + no de_vi.de p;return loc; bool isEx pan dable(Node& no de)for (i nt i = 0; i no de_v.size(); i+) if (isEqual(i, no de.digit)return false;return true; int Dista nce(Node & node, i nt digitCOL) int dista nee = 0;bool flag = false;for(i nt i = 0; i ROW; i+)for (int j = 0; j COL; j+)for (i

15、nt k = 0; k ROW; k+) for (int l = 0; l COL; l+) if (no de.digitij = digitkl) dista nee += abs(i - k) + abs(j - l); flag = true;break;elseflag = false;if (flag)break;return dista nee;int Min Dista nce(i nt a, int b) return (a b ? a : b); void ProcessNode(i nt in dex)int x, y;bool flag;for (i nt i = 0

16、; i ROW; i+) for (i nt j = 0; j 0)Swap(node_up. digitxy, node_up. digitx - 1y); if (isEx pan dable (node_up)dist_ up = Dista nce(node_up, dest.digit);node_up .i ndex = in dex;node_up .dist = dist_ up;node_up .de p = no de_vi ndex.de p + 1;no de_v. push_back (node_up);Node no de_dow n;Assig n(no de_d

17、ow n, in dex);/ 向下扩展的节点 int dist_dow n = MAXDISTANCE;if (x 0)Swap(n ode_left.digitxy, node_left.digit xy - 1); if (isEx pan dable (no de_left)dist_left = Dista nce(no de_left, dest.digit);no de_left.i ndex = in dex;no de_left.dist = dist_left;no de_left.de p = no de_vi ndex.de p + 1;no de_v. push_ba

18、ck (no de_left);Node no de_right;Assign(node_right, index);/ 向右扩展的节点int dist_right = MAXDISTANCE;if (y 2)Swap(no de_right.digitxy, no de_right.digitxy + 1); if (isEx pan dable (no de_right)dist_right = Dista nce(no de_right, dest.digit);no de_right.i ndex = in dex;no de_right.dist = dist_right;no de

19、_right.de p = no de_vi ndex.de p + 1;no de_v. push_back (no de_right);n ode_v in dex.dist = MAXNUM; int main()/ 主函数int nu mber;cout 起始九宫格: endl;for (i nt i = 0; i ROW; i+)/ 输入初始的数据for (i nt j = 0; j nu mber;src.digitij = nu mber;src.i ndex = 0;src.de p = 1;cout 目标九宫格: endl;/输入目的数据 for (i nt m = 0; m

20、 ROW; m+)for (int n = 0; n nu mber;dest.digitm n = nu mber;n ode_v. push_back(src);/在容器的尾部加一个数据clock_t start = clock();while (1)if (isE mp tyOfO PEN()cout 无解! endl;return -1;elseint loc; / the location of the minimize node 最优节点的位置 loc = GetMi nN ode();if(isEqual(loc, dest.digit)vector rstep_v;cout 起

21、始的九宫格为: endl;cout src en dl;Prin tSte ps(loc, rstep_v); endl;cout 成功!break;elseProcessNode(loc);return 0;五、实验结果起垢九宫才缶 -2 310 47 t 5345起始的九宫格为:345目标九宫格:170step; 1345step: 2345Istep: 3345step: 4345Process exited with retwr-n value 0 Press ATtif key to concinue .1=-T L:ABVffi.exeft3G25起始的九宫格为,345stept

22、1345ste2345stepi 33A5stflpr 4345steps 5345step: 2B2S诃Process returned 0 exvcut ion t inc : 5辛*O6ZPfess flny hey to COnt Inia六、实验总结对于学好人工智能这门课程帮助颇这次实验让我对状态空间的搜索问题有了更深刻的了解, 大读书报告-各种各样的知识表示方法及其应用知识是人类进行一切活动的基础。具有相对性,不确定性,可表示性与可利用性。人类的智能活动过程是一个获取知识并运用知识的过程;人工智能问题求解是以知识为基础;知识的获取、知识的表示和运用知识进行推理是人工智能学科要研究的

23、主要问题。人工智能研究的目的是要建立一个模拟人类智能行为的系统,为达到这个目的就必须研究人类智能行为在计算机上的表示形式,只有这样才能把知识存储到计算机中去。知识表示是研究用计算机表示知识的可能性、有效性的一般方法,是一种数据结构与控制结构的统一体,既考虑知识的存储又考虑知识的作用。知识表示实际上就是对人类知识的一种描述,以把人类知识表示成计算机能够处理的数据结构。对知识进行表示的过程就是把知识编码成某种数据结构的过程。按照人们从不同角度进行探索以及对问题的不同理解,知识表示方法可分为陈述性知识 表示和过程性知识表示两大类。对同一知识,一般都可以用多种方法进行表示,不同的方法对同一知识的表示效

24、果是不一样的,有时需要把几种表示模式结合起来,作为一个整体来表示领域知识。知识的表示方法多种多样,但目前还没有哪种表示方法可以适应于一切知识系 统,不同的知识表示方法各有特色,适用于不同的领域。知识的常见表示方法有:一、经典逻辑表示法一阶谓词逻辑表示法 :谓词逻辑是一种知识表示方法,是到目前为止能够表达人类思 维活动规律的一种最精确的形式语言;谓词逻辑与人类的自然语言较接近,又可方便的存储到计算机中,并被计算机做精确 处理。谓词逻辑是一种最早应用于人工智能中的知识表示方法。知识的谓词逻辑表示法 :1、人类的一条知识一般可以由具有完整意义的由一句话或几句话表示出来,而这些知识 要用谓词表示出来,

25、一般是一个谓词公式;2、谓词公式是用谓词联接符号将一些谓词联接起来所形成的公式;3、用谓词公式既可以表示事物的状态、属性、概念等事实性的知识,也可以表示事物间 具有确定因果关系的规则性知识。4、对事实性知识,谓词逻辑的表示法通常是由以合取符号(A)和析取符号(V)联接 形成的谓词公式表示。一阶谓词逻辑是一种形式语言系统,它用数理逻辑的方法研究推理的规律,即条件和结论之间的蕴含关系。 特点是:1 )、2 )、3 )、4 )、自然性。适宜于精确性知识的表示,而不适宜不确定性知识的表示。易实现。有与谓词逻辑表示法相对应的推理方法(归结推理方法或消解法)二、产生式表示法产生式”是1943年由美国数学家

26、Post首先提出,他根据“串替代”规则提出了一种 称为Post机的计算模型,模型中的每一条规则称为一个产生式(产生式表示法又称为产生式规则表示法)。1972年,A.Newell和Sim on在研究人类的认知模型中开发了基于规则的产生式系统。目前,产生式表示法已成为人工智能中应用最多的一种知识表示方法。1、可表示的知识种类 适合于表示事实性知识和规则性知识。在表示事实性知识时又可根据知识是确定性的还是不确定性的分别进行表示。2、产生式的基本形式产生式通常用于表示因果关系的知识,基本形式为P7 Q或者IF P THEN Q其中,P是产生式的前提,用于指出该产生式是否可用的条件;Q是一组结论或操作,

27、用于指出前提P所指示的条件被满足时, 应该得出的结论或应该执 行的操作。3、产生式与谓词逻辑中蕴含式的区别(1) 产生式的基本形式与谓词逻辑中的蕴含式具有相同的形式。蕴含式只是产生式的一 个特殊情蕴含式只能表示精确性的知识。 产生式不仅可以表示精确性的知识,而且可以表示不精确性知识。在产生式表示知识的智能系统中,决定一条知识是否可用,只要前提条件与已知事况。(2)(3)(2) 实的相似度达到某个指定的范围,就认为是可匹配的。(3) 在谓词逻辑中,蕴含式前提条件的匹配总是要求精确匹配。4、产生式系统的组成把一组产生式放在一起, 让它们互相配合,协同作用,一个产生式生成的结论可以供另一 个产生式作

28、为已知事实使用,以求得问题的解决,这样的系统称为产生式系统。产生式系统由三个基本部分组成:规则库、综合数据库和推理机。规则库是用于描述某领域内知识的产生式集合。综合数据库又称为事实库,用于存放输入的事实、外部数据库输入的事实以及中间结果(事 实)和最后结果的工作区包含了推理方式推理机是一个或一组程序,用来控制和协调规则库与综合数据库的运行, 和控制策略。控制策略的作用就是确定选用什么规则或如何应用规则。5、产生式系统推理机的推理方式有正向推理、反向推理、双向推理。6、 产生式表示的特点(1)清晰性。产生式表示格式固定, 形式简单,规则间相互较为独立。(2)模块性。知识库与推理机是分开的。(3)

29、自然性。产生式表示法用“如果 ,则,”的形式表示知识,是人们常用的表示因果关系的知识表示形式。产生式既可以表示确定性知识又可以表示不确定性知识,更符合人们日常见到的问题。三、层次结构表示法1、框架理论:A framework for representing knowiedge ” 该理论认当面临 补充,1957年美国著名的人工智能学者明斯基在其论文“ 中提出了框架理论,并把它作为理解视觉、自然语言对话及其它复杂行为的基础。 为人们对现实世界中各种事物的认识都是以一种类似于框架的结构存储在记忆中的, 一个新事物时,就从记忆中找出一个合适的框架,并根据实际情况对其细节加以修改、 从而形成对当前事物的认识。2、框架的定义及组成框架是一种描述所论对象的数据结构;所论的对象可以是一个事物、一个事件或者一个概念。一个框架由若干个“槽”组成,每个“槽”又可划分为若干个“侧面”。描述所论及对象某

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论