专家系统实验报告
专业班级:自动化
姓 名:
学 号:
20##-05-15
一、 问题综述
在本次任务中,我所分析的实验代码是一个基于规则的线虫类诊断专家系统,该专家系统的主要功能是通过简单的人机对话,根据能够观察到的线虫特征对于其类别进行诊断。
二、 代码的组成
该专家系统程序代码由事实和规则代码组成,事实用于定义此专家系统所能辨识的线虫种类,规则则是根据线虫特征进行线虫类别诊断的推理过程,它是人类专家在进行线虫分类中所用推理方法的计算机符号实现。下面选取一些代码进行具体说明。
1、事实模块
(deffacts genus-included
(genus Aphlenchoides)
(genus Aphelenchus)
(genus Criconemoides)
(genus Criconema)
(genus Ditylenchus)
(genus Helicotylenchus)
(genus Hemicriconemoides)
(genus Heterodera)
(genus Hirschmanniella)
(genus Longidorus)
(genus Meloidogyne)
(genus Meloidodera)
(genus Paratylenchus)
(genus Pratylenchus)
(genus Radopholus)
(genus Rotylenchulus)
(genus Trichodorus)
(genus Tylenchorhynchus)
(genus Tylenchulus)
(genus Xiphinema)
)
在此事实模块中,具体定义了线虫的20种种类名称,这二十种种类就是该专家系统所能分辨的线虫种类。由于该实验代码比较简单,故不多做解释。
2、规则模块
(defrule start 规则名
(declare (salience 500)) 定义规则优先级
?init <- (initial-fact) 将(initial-fact)事实编号赋给?init变量,(initial-fact)事实是基于规则的专家系统执行前的默认事实。
=>
(printout t "Welcome to the expert nematode diagnosis system !" crlf
"This program can identify the following nematodes : " crlf)
向显示屏输出想要显示的句子
(retract ?init) 撤销编号为?init的事实,即(initial-fact)事实
(assert (print-list list)) 添加(print-list list)事实
)
(defrule print-list
(declare (salience 500))
(print-list list)
?genus <- (genus ?name) 该行代码中?name为变量,该变量可以代表事实中的20种线虫类型名称
=>
(retract ?genus)
(printout t " Genus " ?name crlf)
)
(defrule ready
?print <- (print-list list)
=>
(retract ?print)
(printout t "Ready to work : (yes/no) ?" crlf)
(assert (ready =(read))) (read)为读入函数,该行代码的作用是能根据我们的输入结果插入相应的事实
)
由于该专家系统规则很多,在此无法一一列出,而且在各规则中所体现的专家系统规则的定义方法以及其所用到的语法规则也无太大差异,因此也无一一列出的必要。以上所抽取的三条规则已经涵盖了本专家系统规则定义中所遇到的所有语法规则,其语法规则含义已经在上面做了详细解释,相信已经够清楚明了了。
三、 推理树
A:two-part : anterior part slender,posterior part glandular and muscular
B:This is stylet short and curved, body short and thick (0.45-1.5 mm long)
C:This is stylet-long, straight, tapering to a long slender point
with long extensions, body long and slende
说明:
1、 以上字母分别代表不同的特征,具体代表的含义已在上面作出解释。
2、 这个线虫类诊断系统的推理就是根据特征进行分类,搞来搞去都是一样的,没什么太多的技术含量,故上面只简单的抽取了两种分类,三种特征,做一个简单的示意。尽管简单,但相信已经足以表明含义了。
四、 本次实验的最大收获
在本次任务的实验代码解释验收时,余老师问到我在规则推理过程中,在添加新的事实时总是要撤销原有事实的原因,虽然当时我给出了我的理解,但并不是正确的理由。后面,通过余老师的点拨,真正弄明白这么做的理由是:如果前面已有事实没有被撤销,那么其所对应规则将被重复触发,这样程序将陷入死循环。在此,衷心感谢余老师耐心的指导。
五、 特色分析
该程序采用了模块化思想,将整个程序分成了三块:MAIN、CONSTRAINTS、SOLUTION,这样做的好处就是极易对问题进行扩展,如果要加入一个新的事物,只要在MAIN中加入一条产生式规则和在CONSTRAINTS中加入相应的限制规则。
当然,在这个问题中,由于有了每次过河不超过两件事物的限制,再加入新的事物可能导致无解。此外,由于该程序没有一个与用户交流的界面,从而限制了它的推广应用。为了使之能够应用解决类似问题,可将事物名设为变量,通过键盘输入,同时每种事物的数量也可通过键盘输入,这样程序的通用性就可以得到很大程度上的扩展。
第二篇:中南大学 流体力学实验报告
流体力学实验报告
实验名称:流体流动观察实验
一、实验目的
通过观察流体的流动发现某些问题或现象。
二、实验装置
自来水龙头、圆柱体、平板等物件;纪录设备:照相机。
三、观察结果
1.打开水龙头,放出细小的水流。把小水杯外壁(或小汤匙背面)靠近细小水流。细小水流将会被吸引,并且随着凸出的杯壁面流动,而不是按重力方向从水龙头直接往下流。如图示(1.2)。
四、观察结果分析
对实验1的分析:
a.打开水龙头,放出小小的水流。把小汤匙的背放在流动的旁边。水流会被吸引,流到汤匙的背上。这是附壁作用及文土里效应(Venturi Effect)作用的结果。文土里效应令汤匙与水流之间的压力降低,把水流引向汤匙之上。当水流附在汤匙上以后,附壁作用令水流一直在汤匙上的凸出表面流动。
b.流体(水流或气流)有离开本来的流动方向,改为随着凸出的物体表面流动的倾向。当流体与它流过的物体表面之间存在表面摩擦时,流体的流速会减慢。只要物体表面的曲率不是太大,依据流体力学中的伯努利原理,流速的减缓会导致流体被吸附在物体表面上流动。这种作用是以罗马尼亚发明家亨利·康达为名。
上述现象的发生是康达效应和文丘里效应作用的结果。
20##年 10 月 24日