expert

所属分类:Java编程
开发工具:Java
文件大小:22KB
下载次数:1
上传日期:2019-05-19 12:38:21
上 传 者XihaKitty
说明:  人工课程里的动物识别专家系统,同时实现了正向推理和逆向推理
(Animal Recognition Expert System in Artificial Course, and Realizes Forward Reasoning and Reverse Reasoning)

文件列表:
杨凯迪_2016317200225_计科1602\data.txt (293, 2019-05-12)
杨凯迪_2016317200225_计科1602\expert_sys.cpp (14809, 2019-05-13)
杨凯迪_2016317200225_计科1602\expert_sys.exe (38663, 2019-05-13)
杨凯迪_2016317200225_计科1602\expert_sys.o (12002, 2019-05-13)
杨凯迪_2016317200225_计科1602\goal.txt (60, 2019-05-12)
杨凯迪_2016317200225_计科1602\rules.txt (168, 2019-05-12)
杨凯迪_2016317200225_计科1602 (0, 2019-05-13)

程序中的正向与逆向搜索分别在void main()中调用forwardFinger()和backFinger()来实现: 正向搜索 从下向上的推理。由于建立规则库时的内在要求,即子规则必在父规则前,故进行正向推理的时候只要将规则库从前到后扫一遍看是否能由规则推出相应结果即可。如果能匹配推出结果则看该结果是否为动物,如果已经推出动物则推理成功。否则更新事实库,匹配下一个规则。 逆向搜索 反向推理比正向推理要复杂一些。采用的算法是从事实库的动物开始从前往后进行匹配,看是否能成功推出,如果都推不出能识别失败,若能推出其中一个则中止搜索,识别成功。推某一个事实时,仍然是从该事实的前提出发,逐个匹配,若所有的前提满足,则该事实满足。 测试:以书本中长颈鹿为例 第一步:打开我们的目标库succeed 第二步:打开我们的条件库succeed 第三步:打开我们的规则库succeed 打印特征序号: ------------------------------------------------------------------ 0 有*** 1 有毛发 2 有羽毛 3 会飞 4 生蛋 5 哺乳动物 6 有爪 7 有犬齿 8 目盯前方 9 食肉动物 10 吃肉 11 有蹄 12 有蹄动物 13 反刍食物 14 黄褐色 15 黑色条纹 16 长腿 17 长脖子 18 暗斑点 19 不会飞 20 鸟 21 黑白二色 22 会游泳 23 善飞 24 可扩充 25 可扩充 26 可扩充 27 可扩充... ----------------------------------------------------------------- 请输入已知的动物的特征的序号,以空格键或回车键隔开,以'-1'结束输入: 18 17 16 0 11 -1 请输入序号(正向:0 反向:1): 1 它不会是信天翁。 条件有冲突,它不是老虎。 条件有冲突,它不是金钱豹。 它是长颈鹿。 按任意键继续,按'n'或'N'退出: 请输入已知的动物的特征的序号,以空格键或回车键隔开,以'-1'结束输入: 18 17 16 0 11 -1 请输入序号(正向:0 反向:1): 0 它是长颈鹿。 按任意键继续,按'n'或'N'退出:

近期下载者

相关文件


收藏者