专家系统实验报告

合集下载

农业专家系统开发-实验报告

农业专家系统开发-实验报告

实验报告课程:农业专家系统行政班级:11软件2班姓名:程茗学号:1108054208一、实验目的加深对知识表示方法的理解与认识,掌握知识特别是产生式知识在计算机内的存储方式;掌握知识库构建方法,利用关系型数据库建立知识库;选用适当的程序设计语言练习专家系统推理机的设计,编写推理程序;在上述基础上,根据农业专家系统的组成构建一个简单的农业专家系统。

实验方法1. 设计一个简单的医疗诊断专家系统。

2. 使用Prolog语言编程实现该系统。

3. 给出模拟运行结果。

三、实验环境及开发工具实验环境:(1)硬件环境:网络环境中的微型计算机。

(2)软件环境:Windows操作系统,任选一种网络编程语言和数据库管理系统开发工具:基于Visual Prolog的鸡疾病诊断专家系统实验内容首先对一些常见动物的属性进行归纳,提出有用的信息再对这种动物进行描述,通过这一过程,得出大部分动物的特点,这样再通过智能语言对它进行编写。

理解并掌握基于规则系统的表示与推理学会编写小型的生产式系统,理解正向推理和反向推理的过程以及两者的区别1.该系统可以识别孔雀、北极熊、狮子、长颈鹿、斑马、天鹅、鹦鹉在本系统中,知识库中的知识用产生式规则表示R1 IF 该动物有毛发THEN 该动物是哺乳动物R2 IF 该动物有奶THEN 该动物是哺乳动物R3 IF 该动物有羽毛THEN 该动物是鸟R4 IF 该动物会飞AND会下蛋THEN 该动物是鸟R5 IF 该动物吃肉THEN 该动物是肉食动物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 IF 该动物是鸟AND 有彩色羽毛AND 头小有竖立羽毛AND 会飞THEN 该动物是孔雀R14 IF 该动物是鸟AND 会游泳AND会飞AND 有黑褐色THEN 该动物是天鹅R15 IF 该动物是鸟AND 会说话THEN 该动物是鹦鹉实验原理一个基于规则专家系统的完整结构示于图1。

人工智能与专家系统实验报告

人工智能与专家系统实验报告

暨南大学本科实验报告专用纸课程名称人工智能与专家系统成绩评定0实验项目名称动物识别系统设计指导教师0实验项目编号实验项目类型综合型0实验地点南校区学生姓名学号0学院信息科学技术学院系计算机科学系专业0实验时间2017年12 月日-- 年月日温度℃湿度(一)实验目的通过建立动物识别产生式系统,理解并体会知识库与控制系统相互独立的智能产生式系统与一般程序的区别。

(二)实验要求1.系统的设计和完成可以使用各种编程语言和实用工具,不采用人工智能语言和工具,这样能够使你更加了解专家系统。

2.推荐使用语言:C、java、php、javascript、delphi。

也可以使用其他语言。

3如果使用数据库做后台,要求使用最简单的Access。

4.系统可以使用图形界面,简单的也可以使用字符界面,不要求。

(三)设计并完成知识库本课程设计的主旨是设计并实现具有15条规则能自动识别7种动物的产生式系统。

知识库与控制系统相互独立,系统完成后除了能识别已有的7种动物外,按产生式知识表示方法向知识库中添加、修改新的知识后,系统能在不修改控制系统程序的情况下仍然能正确识别。

1.综合数据库中数据结构说明;产生式通过满足前件,得到后件的结论或者执行后件的相应动作,即后件由前件来触发。

同时,一个产生式生成的结论可以作为另一个产生式的前提或语言变量使用,进一步可构成产生式系统。

因此在通过有关特征识别动物的特征中规定:识别动物的前件(即动物的特征):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.长颈鹿 28.企鹅 29.鸵鸟 30.信天翁于是在综合数据库中,将设定int型数组facts[30],数组的编号对应着以上事实的编号,数组的值为1时,意味着对应编号的事实为真,否则为假。

人工智能专家系统实验

人工智能专家系统实验

人工智能专家系统实验————————————————————————————————作者:————————————————————————————————日期:河南城建学院《人工智能》实验报告实验名称:__实验四名称实现一个基于产生式系统的小型专家系统(动物识别)成绩:专业班级: 0814112 学号: 081411202 姓名: xxxxxxxxxxxx实验日期:2014 年 5 月 20 日实验器材:VC6.0软件,多媒体计算机。

一、实验目的掌握产生式系统的运行机制和基于规则推理的基本方法。

通过一个实例了解小型专家系统的结构、设计和实现过程,初步掌握专家系统的设计和实现方法。

二、实验要求设计并实现一个某领域的小型专家系统(动物识别),该系统能对输入的询问回答分类或预测的结果,并根据推理过程回答“为什么”或“怎样得出该结论”的问题。

三、实验步骤(1)定义变量,包括变量名和变量的值。

(2)建立规则库,其方法是:(a) 输入规则的条件:每条规则至少有一个条件和一个结论,选择变量名,输入条件(符号);选择变量值,按确定按钮就完成了一条条件的输入。

重复操作,可输入多条条件;(b) 输入规则的结论:输入完规则的条件后,就可以输入规则的结论了,每条规则必须也只能有一个结论。

选择变量名,输入条件(符号),选择变量值,按确定按钮就完成了一个结论的输入。

重复以上两步,完成整个规则库的建立。

(3)建立事实库(总数据库):建立过程同步骤2。

重复操作,可输入多条事实。

该动物识别专家系统由15条规则组成,可以识别七种动物,在15条规则中,共出现 30个概念(也称作事实),共30个事实,每个事实给一个编号,从编号从1到30,在规则对象中我们不存储事实概念,只有该事实的编号,同样规则的结论也是事实概念的编号,事实与规则的数据以常量表示,其结构如下:有犬齿","有爪","眼睛盯前方","有蹄","反刍","黄褐色","有斑点","有黑色条纹","长脖","长腿","不会飞","会游泳","黑白两色","善飞","哺乳类","鸟类","肉食类","蹄类","企鹅","海燕","鸵鸟","斑马","长颈鹿","虎","金钱豹"};存放规则的结构体:typedef struct{int relation[5];int name;}Rule;存放产生式规则推理过程的数组:Rule rule[15]={{{0,-1},20},{{1,-1},20},{{2,-1},21},{{3,4,-1},21},{{20,5,-1},22},{{6,7,8,-1},22},{{20,8,-1},23},{{20,9,-1},23},{{22,11,12,-1},30},{{22,11,13,-1},29},{{23,14,15,12,-1},28},{{23,13,-1},27},//如果动物是蹄类(23),且有黑色条纹(13),则该动物对应事实数组的第27个“斑马”{{21,14,15,16,-1},26},{{21,19,-1},25},//如果动物是鸟类(21),且是肉食类(19),则该动物对应事实数组的第25个“海燕”。

医疗诊断专家系统实验报告

医疗诊断专家系统实验报告

医疗诊断专家系统实验报告一、引言医疗诊断是医学领域的一项重要任务,对患者的健康和生活具有重要影响。

传统的医疗诊断主要依靠医生的经验和专业知识,但是由于医学知识的复杂性和多样性,医生在繁忙的工作中难免会出现诊断错误或遗漏。

为了提高医疗诊断的准确性和效率,专家系统被广泛应用于医疗诊断领域。

专家系统是一种模拟人类专家决策过程的计算机系统,具有高度的专业知识和决策能力。

在医疗诊断领域,专家系统可以通过分析患者的症状和病史,以及医学知识库中的相关数据,给出准确的诊断结果和治疗建议。

本实验旨在设计和实现一个基于专家系统的医疗诊断系统,并验证其诊断准确性和效率。

二、实验设计1.需求分析:根据医疗领域的常见病症和症状,确定需要收集和整理的医学知识库,包括疾病的症状、病史、体征等。

2.知识库构建:根据需求分析结果,收集和整理医学知识,构建知识库,并使用专门的表示方法,如规则表达式或产生式规则。

3.系统设计:根据知识库和需求分析结果,设计系统的结构和功能,包括用户界面、病情输入、诊断过程等。

4.系统实现:使用编程语言和相应的工具实现系统设计的各个功能,包括用户界面的实现、知识库的读取和分析、诊断过程的模拟等。

5.系统测试:使用真实或模拟的病例对系统进行测试,验证系统的诊断准确性和效率。

三、实验结果与分析根据实验设计,我们成功设计和实现了一个基于专家系统的医疗诊断系统。

系统具有以下特点:1.用户友好界面:系统采用直观、简洁的界面设计,使普通用户可以轻松输入病情信息。

2.知识库丰富:根据需求分析,我们收集和整理了大量的医学知识,包括常见疾病的症状、病史、体征等。

知识库的构建使系统具有较高的诊断准确性。

3.快速诊断:系统能够快速根据用户输入的病情信息进行诊断,大大提高了诊断的效率。

我们使用了一组真实的病例对系统进行了测试,测试结果表明系统的诊断准确率达到了90%以上,且诊断结果与专业医生的诊断结果基本一致。

系统还能够根据病情的严重程度给出相应的治疗建议,对于患者的治疗起到了积极的指导作用。

医疗诊断专家系统实验报告

医疗诊断专家系统实验报告

鸡病诊断专家系统实验报告一、实验目的1. 加深理解专家系统的结构原理与实际应用。

2. 初步掌握知识获取的基本方法。

3. 掌握产生式规则知识表示方法及其编程实现方法。

4. 初步掌握知识库的组建方法。

5. 加深理解推理机的算法原理并初步掌握其编程实现方法。

二、实验内容运用所学知识,设计并编程实现一个小型专家系统。

三、基本要求1. 设计一个简单的医疗诊断专家系统。

2. 使用Prolog语言编程实现该系统。

3. 给出模拟运行结果。

四、总体设计1.系统名称基于Visual Prolog的鸡疾病诊断专家系统2.系统功能咨询功能根据用户的需要,能够为用户提供有关饲养鸡疾病方面的知识,解答用户提出的问题。

如鸡呼吸声音方面、消化系统、头颈症状等。

诊断功能该功能模块由两部分构成,一种是症状诊断功能,根据鸡得病后的症状,由系统识别后给出结果;另一种为形态诊断.根据鸡的动作识别并给出诊断结果。

在诊断过程中抓主要因素,一般地.将呼吸系统、消化系统、头颈症状、神经运动系统、皮肤羽毛症状、冠髻症状、眼症状及解剖喉内脏的症状,在本系统中选择了三个大的方面,消化系统,呼吸系统和头颈方面。

通过用户提供症状,可以大致推断出疾病。

3.系统开发流程图专家系统的知识开发首先需要进行知识获取、组织、表示,然后建立数据库、知识库、模型库,在此基础上通过一定的推理机进行推理,得出结论,经过专家测试后进行完善,最后得到推广应用。

以下就是本专家系统开发的技术流程,如图1所示图1 系统开发流程图4. 鸡疾病诊断专家系统知识库的设计建立知识库的前提,要整理好规则。

如果想精确的诊断出疾病,必须要提供更多的信息,换句话说就是规则要写的更复杂些。

鸡疾病一般分头颈症状,冠髻症状,呼吸系统症状,消化系统症状,神经运动系统,眼症状,皮肤羽毛症状七大症状。

如果通过七大症状诊断疾病,可以说知识库的构建相当困难。

我选择了三大症状,分别为:消化系统症状,头颈症状,呼吸系统症状。

人工智能与专家系统实训课程学习总结基于CLIPS的专家系统设计与实现报告

人工智能与专家系统实训课程学习总结基于CLIPS的专家系统设计与实现报告

人工智能与专家系统实训课程学习总结基于CLIPS的专家系统设计与实现报告人工智能与专家系统实训课程是我在大学期间参与的一门课程,通过这门课程,我深入了解了人工智能和专家系统的基本概念和原理,并利用CLIPS软件进行专家系统的设计与实现。

本报告将总结我在学习过程中的心得体会,以及基于CLIPS的专家系统设计与实现的经验和方法。

一、人工智能与专家系统实训课程学习心得体会在学习人工智能与专家系统实训课程的过程中,我意识到人工智能的重要性和广泛应用的前景。

人工智能技术已经逐渐渗透到各个领域,包括医疗、金融、交通等,为各行各业带来了巨大的变革。

专家系统作为人工智能的一种典型应用,能够模拟人类专家的知识和推理过程,为决策提供指导和支持。

在课程学习过程中,我首先了解了专家系统的基本原理和分类。

专家系统是基于专家知识和推理模型构建的系统,主要包括知识表示、推理机制和用户界面等组成部分。

了解这些基本概念和原理对于后续的专家系统设计和实现非常重要。

其次,我学习了专家系统开发工具CLIPS的使用方法。

CLIPS是一个基于规则的专家系统开发工具,它使用尺度匹配和前向链接等技术实现了专家知识的表示和推理过程。

通过学习CLIPS的使用,我能够熟练地进行专家系统的设计和实现。

最后,我参与了一个基于CLIPS的专家系统设计与实现项目。

在这个项目中,我团队根据实际需求,利用CLIPS实现了一个咨询服务的专家系统。

该系统能够根据用户的问题和条件,提供相应的咨询建议。

通过这个项目,我深入理解了专家系统的开发流程和技术要点,同时也锻炼了团队合作和沟通能力。

二、基于CLIPS的专家系统设计与实现经验和方法在基于CLIPS的专家系统设计与实现过程中,我总结了一些经验和方法,供今后的工作和学习中参考。

首先,合理分析和组织专家知识是专家系统设计的关键。

专家系统的性能和准确性很大程度上取决于所蕴含的专家知识。

在设计过程中,我们需要深入了解专业领域的知识,并根据实际场景进行分析和组织,以便在CLIPS中进行有效的表示和推理。

医疗诊断专家系统实验报告 (3)

医疗诊断专家系统实验报告 (3)

医疗诊断专家系统实验报告实验目的:构建一个医疗诊断的专家系统,该系统能够根据患者的症状和疾病的特征,给出相应的诊断结果。

实验步骤:1. 收集医疗领域的知识:通过查阅相关的医学书籍、论文和专业网站等,收集到了大量有关疾病和症状的信息。

同时,也与医生进行了交流,了解了他们在实际诊断中的经验和方法。

2. 知识表示:将收集到的知识进行整理和归纳,并将其表示为一系列的规则或者知识库。

规则的形式可以是IF-THEN的形式,例如:“IF 患者有发热和咳嗽的症状THEN 可能患有感冒”。

知识库可以是一个包含疾病和症状之间关系的图谱。

3. 系统实现:根据知识表示的形式,利用编程语言实现医疗诊断的专家系统。

要求系统能够根据用户输入的症状,推理出可能的疾病,并给出相应的诊断结果。

4. 实验评估:通过收集一些病例数据,测试系统的准确性和可靠性。

评估指标包括系统对疾病的诊断准确率、系统对症状的覆盖范围等。

实验结果:根据实验评估的结果,系统的诊断准确率达到了90%,在很大程度上满足了医生的需求。

此外,系统还能够覆盖大部分常见疾病的症状,对于一些罕见疾病的诊断也能够给出合理的推理结果。

实验总结:通过本次实验,我们成功构建了一个医疗诊断的专家系统,并且取得了较好的实验结果。

但是需要注意的是,该系统仅作为辅助诊断工具使用,并不能替代医生的判断和经验。

所以在实际应用中,应该将专家系统与医生的实际诊断相结合,提高医疗诊断的准确性和效率。

此外,还可以进一步完善系统的知识库,加入更多的病例和知识,提高系统的覆盖范围和适用性。

动物专家系统实验报告

动物专家系统实验报告
//printf("%d",a1);
printf("Q2:有奶吗?\n1:YES\n0:NO\n");
scanf("%d", &a2);
// printf("%d",a2);
printf("\n\n\n初步结果:\n");
if (a1 == 1 && a2 == 1) {
printf("----------是哺乳动物----------\n\n");
printf("----------是有蹄类动物----------\n\n");
x4 = 1;
} else if (d2 == 1 && x1 == 1) {
printf("----------是有蹄类动物----------\n\n");
x4 = 1;
} else {
printf("----------不是有蹄类动物----------\n\n");
printf("----------该动物是虎----------");
//r11
else if (x1 == 1 && x2 == 0 && x3 == 0 && x4 == 1 && n1 == 0 && n2 == 1 && n3 == 0 && n4 == 1 && n5 == 1 && n6 == 0 && n7 == 0 && n8 == 0)

专家系统分类

专家系统分类

辽宁工程技术大学上机实验报告
选择
新建规则
点击
4)设置程序栅格变量参数:变量类型为选择项为Program。

5) 设置等级变量参数:变量类型为
项为Value,并确定等级数值。

二.专家系统分类
打开知识分类器
实验体会:
通过本次实验的操作,我学习了利用ERDAS软件进行专家系统分类的过程以及方法。

此种分类方法较以前学习的监督和非监督分类操作起来较复杂,但精度相对较高。

在实验的过程中遇到了一些问题,到一些地方的时候不知道参数该如何设置,但最后经过同学的帮助顺利的完成了实验的操作。

此次实验使我体会最深的就是ERDAS软件要经常操作,才可以做到熟练、掌握,否则将会生疏,所以以后应该经常练习。

农业专家系统实验分析报告

农业专家系统实验分析报告

农业专家系统实验报告————————————————————————————————作者:————————————————————————————————日期:实验报告课程:农业专家系统行政班级:09农信姓名:王雪学号:0908074115 一、实验目的加深对知识表示方法的理解与认识,掌握知识特别是产生式知识在计算机内的存储方式;掌握知识库构建方法,利用关系型数据库建立知识库;选用适当的程序设计语言练习专家系统推理机的设计,编写推理程序;在上述基础上,根据农业专家系统的组成构建一个简单的农业专家系统。

二、实验方法动物识别专家系统是流行的专家系统实验模型,它用产生式规则来表示知识,共15 条规则、可以识别七种动物,这些规则既少又简单,可以改造他们,也可以加进新的规则,还可以用来识别其他东西的新规则来取代这些规则。

三、实验环境及开发工具实验环境:(1)硬件环境:网络环境中的微型计算机。

(2) 软件环境:Windows 操作系统,任选一种网络编程语言和数据库管理系统。

开发工具:Microsoft SQL Sever C++编程语言四、实验内容(一)、知识表示(节选)动物分类专家系统由15 条规则组成,可以识别七种动物,在15 条规则中,共出现 30 个概念(也称作事实),共30 个事实,每个事实给一个编号,从编号从1 到30,在规则对象中我们不存储事实概念,只有该事实的编号,同样规则的结论也是事实概念的编号,事实与规则的数据以常量表示。

(二)、构建知识库1、事实数据库的设计与实现(附数据库截屏图)对动物进行比较和分析,找出它们之间的不同,然后利用数据库根据动物的不同之处出创建出一个表。

2、利用关系型数据库构建知识库(附截屏图)系统的知识库中只有两个谓词,规则和事实,利用关系数据库来构造知识库时,只需建立两个表,即规则表和事实表。

规则表包含推理用到的条件事实和结论事实,针对每一事实,在事实表中存储。

创建知识库的过程就是根据推理机制进行推理的过程,这个过程中根据如果能够根据事实数据库中的动物的特征,然后再根据真实存在的事实,那样就可以得到关于这种动物的推理的一个数据表,这样就组成了一个知识库;(三)、推理机设计(附程序源代码)动物识别15 条规则的中文表示是:规则1:如果:动物有毛发则:该动物是哺乳动物规则2:如果:动物有奶则:该单位是哺乳动物规则3: 如果:该动物有羽毛则:该动物是鸟规则4:如果:动物会飞,且会下蛋则:该动物是鸟规则5:如果:动物吃肉则:该动物是肉食动物规则6:如果:动物有犬齿,且有爪,且眼盯前方则:该动物是食肉动物规则7:如果:动物是哺乳动物,且有蹄则:该动物是有蹄动物规则8:如果:动物是哺乳动物,且是反刍动物则:该动物是有蹄动物规则9:如果:动物是哺乳动物,且是食肉动物,且是黄褐色的,且有暗斑点则:该动物是豹规则10:如果:如果:动物是黄褐色的,且是哺乳动物,且是食肉,且有黑条纹则:该动物是虎规则11:如果:动物有暗斑点,且有长腿,且有长脖子,且是有蹄类则:该动物是长颈鹿规则12:如果:动物有黑条纹,且是有蹄类动物则:该动物是斑马规则13:如果:动物有长腿,且有长脖子,且是黑色的,且是鸟,且不会飞则:该动物是鸵鸟规则14:如果:动物是鸟,且不会飞,且会游泳,且是黑色的则:该动物是企鹅规则15:如果:动物是鸟,且善飞则:该动物是信天翁该程序为:运行结果为:。

动物识别专家系统实验报告

动物识别专家系统实验报告

题目:动物识别专家系统一.实验目的理解和掌握产生式只是表示方法,能够用选定的编程语言实现产生式系统的规则库。

二.实验内容(1)以动物识别系统的产生式规则为例。

(2)用选定的编程语言建造规则库和综合数据库,并能对它们进行增加、删除和修改操作。

三.实验原理动物识别专家系统是流行的专家系统实验模型,它用产生式r来表示知识,共15条r、可以识别七种动物,这些r既少又简单,可以改造他们,也可以加进新的r,还可以用来识别其他东西的新r来取代这些r。

动物识别15条r:r1:IF 动物有毛发THEN 该动物是哺乳动物r2: IF 动物能产奶THEN该单位是哺乳动物r3: IF 该动物有羽毛THEN该动物是鸟r4: IF动物会飞AND会下蛋THEN该动物是鸟r5: IF动物吃肉THEN该动物是肉食动物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:IF动物有长腿AND 有长脖子AND 是黑色的AND 是鸟AND 不会飞THEN该动物是鸵鸟r14:IF动物是鸟AND 不会飞AND 会游泳AND 是黑色的THEN该动物是企鹅r15:IF动物是鸟AND 善飞THEN该动物是信天翁四.推理树部分推理树如下:五.代码程序是用java编写的规则对象代码:public class Rule {private ArrayList<Integer> premise = new ArrayList<Integer>();private int result;public void addPremise(int item) { premise.add(item);}public int size() {return premise.size();}public int getPremiseAt(int index) {return premise.get(index);}public void setResult(int result) {this.result = result;}public int getResult() {return result;}}规则库代码如下:public class RuleBase {private ArrayList<Rule> rules= new ArrayList<Rule>();public int size() {return rules.size();}public RuleBase() {init();}public void addRule(Rule rule) {rules.add(rule);}public Rule getRuleAt(int index) {return rules.get(index);}public void init() {Rule rule1 = new Rule();rule1.addPremise(0); rule1.setResult(20);rules.add(rule1);Rule rule2 = new Rule();rule2.addPremise(1); rule2.setResult(20);rules.add(rule2);Rule rule3 = new Rule();rule3.addPremise(2); rule3.setResult(21);rules.add(rule3);Rule rule4 = new Rule();rule4.addPremise(3); rule4.addPremise(13); rule4.setResult(21);rules.add(rule4);Rule rule5 = new Rule();rule5.addPremise(19); rule5.setResult(22);rules.add(rule5);Rule rule6 = new Rule();rule6.addPremise(4); rule6.addPremise(15); rule6.addPremise(12); rule6.setResult(22);rules.add(rule6);Rule rule7 = new Rule();rule7.addPremise(20); rule7.addPremise(9); rule7.setResult(23);rules.add(rule7);Rule rule8 = new Rule();rule8.addPremise(20); rule8.addPremise(18); rule8.setResult(23);rules.add(rule8);Rule rule9 = new Rule();rule9.addPremise(20); rule9.addPremise(22); rule9.addPremise(14); rule9.addPremise(11);rule9.setResult(24);rules.add(rule9);Rule rule10 = new Rule();rule10.addPremise(20); rule10.addPremise(22); rule10.addPremise(11); rule10.addPremise(5);rule10.setResult(25);rules.add(rule10);Rule rule11 = new Rule();rule11.addPremise(23); rule11.addPremise(6); rule11.addPremise(7); rule11.addPremise(14);rule11.setResult(30);Rule rule12 = new Rule();rule12.addPremise(23); rule12.addPremise(5); rule12.setResult(26);rules.add(rule12);Rule rule13 = new Rule();rule13.addPremise(21); rule13.addPremise(6); rule13.addPremise(17); rule13.addPremise(7);rule13.setResult(27);rules.add(rule13);Rule rule14 = new Rule();rule14.addPremise(21); rule14.addPremise(10); rule14.addPremise(17); rule14.addPremise(8);rule14.setResult(28);rules.add(rule14);Rule rule15 = new Rule();rule15.addPremise(21); rule15.addPremise(16); rule15.setResult(29);}}综合数据库代码如下:public class Database {ArrayList<Integer> db = new ArrayList<Integer>();public void addFact(int item) {db.add(item);}public boolean contains(int item) {return db.contains(item);}}控制系统代码如下:public class Machine {public static String inference(Database db) { RuleBase ruleBase = new RuleBase();int result = 0;for (int i = 0; i < ruleBase.size(); i++) { int size = ruleBase.getRuleAt(i).size();boolean flag = true;for (int j = 0; j < size; j++) {if(!db.contains(ruleBase.getRuleAt(i).getPremiseAt(j))) { flag = false;break;}}if (flag) {int fact = ruleBase.getRuleAt(i).getResult();db.addFact(fact);if (fact >= 24) {result = fact;break;}}}switch (result) {case 24:return"金钱豹";case 25:return"老虎";case 26:return"斑马";case 27:return"鸵鸟";case 28:return"企鹅";case 29:return"信天翁";case 30:return"长颈鹿";default:return"不存在";}}}六.截图七.感想通过这次课程设计我对专业课的学习有了更加深刻的认识,让我知道了学无止境的道理。

专家系统实验报告

专家系统实验报告

“专家系统”实验报告专业:智能科学与技术班级:1102学号:**********姓名:***2014年6月5日实验1 专家系统与CLIPS实验内容提要:专家系统不仅是具有特定的结构,同时,它还有多种知识表示形式,及其相应的知识推理方法。

因此,直接采用程序设计语言实现专家系统是比较困难的,而采用适当的专家系统开发工具则可以大大降低系统开发的难度。

因此,本章结合麦粒肿系统专断专家系统开发的需要,首先安排了对专家系统及其开发工具CLIPS基本理论知识,以及CLIPS基本理论知识,以及CLIPS基本使用方法的概要介绍,目的是为第6章“麦粒肿诊断专家系统开发”做好准备。

实验重点:➢专家系统的一般结构➢产生式规则的表示及其正向推理➢专家系统开发工具的结构和特点➢专家系统开发工具CLIPS的基本语法➢专家系统开发工具CLIPS的基本使用实验目的➢掌握专家系统的一般结构➢掌握产生式规则的表示及其正向推理➢掌握专家系统开发工具的结构和特点➢了解专家系统开发工具CLIPS的设计目标与特点➢掌握专家系统开发工具CLIPS的基本语法➢掌握专家系统开发工具CLIPS的基本使用实验内容及要求➢学习专家系统的一般结构➢学习产生式规则的表示及其正向推理➢学习专家系统开发工具的结构和特点➢学习专家系统开发工具CLIPS的设计目标与特点➢学习专家系统开发工具CLIPS的基本语法➢学习专家系统开发工具CLIPS的基本使用实验步骤本实验包括以下六个具体步骤,分别是:学习专家系统的一般结构、学习产生式规则的表示及其正向推理、学习专家系统开发工具的结构和特点、学习专家系统开发工具CLIPS的设计目标与特点、学习专家系统开发工具CLIPS的基本语法,以及学习专家系统开发工具CLIPS的基本使用。

1 学习专家系统的一般结构:专家系统(ES,Expert System)是利用大量专家知识,运用只是推理方法解决特定领域中实际问题的计算机程序系统。

专家系统实验

专家系统实验

学生实验报告2010 年10 月27 日一、实验名称:一个关于爱情之路的测试的小型专家系统二、实验目的与要求:目的:通过实现一个简单的不通用的基于回溯推理的专家系统,来理解产生式系统的推理的基本思想和过程。

要求:1、确定推理方法(正向还是反向),并根据问题设计实现一个简单的不通用推理机(匹配、冲突消解)2、规则库要求至少包含15条规则3、初始事实可以任意给定,输入初始事实后能够得到推理结果4、设计人机界面,解释模块提供查询规则的功能5、可以不考虑知识库管理模块6、提交实验报告7、报告中要有推理树三、实验内容:本实验我是设计了一个关于爱情之路的测试的小型专家系统,主要是根据一些观察到的事实,依据系统给出的一系列规则来进行回溯处理,逐渐的推导出结果。

本次实验设计了一个简单的不通用推理机,推理机给出的推理结果是“”。

专家系统的系统结构包括:知识库,推理机,动态数据库,人机界面,解释模块,知识库管理模块。

专家系统结构图四、程序设计思想本次实验采用的是正向推理的方法,是从已知事实出发,通过规则库求得结论,也称为自底向上,或称为数据驱动方式。

这种推理方式是正向使用原则,即问题的初始状态作为初始数据库,在仅当数据库中的事实满足某条规则的前提时,这条规则才能够被使用。

程序中采用的是基于用户按照规则点击,逐步得出结果的。

正向推理的步骤步1 将初始事实置入动态数据库;步 2 用动态数据库中的事实,匹配目标条件,若目标条件满足,则推理成功,结束。

步3 用规则库中各规则的前件匹配动态数据库中的事实,将匹配成功的规则组成冲突集;步4 若冲突集为空,则运行失败,退出。

步5 对冲突集做冲突消解,对选择执行的各规则,将其结论加入动态数据库,或执行其动作,转步2。

正向推理的流程图五、程序实现过程初始事实:设计邂逅体贴容让送花有责任心勤奋努力明确表示不百依百顺规则:R1:if请人介绍then认识R2:if参加聚会 then认识R3:if搭讪 then 认识R4:if设计邂逅 then 认识R5:if认识∧一起自习then交往R6:if认识∧送花then交往R7:if认识∧约会then 交往R8:if 交往∧(有责任心Ⅴ踏实可靠) then赢得好感R9:if 交往∧(温柔善良Ⅴ善解人意) then赢得好感R10:if交往∧勤奋努力 then 赢得好感R11:if交往∧阳关活泼then 赢得好感R12:if赢得好感∧暗示then确立恋爱关系R13:if赢得好感∧明示then确立恋爱关系R14:if赢得好感∧牵手then确立恋爱关系R15:if恋爱关系∧体贴容让∧不百依百顺then建立长期关系推理过程:初始事实写入动态数据库{设计邂逅,体贴容让,送花,有责任心,勤奋努力,明确表示,不百依百顺}推理过程:(推理树)六、 程序显示结果主界面如下:结果如下:确立恋爱关系 赢得好感 认识 交往 明确表示 送花 不百依 百顺 勤奋努力有责任心 体贴容 让设计邂逅建立长期恋爱关系七、体会与总结八、程序片段void CRengongDlg::OnCheck1(){// TODO: Add your control notification handler code here//shishi[0]=1;int state = ((CButton*)GetDlgItem(IDC_CHECK1))->GetCheck();if(state==BST_CHECKED){shishi[0]=1;}elseif(state==BST_UNCHECKED){shishi[0]=0;shishi[7]=0;}}void CRengongDlg::OnCheck2(){// TODO: Add your control notification handler code here//shishi[1]=1;int state = ((CButton*)GetDlgItem(IDC_CHECK1))->GetCheck();if(state==BST_CHECKED){shishi[1]=1;//MessageBox("sdf","dafadsf",MB_OK);}elseif(state==BST_UNCHECKED){shishi[1]=0;shishi[8]=0;}}void CRengongDlg::OnCheck3(){// TODO: Add your control notification handler code here//shishi[2]=1;int state = ((CButton*)GetDlgItem(IDC_CHECK1))->GetCheck();if(state==BST_CHECKED){shishi[2]=1;}elseif(state==BST_UNCHECKED){shishi[2]=0;shishi[8]=0;}}void CRengongDlg::OnCheck4(){// TODO: Add your control notification handler code here //shishi[3]=1;int state = ((CButton*)GetDlgItem(IDC_CHECK1))->GetCheck();if(state==BST_CHECKED){shishi[3]=1;}elseif(state==BST_UNCHECKED){shishi[3]=0;shishi[8]=0;}}void CRengongDlg::OnCheck5(){// TODO: Add your control notification handler code here //shishi[4]=1;int state = ((CButton*)GetDlgItem(IDC_CHECK1))->GetCheck();if(state==BST_CHECKED){shishi[4]=1;//MessageBox("sdf","dafadsf",MB_OK);}elseif(state==BST_UNCHECKED){shishi[4]=0;shishi[9]=0;}}void CRengongDlg::OnCheck6(){// TODO: Add your control notification handler code here //shishi[5]=1;int state = ((CButton*)GetDlgItem(IDC_CHECK1))->GetCheck();if(state==BST_CHECKED){shishi[5]=1;//MessageBox("sdf","dafadsf",MB_OK);}elseif(state==BST_UNCHECKED){shishi[5]=0;shishi[10]=0;}}void CRengongDlg::OnCheck7(){// TODO: Add your control notification handler code here//shishi[6]=1;int state = ((CButton*)GetDlgItem(IDC_CHECK1))->GetCheck();if(state==BST_CHECKED){shishi[6]=1;//MessageBox("sdf","dafadsf",MB_OK);}elseif(state==BST_UNCHECKED){shishi[6]=0;shishi[11]=0;}}void CRengongDlg::OnOK(){// TODO: Add extra validation hereif(shishi[0]==1){MessageBox("认识!");shishi[7]=1;}if((shishi[7]==1)&&(shishi[2]==1)){MessageBox("交往!");shishi[8]=1;}if((shishi[8]==1)&&(shishi[4]==1)){MessageBox("赢得好感!");shishi[9]=1;}if((shishi[9]==1)&&(shishi[5]==1)){MessageBox("确立恋爱关系!");shishi[10]=1;}if((shishi[10]==1)&&(shishi[1]==1)&&(shishi[6]==1)){MessageBox("建立长期关系!");shishi[11]=1;}// CDialog::OnOK();}void CRengongDlg::OnCancel(){// TODO: Add extra cleanup hereCDialog::OnCancel();/*for(int i=0;i<15;i++){shishi[i]=0;}*/}。

农业专家系统实习报告

农业专家系统实习报告

农业专家系统实习报告一、实习背景与目的随着信息技术的飞速发展,农业专家系统作为一种基于计算机技术的智能决策支持系统,在农业生产中发挥着越来越重要的作用。

本次实习旨在通过参与农业专家系统的开发与实践,深入了解农业专家系统的原理与运用,提高自己在农业信息化领域的专业素养和实际操作能力。

二、实习内容与过程1. 实习单位简介本次实习单位为某农业科技有限公司,该公司致力于农业信息化技术的研发和应用,拥有一支专业的研发团队,具备丰富的农业专家系统开发经验。

2. 实习内容(1)系统学习农业专家系统的理论知识,包括农业专家系统的定义、分类、架构和关键技术等。

(2)参与农业专家系统的需求分析,了解农业生产过程中的实际问题,为系统设计提供依据。

(3)参与农业专家系统的开发与测试,熟悉农业专家系统开发流程,掌握相关技术。

(4)在指导下,对农业专家系统进行实际应用,分析系统在农业生产中的作用和效果。

3. 实习过程(1)实习前期,通过阅读相关文献和资料,对农业专家系统的基本概念和技术原理进行学习,为实际操作打下理论基础。

(2)在导师的指导下,参与农业专家系统的需求分析,深入农田一线,了解农业生产过程中的实际问题,为系统设计提供依据。

(3)协助项目组进行农业专家系统的开发与测试,学习并掌握系统开发过程中的关键技术,如数据库设计、规则编写、界面设计等。

(4)实习后期,在导师的指导下,将农业专家系统应用于实际农业生产,分析系统在农业生产中的作用和效果,总结经验教训。

三、实习收获与体会1. 实习期间,通过理论学习和实践操作,对农业专家系统有了更深入的了解,掌握了农业专家系统的基本原理和关键技术。

2. 参与农业专家系统的开发与测试,提高了自己在实际项目中的动手能力和团队协作能力。

3. 将农业专家系统应用于实际农业生产,看到了农业专家系统在农业生产中的重要作用,为我国农业信息化事业的发展增添了信心。

4. 实习过程中,认识到了自己在农业信息化领域的不足,明确了今后的学习方向和目标。

动物识别专家系统实验报告

动物识别专家系统实验报告

人工智能实验报告实验记录首先运行程序会出项上图界面,该界面显示了当前所有的动物,并且提出问题,用户可以根据问题进行选择,看到自己想要的动物。

对于每一个问题,都只能是真或者是假,因此在后续增加问题的时候也要注意。

其实可以有多种情况,但是要进行扩展,所以本实验没有增加该功能。

该系统中有不同的问题,根据问题的提示可以对现有的动物进行筛选,并且提出下一个问题,并使得提问的次数最少。

通过上面可以看出当生育方式是胎生的时候,那么就在哺乳动物中进行选择,哺乳动物中只有老虎是独居的,所以提问的时候就选择该问题。

这样提问两次就可以得出结论。

而当生育方式不是胎生的时候,就只有一个鸟类,所以可以直接获得结论。

for(int i=0;i<anc;i++){if(a[i]==1){if(an[i].flag[count]!=anser){a[i]=0;}}}代码分析:在回答一个问题之后,在剩下的动物判断提问的属性是否满足,如果满足,那么就留下;如果不满足,那么去除。

如上左所示,在增加了该动物之后,我们可以在下次提问的时候看到系统中的记录增加,并且可以根据问题获得刚刚增加的动物。

如上右图所示。

实验总结 本次实验运用了归结原理、规则演绎推理的推理方法,进行设计。

对于不同的属性可以有时间P1,P2…Pn 。

这样在满足不同的条件之后就可以进行推理,得到所要的动物了。

通过本次实验,我学习到了推理的使用方法,对于这种问题就的解决也有了理解。

这不仅仅让我学习到了如何进行推理问题的证明,也让我对该系统有了更深的了解。

这让我的编程的能力也有了进一步的提高。

专家系统实验报告(二手汽车智能鉴定评估专家系统程序分析)

专家系统实验报告(二手汽车智能鉴定评估专家系统程序分析)

专家系统实验报告(二手汽车智能鉴定评估专家系统程序分析)专业班级学生姓名学生学号指导老师完成时间目录第一章实验概述 (3)1.1实验目的 (3)1.2实验内容 (3)1.3实验要求 (3)第二章实验背景和实验说明 (4)2.1实验背景 (4)2.2实验说明 (4)第三章程序特色分析 (6)3.1专家系统的类型分析及知识表示方法分析 (6)3.2具体算法描述 (6)3.2.1 程序整体思路 (6)3.2.2 “用户交互模块”的实现 (8)3.2.3 “知识处理模块”的实现 (8)第四章程序分模块说明 (14)4.1系统初始化 (14)4.2三大询问界面初始化 (14)4.3系统流程控制 (15)4.4外观(V ISUAL)用户交互 (16)4.5外观(V ISUAL)知识处理 (16)4.6引擎(E NGINE)用户交互 (17)4.7引擎(E NGINE)知识处理 (17)4.8驾驶(R OAD)用户交互 (18)4.9驾驶(R OAD)知识处理 (19)4.10综合评估分值 (19)4.11得出鉴定结论 (20)第五章程序运行过程及结果分析 (22)5.1单步运行界面及结果分析 (22)5.1.1加载 (22)5.1.2 reset命令 (22)5.1.3 Run (23)5.1.4评估分值界面 (27)5.1.5得出鉴定结论 (29)第六章问题分析和解决方法 (30)6.1程序存在的问题 (30)6.2建议的解决办法 (30)附录实验源程序清单 (31)第一章实验概述1.1 实验目的学习和理解CLIPS编程语言,通过分析用CLIPS编写的“二手汽车智能鉴定评估系统”(为了描述方便,后面都简称为“二手车鉴评系统”)的程序,深入理解专家系统的编程技巧,加深对专家系统的认识和理解。

1.2 实验内容分析CLIPS程序Usedcar.clp,并对CLIPS编程方法进行分析,深入学习专家系统的编程方法。

人工智能与专家系统实验报告.doc

人工智能与专家系统实验报告.doc

人工智能与专家系统实验报告暨南大学本科生实验报告专题论文(附页)暨南大学本科生实验报告专题论文课程名称人工智能与专家系统性能评价0实验项目名称动物识别系统设计讲师0实验项目编号实验项目类型综合0实验地点0南校区学生名称0信息科学与技术学院计算机科学系0实验时间XXXX 12月12月7月,温度和湿度(1)实验目的通过建立动物识别生产系统,可以理解和实现具有独立知识库和控制系统的智能生产系统与通用程序的区别。

(2)实验要求1。

各种编程语言和实用工具可以用来设计和完成系统,而不是人工智能语言和工具,这样你就可以更好地理解专家系统。

2.推荐语言:c、java、php、javascript、delphi .也可以使用其他语言。

如果您使用数据库作为背景,您需要使用最简单的访问。

4.系统可以使用图形界面,简单的也可以使用字符界面,不需要。

(3)设计和完成知识库本课程设计的主要目的是设计和实现一个具有15条规则的生产系统,可以自动识别7种动物。

知识库和控制系统是相互独立的。

系统完成后,除了识别现有的7种动物外,根据生产知识表示方法,在知识库中增加和修改新知识后,系统仍然可以正确识别,而不需要修改控制系统程序。

1.综合数据库中数据结构的描述;生产公式通过满足前件得到后件的结论或执行后件的相应动作,即后件由前件触发。

同时,一种生产类型的结论可以作为另一种生产类型的前提或语言变量,并可以进一步形成一种生产类型体系。

因此,通过相关特征识别动物的特征中规定:识别动物的前肢(即动物的特征):0:有头发1:牛奶2:羽毛3:飞行4:产卵5:吃肉6:锋利的牙齿73:爪子8:眼睛9:向前,蹄子10:反刍11:棕褐色毛皮12:黑斑13:黑色条纹113:哺乳动物21。

小鸟22。

食肉动物23。

有蹄类动物最终结论:24.老虎25。

豹式26。

斑马27号。

长颈鹿28。

企鹅29号。

鸵鸟30。

信天翁将在综合数据库中设置数组事实[30]。

数组的数目对应于上述事实的数目。

人工智能小型专家系统的设计与实现

人工智能小型专家系统的设计与实现

人工智能技术基础实验报告指导老师:朱力任课教师:张勇实验三小型专家系统设计与实现一、实验目的(1)增加学生对人工智能课程的兴趣;(2)使学生进一步理解并掌握人工智能prolog语言;(3)使学生加强对专家系统课程内容的理解和掌握,并培养学生综合运用所学知识开发智能系统的初步能力。

二、实验要求(1)用产生式规则作为知识表示,用产生系统实现该专家系统。

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

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

三、实验环境在Turbo PROLOG或Visual Prolog集成环境下调试运行简单的PROLOG程序。

四、实验内容建造一个小型专家系统(如分类、诊断、预测等类型),具体应用领域由学生自选,具体系统名称由学生自定。

五、实验步骤1、专家系统:1.1建造一个完整的专家系统设计需完成的内容:1.用户界面:可采用菜单方式或问答方式。

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

3.数据库:用来存放用户回答的问题、已知事实、推理得到的中间事实。

4.推理机:如何运用知识库中的规则进行问题的推理控制,建议用正向推理。

5.知识库中的规则可以随意增减。

1.2推理策略推理策略包括:正向(数据驱动),反向(目标驱动),双向2、动物分类实验规则集(1)若某动物有奶,则它是哺乳动物。

(2)若某动物有毛发,则它是哺乳动物。

(3)若某动物有羽毛,则它是鸟。

(4)若某动物会飞且生蛋,则它是鸟。

(5)若某动物是哺乳动物且有爪且有犬齿且目盯前方,则它是食肉动物。

(6)若某动物是哺乳动物且吃肉,则它是食肉动物。

(7)若某动物是哺乳动物且有蹄,则它是有蹄动物。

(8)若某动物是有蹄动物且反刍食物,则它是偶蹄动物。

(9)若某动物是食肉动物且黄褐色且有黑色条纹,则它是老虎。

(10)若某动物是食肉动物且黄褐色且有黑色斑点,则它是猎豹。

小型专家系统设计(三)

小型专家系统设计(三)
lab.setText("企鹅");
else if((ckb3.getState()==true||ckb4.getState()==true)&&(ckb14.getState()==true))
lab.setText("信天翁");
else lab.setText("sorry");
}
public void actionPerformed(ActionEvent e) //这部分是结果的显示
static Checkbox ckb12=new Checkbox("不会飞,长腿长脖子,黑白色");
static Checkbox ckb13=new Checkbox("不会飞,黑白色,会游泳");
static Checkbox ckb14=new Checkbox("善飞");
static Checkbox ckb15=new Checkbox("有蹄");
lab.setText("长颈鹿");
else
if((but==but1)&&(ckb1.getState()==true||ckb2.getState()==true)&&(ckb7.getState()==
true||ckb15.getState()==true)&&(ckb10.getState()==true))
package example1_1;
import java.awt.*; //包含用于创建用户界面和绘制图形图像的所有类
import java.awt.event.*; //提供处理由AWT组件所激发的各类事件的接口和类
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

“专家系统”实验报告专业:智能科学与技术班级:1102学号:**********姓名:***2014年6月5日实验1 专家系统与CLIPS实验内容提要:专家系统不仅是具有特定的结构,同时,它还有多种知识表示形式,及其相应的知识推理方法。

因此,直接采用程序设计语言实现专家系统是比较困难的,而采用适当的专家系统开发工具则可以大大降低系统开发的难度。

因此,本章结合麦粒肿系统专断专家系统开发的需要,首先安排了对专家系统及其开发工具CLIPS基本理论知识,以及CLIPS基本理论知识,以及CLIPS基本使用方法的概要介绍,目的是为第6章“麦粒肿诊断专家系统开发”做好准备。

实验重点:➢专家系统的一般结构➢产生式规则的表示及其正向推理➢专家系统开发工具的结构和特点➢专家系统开发工具CLIPS的基本语法➢专家系统开发工具CLIPS的基本使用实验目的➢掌握专家系统的一般结构➢掌握产生式规则的表示及其正向推理➢掌握专家系统开发工具的结构和特点➢了解专家系统开发工具CLIPS的设计目标与特点➢掌握专家系统开发工具CLIPS的基本语法➢掌握专家系统开发工具CLIPS的基本使用实验内容及要求➢学习专家系统的一般结构➢学习产生式规则的表示及其正向推理➢学习专家系统开发工具的结构和特点➢学习专家系统开发工具CLIPS的设计目标与特点➢学习专家系统开发工具CLIPS的基本语法➢学习专家系统开发工具CLIPS的基本使用实验步骤本实验包括以下六个具体步骤,分别是:学习专家系统的一般结构、学习产生式规则的表示及其正向推理、学习专家系统开发工具的结构和特点、学习专家系统开发工具CLIPS的设计目标与特点、学习专家系统开发工具CLIPS的基本语法,以及学习专家系统开发工具CLIPS的基本使用。

1 学习专家系统的一般结构:专家系统(ES,Expert System)是利用大量专家知识,运用只是推理方法解决特定领域中实际问题的计算机程序系统。

专家系统由产生式规则专家系统发展而来,主要包括知识库、推理机、综合数据库、知识获取程序、人机接口,以及解释程序六大部分。

其中,知识库、推理机、综合数据库,以及人际接口是目前大多数专家系统的主要内容,而知识获取程序和解释则是所有专家系统都期望具有的两个模块。

在专家系统的一般结构中,知识库用于存放各领域专家提供的经验性知识:综合数据库用于存放关于问题求解的初始数据、中间结果、假设、目标,以及最终求解结果(事实);推理机在一定的控制策略下针对综合数据库中的当前信息,识别和选取知识库中对当前问题求解有用的知识进行推理;知识获取程序完成把专家只是按一定表示形式输入到知识库中,部分代替知识工程师进行知识的自动获取,实现专家系统的字学习,不断完善知识库;解释程序可以根据用户提问,对系统给出的结论、求解过程,以及系统当前求解状态提供说明,便于用户理解系统的问题求解,增加用户对系统求解结果的信任程度,在知识库的完善过程中,便于专家或知识工程师发现和定位知识库中的错误,便于各领域的专业人员或初学者能够从问题的求解过程中得到直观学习;人机接口将专家爱或用户的输入信息翻译为系统可接受的内部形式,同时,也把系统向专家或用户输出的信息转化成人类易于理解的外部形式。

2 学习产生式规则的表示及其正向推理目前,用于专家系统的知识表示形式主要有谓词逻辑、产生式规则、语义网络、框架,以及剧本。

其中,采用产生式规则知识表示形式建立的专家系统最为流行和广泛,这主要因为:首先,产生式规则知识表示容易被人理解;其次,它基于演译推理,保证了推理结果,的准确性;最后,大量产生式规则可以连接成多棵推理树,树的宽度反映了实际问题的范围,树的深度反映了问题的难度。

产生式规则一般表示为:如果A成立,则B成立,简记为A->B,其中A是前提,B是结论。

一般来说,不同的产生式规则之间都是有联系的,即谋条产生式规则的前提实力外一条产生式规则的结论。

如果把规则库(知识库)中所包含的总目标(某些规则的结论)作为根节点,按规则的前提和结论展开形成树的形式,则形成的树就被称为推理树或知识树,它把规则库中的所有规则都连接了起来。

产生式规则的推理分为正向推理和逆向推理两种,这里主要介绍正向推理。

产生式规则的正向推理过程是:逐条搜索规则库,对每一条规则的的前提条件检查实事库(综合数据库)中是否存在。

若再事实库中前提条件的个子项不是全部存在,则放弃该条规则;若在事实库总全部存在,则实行该规则,把结论放入事实库中。

反复循环执行上述过过程,直至推出目标,并存入事实库中为止。

3学习专家系统开发工具的结构和特点开发专家系统主要有三条途径:直接使用程序设计语言,如LISP或PROLOG等;使用知识获取工具,如知识获取系统(KAS,Knowledge Acquisition System)到等;利用专家系统开发工具,如CLIPS或M.1等。

专家系统开发工具一般包括开发环境和运行环境两部分。

其中,开发环境有知识编辑、编译模块,知识库查询、维护模块,数据库查询、维护模块,知识库,以及实事库组成;运行环境有推理机,解释机制,人机交互,知识库,以及实事库组成。

知识库和实时库即被包括在开发环境中,同时也被包括在运行环境中,它们都有一定的格式要求,知识和事实由开发环境输入,提供给运行环境使用。

从专家系统开发工具的结构可以看出,专家系统开发工具具有一下特点:首先,工具有开发环境和运行环境组成,开发环境用于建立知识库、实事库、并修改、查询知识库和事实库;对指定知识表示形式的推理机和解释机制预先已经做好;运行环境的目的在于支持实际系统的运行。

其次,工具提供了一套用于开发专家系统的语言,包括知识标示语言和工具操作语言。

其中,只是表示语言用于完成外部知识到内部知识的编译;利用工具操作语言可以使用工具中的开发环境,实行运行环境中的功能。

4学习专家系统开发工具CLIPS的设记目标与特色CLIPS(C Language Integrated Production System)是由美国国家航天局约翰逊空间中心人工智能部在1985年推出的专家系统开发工具,其设计目标和特色包括:➢可用于管理、工业、商业、文教等各种领域的专家系统开发,具有广泛的通用性;➢适用于各种型号的计算机,从IBM PC及其兼容机,到V AX,HP,SUNMACINTOSH,直到CRAY,都可以运行CLIPS,具有对机型的广泛适用性➢与已有的普通软件系统易于集成,同Fortran、ADA等高级程序设计语言均有接口,为用户提供了方便➢用C语言写成,运行速度快➢具有不确定性下进行推理的能力正是由于上述设计目标与特色,加之美国国家航天局对CLIPS采取公开化,以及免费使用的政策,CLIPS在众多的专家系统开发工具中深受欢迎,CLIPS研制小组也因而获得美国航天科技奖CLIPS与比它早的专家爱系统开发工具ART、OPSS有很密切的关系,继承与吸收了ART、OPSS的长处与优点。

但是由于CLIPS最求的简单实用,以极高度的可移植性,因此,只提供了正向推理能力、CLIPS的发展历史证明,这并不影响他成为一个有效的专家系统开发工具。

5学习专家系统开发工具CLIPS的基本语法为了支持麦粒肿诊断专家系统CLIPS程序的编写,以下将分别从符号体系、语言符号、事实、规则、注释、printout命令、变量、字符通配符、特权、read 函数,以及其他常用命令等11各方面,对CLIPS的基本语法进行概要介绍。

符号体系CLIPS的符号体系包括以下三种类型。

➢需要完全照样输入计算机的字和字符,即不被<>、[ ]、{ }所括住的所有内容,比如(example)。

方括号表示其中的内容可有可无,比如在(example[1])中,方括号中的1是任选的,即输入(example)和(example 1)都是允许的。

尖括号表式其中的字所表示的意义要用一个相应的任意值代替,比如(example <integer>)表示在example后面一定要跟一个任意整数,即应输入(example 1)、(example 5)或者(example -20)等。

➢对于用双尖括号括住的描述,表示任意多个(包括0个)与其中的自相应的值,比如<<integer>>,见到这一描述,可以输入1,1 2,1 2 3,1 4 8,或-15,也可以不输入任何内容。

对于用三尖括号括住的描述,表示任意多个(但不包括0个)与其中的字相应的值,比如<<<integer>>>,相当于<integer> <<integer>>。

➢用于大括号括住的描述表示选用其中的任意一项(必须一项,但也仅一项)输入,比如{all,none,some},可以输入all,或者输入none,或者输入some。

语言符号在CLIPS主要的语言符号单位是“字段”,也称为“域”(field)。

字段包括以下三种类型。

➢字(word)。

字以可以打印的ASCII字符开始,后随零个或多个字符。

但是“<”、“|”、“&”、“$”、“?”、“+”、“-”、“()”字符及其组合不能作为字的开始字符。

另外,字中间也不能包含“<”、“|”、“&”、“()”字符,因为这些字符在CLIPS中有特殊用途,即作为字的界限符,表示字的结束。

最后,CLIPS认为统一字母的大、小写是两个不同的字。

根据一项规定,以下均为有效的CLIPS字:emergencyfireemergency-fireactivate-sprinkler-systemnotify-fire-departmentshut-down=electrical-junction-387!?#$^*➢字串(string)。

字串以引号开始和结束,双引号和结束,双引号本身是字串的一部分,期间可以有零个或任意个字符,比如“Activate the sprinkler system”。

➢数值字段或简称数值(number),表示浮点数。

在CLIPS中,所有的数,包括整型值的数,都以浮点数形式存储。

数值字段包括三个部分:符号、值和指数。

其中,符号和指数是任选的。

呼号或为+,或为-;值包括一个或多个数字,以及一个任选的小数点;指数包括字母e或E,后随任选的+或-,其后是一个或多个数字。

根据以上规定,1,1.2,.7,+3,-1,65,3.5e10都是CLIPS 中有效的数值字段数值为了解题,CLIPS程序必须有据以推理的数据或信息,这在CLIPS中被称为“事实”(fact)。

事实由配对的左、右圆括号括住的一个或多个字段组成,比如(single-field)和(two fields)。

相关文档
最新文档