SWI项目开发(简略版)
”熊猫“鉴别系统设计与实现
创建一个”熊猫“鉴别系统
- 项目书如下:
- 实验目的
- 实验要求
- 实验环境
- 实验内容
- 实验步骤
- 问题思考
- 实验总结
一、实验目的
(1)深入实践课程的理论知识;
(2)理解并掌握人工智能prolog语言,熟练使用SWI-PROLOG;
(3)加强对智能系统课程内容的理解和掌握,培养综合运用所学知识开发智能系统的能力。
(4)增强小组成员间的合作能力和沟通能力。
二、实验要求
(1)用产生式规则作为知识表示,用产生系统实现该系统。
(2)可使用本实验指导书中给出的示例程序,此时只需理解该程序,并增加自己感兴趣的修改即可;也可以参考该程序,然后用PROLOG语言或其他语言另行编写。
(3)程序运行时,应能在屏幕上显示程序运行结果。
三、实验环境
SWI-Prolog
四、实验内容
由于小熊猫、熊猫和小浣熊三个物种的动物高度相似,拟定建造一个熊猫鉴别系统(根据条件检索和区别小熊猫、熊猫和小浣熊),具体应用领域暂定,具体功能为检索区别、列举特征。
五、实验步骤
1、建造一个“熊猫鉴别”系统所需完成的内容有:
(1)用户界面:采用问答方式;
(2)知识库:存放产生式规则,库中规则可以增删;
(3)数据库:用来存放用户回答的问题,已知事实,推理的得到的中间事实;
(4)推理机:如何运用知识库中的规则进行问题的推理控制;
2、“熊猫鉴别”实验规则集
物种/特征 | 毛发颜色 | 栖息地 | 黑眼圈 | 爪子 | 第一印象 |
---|---|---|---|---|---|
小熊猫 | 红棕色 | 森林 | 无 | 大 | 憨憨的 |
熊猫 | 黑白 | 森林 | 有 | 大 | 憨憨的 |
浣熊 | 黑白(灰) | 河边 | 有 | 小 | 贱贱的 |
3、实验具体步骤
(1)充分理解知识库已有知识,提出待解决问题
(2)建立规则库
(3)从规则库中获取可用规则集
(4)确定搜索控制策略
(5)通过搜索控制策略,从规则集中选出最优规则
(6)执行最优规则,更新知识库
(7)反复多次以上步骤
(8)获得解决方案
4、编写程序及调试运行步骤
(1)程序代码
(此处展示大体思路和部分细节,详情后续更新)
%animals we want to check out
......
%fur color
......
%location
......
%dark circles
......
%claws
......
%first expression
......
%judgment index
......
%you need first use order 'pickup' or 'inputin' to have a try.
%list characters for the animal you pick
pickup :-
(
(write('you may choose one from [ailurusFulgen, panda, racoon]
'),nl,read(Q),animal(Q)) ->
%triggers the first line
(write('is one of three animals'), nl) ;
(write('isnt any one of three animals,please try again'),nl)
),
(
(with_brown_fur(Q)) ->
%triggers the second line
(write('with brown fur'), nl) ;
(write('with gray and black fur'),nl)
),
(
......
).
%input some characters to find out which animal it is
inputin :-
write("Judge characteristics and answer one from yes and no:"),
nl,
((......)
.......
(write("Is it living in forest:"),nl, read(A), judgeyes(A), nl) ->
write("it is a panda") ;
write("it is a racoon")
).
(2)调试
记事本编写程序后,在swi-prolog环境下进行代码运行和结果判断,进行修改;
(3)运行结果
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwczX0xiRGZkRGZ0Xy9GbvNGL2EzXlpXazxSP9cWT4FkaNZWNXp1bkNDW3Z1VaNnTzwEMW1mY1RzRapnTtxkb5ckYplTeMZTTINGMShUYfRHelRHLwEzX39GZhh2css2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xyayFWbyVGdhd3LcV2Zh1Wa9M3clN2byBXLzN3btg3Pn5GcuAjNxAzN0ITM0EzNwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
这里简单展示了功能,一个为列举出三个动物中的某一个的特征,另一个为根据特征判断该动物是三种动物中的哪一种。
六、问题思考
思考:从 Prolog 的语句来看, Prolog 语言的文法结构相当简单。但由于它的语句是 Horn 子句,而 Horn 子句的描述能力是很强的,所以 Prolog 的描述能力也是很强的。例如,当它的事实和规则描述的是某一学科的公理,那么问题就是待证的命题;当事实和规则描述的是某些数据和关系,那么问题就是数据查询语句;当事实和规则描述的是某领域的知识,那么问题就是利用这些知识求解的问题;当事实和规则描述的是某初始状态和状态变化规律,那么问题就是目标状态。所以可以看出,同过程性语言相比,对于一个 Prolog 程序,其问题就相当于主程序,其规则就相当于子程序,而其事实就相当于数据。
七、实验总结
这次设计大大增加了我们对prolog语言的认识和实践,虽然我们编译实现复杂功能的能力还有代提升,但是这次编译开发让我们对这个语言有了进一步的理解和认识,这种事实-逻辑-推断的运行方式是很棒的体验。