暨南大学
人工智能实验报告
题 目: 动物识别系统
院 系: 信科院计算机系
专 业:计算机软件与理论
学 号: 0934061004
学生姓名: 张韶远
成 绩:
日期: 20##年11月10日
一、目的与要求
1. 掌握人工智能的知识表示技术,能用产生式表示法表示知识,并实现一个用于识别的专家系统。
2. 推理策略采用正向推理和反向推理两种。
二、主要内容
1. 学习人工智能的知识表示技术,关键掌握产生式知识表示的具体应用方法。
2. 实现的动物识别系统的主要功能如下:
2.1系统能通过正向、反向推理得到正确的动物识别结果。
2.2系统能动态地添加规则、能显示推理过程。
三.实验原理
产生式表示:产生式表示是知识表示的一种。这种方法是建立在因果关系的基础上的,可很容易的描述事实、规则及其不确定性度量。
1.事实的表示:
事实可看成是断言一个语言变量的值或是多个语言变量间的关系的陈述句,语言变量的值或语言变量间的关系可以是一个词。不一定是数字。一般使用三元组(对象,属性,值)或(关系,对象1,对象2)来表示事实,其中对象就是语言变量,若考虑不确定性就成了四元组表示(增加可信度)。这种表示的机器内部实现就是一个表。
如事实“老李年龄是35岁”,便写成(Lee,age,35)
事实“老李、老张是朋友”,可写成(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)读入事实集到工作存储器。
(2)取出某条规则,将规则的全部前件与工作存储器中的所有事实进行比较。如果匹配成功,则所得结果显示到屏幕上,转向(3);否则,直接转向(3)。
(3)结束。
1.1.2删除规则
可以添加新的事实和规则。
1.2性能需求
软件环境
·操作系统:Windows Server 2003; Windows Vista; Windows XP
·开发工具:数据库:SQL Server 2005
2.人工智能技术的应用—动物识别系统的设计与实现
2.1 动物识别系统设计的基本思路
动物识别系统的实质是将人的思维过程转化为计算机语言的逻辑过程,其关键在于知识和信息的表示,智能推理或求解的基础—知识库的创建和管理,以及基于某种知识和信息表示的智能推理或求解过程。
该系统的知识表示采用产生式表示法。产生式系统由条件和规则数据库、控制系统、界面三个部分构成。数据库中规则表、条件表分别对应数据库系统中的动物库表,动物特征询问序列表。动物库表放入推理规则,包括动物的各种属性和所应推出的动物名称。动物特征询问序列表放入要选择的各种动物的属性。
动物识别系统设计主体框架:本系统只用了一个页面实现,界面使用上下结构的框架设计,当用户进入系统的时候,打开Default.aspx,该页面分为上下两个部分,上面的部分是用于根据问题输入动物特征,下面的部分是新规则的加入功能部分,也是用户进行添加新规则的页面,这好似一个导航页面,用户可以更具自己的选择进行的操作,由上至下进入不同的功能部分。各个功能模块的设计:
(1)正向推理鉴别动物:Default.aspx
这个页面中的控件有:一个FormView,其作用是显示系统向用户获得动物特征的询问问题。一个DropDownlist,用于显示与切换第五特征询问的问题。一个Label,用于显示查询结果。一个按钮,用于用户传入查询命令。用户点击查询按钮,button的click事件,在这个事件中,首先定义一个string:result,用来存储最后的输出结果的初始字符串“查询结果是:”然后在后面的查询过程中,如果查询到有新的规则符合要求,就将该规则加到这个string中,当查询结束后,这个字符串中就存放了所有符合用户所选条件的规则,再将这个字符串显示在页面中的textbox中。
(2)添加规则
添加规则页面中的控件有一个Textbox,用于在查找不到规则的时候,用于添加规则的。
2.2动物识别系统的实现
1.开发工具:
SQLserver2005,Visual Studio 20## 设计语言:ASP.NET2.0 , C#
2. 数据库设计思想:
将所有的条件存放在动物特征查询表中,所有的规则存放在动物库表中,在规则表中所有的条件和结论均以编号的形式存放,当要进行查询的时候,从条件表中查到对应标号的条件或者结论,将原来查到的编号替换为文字的条件或者编号。
3.测试及验收
通过测试,用正向推理和反向推理实现动物识别的功能基本实现,效果不错。界面设计的也比较简洁。在调试的时候发现添加规则时候有一些问题,就是用户在选择条件的时候如果已经存在这个基本事实的话,则不应该再添加相同的记录。通过和老师探讨与研究,最终解决了这个问题,即在添加规则前,检查数据库中是否有该规则存在,如没有,再进行规则的添加操作。
五、综合实验总结和结论
1.对人工智能的产生式系统有了进一步的认识,特别是对正向推理和反向推理有更深的了解。
2.本次实验是单独完成的,通过查找资料,最终圆满的完成了实验。这次实验充分培养了我们的独立解决问题的能力。
3.实验的关键是对正向推理算法的掌握和对数据库的设计,由于前期我们花了比较多的时间进行算法的理解和数据库的设计,大量查找资料,因此最终我们能更快更好的完成了实验。
4.通过这次实验,使我们熟悉了软件的开发全程,也更加熟悉了编程工具和编程语言。
5.通过两周的设计与开发,动物识别系统基本开发完毕,但是由于时间较短,所以该系统还有许多不尽如人意的地方,比如没有文档,反向推理出现一些缺陷等问题。因此有待进一步改进。
总的来说,这次实验我们收益颇多,通过这个独立完成的小型项目,培养了我软件开发设计的能力,熟悉了软件开发的过程步骤,加强了团队协作的能力,进一步掌握了运用ASP.NET2.0进行软件开发,熟悉了C#语言。为以后我们进行软件开发奠定了基础。
六、参考文献
[1] 佘玉梅, 段鹏. 人工智能及其应用. 上海交通大学出版社, 20##年4月第一版。
[2] 马少平,朱晓燕。人工智能。清华大学出版社,20##年8月第一版。
[3]李勇平 ASP.NET 2.0(C#)基础教程 清华大学出版社 20##年4月第一版
[4]陆永祯,段慧坤,周芸 SQL Server 2000数据库管理和程序开发一周通 中国铁道出版社 20##年4月第一版
[5]龙马工作室 ASP.NET 2.0+SQL Server 2005从入门到精通通 人民邮电出版社 20##年4月第一版
附录(程序流程图、程序、界面、数据等)
1. 程序流程图
2.部分程序代码:
public partial class _Default : System.Web.UI.Page
{
int j = 0, Num, Number2;
static int [] a = new int[7];
SqlConnection con = new SqlConnection("Server = PC-11; user id = sa;password = 123456;Database = animal;");
protected void Page_Load(object sender, EventArgs e)
{
}
protected void YesOption_CheckedChanged(object sender, EventArgs e)
{
a[Convert.ToInt32(Questionselected.SelectedValue)] = 1;
Questionselected.SelectedIndex++;
YesOption.Checked = false;
}
protected void NoOption_CheckedChanged(object sender, EventArgs e)
{
a[Convert.ToInt32(Questionselected.SelectedValue)] = 0;
Questionselected.SelectedIndex++;
NoOption.Checked = false;
}
protected void HandIn_Click(object sender, EventArgs e)
{
string SeleceString = "select 动物名称 from 动物库 where 会游泳='" + a[0] + "' and 会飞翔='" + a[1] + "' and 吃肉='" + a[2] + "' and 有爪子='" + a[3] + "' and 眼盯前方='" + a[4] + "' and 会下蛋='" + a[5] + "' and 有腿='" + a[6] + "'";
SqlCommand cmd = new SqlCommand ( SeleceString ,con);
con.Open();
SqlDataReader sdr = cmd.ExecuteReader();
if (sdr.Read())
Result.Text = " 查找成功,该动物为 " + sdr.GetString(0);
else
Result.Text = " 查找失败,若要添加该动物请在下面输入动物名称。 ";
con.Close();
}
protected void AddAnimal_Click(object sender, EventArgs e)
{
if (Result.Text == " 查找失败,若要添加该动物请在下面输入动物名称。 ")
{
string FindMaxNumber = "select max(动物序号) from 动物库";
SqlCommand cmd2 = new SqlCommand ( FindMaxNumber ,con);
con.Open();
SqlDataReader sdr2 = cmd2.ExecuteReader();
if (sdr2.Read())
InsertNumber.Text = " " + (sdr2.GetInt32(0)+1);
Number2 = Convert.ToInt32(InsertNumber.Text.Trim());
con.Close();
string AddString = "insert into 动物库(动物序号,动物名称,会游泳,会飞翔,吃肉,有爪子,眼盯前方,会下蛋,有腿)values('" + Number2 +"','" + (GivenName.Text) + "','" + a[0] + "','" + a[1] + "','" + a[2] + "','" + a[3] + "','" + a[4] + "','" + a[5] + "','" + a[6] + "')";
SqlCommand cmd3 = new SqlCommand(AddString, con);
con.Open();
cmd3.ExecuteNonQuery();
con.Close();
}
}
}
3.界面
3.1动物识别界面:
3.2添加规则界面:
4.数据
4.1动物库表
4.2特征询问序列表
第二篇:动物识别系统实验报告
人工智能实验报告
题目:基于web的动物识别系统
院系: 信科院计算机系
日期:20##年10月31日
目 录
1. 实验目的及开发工具.................................................................. 1
2. 实验原理...................................................................................... 1
3. 数据库设计.................................................................................. 1
3.1 数据库设计思想.................................................................. 1
3.2 数据库系统结构.................................................................. 2
4. 系统设计...................................................................................... 2
4.1系统首页............................................................................... 3
4.2 动物识别.............................................................................. 4
4.3 添加规则.............................................................................. 6
4.4 删除规则............................................................................ 10
5. 实验心得.................................................................................... 11
6. 实验总结.................................................................................... 11
1. 实验目的及开发工具
编写一个基于WEB的动物识别系统,实现对动物的识别,理解产生式表达式;熟悉产生式系统的基本过程;熟悉ASP.NET与数据库结合。
本系统采用的开发工具为SQL server 2005,Visual Studio 20## ,程序设计语言为ASP.NET2.0 , C# 。
2. 实验原理
产生式系统是把一组产生式放在一起,并让它们相互配合,协同作用,一个产生式的结论可以供另一个产生式作为已知事实使用,以求得问题的解决。产生式的基本形式为P Q或者if P then Q
产生式规则分析如下:
动物识别系统的部分推理网络
3. 数据库设计
3.1 数据库设计思想
通过以上分析,我们建立了一个DBai数据库,其中存放两张表,分别是条件表Condition和规则表principle。
表1 :条件表Condition
表2:规则表principle
3.2 数据库系统结构
条件表是一个用来存放与求解问题有关的各种当前信息的数据结构。例如问题的初始状态、输入的事实、推理得到的中间结论和最终结论。
规则表是一个用来存放与求解问题有关的所有规则的集合,也称为知识库。它包含了问题从初始状态转换成目标状态所需要的所有变换规则。
在推理过程中,当规则表中某条规则的前提可以和综合数据库中的已知事实相匹配时,该规则被激活。由它推出的结论将被作为新的事实放入数据库,称为后面推理的已知事实。所以数据库系统结构如下:
4. 系统设计
本系统分为三个功能模块,分别是动物识别、添加规则、删除规则。系统实现如下,其中distinguish.aspx实现动物识别;Addrule.aspx实现添加规则;Deleterule.aspx实现删除规则;主页实现为main.aspx和top.aspx;连接数据库调用DBFunction.cs。
4.1系统首页
在浏览器上显示动物识别系统的首页如下图所示。
连接数据库的关键代码:
public DBFunction(DBTransactionType TranType) {
string Constring = "server=sql.w25.vhostgo.com;uid=dbai;pwd=syssys;database=dbai";
_con = new SqlConnection(Constring);
try {
_con.Open();
_cmd = _con.CreateCommand();
if (TranType == DBTransactionType.WithTran){
_tran = _con.BeginTransaction();
_cmd.Transaction = _tran;
}
}
catch (Exception ex){
throw ex;
}
}
4.2 动物识别
单击“动物识别”按钮,页面跳转后可根据条件对动物进行判别,比如选择“有羽毛”,点击“查询”按钮,则系统显示识别的结果,如下图所示:
主要源代码:
using (DBFunction DBfun = new DBFunction(DBTransactionType.NonTran))
{//查询在这次用户选择的所有的规则能够得到的所有的规则,将这些规则的所有结论都放到congditions中,作为其他的条件。
dt = DBfun.ExecforQuery("select * from principle");
int l = 5;
int test = 0;
while (l > 0){
for (i = 0; i < dt.Rows.Count; i++){
string sql_condition_chosen = find_sql(chosen);
DataTable dt_conditions = DBfun.ExecforQuery(sql_condition_chosen);
bool check = true;
for (int j = 1; j < 6; j++){
if (dt.Rows[i][j].ToString() == "")
{ }
else {
if (!is_in(dt.Rows[i][j].ToString().Trim(), dt_conditions))
{
check = false;
break;
}
}
}
if (check == true && rule_is_chosen[i] == false {
test = 1;
string to_exe;
DataTable dt_temp = null;
result += "从 ";
to_exe = string.Format("select * from Condition a,Condition b where a.ConditionID<b.ConditionID and b.ConditionContent='{0}'", dt.Rows[i]["Conclusion"].ToString());
dt_temp = DBfun.ExecforQuery(to_exe);
int number = dt_temp.Rows.Count;
condition_is_chosen[number] = true;
rule_is_chosen[i] = true;
to_exe = string.Format(@"select ConditionContent from Condition where
ConditionID='{0}' or
ConditionID='{1}' or ConditionID='{2}' or ConditionID='{3}' or
ConditionID='{4}'", dt.Rows[i]["Condition1"].ToString(), dt.Rows[i]["Condition2"].ToString(), dt.Rows[i]["Condition3"].ToString(),
dt.Rows[i]["Condition4"].ToString(), dt.Rows[i]["Condition5"].ToString());
dt_temp = DBfun.ExecforQuery(to_exe);
for (int n = 0; n < dt_temp.Rows.Count; n++){
if (n < dt_temp.Rows.Count - 1) {
result += dt_temp.Rows[n]["ConditionContent"].ToString() + "和";
}
else {
result += dt_temp.Rows[n]["ConditionContent"].ToString();
}
}
result += "可以看出,该动物";
to_exe = string.Format(@"select ConditionContent from Condition where ConditionID='{0}'", dt.Rows[i]["Conclusion"].ToString());
dt_temp = DBfun.ExecforQuery(to_exe);
result += dt_temp.Rows[0]["ConditionContent"].ToString() + "\n\n";
rule_is_chosen[i] = true;
string conclu = string.Format("select * from Condition where ConditionID<'{0}'", dt.Rows[i]["Conclusion"].ToString());
dt_temp = DBfun.ExecforQuery(conclu);
int number_of_rule = dt_temp.Rows.Count;
chosen[number_of_rule] = number_of_rule;
}
}
l--;
}
if (test == 0)
result += "从所选条件不能推出任意结论";
}
this.TextBox1.Text = result;
}
4.3 添加规则
如果对规则库进行添加,可单击“添加规则”按钮,输入需要添加的条件和结论即可。
主要源代码:
//添加已经在数据库中的项
for (int j = 0; j < this.CheckBoxList1.Items.Count; j++) {
if (this.CheckBoxList1.Items[j].Selected == true) {
condition[numbers] = Int32.Parse(this.CheckBoxList1.Items[j].Value.ToString());
numbers++;
}
}
//添加用户自己输入的项
using (DBFunction DBfun = new DBFunction(DBTransactionType.WithTran)) { //如果用户填写了这个空并且这个条件不在数据库中,就将它添加到数据库中。
if (this.TextBox1.Text.ToString() != "" && !check(this.TextBox1.Text.ToString(),DBfun)) {
insert = string.Format("insert into Condition(ConditionContent)values ('{0}')", this.TextBox1.Text.ToString());
DBfun.ExecForNonQuery(insert);
}
if (this.TextBox2.Text.ToString() != "" && !check(this.TextBox2.Text.ToString(), DBfun)) {
insert = string.Format("insert into Condition(ConditionContent)values ('{0}')", this.TextBox2.Text.ToString());
DBfun.ExecForNonQuery(insert);
}
if (this.TextBox3.Text.ToString() != "" && !check(this.TextBox3.Text.ToString(), DBfun)) {
insert = string.Format("insert into Condition(ConditionContent)values ('{0}')", this.TextBox3.Text.ToString());
DBfun.ExecForNonQuery(insert);
}
if (this.TextBox4.Text.ToString() != "" && !check(this.TextBox4.Text.ToString(), DBfun)) {
insert = string.Format("insert into Condition(ConditionContent)values ('{0}')", this.TextBox4.Text.ToString());
DBfun.ExecForNonQuery(insert);
}
if (this.TextBox5.Text.ToString() != "" && !check(this.TextBox5.Text.ToString(), DBfun)) {
insert = string.Format("insert into Condition(ConditionContent)values ('{0}')", this.TextBox5.Text.ToString());
DBfun.ExecForNonQuery(insert);
}
if (this.TextBox6.Text.ToString() != "" && !check(this.TextBox6.Text.ToString(), DBfun)){
insert = string.Format("insert into Condition(ConditionContent)values ('{0}')", this.TextBox6.Text.ToString());
DBfun.ExecForNonQuery(insert);
}
if (this.TextBox1.Text.ToString() != "") {
insert = string.Format("select ConditionID from Condition where ConditionContent='{0}'", this.TextBox1.Text.ToString());
dt = DBfun.ExecforQuery(insert);
condition[numbers] = Int32.Parse(dt.Rows[0]["ConditionID"].ToString());
numbers++;
}
if (this.TextBox2.Text.ToString() != "") {
insert = string.Format("select ConditionID from Condition where ConditionContent='{0}'", this.TextBox2.Text.ToString());
dt = DBfun.ExecforQuery(insert);
condition[numbers] = Int32.Parse(dt.Rows[0]["ConditionID"].ToString());
numbers++;
}
if (this.TextBox3.Text.ToString() != ""){
insert = string.Format("select ConditionID from Condition where ConditionContent='{0}'", this.TextBox3.Text.ToString());
dt = DBfun.ExecforQuery(insert);
condition[numbers] = Int32.Parse(dt.Rows[0]["ConditionID"].ToString());
numbers++;
}
if (this.TextBox4.Text.ToString() != "") {
insert = string.Format("select ConditionID from Condition where ConditionContent='{0}'", this.TextBox4.Text.ToString());
dt = DBfun.ExecforQuery(insert);
condition[numbers] = Int32.Parse(dt.Rows[0]["ConditionID"].ToString());
numbers++;
}
if (this.TextBox5.Text.ToString() != "") {
insert = string.Format("select ConditionID from Condition where ConditionContent='{0}'", this.TextBox5.Text.ToString());
dt = DBfun.ExecforQuery(insert);
condition[numbers] = Int32.Parse(dt.Rows[0]["ConditionID"].ToString());
numbers++;
}
int position = -1;
if (numbers>0 && numbers <= 5) {
string sql_insert = "insert into principle(Condition1,Condition2,Condition3,Condition4,Condition5,Conclusion)values(";
while (condition[position + 1] != -1){
sql_insert += condition[position + 1].ToString() + ",";
position++;
}
for (int pos = position + 1; pos < 5; pos++) {
sql_insert += "NULL,";
}
insert = string.Format("select ConditionID from Condition where ConditionContent='{0}'", this.TextBox6.Text.ToString());
dt = DBfun.ExecforQuery(insert);
sql_insert += Int32.Parse(dt.Rows[0]["ConditionID"].ToString()) + ")";
DBfun.ExecForNonQuery(sql_insert);
this.Literal1.Text = "操作成功";
}
else if(numbers>5) {
this.Literal1.Text="不能选择超过5个条件";
}
else if (numbers == 0){
this.Literal1.Text = "至少要有一个前件";
}
}
}
else {
this.Literal1.Text = "不能没有结论";
}
}
4.4 删除规则
单击“删除规则”按钮,可实现对规则的删除操作。
主要源代码:
protected void Button1_Click(object sender, EventArgs e)
{
int a = this.GridView1.SelectedIndex;
int rule_id_to_deletel;
using (DBFunction Dbfun = new DBFunction(DBTransactionType.NonTran))
{
DataTable dt = Dbfun.ExecforQuery("select * from principle");
rule_id_to_deletel = Convert.ToInt32(dt.Rows[a]["RuleID"].ToString());
Dbfun.ExecForNonQuery(string.Format("delete from principle where RuleID='{0}'", rule_id_to_deletel));
}
Response.Redirect("Deleterule.aspx");
}
5. 实验心得
甘庆晴:通过本次实验,我掌握了人工智能的产生式表达式,熟悉产生式系统的基本过程。小组分工后我主要负责数据库设计部分,通过构建条件表和规则表,实现对动物识别系统的数据管理和调用,掌握了SQL server 2005的基本使用。实验中遇到的问题我能通过查阅资料去解决。同时,这次实验加强了我的团队协作能力,在我们小组的共同努力下实现了动物识别系统。
郭彩云:本次实验,我们基本实现了基于WEB的动物识别系统的三大功能,即识别动物,添加规则和删除规则。其中我主要负责开发环境的搭建和界面的设计。开发环境的搭建的难点主要是VS连接SQL 2005数据库。界面设计的难点在于对界面的布局与美化。为突显本系统的特色,符合动物识别系统的风格,我们利用ps工具对图片进行了美化加工。
总之,通过本次实验,锻炼了我分析问题和解决问题的能力,在界面设计中,我需要不断地进行调整,也锻炼了我的恒心与耐力。整个系统是在我们小组的努力下完成的,因此也锻炼了我团队协作的能力。
陈玲:本次实验,我负责具体功能的实现。通过产生式的正向推理的原则,VS和数据库的交互性操作,我们开发了一个动物识别系统。从中我学习了很多实际开发所需的知识。美中不足的是,我认为该系统还不够智能,如果能让系统有自学习的功能就更完善了,系统和用户可通过一问一答的方式推导出用户所想的动物。但由于时间和能力有限,这个设想未能实现,本人也还在不断的学习当中。
6. 实验总结
本次实验是在我们小组的共同努力下完成的,我们熟悉了SQL server 2005的基本使用,并理解了产生式表达式,对人工智能的产生式系统有了进一步的认识,加强了团队协作的能力,能熟练地运用ASP.NET进行软件开发,熟悉了C#语言,为以后的软件开发奠定了基础。
实验中,我们也遇到了一些问题,但是通过查阅书本和网络,最终这些问题都得到解决。由于时间限制,系统目前只实现了部分动物识别,有不足的地方还望老师指导。