动物识别产生式系统,动物识别系统代码python

  动物识别产生式系统,动物识别系统代码python

  动物识别专家系统产生式系统问题定义系统实现规则,事实和产生式表达式类设计匹配序列推理机结果展示源代码

  运行系统

  规则库

  规则是用来描述相应领域知识的产生式集合。它是产生式系统中问题求解的基础,其中领域知识表达的完备性、准确性和有效性将直接影响系统的性能和效率。因此,需要对规则库中的知识进行合理的设计和组织,检测和消除冗余或矛盾的知识。事实基础。

  事实库用于存储推理过程中形成的初始事实、当前已知信息、中间结论和最终结论。很明显,事实库的内容是动态的,是不断变化的。推理机

  推理机由一组程序组成。它控制和协调整个生产系统的运行,从而实现问题的推理和解决。通常分3步完成:匹配、冲突解决和操作。识别问题动物的专家系统是专家系统的一种流行的实验模型。它使用产生式规则来表示知识。共有15条规则,可以识别7种动物。这些规则既少又简单。它们可以被修改,可以添加新的规则,并且可以使用用于识别其他事物的新规则来替换这些规则。

  该系统实现了规则、事实和产生式的表示。识别七种动物需要30个特征和事实,它们的编号从0到29。

  String[] features={ 长毛,产奶,长羽毛,飞翔,产卵,食肉,犬科动物,爪子,眼睛盯着前方,有蹄,反刍,谭,斑点好飞翔,哺乳动物,鸟类,食肉动物,蹄类,企鹅,海燕,鸵鸟,斑马,长颈鹿,老虎和豹子。产生式规则由一个三维数组表示:

  int[][][]expr=new int[][]{ { 0 },{20}},{{1},{20}},{{2},{21}},{{3,4},{21}},{{20,5},{22}},{{6,7,8},{22}},{{20,8},{23}},{{20,9},{23}},{{22,11,12类设计规则类:存储一个规则的前提和结论;能根据给定的条件判断规则是否满足(即能否得出规则的结论);RuleRepository类:存储事实库和规则库,并实现推理引擎。错误识别专家系统类:继承自JFrame,interface类。//规则库,存储所有已知规则(产生式规则)list Rule rules=new ArrayList();//事实库,动态变化列表整数条件=new ArrayList();使用变量列表,很容易添加和删除现有的条件和事实。

  匹配顺序在30个事实中:

  String[] features={ 长毛,产奶,长羽毛,飞翔,产卵,食肉,犬科动物,爪子,眼睛盯着前方,有蹄,反刍,谭,斑点好飞翔,哺乳动物,鸟类,食肉动物,蹄类,企鹅,海燕,鸵鸟,斑马,长颈鹿,老虎和豹子。前20个是用户输入的特征,后面4个(哺乳动物、鸟类、食肉动物和蹄类)属于推理的中间结果,最后7个(企鹅、海燕、鸵鸟、斑马、长颈鹿、老虎和豹)

  用户在事实库输入条件后(这些条件就是事实),事实库并不是不变的

  比如用户输入0(“有毛”)和5(“吃肉”),那么真实的事实库是(0,5,20),因为匹配第一个规则:{{0},{20}}时,有一个条件是0,所以可以得到规则1的结论(20),这个结论也要加到事实库中。

  所以在这15个产生式规则自上而下匹配的过程中,如果匹配到一个产生式规则,就要将这个规则的结论加入到事实库中;而且匹配规则是要注意顺序的也找到了。在上面的例子中,如果先匹配到规则5,那么此时事实库中只有(0和5),无法得到中间结论22。

  说明规则要按顺序排列,产生某数的规则(即结论是某数规则)要排在使用该数的规则(即条件是某数规则)之前。这15个结论正是按照这个顺序。

  推理机有了上述顺序意识后,就很容易实现推理机:自上而下,从第一条产生式规则开始,判断当前事实库是否能匹配每条规则。如果匹配成功,该规则的结论号将被添加到事实库中,匹配完规则库中的所有产生式规则后即可输出结论(我的处理):

  中间结论(哺乳动物、鸟类、食肉动物和蹄类)输出到推理箱,展示正向推理过程;最后(七种动物)框出相应的图片;因此,无法从演示中推断出任何结论(所有结论都不匹配):

  介绍中间结果:

  介绍了最终结果,并对动物进行了鉴定:

  源代码已经上传到github(Java实现,IDE是IDEA)

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: