动物识别系统实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

精选
暨南大学
人工智能实验报告
题目:基于web的动物识别系统
院系:信科院计算机系
专业:计算机技术
学号:1034008427
学生姓名:ming fang
成绩:
日期:2010年12月10日
一、目的与要求
1.掌握人工智能的知识表示技术,能用产生式表示法表示知识,并实现一个用于识别的专家系统。

2.推理策略采用正向推理和反向推理两种。

二、主要内容
1.学习人工智能的知识表示技术,关键掌握产生式知识表示的具体应用方法。

2.实现的动物识别系统的主要功能如下:
2.1系统能通过正向、反向推理得到正确的动物识别结果。

2.2系统能动态地添加规则、能显示推理过程。

三.实验原理
产生式表示:产生式表示是知识表示的一种。

这种方法是建立在因果关系的基础上的,可很容易的描述事实、规则及其不确定性度量。

1.事实的表示:
事实可看成是断言一个语言变量的值或是多个语言变量间的关系的陈述句,语言变量的值或语言变量间的关系可以是一个词。

不一定是数字。

一般使用三元组(对象,属性,值)或(关系,对象1,对象2)来表示事实,其中对象就是语言变量,若考虑不确定性就成了四元组表示(增加可信度)。

这种表示的机器内部实现就是一个表。

如事实“小王年龄是22岁”,便写成(Lee,age,22)
事实“小李、小张是朋友”,可写成(friend,Lee,Zhang)
2.规则的表示:
规则用于表示事物间的因果关系,以IF condition THEN action 的单一形式来描述,将规则作为知识的单位。

其中的condition 部分称为条件式前件或模式,而action部分称作动作、后件或结论。

产生式一般形式为:前件后件。

前件和后件也可以是有“与”、“或”、“非”
等逻辑运算符的组合的表达式。

条件部分常是一些事实的合取或析取,而结论常是某一事实B。

如果不考虑不确定性,需另附可信度度量值。

产生式过则的含义是:如果前件满足,则可得到后件的结论或者执行后件的相应动作,即后件由前件来触发。

一个产生式生成的结论可以作为另一个产生式的前提或语言变量使用,进一步可构成产生式系统。

蕴涵式表示的知识只能是精确的,产生式表示的知识可以是不确定的,原因是蕴涵式是一个逻辑表达式,其逻辑值只有真和假。

蕴含式的匹配一定要求是精确的,而产生
式的匹配可以是不确定的,原因是产生式的前提条件和结论都可以是不确定的,因此其
匹配也可以是不确定的。

.
3.产生式系统的结构:
3.1数据库
数据库中存放构成产生式系统的基本元素,又是产生式的作用对象。

包括系统设计时输入的事实、外部数据库输入的事实以及中间结果和最后结果。

数据的格式是多种多样的,可以是常量、变量、多元组、谓词等。

在推理过程中,当规则库中某条规则的前提可以和数据库中的已知事实相匹配时,该规则被激活,由它推出的结论将被作为新的事实放入数据库,成为后面推理的已知事实。

3.2规则库
规则库中存放的是与求解有关的所有产生式规则的集合,每个规则由前件和后件组成。

其中包含了将问题从初始化状态转换成目标状态所需的所有变换规则。

这些规则描述了问题领域中的一般性知识。

规则库是产生式系统进行问题求解的基础,其知识的完整性、一致性、准确性、灵活性,以及知识组成的合理性等性质,对产生式系统的运行效率都有重要的影响。

3.3推理机
推理机是一个解释程序,控制协同规则库与数据库,负责整个产生式系统的运行,决定问题求解过程的推理路线,实现对问题的求解。

推理机主要包括下面一些工作内容:
(1)按一定策略从规则库中选择规则与数据库的已知事实进行匹配。

匹配的过程中会产生三种情况。

第一种匹配成功,则此条规则将被列入被激活候选集;第二种匹配失
.
败,即输入条件与已知条件矛盾;第三种匹配无结果,即该条规则前件的已知条件中完全与输入事实无关,则将规则列入待测试规则集,将在下一轮匹配中再次使用。

因为有可能推理中间结果符合其前件的已知条件。

.
(2)当匹配成功的规则多于一条时,需要从匹配成功的规则中选出一个加以执行,即根据一定的策略解消冲突。

(3)解释执行规则后件的动作。

如果该规则的后件不是问题的目标,即如果这些后件为一个或多个结论时,将其加入到数据库中。

对要执行的规则,如果该规则的后件满足问题的结束条件,则停止推理。

四、实验正文
1.需求分析
1.1功能需求
1.1.1动物识别正向推理
正向推理是从已知事实出发,通过规则库求的结论,也称为自底向上,或称为数据驱动方式。

正向推理过程的具体步骤是:
(1)读入事实集到tempData。

(2)取出某条规则,将规则的全部前件与工作存储器中的所有事实进行比较。

如果匹配成功,则所得结果显示到屏幕上,转向(3);否则,直接转向(3)。

(3)结束。

1.2性能需求
软件环境
·操作系统:Windows XP
·开发工具:数据库:MYSQL ,MyEclipse6.0
2.人工智能技术的应用—动物识别系统的设计与实现
2.1动物识别系统设计的基本思路
动物识别系统的实质是将人的思维过程转化为计算机语言的逻辑过程,其关键在于知识和信息的表示,智能推理或求解的基础—知识库的创建和管理,以及基于某种知识和信息表示的智能推理或求解过程。

该系统的知识表示采用产生式表示法。

产生式系统由条件和规则数据库、控制系统、界面三个部分构成。

数据库中规则表、条件表分别对应数据库系统中的动物库表,动物特征询问序列表。

动物库表放入推理规则,包括动物的各种属性和所应推出的动物名称。

动物特征询问序列表放入要选择的各种动物的属性。

动物识别系统设计主体框架:本系统只用了一个页面实现,界面使用上下结构的框架设计,当用户进入系统的时候,打开Default.aspx,该页面分为上下两个部分,上面的部分是用于根据问题输入动物特征,下面的部分是新规则的加入功能部分,也是用户进行添加新规则的页面,这好似一个导航页面,用户可以更具自己的选择进行的操作,由上至下进入不同的功能部分。

各个功能模块的设计:
(1)正向推理鉴别动物:index.jsp
.
在该页面中有一个复选匡表,用于选择特征;有一个submit,用于提交所选特征;
有一个reset,用于取消选择;当提交表单后,开始进行推理,将推理所得到的结果显示出.
2.2动物识别系统的实现
1.开发工具:
Mysql, MyEclipse6.0, jsp
2.数据库设计思想:
将所有的条件存放在动物特征查询表中,所有的规则存放在动物库表中,在规则表中所有的条件和结论均以编号的形式存放,当要进行查询的时候,从条件表中查到对应标号的条件或者结论,将原来查到的编号替换为文字的条件或者编号。

3.测试及验收
通过测试,用正向推理和反向推理实现动物识别的功能基本实现,效果不错。

界面设计的也比较简洁。

五、综合实验总结和结论
1.对人工智能的产生式系统有了进一步的认识,特别是对正向推理和反向推理有更深的了解。

2.本次实验是单独完成的,通过查找资料,最终圆满的完成了实验。

这次实验充分培养了我们的独立解决问题的能力。

3.实验的关键是对正向推理算法的掌握和对数据库的设计,由于前期我们花了比较多的时间进行算法的理解和数据库的设计,大量查找资料,因此最终我们能更快更好的完成了实验。

4.通过这次实验,使我们熟悉了软件的开发全程,也更加熟悉了编程工具和编程语言。

5.通过两周的设计与开发,动物识别系统基本开发完毕,但是由于时间较短,所以该系统还有许多不尽如人意的地方,比如没有文档,反向推理出现一些缺陷等问题。

因此有待进一步改进。

总的来说,这次实验我们收益颇多,通过这个独立完成的小型项目,培养了我软件开发设计的能力,熟悉了软件开发的过程步骤,加强了团队协作的能力,进一步掌握了运用2.0进行软件开发,熟悉了C#语言。

为以后我们进行软件开发奠定了基础。

六、参考文献
[1] 王万森人工智能及其应用. 电子工业出版社, 2007年1月第2版。

[2] 马少平,朱晓燕。

人工智能。

清华大学出版社,2004年8月第一版。

[3]张亚飞JSP开发王电子工业出版社2008年7月第一版
.
附录(程序流程图、程序、界面、数据等)
1. 程序流程图
2.部分程序代码:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>首页</title>
<style type="text/css">
<!--
.STYLE2 {
font-family: "隶书";
font-size: 24px;
font-weight: bold;
}
-->
</style>
</head>
<body background="E:\myeclipse\animal\壁纸\201012051.jpg">
<form method="post" action="index.jsp" name="form1">
<table width="100%" border="0" cellpadding="5" cellspacing="0"> <tr style="vertical-align: top">
<th colspan="2" class="HeaderColor">
<h1>
<!-- TemplateBeginEditable name="Header" -->
动物识别系统
<!-- TemplateEndEditable -->
</h1>
</th>
</tr>
</table>
请选择该种动物的特征:
<table width="769" border="2" cellspacing="2" cellpadding="4"
height="325">
<tr>
<td>
<input name="feature" type="checkbox" value="有毛发">
No.1 该动物有毛发
</td>
<td>
<input name="feature" type="checkbox" value="有羽毛">
No.2 该动物有羽毛
</td>
<td>
<input type="checkbox" name="feature" value="会飞">
No.3 该动物会飞
</td>
</tr>
<tr>
<td>
<input name="feature" type="checkbox" value="会下蛋">
No.4 该动物会下蛋
</td>
<td>
<input name="feature" type="checkbox" value="肉食动物">
No.5该肉食动物
</td>
<td>
<input type="checkbox" name="feature" value="有犬齿">
No.6 该动物有犬齿
</td>
</tr>
<tr>
<td>
<input name="feature" type="checkbox" value=嚼反刍动物">
No.7该动物是嚼反刍动物
</td>
<td>
<input name="feature" type="checkbox" value="眼盯前方">
No.8 该动物眼盯前方
</td>
<td>
<input type="checkbox" name="feature" value="有奶">
No.9 该动物有奶
</td>
</tr>
<tr>
<td>
<input name="feature" type="checkbox" value="有蹄">
No.10该动物有蹄
</td>
<td>
<input name="feature" type="checkbox" value="有长腿">
No.11该动物有长腿
</td>
<td>
<input type="checkbox" name="feature" value="有爪">
No.12 该动物有爪
</td>
</tr>
<tr>
<td>
<input name="feature" type="checkbox" value="有暗斑点">
No.13该动物身上有暗斑点
</td>
<td>
<input name="feature" type="checkbox" value="黄褐色">
No.14 该动物是黄褐色
</td>
<td>
<input type="checkbox" name="feature" value="不会飞">
No.15 该动物不会飞
</td>
</tr>
<tr>
<td>
<input name="feature" type="checkbox" value="有黑色条纹">
No.16 该动物身上有黑色条纹
</td>
<td>
<input name="feature" type="checkbox" value="有长脖子">
No.17该动物有长脖子
</td>
<td>
<input type="checkbox" name="feature" value="会游泳">
No.18该动物会游泳
</td>
</tr>
<tr>
<td>
<input name="feature" type="checkbox" value="有黑白二色">
No.19 该动物有黑白二色
</td>
<td>
<input name="feature" type="checkbox" value="善飞">
No.20 该动物善飞
</td>
</tr>
<tr>
<td>
<input type="submit" value="提交" onclick="check()">
</td>
<td>
<input type="reset" value="重置" onclick="clearRow()">
</td>
</tr>
</table>
<tr>
<td colspan="5">
查询结果为:
</td>
</tr>
<%
if (isFirst == true) {
} else {
if (strResult == true) {
%>
<tr>
<td colspan="5" align="center" bgcolor="#804040" height="50"><%=new String (result.getBytes("ISO-8859-1"),"gb2312")%></td>
</tr>
<%
} else if (strResult == false) {
%>
<tr>
<td colspan="5" align="center" bgcolor="#8080c0" height="50" border="2">未找到匹配的动物
</td>
</tr>
<%
}
}
%>
</form>
<div align="right">
<label style="font-size=20pt;font-weight:bold">作者: 方名
</label>
</body>
</html>
3.界面
3.1动物识别界面:
4.数据
4.1 result
4.2 rule
4.3 tempData
该库为临时库,用于存储页面中所选项.每次选后都会进行更新,图中只是实验条件下的一种情况.
本文档部分内容来源于网络,如有内容侵权请告知删除,感谢您的配合!。

相关文档
最新文档