专家系统的设计与C实现
图,
事实的结构
其中事实号是 事 实 的 内 部 代 号, 断言是关于事 实的结论, 取值为 “真” 、 “ 假” 、 “ 不知道” 三种情况, 事 实对象建立时, 断言的值为不知道。 在建立知识库的同时, 也建立了事实库, 事实库 也是一个动态链表, 一个事实是链表中的一个结点, 确切地说事实库与 知 识 库 是 一 个 统 一 体, 事实号是 事实库的唯一关键 字, 知识库中的规则通过事实号 与事实库发生联系, 如图 - 所示。
,
结论
所述的基于 - . 的 专 家 系 统 的 设 计 与 实 现, 采
用产生式规则表示法将专家系统中涉及到的经验知 识表示成计算机可以识别的形式, 建立了知识库, 设 计了以精确推理机制为基础的推理机。由于运用了 面向对象的程序设 计 技 术, 因此推理机是一个相对 独立的对象单元, 程序通用性好而且便于使用者进 行知识更新。 参 考 文 献:
中图分类号: !"#$$ % $
文献标识码: &
文章编号: (*’’,) $’’( ) *++* ’- ) ’$+’ ) ’#
专家系统的设计与 . / 实现
刘建华
(哈尔滨华强实业发展有限责任公司,哈尔滨 $+’’-’)
摘
要:介绍专家系统的基本概念和 . / 的特点及其建造专家系统的适宜性,介绍面向 对象程 序
图#
规则的结构
规则由规则类 的 构 造 函 数 建 立, 规则动态结点 的存储单元由析构函数释放。一条规则是一个知识 实体, 它本身具有咨询推理功能, 这由规则类的函数 一条规则 LC+’* 实现。规则是规则链中的一个结点, 链组成一个知识 库。 对 于 产 生 式 系 统, 除了由规则 链组成一个知识库以外, 还有一个事实库, 记录用户 与系统对话的结果 及 推 理 的 中 间 结 果, 也就是表示 当前的环境。事实 库 是 动 态 的, 它最初包括原始的 所有断言, 但不知 断 言 是 真 是 假, 随 着 与 用 户 对 话, 激活断言有的为真, 也有的为假, 同时规则库中的规 则根据事实库中断言的真假做出推理。 事实的结构如图 , 所示。
!"# $#%&’( )* #+,#-. %/%.#0 1($ &.% -#12&31.&)( 41%#$ )( 5 /
234 56789:;7
( 61-4&( 6718&1(’ 9($7%.-/ :#;#2),0#(. 5) % <.$ % , 61-4&( $+’’-’ , 5"&(1)
=4%.-1>.: !:6< =7=>? 68@?AB;C>< <AD> E7<6C CA8C>=@< 7EA;@ >F=>?@ <G<@>D 78B @:> C:7?7C@>?6<@6C< AH . / 7< I>JJ 7< 6@< <;6@7E6J6@G 68 E;6JB68K >F=>?@ <G<@>D % 3@ 7J<A 68@?AB;C>< @:> AEL>C@ ) A?6>8@>B =?AK?7DD68K @>C:86M;>< 78B @:> E7<6C B><6K868K 6B>7< 78B <@?;C@;?>< AH >F=>?@ <G<@>D % N6@: 78 >D=:7<6< 68 . / ;8B>? % 01! >8O6?A89 D>8@ @:> =7=>? B6<C;<<>< @:7@ :AI @A ;<> =?AB;C@6A8 ?;J> >F=?><<6A8 @A @?78<HA?D @:> >F=>?6>8C> 78B P8AIJ>BK> 68OAJO>B 68 >F=>?@ <G<@>D 68@A @:> HA?D< @:7@ CAD=;@>?< C78 ?>CAK86Q>,78B @:>8 C?>7@> P8AIJ>BK> E7<> 78B B>9 <6K8 @:> ?>7<A868K >8K68> E7<>B A8 @:> 7CC;?7@> ?>7<A868K D>C:786<D % R;?@:>?DA?>,6@ >J7EA?7@>< @:> B>O>JA=9 D>8@ <@>=< AH >F=>?@ <G<@>D H?AD @:> 78KJ> AH <AH@I7?> >8K68>>?68K % ?#/ @)-$%: >F=>?@ <G<@>D; P8AIJ>BK> E7<>; ?>7<A868K >8K68>;AEL>C@ ) A?6>8@>B @>C:8AJAKG
图%
专家系统一般结构图
,
, $%
用 F G 实现专家系统
知识表示 人之所以有智能行为是因为有知识。要使智能
的机器系统具有某 种 人 类 的 思 维, 必须以人的知识 作为其工作基础。知识表示就是要研究用机器表示 知识的可行、 有效、 通用的原则和方法。近年来知识 表示的研究引起了 广 泛 的 注 意, 成为人工智能研究 中的热门课题。 万方数据
应付, 在 这 一 背 景 下, 面向对象技术 ( !!" ) 逐步兴 起, 它一改传统的 以 过 程 和 操 作 为 中 心 来 设 计 系 统 的结构化程序设计 方 法, 以 “对 象” 或 “数 据 结 构” 为 中心来设计软件, 使得软件结构比较稳定, 软件的可 重用性也比较好, 能较好地反映人们求解问题的方 式和方法。封装、 继承、 多态是面向对象程序的主要 特征。把这 些 思 想 用 于 硬 件、 数 据 库、 人工智能技 术、 分布式计算、 网络、 操作系统都显示出其优越性。
图规则及前提链
— %M% —
前提链由链对象实现, 链的结点只有两个数据域, 一个是事实号, 另一个是指向下一个结点的指针。 ! "# 知识获取 本文实现的专家系统由 $$ 条规则组成, 共出现 我 们 把 概 念 称 作 事 实, 共 #% 个 事 实, 每 #% 个概 念, 个事实给一 个 编 号, 编 号 从 $ 到 #% , 在规则对象中 我们不存储事实 概 念, 只 有 该 事 实 的 编 号。 同 样 规 则的结论也是事实 概 念 的 编 号, 事实与规则的数据 以常 量 表 示。 我 们 把 这 些 事 实 存 放 在 一 个 &’( 然后在程序中打开它 &)*+)* 数据库 中 作 为 知 识 库, 并添加到规则表中, 从而获取知识。 ! "! 推理机制 规则数据由规 则 类 的 构 造 函 数 生 成 规 则 对 象, 这个构造函数需要三个参数, 一个规则名, 一个表示 前提断言编号的数组, 还有一个结论断言编号。 规则对象是知 识 的 实 体, 它包括知识的存储和 知识的使用。在尺 寸 精 度 设 计 专 家 系 统 中, 我们把 推理机制同规则对 象 分 离 开 来, 使规则作为独立的 知识单元, 方便 用 户 增 加 知 识。 规 则 对 象 与 事 实 对 象和用户交互, 推理过程如图 % 所示。
在研究中我们 采 用 产 生 式 规 则 法 来 表 示 知 识, 其规则的一般形式是: <7 H 前提为真 I ):+/ H 产生动作 I 或 H 得出结论 I 我们把规则定 义 成 对 象, 把规则的结构以及关 于规则的推理使用定义成规则类 ( ’C1+ 81455 ) , 由规 则类生成的所有 规 则 对 象 ( ’C1+ (JK+8) ) 组 成 知 识 库, 对知识库的操作方法由规则类的操作方法提供。知 识库规则的结构如图 # 所示。
设计技术以及专家系统的基本设计思想和 结 构。 着 重 讨 论 和 研 究 了 如 何 在 % 01! 环 境 中 采 用 . / 语言将专家系统中涉及到的经 验 知 识 表 示 成 计 算 机 可 以 识 别 的 形 式, 建 立 知 识 积 累 数 据 库, 设 计出以精确推理机制为基础的推论引擎,并从软件工程的角度阐述了专家系统的开发步骤。 关键词:专家系统;知识库;推论引擎;面向对象技术
#
#$%
专家系统的建造步骤和结构
专家系统的建造步骤 成功地建立系统的关键在于尽可能早地着手建
立系统, 从一个比较小的系统开始, 逐步扩充为一个 具有相当规模和日臻完善的试验系统。 建立系统的一般步骤如下: (%)设计初始 知 识 库; ( # )原 型 机 ( &’()()*&+ ) 的 开发与试验; (,)知识库的改进与归纳。 # $# 专家系统的四个基本特征: (%) 启发性; (#) 透明性; (,) 灵活性; (-) 智能性。 由专家系统的 特 征 可 知, 面向对象技术适合于 建造专家系统。在 面 向 对 象 的 技 术 中, 对象能在单 个实体中封装数据 和 操 作, 并为专家系统的知识和 被模拟领域中的实体的表示提供条件。由于我们能 将对象看成是实体在计算机中的表示, 因此, 面向对 象的方法可以让 我 们 将 注 意 力 集 中 在 这 些 实 体 上, 并且构造那些有相同的抽象能力的计算实体。 # $, 专家系统的一般结构: 目前大 多 数 专 家 系 统 一 般 结 构 有 六 个 组 成 部 分: 知识库 ( ./(01+2+ 345+ ) ; 推理机 ( 6/7+’+/8+ 9+8:4; ; 使用者接口 ( >5+’ 6/)+’748+ ) ; 解释机 ( ?@&14/4; /<5=) ; 知识获取接口 ( ./(01+2+ A8BC<5<)<(/ )<(/ 9+8:4/<5=) ; 工作记忆区 ( D(’E</2 9+=(’*) 。 6/)+’748+)