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

一、实训背景随着科技的发展,动物识别技术在农业、野生动物保护、生物多样性研究等领域发挥着越来越重要的作用。
为了提高学生对动物识别技术的理解和应用能力,我们开展了为期两周的动物识别实训课程。
本次实训旨在通过理论学习和实践操作,使学生掌握动物识别的基本原理、方法和技巧,提高学生在实际工作中应用动物识别技术的能力。
二、实训目标1. 理解动物识别的基本原理和常用方法。
2. 掌握动物识别软件的使用技巧。
3. 能够独立识别常见的动物种类。
4. 培养学生的团队协作能力和实践操作能力。
三、实训内容1. 理论学习(1)动物识别的基本原理:介绍了动物识别的背景、意义和发展趋势,讲解了动物识别的基本原理,如形态学识别、分子生物学识别、行为学识别等。
(2)动物识别方法:介绍了常见的动物识别方法,如图像识别、声音识别、气味识别等,并分析了各种方法的优缺点。
(3)动物识别软件:介绍了常用的动物识别软件,如Google Vision API、Microsoft Azure Computer Vision API、百度AI动物智能识别系统等,并讲解了软件的使用方法。
2. 实践操作(1)图像识别:利用动物识别软件对图片进行识别,识别内容包括动物种类、颜色、姿态等。
(2)声音识别:通过录制动物声音,利用动物识别软件进行识别,识别内容包括动物种类、叫声特点等。
(3)气味识别:利用动物识别设备,对动物的气味进行分析,识别动物种类。
四、实训过程1. 第一周:理论学习(1)组织学生进行理论学习,讲解动物识别的基本原理、方法和常用软件。
(2)安排学生进行动物识别软件的学习和操作,要求学生掌握软件的基本功能和使用方法。
2. 第二周:实践操作(1)分组进行实践操作,每组选择一种识别方法进行实践。
(2)教师对学生的实践过程进行指导和评价,帮助学生解决操作过程中遇到的问题。
(3)每组提交实践报告,总结实训过程中的收获和体会。
五、实训成果1. 学生掌握了动物识别的基本原理和方法。
《人工智能》课程设计报告--动物识别系统

计算机科学与技术学院《人工智能》课程设计报告设计题目:动物识别系统设计人员:学号:学号:学号:学号:学号:学号:指导教师:2015年7月目录目录 (1)摘要 (3)Abstract (4)一、专家系统基本知识 (5)1.1专家系统实际应用 (5)1.2专家系统的开发 (5)二、设计基本思路 (5)2.1知识库 (5)2.2.1知识库作用 (5)2.1.2 知识库建立 (6)2.1.3 知识库获取 (7)2.2 数据库 (7)2.2.1数据库作用 (7)2.2.2数据库建立 (7)三、推理机构 (8)3.1推理机介绍 (8)3.1.1 推理机作用原理 (8)3.1.2推理网络 (8)3.2 正向推理 (9)3.2.1 正向推理基本思想 (9)3.2.2 正向推理示意图 (10)3.2.3 正向推理机所要具有功能 (10)3.3反向推理 (11)3.3.1反向推理基本思想 (11)3.3.2 反向推理示意图 (11)3.3.3反向推理机所要具有功能 (11)四、实例系统实现 (12)4.1系统介绍 (12)4.2基本思路 (12)4.3程序主要代码 (12)4.4系统执行结果 (13)五、结论 (13)参考文献: (14)附录一 (15)附录二 (24)摘要动物识别专家系统是将人的思维过程转化为计算机语言的逻辑过程,其关键在于知识和信息的表示,智能推理或求解的基础——知识库的创建和管理,以及基于某种知识和信息表示的智能推理或求解过程。
使动物识别具有一定的智能性、良好的交互性和可视化效果。
本论文也主要以识别七种动物的设计思路和程序为例所写的。
动物识别专家系统是人工智能中一个比较基础的规则演绎系统,是人工智能领域里的一个大模块的专家系统的一个特定例子。
是集知识表与推理为一体的,以规则为基础对用户提供的事实进行向前、逆向或双向的推理得出结论的一种产生式系统。
如果通过良好的分析、精确地设计和细致的规划会创设出高度灵活和快速有效的识别系统,再加上良好的界面供用户添加新的事实和规则,反馈详细的错误或信息的话,那就是一个相当完整的识别系统了。
人工智能动物识别实验报告

一.实验目的:1.熟悉并掌握如何使用SQL SERVER 20002.熟悉JAVA语言编程3.熟悉讲JAVA与数据库结合进行数据库编程4.理解产生式表示法5.熟悉产生式系统的基本过程二.实验环境及工具SQL SERVER 2000,ECLIPSE 7.0,PC机一台,Tomcat 6.0三.实验步骤及方法1.产生式规则分析通过分析书上的15条规则,我们可以得到该图为动物识别系统的部分推理网络在该图中,最上层的节点称为“结论”,中间节点称为“中间假设”,终结点称为“事实”。
其中,每个“结论”都是问题的一个目标,所有的“结论”就构成了本问题的一个目标集合。
经过分析可以本问题的事实有:有毛发,有奶等20个事实;中间假设有:该动物是哺乳动物,鸟,肉食动物和有蹄类动物;目标集合是:金钱豹,虎,长颈鹿,斑马,鸵鸟,企鹅和信天翁。
2.数据库设计根据第一步的分析,我们可以建立一个animal数据库,其中存放两张表,一张称为facts的事实表。
另一种称为factRules的规则表3.程序设计数据库及表已经建立好之后,我们就可以设计本系统的程序了,经过分析,我们得到如下的流程图4.使用Eclipse编程实现AnimalAction的主要源代码为:import com.myhomework.animal.OpenDb;public class AnimalAction extends Action { static OpenDb db = null;public static OpenDb getDB() {if (db == null) {db = new OpenDb();}return db;}public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)throws Exception {do {do {i++;String sql4 = "select * from factRules where rulesNo=" + "'i'";ResultSet rs = getDB().executeQuery(sql4);String sql8 = "select count(*) total from newFacts";ResultSet rsr = getDB().executeQuery(sql8);if (total < count) {return mapping.findForward("err2");}isNew = IsInNewFcats(obj1);} while (!isNew);String sql6 = "select * from factRules where rulesNo=" + "'i'";String cName = "att5";ResultSet rss = getDB().executeQuery(sql6);int m=0;try{isIn = (m > 24 && m < 32);if (isIn) {String sql9 = "select factName from facts where factNo="+ "'m'";ResultSet rss2 = getDB().executeQuery(sql9);request.setAttribute("reslut", factName);return mapping.findForward("succ");}String sql7 = "insert into newFacts values(" + "'m'" + ")";getDB().executeUpdate(sql7);} while (!isIn && i<16);return mapping.findForward("err1");}}Struts-config.xml的主要配置为:<form-beans><form-bean name="animalactionform"type="com.myhomework.animal.AnimalActionForm"> </form-bean></form-beans><action-mappings><action path="/animal"type="com.myhomework.animal.AnimalAction"scope="request"name="animalactionform"><forward name="succ"path="/success.jsp"/><forward name="err1"path="/error1.jsp"/><forward name="err2"path="/error2.jsp"/></action>四.实验结果1.在浏览器上输入http://localhost:8080/anistruts,显示该系统的首页为:2.单击“产生式规则”,即跳转到产生式规则表页面为:交”按钮,则系统成功识别的结果4.如果只选中“有毛发”,然后点击“提交”,条件不足,无法识别的结果5.条件错误,无法识别的结果五.实验总结通过本实验,我基本熟悉了SQL Server2000的基本使用,并理解了产生式表示法和产生式系统的基本过程;也可以熟练的使用Eclipse进行数据库编程。
动物识别系统实验报告

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;
人工智能实验报告_3

clauses run:-animal_is(X),!,write("\nyour animal may be a(n) ",X), nl,nl,clear_facts. run:-write("\n unable to determine what "),
write("\n your animal is \n\n"), clear_facts. positive(X,Y):-xpositive(X,Y),!. positive(X,Y):-not(xnegative(X,Y)),!,ask(X,Y). negative(X,Y):-xnegative(X,Y),!. negative(X,Y):-not(xpositive(X,Y)),!,ask(X,Y). ask(X,Y):-write(X," is ",Y,"\n" ),readln(Reply),
animal_is(penguin):-it_is(bird), negative(does,fly), positive(does,swim), positive(has,black_and_white_color).
animal_is(albatross):-it_is(bird),positive(does,fly_well). it_is(mammal):-positive(has,hair). it_is(mammal):-positive(does,give_milk). it_is(bird):-positive(has,feather). it_is(bird):-positive(does,fly),positive(does,lay_eggs). it_is(carnivore):-positive(does,eat_eat). it_is(carnivore):-positive(has,pointed_teeth),
动物视觉认知实验报告(3篇)

第1篇一、实验背景随着科学技术的不断发展,动物认知研究越来越受到重视。
其中,动物视觉认知作为动物认知研究的重要组成部分,对于揭示动物感知世界的方式和机制具有重要意义。
本研究旨在通过动物视觉认知实验,探讨动物视觉系统的工作原理和认知能力。
二、实验目的1. 了解动物视觉系统的工作原理和认知能力;2. 掌握动物视觉认知实验的基本方法和技术;3. 分析动物视觉认知实验数据,得出有意义的结论。
三、实验材料与设备1. 实验动物:小鼠(雄性、雌性各5只,年龄为1个月大);2. 实验器材:视觉水迷宫装置、计算机、摄像头、数据分析软件;3. 实验材料:光栅、水槽、平台、光源等。
四、实验方法1. 实验动物适应:将小鼠置于实验室环境中适应1周,使其熟悉实验环境和实验人员;2. 实验动物分组:将小鼠随机分为实验组和对照组,每组5只;3. 实验训练:对实验组动物进行视觉水迷宫训练,对照组动物进行普通水迷宫训练;4. 视觉水迷宫训练:将实验组动物置于视觉水迷宫装置中,观察其寻找隐藏平台的视觉能力;5. 数据收集:记录实验动物在视觉水迷宫中的行为数据,包括游泳时间、游泳路径、触底次数等;6. 数据分析:运用统计学方法对实验数据进行分析,比较实验组和对照组动物在视觉水迷宫中的表现差异。
五、实验结果1. 实验组动物在视觉水迷宫中的游泳时间明显短于对照组,表明实验组动物在视觉水迷宫中的表现更好;2. 实验组动物在视觉水迷宫中的游泳路径更加直接,触底次数更少,说明实验组动物在视觉水迷宫中的视觉能力更强;3. 实验结果提示,视觉水迷宫训练能够有效提高动物视觉认知能力。
六、讨论1. 本实验结果表明,视觉水迷宫训练能够有效提高动物视觉认知能力,为动物视觉认知研究提供了新的思路和方法;2. 视觉水迷宫实验作为一种动物视觉认知研究方法,具有较高的可操作性和重复性,有助于深入探讨动物视觉系统的工作原理和认知能力;3. 在实验过程中,动物视觉认知能力受到多种因素的影响,如动物种类、年龄、性别等,需要在实验设计和数据分析过程中充分考虑这些因素。
动物识别专家系统实验报告

题目:动物识别专家系统一.实验目的理解和掌握产生式只是表示方法,能够用选定的编程语言实现产生式系统的规则库。
二.实验内容(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"不存在";}}}六.截图七.感想通过这次课程设计我对专业课的学习有了更加深刻的认识,让我知道了学无止境的道理。
AI实验-七种动物识别系统

AI实验-七种动物识别系统AI-动物识别⼀、实验⽬的1. 理解产⽣式系统的结构原理与实际应⽤。
2. 掌握产⽣式规则表⽰及规则库组建的实现⽅法。
3. 熟悉和掌握产⽣式系统的运⾏机制,掌握基于规则推理的基本⽅法。
⼆、实验原理产⽣式系统⽤来描述若⼲个不同的以⼀个基本概念为基础的系统,这个基本概念就是产⽣式规则或产⽣式条件和操作对。
在产⽣式系统中,论域的知识分为两部分:⽤事实表⽰静态知识;⽤产⽣式规则表⽰推理过程和⾏为1.实验要求运⽤所学知识,设计并编程⼀个⼩型的动物识别系统,识别对象:虎、⾦钱豹、斑马、长颈⿅、鸵鸟、企鹅、信天翁七种动物2.识别规则库R1: 有⽑(1) --> 哺乳动物(12)R2: 有奶(2) --> 哺乳动物(12)R3: 有⽻⽑(3) --> 鸟类(13)R4: 会飞(4) & 会下蛋 --> 鸟类(13)R5: 吃⾁(6) --> ⾷⾁动物(14)R6: ⽝齿(7) & 有⽖(8) & 盯前⽅(9) --> ⾷⾁动物(14)R7: 哺乳动物(12) & 有蹄(10) --> 有蹄类动物(15)R8: 哺乳动物(12) & 反刍(11) --> 有蹄类动物(15)R9: 哺乳动物(12) & ⾷⾁动物(14) & 黄褐⾊(16) & 暗斑点(17) --> ⾦钱豹(a)R10: 哺乳动物(12) & ⾷⾁动物(14) & 黄褐⾊(16) & ⿊⾊条纹(18) --> 虎(b)R11: 有蹄类动物(15) & 长脖(19) & 长腿(20) & 暗斑⾊(17) --> 长颈⿅(c)R12: 有蹄类动物(15) & ⿊⾊条纹(18) & --> 斑马(d)R13: 鸟类(13) & 长脖(19) & 长腿(20) & 不会飞(21) & ⿊⽩两⾊(22) --> 鸵鸟(e)R14: 鸟类(13) & 会游泳(23) & 不会飞(21) & ⿊⽩⼆⾊(22) --> 企鹅(f)R15: 鸟类(13) & 善飞(24) --> 信天翁(g)以上为:动物识别规则的15条规则,已编码3.思路分析1. 第⼀次编写时:采⽤的是,条件对应原则,每个条件对应的动物做⼀个集合,多个条件集合取交集,得到对应动物。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
人工智能导论
实验报告
题目动物识别专家系统
学院信息科学与工程学院
专业计算机科学与技术
姓名侯立军
学号 *********** 班级计信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中选出一条知识进行推理,并将推出的新事实加入到数据库中作为下一步推理的已知事实,在此之后再在知识库中选取可适用的知识进行推理,如此重复,直到求得了所要求的解,或者知识库中再
无可适用的知识为止。
2.3 反向推理
逆向推理是以某个假设目标作为出发点的一种推理,又称为目标驱动推理、逆向链推理及后件推理等。
2.2.1 反向推理的基本思想:
首先选定一个假设目标,然后寻找支持该假设的证据,若所需的证据都能找到,则说明原假设成立;若无论如何都找不到所需证据,说明原假设不成立,此时需要另作新的假设。
3 系统模块
struct cause_type{
char * cause; /* 事实字符串指针 */
struct cause_type * next; /* 指向下一个节点 */
};
struct rule_type{
char * result; /* 结论字符串指针 */
int lastflag; /* 结论规则标志 */
struct cause_type * cause_chain;/* 事实链表指针 */
struct rule_type * next; /* 指向下一个节点出*/
};
void freeKB(struct rule_type *);/* 释放规则链表子程序 */
void freeDB(struct cause_type *);/* 释放事实链表子程序 */
int FindCause(char *);/* 查证事实是否已知子程序 */
void markKB(); /* 标记结论性规则子程序 */
void creatKB();/* 创建知识库的子程序 */
void inputDB();/* 输入已知事实的子程序 */
void think();/* 推理机子程序 */
void explain(); /* 解释子程序 */
主函数:void main()
{
struct rule_type *rpp;
struct cause_type *cpp;
creatKB();
markKB();
getchar();
inputDB();
rpp=KnowledgeBase;
think();
while(rpp)
{ printf("result:%s \t",rpp->result);
printf("lastflag:%d \t",rpp->lastflag); cpp=rpp->cause_chain;
while(cpp){
printf("cause:%s \t",cpp->cause);
cpp=cpp->next;
printf("\n"); }
rpp=rpp->next; }
explain(); }
4 主要框图
5 各模块的设计思路
5.1 创建知识库
creatKB():首先判断是否存在知识库,若存在继续执行,若不存在则提示输入规则,创建知识库,将建立的知识库以文件的形式保存在d:\\rule.dat中。
5.2 输入已知事实
inputDB():用户按顺序输入已知的事实,判断是否充分,进行标记。
5.3 推理
think():对输入的已知事实进行推理,从已知事实出发,通过规则库求得结论。
5.4 解释
explain():对推理结果进行解释,显示解释的过程。
6 界面设计
输入规则:
7 调试与分析
8 小结
这次实验让我对专业课有了更深的理解,特别是对正向推理和反向推理的理解,同时也加强了自己阅读程序和编程的能力。
优点:逻辑清晰,结构简单。
缺点:推理过程指针发生变化,查询次数多了以后会出现差错。