产生式动物识别系统

上传人:新** 文档编号:564465047 上传时间:2024-01-24 格式:DOC 页数:8 大小:224.50KB
返回 下载 相关 举报
产生式动物识别系统_第1页
第1页 / 共8页
产生式动物识别系统_第2页
第2页 / 共8页
产生式动物识别系统_第3页
第3页 / 共8页
产生式动物识别系统_第4页
第4页 / 共8页
产生式动物识别系统_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《产生式动物识别系统》由会员分享,可在线阅读,更多相关《产生式动物识别系统(8页珍藏版)》请在金锄头文库上搜索。

1、实验 7:产生式动物识别系统一、 实验目的理解和掌握产生式系统的推理方法,能够用选定的编程语言实现推理机。二、编程环境本文主要编译环境是Windows 10Visual Studio 2015三、问题描述设计一个用于动物识别的产生式系统,该系统通过规则库识别老虎、金钱豹、斑马、长颈鹿、企鹅、信天翁、鸵鸟7 种动物。四、解决方案1. 规则库:用于描述相应领域内知识的产生式集合称为规则库。本规则库包括以下规则R1 : if动物有毛发then动物是哺乳动物R2:if动物有奶then动物是哺乳动物R3:if动物有羽毛then动物是鸟R4: if动物会飞and会生蛋then 动物是鸟R5:if动物吃肉t

2、hen动物是食肉动物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:

3、if动物是鸟 and 不会飞and 有长脖子 and 有长腿 and 有黑白二色then 动物是鸵鸟R14:if动物是鸟and 不会飞and 会游泳 and 有黑白二色 then 动物是企鹅R15:if动物是鸟and 善飞 then 动物是信天翁2. 综合数据库char *ans0 = 抱歉,我也不知道这是什么动物;char *ans1 = 这个动物是金钱豹;char *ans2 = 这个动物是老虎;char *ans3 = 这个动物是长颈鹿;char *ans4 = 这个动物有斑马;char *ans5 = 这个动物是企鹅;char *ans6 = 这个动物是鸵鸟;char *ans7 =

4、这个动物是信天翁;3. 推理机(1) 初始化综合数据库,即把欲解决问题的已知事实送入综合数据库中;(2) 检查规则库中是否有未使用过的规则,若无转(7) ;(3) 检查规则库的未使用规则中是否有其前提可与综合数据库中已知事实相匹配的规则,若有,形成当前可用规则集;否则转(6);(4) 按照冲突消解策略,从当前可用规则集中选择一个规则执行,并对该规则作上标记。把执行该规则后所得到的结论作为新的事实放入综合数据库;如果该规则的结论是一些操作,则执行这些操作;(5) 检查综合数据库中是否包含了该问题的解,若已包含,说明解已求出,问题求解过程结束;否则,转 (2);(6) 当规则库中还有未使用规则,

5、但均不能与综合数据库中的已有事实相匹配时,要求用户进一步提供关于该问题的已知事实,若能提供,则转 (2);否则,执行下一步;(7) 若知识库中不再有未使用规则,也说明该问题无解,终止问题求解过程。输出“抱歉,没有相符合的动物” ,程序退出。4. 流程图五、源代码#includeint main()char a1;char flag0 ;/ 是否识别出动物的标志char *str0 = 本系统可识别七种动物,请用Y 和 N 表示是和否 n;char *str1 = 这个动物有毛发吗 ?;char *str2 = 这个动物有奶吗? ;char *str3 = 这个动物有羽毛吗 ?;char *st

6、r4 = 这个动物会下蛋吗 ?;char *str5 = 这个动物吃肉吗? ;char *str6 = 这个动物有犬齿有爪吗? ;char *str7 = 这个动物有蹄吗? ;char *str8 = 这个动物是嚼反刍动物吗 ?;char *str9 = 这个动物身上是黄褐色而且有暗斑点吗?;char *str10 = 这个动物身上是黄褐色而且有黑色条纹?;char *str11 = 这个动物长腿长脖子且身上有暗斑点吗?;char *str12 = 这个动物身上有黑色条纹吗 ?;char *str13 = 这个动物长腿长脖子? ;char *str14 = 这个动物会游泳并有黑白两色t;cha

7、r *str15 = 这个动物擅飞 ;char *str16 = 这个动物会不会飞 ;char *ans0 = 抱歉,我也不知道这是什么动物;char *ans1 = 这个动物是金钱豹 ;char *ans2 = 这个动物是老虎 ;char *ans3 = 这个动物是长颈鹿 ;char *ans4 = 这个动物有斑马 ;char *ans5 = 这个动物是企鹅 ;char *ans6 = 这个动物是鸵鸟 ;char *ans7 = 这个动物是信天翁 ;char *a4 = str1,str2,str3,str4 ;/ 判断哺乳动物和鸟类char *bl4 = str5,str6,str7,st

8、r8 ;/bL 判断是食草动物还是食肉动物char *b2 = str16 ;/ 判断鸟类会不会飞/*判断具体是那种动物 */char *cl = str9,str10 ;char *c2 = str11,str12 ;char *c3 = str13,str14 ;char *c4 = str15 ;/CL判断金钱豹和老虎/ 判断长颈鹿和斑马/ 判断企鹅和鸵鸟/ 判断是不是信天翁puts(str0);for (int k = 0; k 2)printf_s(初步判定是鸟类 n); flag0 = 1; break;if (flag0 = 0) / 判定是哺乳动物for (int k = 0;

9、 k 4; k+) puts(blk);scanf_s(%c, &a1, 1);getchar();if (a1 = Y)/ 区分食肉动物和食草类动物if (k = 1) printf_s(初步判定是食肉动物 n);for (int k = 0; k 2)printf_s(初步判定是食草类动物 n);for (int k = 0; k 2; k+) puts(c2k);scanf_s(%c, &a1, 1);getchar();if (a1 = Y)/ 确定是长颈鹿还是斑马printf_s(这是长颈鹿 ); break;else if (a1 = N&k = 1) printf_s(这是斑马

10、); break;break;else if (flag0 = 1) / 判定是鸟类puts(b20);scanf_s(%c, &a1, 1);getchar();if (a1 = Y)/ 判断鸟类会不会飞puts(c40);scanf_s(%c, &a1, 1);getchar();if (a1 = Y) / 判断是不是信天翁printf_s(这是信天翁 );else if(a1 = N)puts(ans0);else if (a1 = N) for (int k = 0; k 2; k+) puts(c3k);scanf_s(%c, &a1, 1);getchar();if (a1 = Y)/ 确定是企鹅和鸵鸟printf_s(这是鸵鸟 ); break;else if (a1 = N&k = 1) printf_s(这是企鹅 ); break;getchar();return 0;六、实验结果相关截图截图一

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 演讲稿/致辞

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号