下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、人工智能实验报告学号xxxxx姓名xxxxx实验名称动物识别专家系统实验目的 本实验的主要目的是熟练使用推理方法,进行编程完成相应的功能。本次试验的预期功能是在系统可以像使用者提出问题,然后系统根据该问题的回答来筛选出相应的动物并确定下一个问题。其中下一个问题的提出是在尽量减少提问次数的前提下找到的。同时该系统还具有增加记录的功能,可以增加包含的动物种类。实验方案首先系统中包含了若干动物种类,例如狮子,老虎等。由于每一种动物都有不同的属性,而根据这些属性就可以确定是哪一种动物。所以我们要有数据结构可以存储动物以及动物的不同属性。为了节约空间,我们将各个属性用一个数据结构存储起来。这里我用的是数
2、组进行存储,每一个记录代表了一种属性。而动物则用结构体存储,如下。typedef struct animint flag30;string nam;anim;该结构体中包括了动物的名称以及属性数组。对应的flagi=1,则对应的第i个属性是满足的,反之该动物没有该属性。这样就可以得到不同动物的属性。 在提问的时候根据该问题的编号,找到存在该属性的动物并且进行标记。并且在剩余的动物中,对没有提问的各个属性进行判断,找到尽可能能把这些动物平分成两部分的问题进行提问。如此就可以找到想要的动物。 同时如果猜测不正确可以添加新的动物或者属性,并设置各个动物的属性,这样就可以进行学习,使得系统更加准确。实
3、验记录首先运行程序会出项上图界面,该界面显示了当前所有的动物,并且提出问题,用户可以根据问题进行选择,看到自己想要的动物。对于每一个问题,都只能是真或者是假,因此在后续增加问题的时候也要注意。其实可以有多种情况,但是要进行扩展,所以本实验没有增加该功能。该系统中有不同的问题,根据问题的提示可以对现有的动物进行筛选,并且提出下一个问题,并使得提问的次数最少。通过上面可以看出当生育方式是胎生的时候,那么就在哺乳动物中进行选择,哺乳动物中只有老虎是独居的,所以提问的时候就选择该问题。这样提问两次就可以得出结论。而当生育方式不是胎生的时候,就只有一个鸟类,所以可以直接获得结论。for(int i=0;
4、ianc;i+)if(ai=1)if(ani.flagcount!=anser) ai=0;代码分析:在回答一个问题之后,在剩下的动物判断提问的属性是否满足,如果满足,那么就留下;如果不满足,那么去除。for(int j=0;jtc;j+)for(int i=0;i=0?yes-no:no-yes)0?yes-no:no-yes;yes=0;no=0;代码分析:上述代码是对下一个问题进行选择的代码,该部分主要是将剩下的动物进行判断,利用二分查找的思想,尽量使下一个问题回答之后,无论选什么答案,都使剩下的集合等分。但是由于当前系统中的动物以及问题过少,因此我们可以向系统中添加新的记录,以完善该系
5、统。首先在每次提问之后,用户可以判断系统回答是否正确,如果不正确,可以手动添加记录以完善该系统。系统会提示是否增加新的问题,如果添加的话,首先要输入问题,注意该问题必须的非真即假,不能有第三种情况。然后对于新增的问题,对系统中的每一个动物都进行初始化,以便于下一次判断。然后可以增加动物的数目,对该动物的所有属性都要进行设置,然后该记录就增加完成了。 如上左所示,在增加了该动物之后,我们可以在下次提问的时候看到系统中的记录增加,并且可以根据问题获得刚刚增加的动物。如上右图所示。实验总结本次实验运用了归结原理、规则演绎推理的推理方法,进行设计。对于不同的属性可以有时间p1,p2pn。这样在满足不同的条件之后就可以进行推理,得到所要的动物了。通过本次实验,我学习到了
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论