天天看点

SWI项目开发(项目书框架)+代码SWI项目开发(简略版)

SWI项目开发(简略版)

”熊猫“鉴别系统设计与实现

创建一个”熊猫“鉴别系统

项目书如下:
实验目的
实验要求
实验环境
实验内容
实验步骤
问题思考
实验总结

一、实验目的

(1)深入实践课程的理论知识;

(2)理解并掌握人工智能prolog语言,熟练使用SWI-PROLOG;

(3)加强对智能系统课程内容的理解和掌握,培养综合运用所学知识开发智能系统的能力。

(4)增强小组成员间的合作能力和沟通能力。

二、实验要求

(1)用产生式规则作为知识表示,用产生系统实现该系统。

(2)可使用本实验指导书中给出的示例程序,此时只需理解该程序,并增加自己感兴趣的修改即可;也可以参考该程序,然后用PROLOG语言或其他语言另行编写。

(3)程序运行时,应能在屏幕上显示程序运行结果。

三、实验环境

SWI-Prolog
           

四、实验内容

由于小熊猫、熊猫和小浣熊三个物种的动物高度相似,拟定建造一个熊猫鉴别系统(根据条件检索和区别小熊猫、熊猫和小浣熊),具体应用领域暂定,具体功能为检索区别、列举特征。

五、实验步骤

1、建造一个“熊猫鉴别”系统所需完成的内容有:

(1)用户界面:采用问答方式;

(2)知识库:存放产生式规则,库中规则可以增删;

(3)数据库:用来存放用户回答的问题,已知事实,推理的得到的中间事实;

(4)推理机:如何运用知识库中的规则进行问题的推理控制;

2、“熊猫鉴别”实验规则集

物种/特征 毛发颜色 栖息地 黑眼圈 爪子 第一印象
小熊猫

(ailurusFulgen)

红棕色 森林 憨憨的
熊猫

(panda)

黑白 森林 憨憨的
浣熊

(racoon)

黑白(灰) 河边 贱贱的

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)运行结果

SWI项目开发(项目书框架)+代码SWI项目开发(简略版)

这里简单展示了功能,一个为列举出三个动物中的某一个的特征,另一个为根据特征判断该动物是三种动物中的哪一种。

六、问题思考

思考:从 Prolog 的语句来看, Prolog 语言的文法结构相当简单。但由于它的语句是 Horn 子句,而 Horn 子句的描述能力是很强的,所以 Prolog 的描述能力也是很强的。例如,当它的事实和规则描述的是某一学科的公理,那么问题就是待证的命题;当事实和规则描述的是某些数据和关系,那么问题就是数据查询语句;当事实和规则描述的是某领域的知识,那么问题就是利用这些知识求解的问题;当事实和规则描述的是某初始状态和状态变化规律,那么问题就是目标状态。所以可以看出,同过程性语言相比,对于一个 Prolog 程序,其问题就相当于主程序,其规则就相当于子程序,而其事实就相当于数据。

七、实验总结

这次设计大大增加了我们对prolog语言的认识和实践,虽然我们编译实现复杂功能的能力还有代提升,但是这次编译开发让我们对这个语言有了进一步的理解和认识,这种事实-逻辑-推断的运行方式是很棒的体验。