动物识别系统实验报告_第1页
动物识别系统实验报告_第2页
动物识别系统实验报告_第3页
动物识别系统实验报告_第4页
动物识别系统实验报告_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

人工智能实验报告题目:基于web的动物识别系统院系:信科院计算机系日期:2013年10月31日目录TOC\o"1-3"\h\u38471.实验目的及开发工具 .实验目的及开发工具编写一个基于WEB的动物识别系统,实现对动物的识别,理解产生式表达式;熟悉产生式系统的基本过程;熟悉ASP.NET与数据库结合。本系统采用的开发工具为SQLserver2005,VisualStudio2008,程序设计语言为ASP.NET2.0,C#。实验原理产生式系统是把一组产生式放在一起,并让它们相互配合,协同作用,一个产生式的结论可以供另一个产生式作为已知事实使用,以求得问题的解决。产生式的基本形式为PQ或者ifPthenQ产生式规则分析如下:动物识别系统的部分推理网络3.数据库设计3.1数据库设计思想通过以上分析,我们建立了一个DBai数据库,其中存放两张表,分别是条件表Condition和规则表principle。表1:条件表Condition项目名数据结构说明ConditionIDInt编号,主键ConditionContentVarchar(20)条件内容表2:规则表principle项目名数据结构说明RuleIDInt编号,主键Condition1Int条件1编号Condition2Int条件2编号Condition3Int条件3编号Condition4Int条件4编号Condition5Int条件5编号ConclusionInt结论3.2数据库系统结构条件表是一个用来存放与求解问题有关的各种当前信息的数据结构。例如问题的初始状态、输入的事实、推理得到的中间结论和最终结论。规则表是一个用来存放与求解问题有关的所有规则的集合,也称为知识库。它包含了问题从初始状态转换成目标状态所需要的所有变换规则。在推理过程中,当规则表中某条规则的前提可以和综合数据库中的已知事实相匹配时,该规则被激活。由它推出的结论将被作为新的事实放入数据库,称为后面推理的已知事实。所以数据库系统结构如下:条件表规则表数据库4.系统设计本系统分为三个功能模块,分别是动物识别、添加规则、删除规则。系统实现如下,其中distinguish.aspx实现动物识别;Addrule.aspx实现添加规则;Deleterule.aspx实现删除规则;主页实现为main.aspx和top.aspx;连接数据库调用DBFunction.cs。4.1系统首页在浏览器上显示动物识别系统的首页如下图所示。连接数据库的关键代码:publicDBFunction(DBTransactionTypeTranType){

stringConstring="server=;uid=dbai;pwd=syssys;database=dbai";

_con=newSqlConnection(Constring);

try{

_con.Open();

_cmd=_con.CreateCommand();

if(TranType==DBTransactionType.WithTran){

_tran=_con.BeginTransaction();

_cmd.Transaction=_tran;

}

}

catch(Exceptionex){

throwex;

}

}4.2动物识别单击“动物识别”按钮,页面跳转后可根据条件对动物进行判别,比如选择“有羽毛”,点击“查询”按钮,则系统显示识别的结果,如下图所示:主要源代码:using(DBFunctionDBfun=newDBFunction(DBTransactionType.NonTran))

{//查询在这次用户选择的所有的规则能够得到的所有的规则,将这些规则的所有结论都放到congditions中,作为其他的条件。

dt=DBfun.ExecforQuery("select*fromprinciple");

intl=5;

inttest=0;

while(l>0){

for(i=0;i<dt.Rows.Count;i++){

stringsql_condition_chosen=find_sql(chosen);

DataTabledt_conditions=DBfun.ExecforQuery(sql_condition_chosen);

boolcheck=true;

for(intj=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;

stringto_exe;

DataTabledt_temp=null;

result+="从";

to_exe=string.Format("select*fromConditiona,Conditionbwherea.ConditionID<b.ConditionIDandb.ConditionContent='{0}'",dt.Rows[i]["Conclusion"].ToString());

dt_temp=DBfun.ExecforQuery(to_exe);

intnumber=dt_temp.Rows.Count;

condition_is_chosen[number]=true;

rule_is_chosen[i]=true;

to_exe=string.Format(@"selectConditionContentfromConditionwhere

ConditionID='{0}'orConditionID='{1}'orConditionID='{2}'orConditionID='{3}'orConditionID='{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(intn=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(@"selectConditionContentfromConditionwhereConditionID='{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;

stringconclu=string.Format("select*fromConditionwhereConditionID<'{0}'",dt.Rows[i]["Conclusion"].ToString());

dt_temp=DBfun.ExecforQuery(conclu);

intnumber_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(intj=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(DBFunctionDBfun=newDBFunction(DBTransactionType.WithTran)){//如果用户填写了这个空并且这个条件不在数据库中,就将它添加到数据库中。if(this.TextBox1.Text.ToString()!=""&&!check(this.TextBox1.Text.ToString(),DBfun)){insert=string.Format("insertintoCondition(ConditionContent)values('{0}')",this.TextBox1.Text.ToString());DBfun.ExecForNonQuery(insert);}if(this.TextBox2.Text.ToString()!=""&&!check(this.TextBox2.Text.ToString(),DBfun)){insert=string.Format("insertintoCondition(ConditionContent)values('{0}')",this.TextBox2.Text.ToString());DBfun.ExecForNonQuery(insert);}if(this.TextBox3.Text.ToString()!=""&&!check(this.TextBox3.Text.ToString(),DBfun)){insert=string.Format("insertintoCondition(ConditionContent)values('{0}')",this.TextBox3.Text.ToString());DBfun.ExecForNonQuery(insert);}if(this.TextBox4.Text.ToString()!=""&&!check(this.TextBox4.Text.ToString(),DBfun)){insert=string.Format("insertintoCondition(ConditionContent)values('{0}')",this.TextBox4.Text.ToString());DBfun.ExecForNonQuery(insert);}if(this.TextBox5.Text.ToString()!=""&&!check(this.TextBox5.Text.ToString(),DBfun)){insert=string.Format("insertintoCondition(ConditionContent)values('{0}')",this.TextBox5.Text.ToString());DBfun.ExecForNonQuery(insert);}if(this.TextBox6.Text.ToString()!=""&&!check(this.TextBox6.Text.ToString(),DBfun)){insert=string.Format("insertintoCondition(ConditionContent)values('{0}')",this.TextBox6.Text.ToString());DBfun.ExecForNonQuery(insert);}if(this.TextBox1.Text.ToString()!=""){insert=string.Format("selectConditionIDfromConditionwhereConditionContent='{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("selectConditionIDfromConditionwhereConditionContent='{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("selectConditionIDfromConditionwhereConditionContent='{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("selectConditionIDfromConditionwhereConditionContent='{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("selectConditionIDfromConditionwhereConditionContent='{0}'",this.TextBox5.Text.ToString());dt=DBfun.ExecforQuery(insert);condition[numbers]=Int32.Parse(dt.Rows[0]["ConditionID"].ToString());numbers++;}intposition=-1;if(numbers>0&&numbers<=5){stringsql_insert="insertintoprinciple(Condition1,Condition2,Condition3,Condition4,Condition5,Conclusion)values(";while(condition[position+1]!=-1){sql_insert+=condition[position+1].ToString()+",";position++;}for(intpos=position+1;pos<5;pos++){sql_insert+="NULL,";}insert=string.Format("selectConditionIDfromConditionwhereConditionContent='{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="操作成功";}elseif(numbers>5){this.Literal1.Text="不能选择超过5个条件";}elseif(numbers==0){this.Literal1.Text="至少要有一个前件";}}}else{this.Literal1.Text="不能没有结论";}} 4.4删除规则单击“删除规则”按钮,可实现对规则的删除操作。主要源代码:protectedvoidButton1_Click(objectsender,EventArgse)

{

inta=this.GridView1.SelectedInd

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论