基于WEB的动物识别系统 实验报告

合集下载

基于WSN的动物监测平台的应用研究

基于WSN的动物监测平台的应用研究

基于W S N的动物监测平台的应用研究林惠强1,周佩娇2,刘财兴1(1.华南农业大学信息学院,广州 510642; 2.南沙区畜牧服务中心,广州 511458)摘 要:传感器网络是计算机科学技术的一个新的研究领域,具有十分广阔的应用前景,引起了学术界和农工业界的高度重视。

为此,针对目前饲养场对动物的行为特征和健康状况无法实时获取的情况,提出在畜牧业中利用无线传感网络传送动物的信息,解决了饲养动物生理特征信息实时传输的问题。

同时,根据饲养场的实际情况,结合无线传感网络的特点,设计了一个切实可行的无线传感器网络动物检测系统,系统解决了网络部署、节点设计、节点定位、路由和可视化平台的设计等问题。

关键词:检测平台;无线传感网络;数据传输;畜牧业中图分类号:S126 文献标识码:A文章编号:1003-188X(2009)01-0193-030 引言无线传感器网络(W S N)技术是我国中长期发展规划中的重点发展方向之一,作为一种新型无线网络,正成为国际上近年来研究热点[1]。

其中畜牧业作为无线传感器网络应用的重要领域,目前还没有得到应有的重视[2]。

而随着人们消费需求的增长,市场竞争不断加剧,饲养场面临来自国际贸易、环境保护、市场需求等各方面的压力,同时猪和牛饲养中的牲畜口蹄疫、疯牛病和猪瘟等重大动物疾病时有发生,如何利用科技技术提高生产水平和科学饲养是养殖场面临的重要问题。

能否对饲养对象的实时健康状况监测及在疫情发生、发生疾病或发情等特殊情况下及时采取相应措施,是个挑战的事情[3]。

传统饲养场人工获取畜养动物生理数据的方法已经相对落后,其及时性、长期性、方便性及多样性等方面都处在较低水平,这些都减弱了饲养场的信息化水平和竞争力,急需使用先进的智能化信息获取技术来提供方便的畜养动物健康监测数字化平台。

为此,本文利用无线传感器网络自动、实时地监测动物的行踪和健康,特别是实时获取用人工不能或不便获取的生理数据,为进一步建立科研人员急需的数据库和统计分析建立基础,从而对动物的发情、疾病、疫情等进行监控和预警。

简单动物识别系统的知识表示实验报告

简单动物识别系统的知识表示实验报告

简单动物识别系统的知识表示实验报告一、实验目的:1、理解和掌握产生式知识表示方法。

2、能够用选定的编程语言实现产生式系统的规则库。

二、实验内容和要求:1、以动物识别系统的产生式规则为例。

2、用选定的编程语言建造规则库和综合数据库,并能对它们进行增加、删除和修改操作。

三、实验步骤:1、确定需要识别的动物及其属性:本次实验的简单动物识别系统总共能识别7种动物,即:老虎、金钱豹、斑马、长颈鹿、企鹅、鸵鸟、信天翁。

2、建立识别七种动物识别系统的规则:由于实验要求系统的规则库和综合数据库能够进行增加、删除和修改操作,因此可以采取逐步添加条件,压缩范围的方法进行识别,即:先跟据一些动物的共性进行大致分类,然后在添加约束条件,将范围缩小,直到能够识别出每一种不同的动物为止。

这样,我们在需要添加识别其他动物的功能时,只需要添加那些动物的个性方面的信息即可,这样也可以简化系统的结构和内容。

识别老虎、金钱豹、斑马、长颈鹿、企鹅、鸵鸟、信天翁这7种动物的简单动物识别系统规则一共可以写成以下15条:Rule1:IF 该动物有毛发 THEN 该动物是哺乳动物Rule2:IF 该动物有奶 THEN 该动物是哺乳动物Rule3:IF 该动物有羽毛 THEN 该动物是鸟Rule4:IF 该动物会飞 AND 会下蛋 THEN该动物是鸟Rule5:IF 该动物吃肉 THEN 该动物是肉食动物Rule6:IF 该动物有犬齿 AND 有爪 AND 眼盯前方 THEN该动物是肉食动物Rule7:IF 该动物是哺乳动物 AND 有蹄 THEN 该动物是有蹄类动物Rule8:IF 该动物是哺乳动物 AND 是嚼反刍动物 THEN 该动物是有蹄类动物Rule9:IF 该动物是哺乳动物 AND 是肉食动物 AND 是黄褐色AND 身上有暗斑点THEN该动物是金钱豹Rule10:IF 该动物是哺乳动物 AND 是肉食动物 AND 是黄褐色AND 身上有黑色条纹 THEN 该动物是老虎Rule11:IF 该动物是有蹄类动物 AND 有长脖子 AND 有长腿 AND 身上有暗斑点 THEN 该动物是有长颈鹿Rule12:IF 该动物是有蹄类动物 AND 身上有黑色条纹 THEN 该动物是斑马Rule13:IF 该动物是鸟 AND 有长脖子 AND 有长腿 AND不会飞 THEN 该动物是鸵鸟Rule14:IF 该动物是鸟 AND 会游泳 AND 有黑白二色 AND不会飞THEN 该动物是企鹅Rule15:IF 该动物是鸟 AND 善飞 THEN 该动物是信天翁三、选定编程语言并确定综合数据库和规则库结构:(1)选用C语言作为编程语言(2)综合数据库的建立:用C程序写出综合数据库的代码:char*str{"有毛发","有奶","有羽毛","有犬齿","有暗斑点","有黑色条纹","有蹄","有长脖子","有长腿","有爪","有黑白两色","是黄褐色"," 会游泳","会下蛋","会飞","善飞","不会飞","眼盯前方","吃肉","哺乳动物","嚼反刍动物","肉食动物","有蹄类动物","鸟","老虎","金钱豹","斑马","长颈鹿","企鹅","鸵鸟","信天翁",0}(3)规则库的建立:为了简化数据结构,将综合数据库中的事实全部用序号来表示,共有31个事实,编号依次为1到31。

动物识别系统实验报告

动物识别系统实验报告
{
stringFindMaxNumber ="select max(动物序号) from动物库";
SqlCommandcmd2 =newSqlCommand( FindMaxNumber ,con);
1.1功能需求
1.1.1动物识别正向推理
正向推理是从已知事实出发,通过规则库求的结论,也称为自底向上,或称为数据驱动方式。
正向推理过程的具体步骤是:
(1)读入事实集到工作存储器。
(2)取出某条规则,将规则的全部前件与工作存储器中的所有事实进行比较。如果匹配成功,则所得结果显示到屏幕上,转向(3);否则,直接转向(3)。
动物识别系统设计主体框架:本系统只用了一个页面实现,界面使用上下结构的框架设计,当用户进入系统的时候,打开Default.aspx,该页面分为上下两个部分,上面的部分是用于根据问题输入动物特征,下面的部分是新规则的加入功能部分,也是用户进行添加新规则的页面,这好似一个导航页面,用户可以更具自己的选择进行的操作,由上至下进入不同的功能部分。各个功能模块的设计:
staticint[] a =newint[7];
SqlConnectioncon =newSqlConnection("Server = PC-11; user id = sa;password = ;Database = animal;");
protectedvoidPage_Load(objectsender,EventArgse)
YesOption.Checked =false;
}
protectedvoidNoOption_CheckedChanged(objectsender,EventArgse)
{
a[Convert.ToInt32(Questionselected.SelectedValue)] = 0;

动物识别系统实验报告

动物识别系统实验报告
if (this.CheckBoxList1.Items[j].Selected == true) {
condition[numbers] = Int32.Parse(this.CheckBoxList1.Items[j].Value.ToString());
numbers++;
}
}
//添加用户自己输入的项
在推理过程中,当规则表中某条规则的前提可以和综合数据库中的已知事实相匹配时,该规则被激活。由它推出的结论将被作为新的事实放入数据库,称为后面推理的已知事实。所以数据库系统结构如下:
4. 系统设计
本系统分为三个功能模块,分别是动物识别、添加规则、删除规则。系统实现如下,其中distinguish.aspx实现动物识别;Addrule.aspx实现添加规则;Deleterule.aspx实现删除规则;主页实现为main.aspx和top.aspx;连接数据库调用DBFunction.cs。
using (DBFunction DBfun = new DBFunction(DBTransactionType.WithTran)) { //如果用户填写了这个空并且这个条件不在数据库中,就将它添加到数据库中。
if (this.TextBox1.Text.ToString() != "" && !check(this.TextBox1.Text.ToString(),DBfun)) {
bool check = true;
for (int j = 1; j < 6; j++){
if (dt.Rows[i][j].ToString() == "")
{ }
else{

动物识别专家系统实验报告

动物识别专家系统实验报告

题目:动物识别专家系统一.实验目的理解和掌握产生式只是表示方法,能够用选定的编程语言实现产生式系统的规则库。

二.实验内容(1)以动物识别系统的产生式规则为例。

(2)用选定的编程语言建造规则库和综合数据库,并能对它们进行增加、删除和修改操作。

三.实验原理动物识别专家系统是流行的专家系统实验模型,它用产生式r来表示知识,共15条r、可以识别七种动物,这些r既少又简单,可以改造他们,也可以加进新的r,还可以用来识别其他东西的新r来取代这些r。

动物识别15条r:r1:IF 动物有毛发THEN 该动物是哺乳动物r2: IF 动物能产奶THEN该单位是哺乳动物r3: IF 该动物有羽毛THEN该动物是鸟r4: IF动物会飞AND会下蛋THEN该动物是鸟r5: IF动物吃肉THEN该动物是肉食动物r6: IF动物有犬齿AND有爪AND眼盯前方THEN该动物是食肉动物r7: IF动物是哺乳动物AND有蹄THEN该动物是有蹄动物r8: IF动物是哺乳动物AND是反刍动物THEN该动物是有蹄动物r9: IF动物是哺乳动物AND是食肉动物AND是黄褐色的AND有暗斑点THEN该动物是豹r10:IF动物是黄褐色的AND 是哺乳动物AND 是食肉AND 有黑条纹THEN该动物是虎r11:IF动物有暗斑点AND 有长腿AND 有长脖子AND 是有蹄类THEN该动物是长颈鹿r12:IF动物有黑条纹AND 是有蹄类动物THEN该动物是斑马r13:IF动物有长腿AND 有长脖子AND 是黑色的AND 是鸟AND 不会飞THEN该动物是鸵鸟r14:IF动物是鸟AND 不会飞AND 会游泳AND 是黑色的THEN该动物是企鹅r15:IF动物是鸟AND 善飞THEN该动物是信天翁四.推理树部分推理树如下:五.代码程序是用java编写的规则对象代码:public class Rule {private ArrayList<Integer> premise = new ArrayList<Integer>();private int result;public void addPremise(int item) { premise.add(item);}public int size() {return premise.size();}public int getPremiseAt(int index) {return premise.get(index);}public void setResult(int result) {this.result = result;}public int getResult() {return result;}}规则库代码如下:public class RuleBase {private ArrayList<Rule> rules= new ArrayList<Rule>();public int size() {return rules.size();}public RuleBase() {init();}public void addRule(Rule rule) {rules.add(rule);}public Rule getRuleAt(int index) {return rules.get(index);}public void init() {Rule rule1 = new Rule();rule1.addPremise(0); rule1.setResult(20);rules.add(rule1);Rule rule2 = new Rule();rule2.addPremise(1); rule2.setResult(20);rules.add(rule2);Rule rule3 = new Rule();rule3.addPremise(2); rule3.setResult(21);rules.add(rule3);Rule rule4 = new Rule();rule4.addPremise(3); rule4.addPremise(13); rule4.setResult(21);rules.add(rule4);Rule rule5 = new Rule();rule5.addPremise(19); rule5.setResult(22);rules.add(rule5);Rule rule6 = new Rule();rule6.addPremise(4); rule6.addPremise(15); rule6.addPremise(12); rule6.setResult(22);rules.add(rule6);Rule rule7 = new Rule();rule7.addPremise(20); rule7.addPremise(9); rule7.setResult(23);rules.add(rule7);Rule rule8 = new Rule();rule8.addPremise(20); rule8.addPremise(18); rule8.setResult(23);rules.add(rule8);Rule rule9 = new Rule();rule9.addPremise(20); rule9.addPremise(22); rule9.addPremise(14); rule9.addPremise(11);rule9.setResult(24);rules.add(rule9);Rule rule10 = new Rule();rule10.addPremise(20); rule10.addPremise(22); rule10.addPremise(11); rule10.addPremise(5);rule10.setResult(25);rules.add(rule10);Rule rule11 = new Rule();rule11.addPremise(23); rule11.addPremise(6); rule11.addPremise(7); rule11.addPremise(14);rule11.setResult(30);Rule rule12 = new Rule();rule12.addPremise(23); rule12.addPremise(5); rule12.setResult(26);rules.add(rule12);Rule rule13 = new Rule();rule13.addPremise(21); rule13.addPremise(6); rule13.addPremise(17); rule13.addPremise(7);rule13.setResult(27);rules.add(rule13);Rule rule14 = new Rule();rule14.addPremise(21); rule14.addPremise(10); rule14.addPremise(17); rule14.addPremise(8);rule14.setResult(28);rules.add(rule14);Rule rule15 = new Rule();rule15.addPremise(21); rule15.addPremise(16); rule15.setResult(29);}}综合数据库代码如下:public class Database {ArrayList<Integer> db = new ArrayList<Integer>();public void addFact(int item) {db.add(item);}public boolean contains(int item) {return db.contains(item);}}控制系统代码如下:public class Machine {public static String inference(Database db) { RuleBase ruleBase = new RuleBase();int result = 0;for (int i = 0; i < ruleBase.size(); i++) { int size = ruleBase.getRuleAt(i).size();boolean flag = true;for (int j = 0; j < size; j++) {if(!db.contains(ruleBase.getRuleAt(i).getPremiseAt(j))) { flag = false;break;}}if (flag) {int fact = ruleBase.getRuleAt(i).getResult();db.addFact(fact);if (fact >= 24) {result = fact;break;}}}switch (result) {case 24:return"金钱豹";case 25:return"老虎";case 26:return"斑马";case 27:return"鸵鸟";case 28:return"企鹅";case 29:return"信天翁";case 30:return"长颈鹿";default:return"不存在";}}}六.截图七.感想通过这次课程设计我对专业课的学习有了更加深刻的认识,让我知道了学无止境的道理。

动物识别系统实验报告

动物识别系统实验报告

暨南大学人工智能实验报告题目:基于web的动物识别系统院系:信科院计算机系专业:计算机技术学号:27学生姓名: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。

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

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

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

人工智能课程设计报告--动物识别系统

人工智能课程设计报告--动物识别系统

文档从互联网中收集,已重新修正排版,word格式支持编辑,如有帮助欢迎下载支持。

计算机科学与技术学院《人工智能》课程设计报告设计题目:动物识别系统设计人员:学号:学号:学号:学号:学号:学号:指导教师:2015年7月目录目录 (1)摘要 (2)Abstract (2)一、专家系统基本知识 (3)1.1专家系统实际应用 (3)1.2专家系统的开发 (3)二、设计基本思路 (4)2.1知识库 (4)....................................................................................................... 错误!未定义书签。

2.1.2 知识库建立 (4)2.1.3 知识库获取 (5)2.2 数据库 (6)....................................................................................................... 错误!未定义书签。

....................................................................................................... 错误!未定义书签。

三、推理机构 (7)3.1推理机介绍 (7)3.1.1 推理机作用原理 (7)....................................................................................................... 错误!未定义书签。

3.2 正向推理 (7)3.2.1 正向推理基本思想 (7)3.2.2 正向推理示意图 (8)3.2.3 正向推理机所要具有功能 (8)3.3反向推理 (8)....................................................................................................... 错误!未定义书签。

动物识别系统

动物识别系统

学生实验报告实验课名称:人工智能实验项目名称:产生式系统实验专业名称:计算机科学与技术班级: 2012240201学号: 12学生姓名:雷彬教师姓名:陈亮亮2014年12 月10 日实验日期:2012 年12 月10 日实验室名称:明远2202首先给定初始事实,将初始事实放入动态数组中,并用初始事实与15条规则进行匹配,如果规则匹配成功,将规则的后件存入数组中,再用数组中所有的元素与规则进行匹配,满足即加入数组,直到匹配出动物。

如果给定初始事实能推出多种动物,按照数组中条件的先后顺序,顺序循环匹配规则,先匹配出哪种动物就显示该动物。

五.源程序:// MFC_AnimalDlg.cpp : 实现文件#include"stdafx.h"#include"MFC_Animal.h"#include"MFC_AnimalDlg.h"#include"afxdialogex.h"#ifdef_DEBUG#define new DEBUG_NEW#endif// 用于应用程序“关于”菜单项的 CAboutDlg 对话框class CAboutDlg : public CDialogEx{public:CAboutDlg();// 对话框数据enum { IDD = IDD_ABOUTBOX };protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持// 实现protected:DECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD){}void CAboutDlg::DoDataExchange(CDataExchange* pDX){CDialogEx::DoDataExchange(pDX);}BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)END_MESSAGE_MAP()// CMFC_AnimalDlg 对话框CMFC_AnimalDlg::CMFC_AnimalDlg(CWnd* pParent/*=NULL*/) : CDialogEx(CMFC_AnimalDlg::IDD, pParent){m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}void CMFC_AnimalDlg::DoDataExchange(CDataExchange* pDX){CDialogEx::DoDataExchange(pDX);DDX_Control(pDX, IDC_COMBO1, m_point1);DDX_Control(pDX, IDC_COMBO4, m_point2);DDX_Control(pDX, IDC_COMBO5, m_point3);DDX_Control(pDX, IDC_COMBO6, m_point4);DDX_Control(pDX, IDC_COMBO7, m_point5);DDX_Control(pDX, IDC_COMBO8, m_point6);DDX_Control(pDX, IDC_COMBO9, m_point7);}BEGIN_MESSAGE_MAP(CMFC_AnimalDlg, CDialogEx)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON2, &CMFC_AnimalDlg::OnClickedButton2) ON_BN_CLICKED(IDC_BUTTON1, &CMFC_AnimalDlg::OnClickedButton1) END_MESSAGE_MAP()// CMFC_AnimalDlg 消息处理程序BOOL CMFC_AnimalDlg::OnInitDialog(){CDialogEx::OnInitDialog();// 将“关于...”菜单项添加到系统菜单中。

动物识别系统实验报告

动物识别系统实验报告

人工智能实验报告二班级:XXXX 姓名:XXXX 学号:XXXXX 一.实验目的1. 理解并掌握基于规则系统的表示与推理。

2. 学会编写小型的产生式系统,理解正向推理和反向推理的过3. 程以及两者的差别。

4. 学会设计简单的人机交互界面。

二.实验预习内容及实验环境:1. 了解动物识别系统问题;2. 产生式系统的组成部分,正向推理,逆向推理的算法和产生式系统的类型。

三、实验内容和步骤:1.内容:结合第五章内容,以动物识别系统(或货物袋装系统)为例,实现基于规则的系统构造实验。

2.要求:1>结果显示要求(1)有若干选择动物特征的选择列表;(2)表现判断动物时,使用了哪些规则;(3)表现数据库的变化;(正向推理中表现每使用一次规则后,产生新事实。

反向推理中表现新的目标事实有哪些需要证明,哪些已经得到证实);(4)显示规则的调用次序;(5)显示最后的结果,包含动物能识别出来和动物不能识别出来两种情况。

(6)至少检查两个例子实现正向推理和反向推理的区别;老虎的例子如上所示,以下为金钱豹的例子:正向推理:反向推理:2>指出综合数据库和规则库分别使用哪些函数实现的?综合数据库和规则库均采用数组完成。

其中的综合数据库为一个string类型的数组,内容为事实的名称字符串,下标则为该事实的序号。

数组长度为33,表示共有33个事实(最后7个为动物名称)。

代码如下:string facts[factnum]={"有爪","有犬齿","有奶","有毛发","目视前方","吃肉","有蹄","有羽毛","会飞","生蛋","不会飞","黑白色","会游泳","善飞","不怕风浪","长腿","长脖子","有暗斑点","白色","黑色斑点","黑色条纹","黄褐色","食肉动物","鸟","哺乳动物","有蹄动物","老虎","金钱豹","长颈鹿","斑马","鸵鸟","企鹅","海燕"};规则库为一个结构体数组。

报告_基于产生式系统的动物识别系统

报告_基于产生式系统的动物识别系统

实验基于产生式系统的动物识别系统知识表示与推理专题魏江200620108203 计算机系统结构专业(1班)正向推理是产生式系统的一种推理方法,它是从一组表示事实的谓词或命题出发,使用一组产生式规则,用以证明该谓词公式或命题是否成立.本实验用两种方法实现了一个简单的动物识别系统.一、实验目的1.熟悉和掌握产生式系统的运行机制,2.掌握基于产生式系统的正向推理的基本方法。

3.简要比较两种实现方式的异同二、实验内容1. 能根据输入的动物特征判断是那种动物或给出相应的回答. (第一种方法)2. 如果根据初始输入的动物特征不能判断,则可以动态增加新事实(即动物特征)来判断属于那种动物. (第一种方法)3. 可根据提示选择所要识别的动物是否具有该特征.(第二种方法)三、算法设计编程语言与编程环境: C++,VC6.0下面用第一种方法简要说明算法的设计过程.首先建立了一个animal_identifier的类.该类包含的属性有:f和r. f指针指向事实集,r指向规则集.包括的关键成员函数有:Creat_Rules(),Creat_Fact(), reason().1 建立静态规则库.即建立产生式规则.本算法采用了产生中间事实的方法,这样做的优点是涉及到的规则少,容易理解,便于建立和使用规则.为了便于设计,我们把要识别的动物限于7种,这样所需要的产生式规则就比较少.本算法总共有16种规则,部分规则如下:R1:如果某动物有毛发则该动物是哺乳动物R2:如果某动物有奶则该动物是哺乳动物R3:如果某动物有羽毛则该动物是鸟R4:如果某动物会飞,且下蛋则该动物是鸟R5:如果某动物吃肉则该动物是食肉动物R6:如果某动物有锋利的牙齿,且有爪,且眼睛盯着前方则该动物是食肉动物R7:如果某动物是哺乳动物,且有蹄则该动物是有蹄类哺乳动物……………..R16: 如果反刍则哺乳动物上述规则库由类animal_identifierd的方法Creat_rules()静态实现.2 建立事实库建立事实库是由方法Creat_Fact()实现的.该方法要求用户动态输入事实,即要求用户先输入特征个数,然后输入动物的特征,如果未识别出来,用户可以增加输入,或者退出.3 正向推理过程.正向推理是从已知事实出发,通过规则库求得结论,或称数据驱动方式。

动物识别专家系统实验报告

动物识别专家系统实验报告

人工智能实验报告实验记录首先运行程序会出项上图界面,该界面显示了当前所有的动物,并且提出问题,用户可以根据问题进行选择,看到自己想要的动物。

对于每一个问题,都只能是真或者是假,因此在后续增加问题的时候也要注意。

其实可以有多种情况,但是要进行扩展,所以本实验没有增加该功能。

该系统中有不同的问题,根据问题的提示可以对现有的动物进行筛选,并且提出下一个问题,并使得提问的次数最少。

通过上面可以看出当生育方式是胎生的时候,那么就在哺乳动物中进行选择,哺乳动物中只有老虎是独居的,所以提问的时候就选择该问题。

这样提问两次就可以得出结论。

而当生育方式不是胎生的时候,就只有一个鸟类,所以可以直接获得结论。

for(int i=0;i<anc;i++){if(a[i]==1){if(an[i].flag[count]!=anser){a[i]=0;}}}代码分析:在回答一个问题之后,在剩下的动物判断提问的属性是否满足,如果满足,那么就留下;如果不满足,那么去除。

如上左所示,在增加了该动物之后,我们可以在下次提问的时候看到系统中的记录增加,并且可以根据问题获得刚刚增加的动物。

如上右图所示。

实验总结 本次实验运用了归结原理、规则演绎推理的推理方法,进行设计。

对于不同的属性可以有时间P1,P2…Pn 。

这样在满足不同的条件之后就可以进行推理,得到所要的动物了。

通过本次实验,我学习到了推理的使用方法,对于这种问题就的解决也有了理解。

这不仅仅让我学习到了如何进行推理问题的证明,也让我对该系统有了更深的了解。

这让我的编程的能力也有了进一步的提高。

人工智能动物识别系统JAVA

人工智能动物识别系统JAVA
实验报告课程名称人工智能与专家系统实验名称动物分类专家系统设计系别电子信息科学学院专业班级指导教师学号姓名实验日期201641实验成绩一实验目的1加深理解专家系统的结构原理与实际应用
实验报告
课程名称
系别电子信息科学学院专业班级指导教师
学号____________姓名____________实验日期2016.4.1实验成绩___________
}
jp.add(lblImage);lblImage.setBounds(630,30,300,400);this.add(jp);
this.setTitle("动物识别系统");this.setBounds(100,100,1000,500);this.setVisible(true);
}
publicvoidactionPerformed(ActionEvente){
/用数组创复选框
{newCheckbox("有毛发"),newCheckbox("有奶"),newCheckbox("有羽毛"),
newCheckbox("会飞,且生蛋"),newCheckbox("吃肉"),
newCheckbox("有犬齿,且有爪,且眼盯前方"),newCheckbox("有蹄"),
publicclassRZSextendsJFrameimplementsActionListener{privatestaticJPaneljp=newJPanel();
privateJLabeljl1=newJLabel("请选择条件:");sta ticCheckbox[]Checkbox=

人工智能动物识别系统 实验报告

人工智能动物识别系统 实验报告

人工智能导论实验报告题目动物识别专家系统学院信息科学与工程学院专业计算机科学与技术姓名侯立军学号 *********** 班级计信1301二O一五年十一月二十六日1 设计内容题目:动物识别专家系统内容:动物识别专家系统是流行的专家系统实验模型,他用产生是规则来表示知识可以识别不同的动物。

这些规则既少又简单,可以改造他们,也可以加入新的规则,还可以用来识别其他新规则来取代这些规则。

2 基本原理2.1 产生式系统的问题求解基本过程:(1) 初始化综合数据库,即把欲解决问题的已知事实送入综合数据库中;(2) 检查规则库中是否有未使用过的规则,若无转 (7);(3) 检查规则库的未使用规则中是否有其前提可与综合数据库中已知事实相匹配的规则,若有,形成当前可用规则集;否则转(6);(4) 按照冲突消解策略,从当前可用规则集中选择一个规则执行,并对该规则作上标记。

把执行该规则后所得到的结论作为新的事实放入综合数据库;如果该规则的结论是一些操作,则执行这些操作;(5) 检查综合数据库中是否包含了该问题的解,若已包含,说明解已求出,问题求解过程结束;否则,转(2);(6) 当规则库中还有未使用规则,但均不能与综合数据库中的已有事实相匹配时,要求用户进一步提供关于该问题的已知事实,若能提供,则转(2);否则,执行下一步;(7) 若知识库中不再有未使用规则,也说明该问题无解,终止问题求解过程。

2.2 正向推理正向推理是以已知事实作为出发点的一种推理,又称数据驱动推理、前向链推理及前件推理等。

2.2.1 正向推理的基本思想:从用户提供的初始已知事实出发,在知识库KB中找出当前可适用的知识,构成可适用知识集KS,然后按某种冲突消解策略从KS中选出一条知识进行推理,并将推出的新事实加入到数据库中作为下一步推理的已知事实,在此之后再在知识库中选取可适用的知识进行推理,如此重复,直到求得了所要求的解,或者知识库中再无可适用的知识为止。

人工智能的实验报告

人工智能的实验报告

一、实验目的1. 理解人工智能在动物识别领域的应用,掌握相关算法和模型。

2. 掌握深度学习在图像识别中的应用,学习使用神经网络进行图像分类。

3. 实现一个基于人工智能的动物识别系统,提高动物识别的准确率和效率。

二、实验环境1. 操作系统:Windows 102. 编程语言:Python3.63. 开发工具:PyCharm4. 依赖库:TensorFlow、OpenCV、NumPy、Pandas三、实验内容1. 数据收集与预处理实验使用的数据集为公开的动物图像数据集,包含多种动物图片,共3000张。

数据预处理步骤如下:(1)将原始图像转换为统一尺寸(如224x224像素);(2)对图像进行灰度化处理,减少计算量;(3)对图像进行归一化处理,使图像像素值在0到1之间;(4)将图像数据转换为NumPy数组,方便后续处理。

2. 模型构建与训练实验采用卷积神经网络(CNN)进行图像识别。

模型构建步骤如下:(1)定义卷积层:使用卷积层提取图像特征,卷积核大小为3x3,步长为1,激活函数为ReLU;(2)定义池化层:使用最大池化层降低特征维度,池化窗口大小为2x2;(3)定义全连接层:将卷积层和池化层提取的特征进行融合,输入层大小为64x64x32,输出层大小为10(代表10种动物类别);(4)定义损失函数和优化器:使用交叉熵损失函数和Adam优化器进行模型训练。

训练模型时,采用以下参数:(1)批处理大小:32;(2)学习率:0.001;(3)训练轮数:100。

3. 模型评估与测试训练完成后,使用测试集对模型进行评估。

测试集包含1000张图像,模型准确率为80.2%。

4. 系统实现与演示根据训练好的模型,实现一个基于人工智能的动物识别系统。

系统功能如下:(1)用户上传动物图像;(2)系统对上传的图像进行预处理;(3)使用训练好的模型对图像进行识别;(4)系统输出识别结果。

四、实验结果与分析1. 模型准确率:80.2%,说明模型在动物识别任务中具有一定的识别能力。

实验一:产生式系统-动物识别系统

实验一:产生式系统-动物识别系统

《人工智能导论》实验报告实验一:产生式系统——动物识别系统一、实验目的1、掌握知识的产生式表示法2、掌握用程序设计语言编制智能程序的方法二、实验内容1、所选编程语言:C语言;2.拟订的规则:(1)若某动物有奶,则它是哺乳动物。

(2)若某动物有毛发,则它是哺乳动物。

(3)若某动物有羽毛,则它是鸟。

(4)若某动物会飞且生蛋,则它是鸟。

(5)若某动物是哺乳动物且有爪且有犬齿且目盯前方,则它是食肉动物。

(6)若某动物是哺乳动物且吃肉,则它是食肉动物。

(7)若某动物是哺乳动物且有蹄,则它是有蹄动物。

(8)若某动物是哺乳动物且反刍食物,则它是有蹄动物。

(9)若某动物是食肉动物且黄褐色且有黑色条纹,则它是老虎。

(10)若某动物是食肉动物且黄褐色且有黑色斑点,则它是金钱豹。

(11)若某动物是有蹄动物且长腿且长脖子且黄褐色且有暗斑点,则它是长颈鹿。

(12)若某动物是有蹄动物且白色且有黑色条纹,则它是斑马。

(13)若某动物是鸟且不会飞且长腿且长脖子且黑白色,则它是驼鸟。

(14)若某动物是鸟且不会飞且会游泳且黑白色,则它是企鹅。

(15)若某动物是鸟且善飞,则它是海燕。

2、设计思路:用户界面:采用问答形式;知识库(规则库):存放产生式规则,推理时用到的一般知识和领域知识,比如动物的特征,动物的分类标准,从哺乳动物、食肉动物来分,再具体地添加一些附加特征得到具体动物;建立知识库的同时也建立了事实库。

事实库是一个动态链表,一个事实是链表的一个结点。

知识库通过事实号与事实库发生联系。

数据库:用来存放用户回答的问题,存放初始状态,中间推理结果,最终结果;推理机:采用正向推理,推理机是动物识别的逻辑控制器,它控制、协调系统的推理,并利用知识库中的规则对综合数据库中的数据进行逻辑操作。

推理机担负两项基本任务:一是检查已有的事实和规则,并在可能的情况下增加新的事实;二是决定推理的方式和推理顺序。

将推理机制同规则对象封装在一起,事实对象记录了当前的状态,规则对象首先拿出前提条件的断言(只有这些前提都有符合时才会做这条规则的结论),询问事实对象集,如事实对象集不知道,则询问用户,如所有前提条件都被证实为真则结论为真,否则系统不知道结论真假。

动物识别系统实验报告人工智能原理及其应用

动物识别系统实验报告人工智能原理及其应用

实验目的及要求:实验目的:1.熟悉产生式的特点,基本结构和设计思想2.掌握基于规则推理的基本过程和方法(在实验中采用正向推理过程)3.学会用高级程序设计语言开发基于规则的动物识别系统实验要求: 1.根据动物识别系统的规则建立合理的数据结构或数据库来表示知识。

2.利用所选开发语言来建立推理过程。

(该程序能正向推理识别动物过程)3.利用控制台或者图形界面给出合理的交互接口,实现基本演示功能。

4.提交实验报告和源程序,总结实验结论和经验教训。

实验原理:1.基于规则产生式系统结构:基于规则的产生式系统一般由规则库(知识库)、综合数据库和推理引擎(推理机)三部分组成,规则库中它的基本组成框架如下图1 所示。

知识库由谓词演算事实和有关讨论主题的规则构成,综合库又称为上下文,用来暂时存储推理过程中的结论和数据。

推理机是用规则进行推理的过程和行为,。

知识采集系统是领域专家把相关领域的知识表示成一定的形式,并输入到知识库中。

解释系统通过用户输入的条件来分析被系统执行的推理结构,并将专家知识以易理解的方式并把知识解释给用户。

知识库综合库图1规则产生式系统的基本结构2. 简单动物识别产生式系统结构:知识库 ANIMAL 的知识库非常小,仅仅包含16条规则(一 般说来,一个产生式系统的知识库应包含》几百条规则); 解空间很小,仅仅包含8个解,或8个最高假设(在一个特定 的动物园里,共有虎、豹、长颈鹿、斑马、鸵鸟、企鹅和信天 翁、八哥等8种动物);初始事实集合很小,仅仅包含21个事实,如图中的F1至F21; 数据(即事实、证据、断言),知识(即浅层知识,规则)和推 理都是精确的,即确定性的;知识库。

实验步骤:本识别系统需要通过正向推理,正向推理过程的具体步骤是:(1) 读入事实集到工作存储器。

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

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

动物识别系统_人工智能课程实验

动物识别系统_人工智能课程实验

2 规则库
规则库RB(rule base)是一个用来存放与求 解问题有关的所有规则的集合,也称为知识库K B(knowledge base)。它包含了将问题从初始 状态转换成目标状态所需的所有变换规则。规则 库是产生式系统进行问题求解的基础。

3 控制系统(1)
控制系统(control system)也称为推理机, 其主要工作如下: 按一定的策略从规则库中选择规则与综合数据 库中的已知事实进行匹配。 当匹配成功的规则多于一条时,按照某种策略 选择一条执行。 对于要执行的规则,如果该规则的结论不是问 题的目标,将其加入综合数据库中。
动物识别系统
目录
You can briefly add outline of this slide page in this text box.
一、产生式系统的基本结构 二、产生式系统的类型
三、动物识别系统的相关策略
四、实验结果

一、产生式系统的基本结构
1 2 3
综合数据库
规则库 控制系统

1 综合数据库
综合数据库DB(data base)也称为事实库, 是一个用来存放与求解问题有关的各种当前信息 的数据结构。当某条规则的前提与综合数据库中 的已知事实相匹配时,该规则将被激活,并把其 结论放入综合数据库成为后面推理的已知事实。


四、实验结果(1实验结果(3)

四、实验结果(4)


二、产生式系统的类型(2)
3.2逆向推理产生式系统 也称目标驱动方式,它是从目标(作为假设) 状态出发,朝着初始状态前进,反向使用规则的 一种推理方法。所谓逆向使用规则,是指以问题 的目标状态作为初始综合数据库,仅当综合数据 库中的事实满足某条规则的后件时,该规则才被 使用。 优点:不使用与问题无关的规则。因此,对 那些目标明确的问题,使用反向推理方式是一种 最佳选择。

人工智能实验报告

人工智能实验报告

暨南大学人工智能实验报告题目:动物识别系统院系:信科院计算机系专业:计算机软件与理论学号: 0934061004学生姓名:张韶远成绩:日期: 2009年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、建立事实库(总数据库):建立过程同步骤2。重复操作,可输入多条事实。
4、然后按“确定”按钮即可。
此外,利用实例演示,可以运行系统默认的产生式系统,并且可以进行正反向推理。
((CButton*)GetDlgItem(IDC_CHECK9))->SetCheck(BST_UNCHECKED);
((CButton*)GetDlgItem(IDC_CHECK10))->SetCheck(BST_UNCHECKED);
((CButton*)GetDlgItem(IDC_CHECK11))->SetCheck(BST_UNCHECKED);
((CButton*)GetDlgItem(IDC_CHECK19))->SetCheck(BST_UNCHECKED);
((CButton*)GetDlgItem(IDC_CHECK20))->SetCheck(BST_UNCHECKED);
((CButton*)GetDlgItem(IDC_CHECK21))->SetCheck(BST_UNCHECKED);
((CButton*)GetDlgItem(IDC_CHECK15))->SetCheck(BST_UNCHECKED);
((CButton*)GetDlgItem(IDC_CHECK16))->SetCheck(BST_UNCHECKED);
((CButton*)GetDlgItem(IDC_CHECK17))->SetCheck(BST_UNCHECKED);
((CButton*)GetDlgItem(IDC_CHECK3))->SetCheck(BST_UNCHECKED);
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于web的动物识别系统一、实验目的理解和掌握产生式知识表示方法及产生式系统的基本过程,能够利用Web编程技术建立一个基于产生式知识表示的简单的智能系统。

二、实验环境(1) 硬件环境:网络环境中的微型计算机。

(2) 软件环境:Windows操作系统,Microsoft Visual Studio C#语言。

三、实验原理该系统用到的表示方法是产生式表示方法,是陈述性知识表示方法的一种。

3.1 产生式表示的基本方法(1)事实的表示在产生式表示方法中,事实通常是用三元组或四元组来表示的。

对确定性知识,一个事实可用一个三元组(对象,属性,值)或(关系,对象1,对象2)来表示。

这种表示方式,在机器内部可用一个表来实现。

(2)规则的表示规则描述的事物间的因果关系。

规则的产生式表示形式常称为产生式规则,简称为产生式,或规则。

其基本形式为P→Q或者IF P THEN Q其中,P是产生式的前提,也称为产生式的前件,它给出了该产生式可否使用的先决条件,用事实的逻辑组合来构成;Q是一组结论或操作,也成为产生式的后件,它指出当前提P满足时应该推出的结论或应该执行的操作。

产生式的含义是:如果前提P满足,则可推出结论Q或执行Q所规定的操作。

2.产生式系统的基本结构及过程通常,把用产生式知识表示方法构造的智能系统统称为产生式系统。

一个产生式系统的基本结构包括综合数据库、规则库和控制系统这三个主要部分。

2.1综合数据库综合数据库也称为事实库,是一个用来存放与求解问题有关的各种当前信息的数据结构。

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

2.2规则库规则库是一个用来存放与求解问题有关的所有规则的集合。

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

2.3控制系统控制系统也成为推理机,它由一组程序组成,用来控制整个产生式系统的运行,决定问题求解过程的推理路线,实现对问题的求解。

其主要工作如下:(1)按一定策略从规则库中选择规则与综合数据库的已知事实进行匹配。

(2)当匹配成功的规则多于一条时,推理机构应该能够按照某种策略从中选出一条规则去执行。

(3)对要执行的规则,如果该规则的后件不是问题的目标,则当其为一个或多个结论时,把这些结论加入到综合数据库中;当其为一个或多个操作时,执行这些操作。

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

(5)在问题求解过程中,记住应用过的规则序列,以便最终能够给出问题的解路径。

3.产生式系统的基本过程产生式系统问题求解的基本过程:(1)初始化综合数据库,把欲解决问题的已知事实送入综合数据库。

(2)检查规则库中是否存在尚未使用过的规则,若有,则执行(3);否则,转(7)。

(3)检查规则库中的未使用规则中是否有其前提可与综合数据库中已知事实相匹配的规则,若有,则从中选择一个;否则,转(6)。

(4)执行当前选种规则,并对该规则加上标记,把执行该规则后所得到的结论作为新的事实放入综合数据库。

如果该规则的结论是一些操作,则执行这些操作。

(5)检查综合数据库中是否包含了该问题的解,若已包含,则说明求出解,问题求解过程结束;否则,转(2)。

(6)当规则库中还有未使用的规则,但均不能与综合数据库中的已有事实相匹配时,要求用户进一步提供关于该问题的已知事实,若能提供,则转(2);否则,说明该问题无解,终止求解过程。

(7)若知识库中不再有未使用规则,也说明该问题无解,终止问题求解过程。

需要说明的是,这个过程是不确定的。

原因是第(3)步没有明确指出当有多余规则可用时,如何从中选择一条作为当前可执行规则。

另外,从第(3)步到第(5)步的循环过程实际上就是一个搜索过程。

当采用的控制策略不同时,所得到的搜索过程也不同。

四、实验内容4.1 基本功能简介本动物识别系统可以识别老虎、金钱豹、斑马、长颈鹿、企鹅、信天翁这6种动物。

其规则库包含如下15条规则:r1: IF 该动物有毛发THEN 该动物是哺乳动物r2: IF 该动物有奶THEN 该动物是哺乳动物r3: IF 该动物有羽毛THEN 该动物是鸟r4: IF 该动物会飞AND 会下蛋THEN 该动物是鸟r5: IF 该动物吃肉THEN 该动物是肉食动物r6: IF 该动物有犬齿AND 有爪AND 眼盯前方 THEN该动物是肉食动物r7: IF 该动物哺乳动物AND 有蹄THEN 该动物是蹄类动物r8: IF 该动物哺乳动物AND 是嚼反刍动物THEN 该动物是蹄类动物r9: IF 该动物哺乳动物AND 是肉食动物AND 是黄褐色AND 身上有暗斑点THEN 该动物是金钱豹r10: IF 该动物哺乳动物AND 是肉食动物AND 是黄褐色AND 身上有黑色条纹 THEN 该动物是虎r11: IF 该动物是蹄类动物AND 有长脖子 AND 有长腿AND 身上有暗斑点THEN 该动物是长颈鹿r12: IF 该动物是蹄类动物AND 身上有黑色条纹 THEN 该动物是斑马r13: IF 该动物是鸟AND 有长脖子 AND 有长腿AND 不会飞 THEN 该动物是鸵鸟r14: IF 该动物是鸟AND 会游泳AND 不会飞AND 有黑白二色 THEN 该动物是企鹅r15: IF 该动物是鸟AND 善飞THEN 该动物是信天翁注:在这里,必须前件都满足,结果才会成立。

比如,r1和r2,必须既有毛发又有奶,才能判定是哺乳动物。

4.2 识别算法说明4.2.1算法的文字说明本识别算法为仿产生式识别算法,其思想基于产生式算法,但根据实际情况作了稍许改进。

算法步骤如下:1)获得出入参数:事实集infors和规则集rules;初始化参数match=false和changed=false,这两个参数分别表示是否成功匹配(历次)和本次循环是否找到匹配。

2)判断match==false||changed==ture,是转第三步;否则转7;3)对rules中的每一个规则,对其结果进行搜寻,找到相同结果的规则项,组成一个集合cur_rules;4)对cur_rules中的每一个前件,在infor中寻找匹配。

若均能找到匹配则转5,否则转6;5)changed=true;match=true;根据cur_rules中的规则,对infors 进行更新,将参与产生规则的事实删去,得到的新结果作为事实加入。

转步骤2。

6)changed=false。

若changed==false||match==false,则无能匹配的规则,转7);否则转2。

7)若match==false 转8;否则转9。

8)将res置空,temp_res置“匹配失败”,返回。

9)返回所以能够匹配的结果res,temp_res置“匹配结果为:”。

注:本算法将所有前件能够匹配的规则的结果均作为最终结果输出4.2.2 流程图传递参数准备进行识别计算初始化参数是否已经最终匹配Match == ture&&Changed == false 规则是否全用过读取一条待处理规则的前件否所读前件是否在综合信息库中全部出现将该规则前件添加到待删除的自定义DataStruct 数据结构中,以备更新综合信息库时使用是将规则结论添加到待添加的自定义DataStruct 数据结构中,以备更新综合信息库时使用Changed = true,match = true是否识别不出结果Match == false&&Changed == false 是更新综合数据库添加待添加规则删除待删除规则否否未识别出结果失败结束是识别流程(Identify 的执行过程)Changed = false否识别完成,结果处理是相关参数:综合数据库infor_data ,规则库rule_dt ,动物库ani_dtMatch:是否匹配,false Changed:是否进行了修改,false含义:匹配到了并且规则库没有更新4.2.3 核心代码及注释如下:bool match = false;int i = 0;string res ="";string temp_res = "";bool changed = false;while (match == false ||changed== true ){DataStruct temp_infor = new DataStruct();//infor是事实库,为规则前件;DataStruct temp_result = new DataStruct();//result是结果库,为规则后件;changed = false;for (i = 0; i < rule_dt.Rows.Count; )//对于规则库中的每一条规则{res = rule_dt.Rows[i]["Result"].ToString();//当前规则的结果//与当前规则相同的规则的集合DataRow[] rows = rule_dt.Select(@"Result = '" + res + "'and RuleID = '" + rule_dt.Rows[i]["RuleID"].ToString() + "'");for (int j = 0; j < rows.Length; j++)//对于当前集合中的每一个规则{if (infor_data.Search(rows[j]["Infor"].ToString()) != -1)//如果可以在已知事实库中找到该规则的前件{if (j == rows.Length - 1)//当集合中规则的全部前件均能找到{for (int k = 0; k <= j; k++){If(temp_infor.Search(rows[k]["Infor"].ToString()) == -1) {temp_infor.Insert(rows[k]["Infor"].ToString());}}if (temp_result.Search(res) == -1){temp_res = temp_res + res + ".";temp_result.Insert(res);}changed = true;match = true;break;}}else { break; }}i += rows.Length;if (match == true){}}//当无匹配结果时的处理if (match == false&& changed== false){temp_res += "根据选择信息无法识别出结果!";res = "";break;}//把已经用过的infor从事实库中删除for (int k = 0; k < temp_infor.NumOfElements; k++) {infor_data.Delete(temp_infor.Array[k]);}//把新得到的结果加入事实库for (int k = 0; k < temp_result.NumOfElements; k++) {infor_data.Insert(temp_result.Array[k]);}}if (res != ""){res = temp_res;temp_res = "匹配结果是:";}//for (int k = 0;k < temp_resreturn temp_res + res;4.3 基于C#语言的整体结构设计4.3.1 概述本次实验共可以分为三个部分。

相关文档
最新文档