Steven Wang's Blog
C'est la vie
rss
email
twitter
新浪微博
  • Home
  • About
  • Google Profile
  • 新浪微博

产生式规则识别动物在MFC中的实现

0 Comments
Posted on 十一月 26 2009

利用产生式规则可以根据输入的动物特征来识别动物。现有猎豹,老虎,长颈鹿,斑马,鸵鸟,企鹅,海燕7种动物,以及如下15条判断规则:

1、IF 有毛发 THEN 是哺乳动物
2、IF 能产乳 THEN 是哺乳动物
3、IF 有羽毛 THEN 是鸟类动物
4、IF 能飞行,能生蛋 THEN 是鸟类动物
5、IF 是哺乳动物,吃肉 THEN 是食肉动物
6、IF 是哺乳动物,有爪子,有利齿,眼睛前视 THEN 是食肉动物
7、IF 是哺乳动物,有蹄 THEN 是有蹄动物
8、IF 是哺乳动物,能反刍 THEN 是有蹄动物
9、IF 是食肉动物,是黄褐色,有深色斑点 THEN 是猎豹
10、IF 是食肉动物,是黄褐色,有黑色条纹 THEN 是老虎
11、IF 是有蹄动物,有长腿,有长颈,是黄褐色,有深色斑点 THEN 是长颈鹿
12、IF 是有蹄动物,是白色,有黑色条纹 THEN 是斑马
13、IF 是鸟类动物,不会飞,有长腿,有长颈,是黑色和白色相杂 THEN 是鸵鸟
14、IF 是鸟类动物,不会飞,能游水,是黑色和白色相杂 THEN 是企鹅
15、IF 是鸟类动物,善于飞行 THEN 是海燕

例如,输入的事实为“能飞行,能生蛋,善于飞行”,则可以判断该动物为海燕。

思路分析:以上15条规则中的的条件与结论都可以分解为多个事实,如:有毛发、是哺乳动物、是猎豹,但他们具备不同的属性,“有毛发”属于原始的事实,“是哺乳动物”是中间事实,“是猎豹”是结论性质的事实。故中间事实有:是哺乳动物,是鸟类动物,是食肉动物,是有蹄动物,结论性质的事实有:是猎豹,是老虎,是长颈鹿, 是斑马,是鸵鸟,是企鹅,是海燕,其余均为原始事实。而每一个规则由两部分组成,即前提条件和结论,其中前提条件由若干条非结论性质的事实组成,结论由一条非原始性质的事实组成。

系统首先根据这15条规则和上述分析的事实与规则建立知识库,而后每一次输入事实集合的识别过程如下。采用正向推理,遍历知识库中所有的规则。对于某一条规则,判断输入事实集合中的事实 是否能满足该规则的前提条件,若不满足则继续验证下一条规则;若满足,则标记输入事实集合中的满足前提条件的事实为已使用,再判断该规则的结论是否已经存在于输入事实集合中,若不存在,则将规则的结论加入输入事实集合,并从第一条规则开始重新验证(只要输入事实集合在判断验证的过程中加入了新的事实,则须从第一条规则开始重新验证);若存在,则继续验证下一条规则。遍历结束后,判断输入事实集合,若存在零个或一个以上的结论性质的事实,则该动物无法识别;若存在未被标记为已使用的事实,则该动物无法识别;若存在且仅存在一个结论性质的事实,则该动物被识别。

在MFC中实现了产生式规则识别动物,运行结果如下:(点击进入源代码下载页面)

产生式规则识别动物

勾选界面上所列的动物特征,即输入事实,点击“识别”按钮后,左边显示识别结果,点击“清除”,则界面恢复初始状态。

产生式系统是人工智能中一种重要的推理系统,其知识库和推理机可以分离,因此大量的运用于专家系统的构建中,但产生式系统也存在过于简单、推理效率低等缺点。本文只是使用了正向推理对问题进行分析求解,产生式系统中还有诸如逆向推理和双向推理等推理方式,通过对知识和推理机的优化,可以有效地提高产生式系统的效率及推理精准度。

--End--
作者:Steven Wang | 可以转载, 转载时务必以超链接形式标明文章原始出处和作者信息及版权声明
网址:http://blog.stevenwang.name/ai-rules-animalIdentifier-18002.html

Relate Posts:

  • 最近项目的一点总结
  • 围着脖子推GTalk机器人V1.0版开放源代码
  • 围着脖子推V2.0 Beta1版开放源代码
  • 利用LMS(最小均方误差)算法进行数字识别
  • 利用Autoassociative Memory(联想记忆)进行数字识别

Tags: 产生式规则  产生式系统  动物识别  源代码  MFC 
Categories: 算法 

Leave a Reply



About Me

    Steven Wang
    Student in Computer Software and Theory
    Life@Wuxi, Jiangsu
    Study@Jiangnan University
    more...

Feeds

  • Entries (RSS)
  • Comments (RSS)
  • 订阅到 Google Reader
  • 订阅到 抓虾
  • 订阅到 鲜果
  • 订阅到 QQ

Popular Posts

  • 围着脖子推GTalk机器人V1.0发布(27299)
  • 通过SSH + Chrome + Proxy Switchy!代理上网(19678)
  • 在GAE上部署Micolog博客系统(11307)
  • 围着脖子推V2.0 Beta1版发布 支持Twitter,新浪微博,人人网,嘀咕,做啥 同步更新(11060)
  • 围着脖子推GTalk机器人V1.0更新-增加接收Twitter更新等功能(10663)
  • 围着脖子推更新-增加同步更新网易微博、腾讯微博和搜狐微博(10481)
  • 在Matlab中实现Hough变换检测直线(8448)
  • Micolog主题(theme) —— translucence(7841)

Recent Posts

  • Steven Wang's 2011
  • 工作
  • T400升级Intel SSD
  • Java中的时区转换小结
  • 二值图像连通区标记之区域生长法
  • Steven Wang's 2010
  • 微博提醒应用上线
  • 双喜临门

Recent Comments

  • Queen:加油。...
  • Queen:hi,我来打个招呼,深圳的朋友。...
  • yu :@Steven Wang, p<...
  • ixwebhosting:文章总结的好潇洒,即将对末来学生生活说声...
  • john:希望新的一年更加美好...

Categories

  • Google App Engine(10)
  • 数字图像处理(11)
  • Micolog(7)
  • VPS(6)
  • 围着脖子推(15)
  • 人工神经网络(5)
  • 算法(11)
  • MyLife(16)
  • 媒体检索(4)
  • Others(8)
  • Python(2)

Archives

  • January 2012(1)
  • December 2011(2)
  • May 2011(1)
  • February 2011(1)
  • December 2010(3)
  • November 2010(1)
  • October 2010(1)
  • September 2010(4)
  • August 2010(2)
  • July 2010(5)
  • June 2010(4)
  • May 2010(7)

Blog roll

  • ~Issue
  • Fenng
  • 刘未鹏 | Mind Hacks
  • 林海听松
  • Yu Zheng
  • Johnny Han
  • 静静的安静
  • Dbger
  • land of promise
  • 星星
  • ISHENS|TECH
  • 天天软件园
  • leezhenchong's blog
  • 苏洋博客

  • Home
  • About
  • Google Profile
  • Twitter
  • 新浪微博
  • Login
Powered by Google App Engine  |   Designed by WebTreats  |   由 xuming 提供 Micolog程序