2017中南大学人工智能实验报告

上传人:206****923 文档编号:91844603 上传时间:2019-07-02 格式:DOCX 页数:15 大小:228.69KB
返回 下载 相关 举报
2017中南大学人工智能实验报告_第1页
第1页 / 共15页
2017中南大学人工智能实验报告_第2页
第2页 / 共15页
2017中南大学人工智能实验报告_第3页
第3页 / 共15页
2017中南大学人工智能实验报告_第4页
第4页 / 共15页
2017中南大学人工智能实验报告_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《2017中南大学人工智能实验报告》由会员分享,可在线阅读,更多相关《2017中南大学人工智能实验报告(15页珍藏版)》请在金锄头文库上搜索。

1、“人工智能”实验报告专 业: 班 级: 学 号: 姓 名: 2017年4月 日实验一 搜索策略(一)实验内容1.熟悉和掌握启发式搜索的定义、估价函数和算法过程;比较不同算法的性能。2.修改八数码问题或路径规划问题的源程序,改变其启发函数定义,观察结果的变化,分析原因。(二)实验思路1.利用已有程序“search.jar”,利用已有的“简单搜索树”图或自行构建一个图,选择DFS/BFS/Lowest Cost First/Best-First/Heuristic Depth First/A*等不同的搜索策略,观察程序运行中,OPEN表和CLOSED表的变化,观察搜索过程的变化,理解各个算法的原理

2、。2.任选八数码问题或路径规划问题的源程序,思考程序如何解决该问题,并对其启发函数进行修改,观察结果的变化,并分析原因(三)程序清单此处我选择了路径规划问题:由于篇幅原因,只附上启发函数的定义部分。原启发函数:float MapSearchNode:GoalDistanceEstimate( MapSearchNode &nodeGoal )float xd = fabs(float(float)x - (float)nodeGoal.x);float yd = fabs(float(float)y - (float)nodeGoal.y);return (xd + yd);第一次修改后的启发

3、函数:float MapSearchNode:GoalDistanceEstimate( MapSearchNode &nodeGoal )float xd = fabs(float(float)x - (float)nodeGoal.x);float yd = fabs(float(float)y - (float)nodeGoal.y);float d=sqrt(xd*xd+yd*yd);return d;第二次修改后的启发函数:float MapSearchNode:GoalDistanceEstimate( MapSearchNode &nodeGoal )float xd = fab

4、s(float(float)x - (float)nodeGoal.x);float yd = fabs(float(float)y - (float)nodeGoal.y);float d=3*sqrt(xd*xd+yd*yd);return d;第三次修改后的启发函数:float MapSearchNode:GoalDistanceEstimate( MapSearchNode &nodeGoal )float xd = fabs(float(float)x - (float)nodeGoal.x);float yd = fabs(float(float)y - (float)nodeGo

5、al.y);float d=xd*xd+yd*yd;return d;(四)运行结果说明1.首先对实验内容1进行说明图一图一展示A*算法的搜索过程(此处的g(n),h(n)由系统自动给定),绿色表示可拓展节点(在OPEN表内),灰色表示已扩展结点(CLOSED表),没有颜色表示未入表,红色代表当前路径由课上学习我们易知f(n)= g(n)+h(n)下面我们通过改变g(n),h(n)来验证上式是否成立。图二图二为图一的放大图,我们可以看出f(Node1)= g(Node1) +h(Node1)=26.9+56.8=83.7f(Node2)= g(Node2) +h(Node2)=34.2+31.

6、5=65.7显然f(Node1) f(Node2),因此由A*算法,我们选择Node2图三在图三中,我修改了Node2的启发值,其他不变f(Node1)= g(Node1) +h(Node1)=26.9+56.8=83.7f(Node2)= g(Node2) +h(Node2)=34.2+100.0=134.2显然f(Node1)f(Node2),因此由A*算法,我们选择Node1 图四在图四中,我修改了Node2的当前路径值,其他不变f(Node1)= g(Node1) +h(Node1)=26.9+56.8=83.7f(Node2)= g(Node2) +h(Node2)=100.0+31

7、.5=131.5显然f(Node1)3后搜索次数表现良好,为什么我们不把sqrt函数去掉,采用平方后的欧几里得距离呢?这样不是省去了平方根的耗时计算吗?我认为这样有一个很严重的问题,它会导致启发式函数的估价值过高,也就是h(n)过高,有退化成Gready Best-First-Search的危险实验二 推理技术(一)实验内容对已有的产生式系统(默认的例子)进行演示,同时可以更改其规则库或(和)事实库,进行正反向推理,了解其推理过程和机制。自己建造产生式系统(包括规则库和事实库),然后进行推理,即可以自己输入任何的规则和事实,并基于这种规则和事实进行推理。这为学生亲手建造产生式系统并进行推理提供

8、了一种有效的实验环境。(二)实验思路 利用已有程序”Tree.jar”,读取现有知识数据库,对默认的例子进行演示,同时改变其规则库,了解其推理过程(三)程序清单 本实验不需要编程(四)运行结果说明图八图八展示了推理成功的结果,程序进行的是逆向链接推理。首先假设这一只动物是虎。为了检验这个假设,根据规则,要求虎是哺乳动物,食肉动物,黄褐色且身上有黑色条纹。那么我们首先检验这个动物是否是哺乳动物,由规则库,是哺乳动物的动物必须有毛发,或者有奶。我们可以发现将哺乳动物替换成有毛发和有奶都无法继续执行下去。由规则库,我们观察可知虎是哺乳动物,因此消去这一条件。接下来只剩下了是肉食动物,是黄褐色,身上有

9、黑色条纹。我们都可以在规则库中发现这些子句,故可以顺利消解,生成NIL,即推理成功图九-1图九-1展示了推理失败的结果从假设该动物是长颈鹿开始,最终无法得到结果,因为规则库没有相应子句可供消解。 图九-2图九-2展示了此时规则库中相应子句的情况,可以发现子句前有%存在使得子句无法被使用。那么现在我们可以对规则库进行修改,使得该推理成功。图十-1图十-1展示了经过修改规则库后,成功的结果图十-2图十-2表示修改规则库后的情况,我们可以与图九-2对比,显然仅仅修改了“%”即可。实验三 神经网络(一)实验内容1.通过BP网络各项参数的不同设置,观察BP算法的学习效果。观察比较BP网络 拓朴结构及其它

10、各项参数变化对于训练结果的影响。观察并分析不同训练数据对相同拓朴结构的BP网络建模的影响。2.编写简单的感知器训练算法,实现简单的逻辑运算(与、或)(二)实验思路1. 利用已有程序“neural.jar”,通过载入已有BP网络,观察BP算法的学习效果,比较各项参数变化对于训练结果的影响。2.根据课上学习内容,编写简单的感知器训练算法。(三)程序清单 #include #include using namespace std;const unsigned int nTests =4; /训练数据的数量const unsigned int nInputs =2; /输入端的数量const doub

11、le alpha =0.3; /学习参数double weight1nInputs=0.0;double weight2nInputs=0.0;double b=-0.8; /阈值设为-0.8struct slp double inputsnInputs; double output;/计算输出值double compute(double *inputs,double * weights,double b) double sum =0.0; for (int i = 0 ; i nInputs; +i) sum += weightsi*inputsi; /bias sum +=b; return sum;int main() /* *正确的“与”操作,“或”操作的训练数据,也就是所谓的“target” */slp yunTests = 0.0,0.0,0.0, 0.0,1.0,0.0, 1.0,0.0,0.0, 1.0,1.0,1.0;slp huonTests = 0.0,0.0,0.0, 0.0,1.0,1.0, 1.0,0.0,1.0, 1.0,1.0,1.0; bool bLearningOK = false; int count1=0; /感知器“与”操作学习算法 while(!bLearningOK)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号