您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 实验报告之产生式系统
实验报告一、实验目的及要求1.理解产生式系统的结构原理与实际应用。2.掌握产生式规则表示及规则库组建的实现方法。3.理解推理机的算法原理并掌握其编程实现方法。二、实验设备(环境)及方式1.实验环境:PC机,WindowsXP,VC(可自选);2.实验方式:两人一组,开发某个产生式系统分别实现正向推理和反向推理,系统主题可自选。三、实验内容与要求运用所学知识,设计并编程实现一个简单的产生式系统(如三角形判定系统、动物识别系统、感冒诊断系统等)。1.简单产生式系统的名称与推理方式①名称:动物识别系统(正向)②推理方式:正向使用规则,即问题的初始状态作为初始数据库,仅当数据库中的事实满足某条规则的前提时,该规则才能被使用。2.简单产生式系统的总体设计(系统组成模块及功能说明,包括人机交互模块、规则库存储及管理模块、综合数据库管理模块以及推理机制模块等)。①人机交互模块:通过勾选系统给出的判别条件来输入判别信息。如图1,2所示:3.简单产生式系统的详细设计(包括数据结构设计、参数设计、函数说明以及产生式规则集)①数据结构设计:classAnimal//定义实体存放规则{inta_id;publicintA_id{get{returna_id;}set{a_id=value;}}privateStringa_condition;publicStringA_condition{get{returna_condition;}set{a_condition=value;}}privateStringa_result;publicStringA_result{get{returna_result;}set{a_result=value;}}}②参数设计:int[]temp=newint[50];//存储当前所选择的的事实及推导出来的事实编号string[]factInput=newstring[30];//存储当前所选择的的事实及推导出来的事实内容publicstaticstring[]factSelected=newstring[20];//存储用户选择的事实,方便两个界面传递数据publicstaticintfactLength;//存储事实库中的实际数据个数string[]resultList=newstring[length];//存储规则库中所有后件string[][]conditionList=newstring[length][];//存储规则库中所有前件③函数说明:publicListAnimalgetAll();//取出规则库中的所有规则publicAnimalgetResultByID(inta_id);//根据ID取出规则的后件privatevoidCompare(string[]factInput,string[][]conditionList,intj);//匹配规则和已知事实库privatevoidInsertRules(Animala);//将匹配成功的规则显示在界面上4.系统流程5.源程序清单①用户选择界面:Form1usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usinganimal_IS.data;namespaceanimal_IS{publicpartialclassForm1:Form{int[]temp=newint[50];//存?储洹?当獭?前°所ù选?择?的?实害?事?以?及°推?导?出?来ぁ?的?事?实害?publicForm1(){InitializeComponent();}privatevoidbutton1_Click(objectsender,EventArgse){this.checkBox1.Checked=false;this.checkBox2.Checked=false;this.checkBox3.Checked=false;this.checkBox4.Checked=false;this.checkBox5.Checked=false;this.checkBox6.Checked=false;this.checkBox7.Checked=false;this.checkBox8.Checked=false;this.checkBox9.Checked=false;this.checkBox10.Checked=false;this.checkBox11.Checked=false;this.checkBox12.Checked=false;this.checkBox13.Checked=false;this.checkBox14.Checked=false;this.checkBox15.Checked=false;this.checkBox16.Checked=false;this.checkBox17.Checked=false;this.checkBox18.Checked=false;this.checkBox19.Checked=false;this.checkBox20.Checked=false;this.checkBox21.Checked=false;this.checkBox22.Checked=false;for(inti=0;iProgram.factSelected.Length;i++){Program.factSelected[i]=null;}}//重?置?所ù有瓺选?项?privatevoidbutton2_Click(objectsender,EventArgse){int[]factNum=newint[20];intk=0;for(inti=1;i=22;i++){CheckBoxche=(CheckBox)this.groupBox1.Controls.Find(checkBox+i,true)[0];if(che.Checked){factNum[k]=i;k++;//记?录?用?户§输?入?事?实害?的?编括?号?}}Program.factLength=k;for(intj=0;jfactNum.Length;j++){DBdata=newDB();stringsql=selectfactContentfrom[fact]wherefactID=+factNum[j];//根ù据Y编括?号?查é找ò出?规?则ò的?前°键ü的?内ú容╕,?显?示?在útextbox中DDataTabledt=data.query(sql);if(dt.Rows.Count0){Program.factSelected[j]=dt.Rows[0][0].ToString();}}Form2fr=newForm2();fr.ShowDialog();}}}②结果显示界面:Form2usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usinganimal_IS.data;usinganimal_IS.business;usinganimal_IS.entity;namespaceanimal_IS{publicpartialclassForm2:Form{publicForm2(){InitializeComponent();}privatevoidForm2_Load(objectsender,EventArgse){/**********************将?数簓据Y库a中D的?数簓据Y取?出?放?在ú二t维?数簓组哩?里?*******************************/ListAnimalls=newListAnimal();AnimalOptionaop=newAnimalOption();ls=aop.getAll();intlength=ls.Count;string[]resultList=newstring[length];string[][]conditionList=newstring[length][];for(inti=0;ilength;i++){resultList[i]=ls[i].A_result;conditionList[i]=ls[i].A_condition.Split(',?');}/************************************************************************************//****************读á取?出?用?户§选?择?的?内ú容╕,?显?示?出?来ぁ?,?并¢放?入?actInput*****************/stringfact=null;string[]factInput=newstring[30];//定¨义?数簓组哩?,?用?来ぁ?存?储洹?用?户§输?入?的?已?知a事?实害?库afor(inti=0;iProgram.factSelected.Length;i++){fact+=+Program.factSelected[i];factInput[i]=Program.factSelected[i];}this.textBox3.Text=fact;/**********************************************************************************/stringstart=/***********************推?理え?开a始?**********************/\r\n\r\n;textBox1.Text=start;for(intj=0;jconditionList.Length;j++){if(conditionList[j]!=null){Compare(factInput,conditionList,j);}}if(this.textBox1.Text.Equals(start)){this.textBox1.Text+=糟?糕a了?,?啥?也?没?推?出?。£o(?)oTryAgain?;}if(factInput[Program.factLength-1].Equals(老?虎¢)){this.textBox2.Text=O(∩é_∩é)O~~~老?虎¢;return;}if(factInput[Program.factLength-1].Equals(豹繿子哩?)){this.textBox2.Text=O(∩é_∩é)O~~~豹繿子哩?;return;}if(factInput[Program.factLength-1].Equals(斑?马í)){this.textBox2.Text=O(∩é_∩é)O~~~斑?马í;return;}if(factInput[Program.factLength-1].Equals(长¤颈±鹿1)){this.textBox2.Text=O(∩é_∩é)O~~~长¤颈±鹿1;return;}if(factInput[Program.factLength-1].Equals(海£鸟?)){this.textBox2.Text=O(∩é_∩é)O~~~海£鸟?;return;}if(factInput[Program.fact
本文标题:实验报告之产生式系统
链接地址:https://www.777doc.com/doc-2460476 .html