《[资料]人工智能实验大作业.doc》由会员分享,可在线阅读,更多相关《[资料]人工智能实验大作业.doc(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、?,人工智能,?实验大作业实验题目:基于产生式系统的问题求解专业,信息与计算科学,年级,09级1001班,姓名,高攀,学号,091001102,指导老师,时华,日,期,2021,-12-12,实验二,基于产生式系统的问题求解一、实验目的:熟悉和掌握产生式系统的构成和运行机制,掌握基于规那么推理的根本方法和技术。二、实验方法:1.先熟悉产生式系统的根本概念;,2.用C、C+或JAVA语言编程实现实验内容。三、实验背景知识:产生式系统Production,system首先由波斯特Post于1943年提出的产生式规那么Production,rule而得名,他们用这种规那么对符号串进行置换运算,后来,
2、美国的纽厄尔和西蒙利用这个原理建立了一个人类的认知模型1965年,同年,斯坦福大学利用产生式系统结构设计出第一个专家系统DENDRAL。产生式系统用来描述假设干个不同的以一个根本概念为根底的系统。这个根本概念就是产生式规那么或产生式条件和操作对象的概念。在产生式系统中,论域的知识分为两部份:(1) 事实:用于表示静态知识,如事物、事件和它们之间的关系;2规那么:用于表示推理过程和行为一个产生式系统由三个局部组成,如下图:(1) 总数据库:用来存放与求解问题有关的数据以及推理过程环境的当前状态的描述。2产生式规那么库:主要存放问题求解中的规那么。3控制策略:其作用是说明下一步应该选用什么规那么,
3、也就是说如何应用规那么。总数据库控制策略规那么库通常从选择规那么到执行操作分三步:(1) 匹配:把当前数据库和规那么的条件局部相匹配。如果两者完全匹配,那么把这条规那么称为触发规那么。2冲突解决:当有一个以上的规那么条件局部和当前数据库相匹配时,就需要解决首先使用哪一条规那么冲突解决。1专一性排序:如果某一规那么的条件局部比另一条规那么的条件局部所规定的情况更为专门,那么这条规那么有较高的优先权。2规那么排序:如果规那么编排顺序就表示了启用的优先级,那么称之为排序。3数据排序:把规那么条件局部的所有条件按优先级次序编排起来,运行时首先使用在条件局部包含较高优先级数据的规那么。4规模排序:按规那
4、么的条件局部的规模排列优先级,优先使用被满足的条件较多的规那么。5就近排序:把最近使用的规那么放在最优先的位置。6上下文限制:把产生式规那么按他们所描述的上下文分组,也就是说按上下文对规那么分组,在某种上下文条件下,只能从与其相对应的那组规那么中选择可应用的规那么。7使用次数排序:把使用频率较高的排在前面。3操作:执行规那么的操作局部,经过修改以后,当前数据库将被修改。四、实验内容:问题描述:用基于产生式系统的方法求解传教士和野人问题有N个传教士和N个野人来到河边准备渡河,河岸有一条船,每次至多可供K个乘渡,问传教士为了平安起见,应如何规划摆渡方案,使得任何时刻,河岸两边以及船上的野人数目总是
5、不超过传教土的数目,即求解传教士和野人从左岸全部摆渡到右岸的过程中,任何时刻满足M传教士数C野人数和M+CK的摆渡方案。五、问题(1) 问题状态的表示我们用一个三元组(m,c,b)来表示河岸上的状态,其中m、c分别代表某一岸上传教士与野人的数目,b=1表示船在这一岸,b=0那么表示船不在。设N=3,k=2,那么给定的问题可用下列图表示,图中L和R表示左岸和右岸,B=1或0分别表示有船或无船。约束条件是:,两岸上MC,船上M+C2。,由于传教士与野人的总数目是一常数,所以只要表示出河的某一岸上的情况就可以了,为方便起见,我们选择传教士与野人开始所在的岸为所要表示的岸,并称其为左岸,另一岸称为右岸
6、。因而问题的初始状态是(3,3,1),目标状态是(0,0,0)。(2) 数据库描述(3) 规那么库的描述,由摆渡操作组成。该问题主要有两种操作:,pmc操作(规定为从左岸划向右岸),qmc操作(从右岸划向左岸)。规那么集合如下:4状态空间图(5) 程序清单import,java.util.Scanner;public,class,MACP,static,boolean,flag,=,false;,/,标记是否有解static,boolean,af,=,false;,/,标记a是否为0static,boolean,bf,=,false;,/,当b变为0后赋值为true;static,boolea
7、n,ef,=,false;,/,当a=b后赋值为truestatic,boolean,f,=,false;,/,判断n是否大于m/2static,int,m;/,传教士野人的个数static,int,n;/,船一次能装载的人数public,static,void,main(String,args),System.out.println(传教士与野人过河问题。n假设最初时传教士与野人在河的左岸。);Scanner,input,=,new,Scanner(System.in);System.out.print(请输入修道士野人的人数=);m,=,input.nextInt();System.out
8、.print(请输入船能装载的人数=);n,=,input.nextInt();System.out.println(左岸传教士人数t左岸野人个数t船的位置1.左岸,0右岸);/mc(m,m,1);if,(m,=,3,&,n,m,/,2)f,=,true;mc(m,m,1);if,(flag,=,true),System.out.println(成功);,else,System.out.println(失败);public,static,void,mc(int,a,int,b,int,c),if(flag=true),return;if(c,=,1)System.out.println(t+a
9、+tt+b+tt+c+t);if(f=true)/如果nm/2if(bf!=true)/b未到达过0if(a+b=n)/如果a+b=,0;j-)if(b,=,j)mc(a,b-j,1-c);/递归if(flag=true),return;else,if(ef!=true&,af=false)for(int,i,=,n;i=0;i-)if(a=i)mc(a-i,b,1-c);/递归if(flag=true),return;if(ef,=,true,&,af=false)if(a=n)mc(a-n,b,1-c);/递归else,if(a+b=n)mc(a,b-n,1-c);/递归elsemc(a,
10、0,1-c);else,mc(a-n/2,b-n/2,1-c);,/递归if(c,=,0)System.out.println(t+a+tt+b+tt+c+t);if(a,=,b,&,b,=,c,&,a,=,0)flag,=,true;return;if(f=true)/如果nm/2if(b=0)bf,=,true;if(m,=,n)mc(a,b+1,1-c);/递归elsemc(a,b+m-n,1-c);if(a=b)ef,=,true;mc(a+1,b+1,1-c);/递归if(a,=,0)af,=,true;mc(a,b+1,1-c);/递归while(bf!=true)mc(a,b+1
11、,1-c);/递归else/k3mc(a+1,b+1,1-c);/递归6实验结果讨论用语句表达的解路径(即过河方案)如下:,(1),初始状态:,3个传教士、3个野人和船均在左岸;,(2),2个野人由左岸过河到右岸;,(3),1个野人划船返回左岸;,(4),2个野人(包括返回的那个)由左岸过河到右岸;,(5),1个野人划船返回左岸;,(6),2个传教士由左岸过河到右岸;,(7),1个传教士和一个野人返回左岸;,(8),两个传教士(包括返回的那个)由左岸过河到右岸;,(9),1个野人返回左岸;,(10),2个野人由左岸过河到右岸;,(11),1野人返回左岸;,(12),2个野人由左岸过河到右岸,至
12、此,传教士与野人全部过河,此时3个传教士、3个野人和船全在右岸。对于其他人数的修道士过河有些也能解决,但有些就会出现错误。a. 你采用何种策略来控制产生式系统的搜索?原理是什么?状态空间法的分析方法。状态空间法是现代控制理论中建立在状态变量描述根底上的对控制系统分析和综合的方法。状态变量是能完全描述系统运动的一组变量。如果系统的外输入为,那么由这组变量的现时值就能完全确定系统在未来各时刻的运动状态。通过状态变量描述能建立系统内部状态变量与外部输入变量和输出变量之间的关系。反映状态变量与输入变量间因果关系的数学描述称为状态方程,而输出变量与状态变量和输入变量间的变换关系那么由量测方程来描述。状态
13、与状态变量描述的概念早就存在于经典动力学和其他一些领域,但将它系统地应用于控制系统的研究,那么是从1960年R.E.卡尔曼发表?控制系统的一般理论?的论文开始的。状态空间法的引入促成了现代控制理论的建立。状态空间法的主要数学根底是线性代数。在状态空间法中,广泛用向量来表示系统的各种变量组,其中包括状态向量、输入向量和输出向量。变量的个数规定为相应向量的维数。用x表示系统的状态向量,用u和y分别表示系统的输入向量和输出向量,那么系统的状态方程和量测方程可表示为如下的一般形式:,夶f(x,u,t),yg(x,u,t),式中,f(x,u,t)和g(x,u,t)为自变量x、u、t的非线性向量函数,t为
14、时间变量。对于线性定常系统状态方程和量测方程具有较为简单的形式:,夶AxBu,yCxDu,式中A为系统矩阵,B为输入矩阵,C为输出矩阵,D为直接传递矩阵,它们是由系统的结构和参数所定出的常数矩阵。在状态空间法中,控制系统的分析问题常归结为求解系统的状态方程和研究状态方程解的性质。这种分析是在状态空间中进行的。所谓状态空间就是以状态变量为坐标轴所构成的一个多维空间。状态向量随时间的变化在状态空间中形成一条轨迹。对于线性定常系统,状态轨迹主要由系统的特征值决定。系统的特征值规定为系统矩阵A的特征方程det(sI-A)=0的根,其特征可由它在s复数平面上的分布来表征。当运用状态空间法来综合控制系统时,问题就变为选择一个适宜的输入向量,使得状态轨迹满足指定的性能要求。b你能否对产生式系统进行改良,假设能请把你的想法写下来。由于状态空间法需要扩展过多的节点,容易出现“组合爆炸,,因此只能做一些简单的问题。如果可以把相同作用的节点放在一起变成一个节点,这样就可以接触这个问题。不过,如何放在一起这是个问题。