产生式规则 模糊集理论
1943年逻辑学家Post最早提出产生式概念。产生式的基本结构包括前提和结论两部分:前提(或IF部分)描述状态,结论(或THEN部分)描述在状态存在的条件下所作的某些动作:
前提条件─→结论动作
或 IF 状态 THEN 动作
在产生式系统中,论域的知识被分成两部分:
1)事实──用以表示静态的知识,如事物、事件和它们之间的关系;
2)产生式规则──用以表示推理和行为的过程。
由于产生式系统的知识库中主要存储的是规则,所以又称为基于规则的系统(rule based system)。
相应地,产生式系统包括以下三个基本组成部分(如图1所式):
1)事实库──存储有关问题的状态、性质等事实的叙述性知识,也称为综合数据库。
2)规则库──存储有关问题的状态转移、性质变化等规则的过程性知识,或称为规则集,可以描述成:
Ri: IF RLS THEN RRS (i=1,2,…,N)
其中,Ri称为规则库中第i条规则;
RLS是第i条规则条件部分,可以是任何子句的逻辑组合;
RRS是第i条规则结论部分,可以是一个结论或操作,或者是多个结论或操作的与组合。
3)控制器──根据有关问题的控制性知识,选择控制策略,将规则与事实进行匹配,控制利用知识推理求解问题的过程,推理出新的信息。
二.产生式规则的定义
一般形式为
P←Q
Q表示一组前提或结论,P表示若干个结论或动作,其含义为“如果前提Q满足,则可以推出结论P(或应该执行动作P)”。
两种特殊形式:
1)P← 表示P是一个无条件成立的结论(即一个事实)或是一个无条件需执行的动作。
2)←Q 表示在什么情况下会使Q成立(为真)?因为Q中可能包含变元,这时要求定出所有能使Q成立的变元取值。
在产生式系统中一般是利用控制器以匹配─执行的方式来运用这种知识,当右部Q能与一个已证过的结论集合中的某个元素匹配时,就可以运用该产生式,或推出结论P并把它放入已证过的结论集,或执行P所代表的动作。如此循环往复地运用由一组产生式表示的知识,以求得最终的结论,或解答问题或求证定理。
三.产生式的形式描述及语义
一个产生式规则表示的知识是一组产生式的有序集合,语法上可用BNF(Backus Normal Form)表示如下:
<规则>∷=<规则名称>:IF<规则前件,前件权重,前件强度> THEN<规则后件><规则强度><条件阈值><规则解释><规则备注>
<规则名称>∷=字符串
<规则前件>∷=<模式集>
<模式集>∷=<模式集>AND<模式>|<模式>|(<模式>)|NULL
<模式>∷=<比较单元集>
<比较单元集>∷=<比较单元集>OR <比较单元> |<比较单元>
<比较单元>∷=<事实名称><比较运算符><比较值><单位> |<事实名称> |(<比较单元>)
<事实名称>∷=<字符串>
<比较运算符>∷=!= | == | <=| >= | < | >
<比较值> ∷=<常量值> |<事实名称>
<常量值> ∷=<整数> |<实数> |<字符串>
<单位> ∷=(<字符串>) | NULL
<规则后件>∷=<动作集>
<动作集>∷=<动作集>,<动作>| <动作>
<动作>∷=<ASSERT型动作>|<QUERY型动作>|<CALL型动作>
<ASSERT型动作>∷=ASSERT(<事实名称>,<字符串>,<单位>,<不确定性值>)|ASSERT(<事实名称>,<表达式>,<单位>,<不确定性值>)|ASSERT(<事实名称>,<不确定性值>)
<表达式>∷=(<表达式>) |<表达式><运算符><表达式>| <整数> |<实数> |<字符串><运算符>∷= + | - | * | /
<QUERY型动作>∷=QUERY(<字段集> IN<数据库表名> WHERE<查询条件><动作类型>)
<字段集>∷=<字段集>,<字段>| <字段>
<字段> ∷=<字符串>
<数据库表名> ∷=<字符串>
<查询条件> ∷=<查询短语集>
<查询短语集> ∷=<查询短语集> OR<查询短语> |<查询短语> |(<查询短语集>)
<查询短语> ∷=<查询单元集>
<查询单元集> ∷=<查询单元集> AND<查询单元> |<查询单元>
<查询单元> ∷=<字段><比较运算符><比较值> |(<查询单元>)
<动作类型> ∷= ,FIRST | ,MAX | ,MIN | ,SUM| ,AVG | NULL
<CALL型动作> ∷=CALL(<过程>) |CALL(<函数>) |CALL(<模型>)
<过程> ∷=<过程名>(<输入参数表>;<输出参数表>)
<函数> ∷=<函数名>(<输入参数表>;<输出参数表>)
<模型> ∷=<模型名>(<输入参数表>;<输出参数表>)
<输入参数表> ∷=<参数表>
<输出参数表> ∷=<参数表>
<过程名> ∷=<字符串><函数名> ∷= ABS | INT | REAL | SQR | LOG| EXP | SIN | COS | TAN | VAL | SUBSTR | ORDER | DATE | L |
<模型名> ∷=<字符串>
<参数表> ∷=<参数表>,<参数>| <参数> | NULL
<参数> ∷=<整数> |<实数> |<字符串>
<前件权重>::=[0,1]之间的实数 | NULL
<前件强度>::=[0,1]之间的实数 | NULL
<规则强度> ∷= [0,1]之间的实数 | NULL
<不确定性值> ∷=[0,1]之间的实数 | NULL
<规则解释> ∷=//<字符串>| NULL
<规则备注> ∷=/规则获取时间:<字符串>;规则获取者:<字符串>;规则强度误差范围:±<实数>%
在产生式规则表示的知识中,各产生式的次序是有意义的,因为一般解释程序都是至前往后顺序地进行匹配,查找可被运用的产生式,放在前面的产生式就有可能先得到匹配,从而先执行其左部动作 ,或先推出左部的结论。
四.产生式规则的问题求解算法
在常用的基于产生示规则的知识库系统中,常用的问题求解算法可以分为数据驱动(data-driven)和目标驱动(goal-driven)两大类:
(一)数据驱动求解方法
选取条件部分被数据库所满足的规则,触发该规则,并将新的事实增加到数据库中;重复上述过程直到问题解决。算法为:
Algorithm:data-driven;
begin
identify the set S of applicable rules;
while S is not empty
do begin
selecta rule R from S;
applyR;
ifthe problem is solved by the application of R;
thenindicate SUCCESS;
elsecall data-driven recursively
removeR from S and undo the effect of apply R
end
end;
下面举例说明:
设一个基于规则的产生式系统的数据库中有如下事实:
N可被12整除
N可被20整除
其规则库有如下四条规则:
规则1:IF X可被12整除 THEN X可被6整除
规则2:IF X可被20整除 THEN X可被10整除
规则3:IF X可被6整除 THEN X可被2整除
规则4:IF X可被10整除 THEN X可被5整除
用数据驱动方法证明N可被5整除。步骤如下:
(1) 得到可利用的规则集:S={规则1,规则2}(把X置换为N)。
(2) 在S中选择规则1 ,规则1的触发得到新的事实;N可被6整除,将该事实加入数据库。
(3) 问题尚未解决,递归调用算法“Data-driven”。
(4) 得到可利用的规则集:S´={规则2,规则3}。
(5)在S´中选择规则2,规则2的触发得到新的事实:N可被10整除,将该事实加入数据库。
(6) 问题尚未解决,递归调用算法“Data-driven”。
(7)得到可利用的规则集:S´´={规则3,规则4}。
(8)在S´´中选择规则3,规则3的触发得到新的事实:N可被2整除,将该事实加入数据库。
(9) 问题尚未解决,递归调用算法“Data-driven”。
(10)得到可利用的规则集:S´´´={规则4}。
规则4是唯一可利用的规则,规则4的触发得到新的事实;N可被5整除,将该事实加入数据库。
(11) 问题求解成功(S1)。
(12)将规则4从S´´´中删去,并将“N可被5整除”从数据库中删除。因为S´´´为空,回到上次递归调用。
(13)将规则3从S´´中删去,并将“N可被2整除”从数据库中删除。
(14)从从S´´中选择规则4,规则4的触发得到新的事实:N可被5整除,将该事实加入数据库。
(15) 问题求解成功(S2)。
(16)将规则4从S´´中删去,并将“N可被5整除”从数据库中删除。因为S´´为空,回到上次递归调用。
(17) 将规则2从S´中删去,并将“N可被10整除”从数据库中删除。
(18)从从S´中选择规则3,规则3的触发得到新的事实:N可被2整除,将该事实加入数据库。
•••
该过程将继续,直至所有的解被求得。搜索空间树表示为:
在搜索空间数中,每个节点表示当前状态,分枝表示当前状态下可利用的规则,从初始状态到S的路径表示了规则的触发序列。
(二)目标驱动求解方法
在该方法中,系统仅考虑与当前问题有关的规则,用户先确定一真值待定的表达式作为目标,系统运行的目的是确定该目标是否为真。其算法为:
Algorithm goal-driven(G)
Variable S,X,G;
begin
result:=false;
S:=set of rules whose conclusion part matches goal G;
if S is empty
then result:=false;
else
while(result=false) and (S is not empty) do
X:=ruleselected from S;
S:=S with Xremoved;
C:=conditionpart of X;
if C is truein DB
thenresult:=true
elseif C is false in DB
thenresult:=false
elseif goal-driven(C)=true
thenresult:=true;
return result;
end
算法首先寻找规则库中那些右边为G的规则,如找不到,说明没有一条规则可证明G为真,则G为假。如找到一组这样的规则,这逐条对这些规则进行检查。若规则的左边为真,说明G为真,若规则的左部为假,则G为假。当无法直接判断规则左边的真假时,就将它作为子目标,递归调用该算法,直至算法结束。
仍以数据驱动方法所用的例子来说明:假设要证明“N能被5整除”。检查规则1~规则4的右部,得到:
S={规则4},即规则4是唯一的右边为X能被5整除的规则。这里已作了适当置换,因为规则4的左部不在数据库中,于是我们把规则4的左部:“N能被10整除”作为子目标,得到:
S´={规则2}
由于规则2的左部“N能被20整除”恰好在数据库中,所以子目标“N能被10整除”为真,即规则4的左部为真,所以表达式:“N能被5整除”为真。
(三)混合方法
混合方法是将数据驱动和目标驱动结合起来的一种策略。如下的算法实现了一种可能的混合方法:
Algorithm hybrid;
begin
repeat
let userenter data into the database;
call“data-driven”togenerate new facts which are added to the data base;
call“select-hypothesis”toselect a goal statement E;
call“goal-driven(E)”
until the problem is solved
end
其中算法select-hypothesis根据上一步生成的事是确定一目标。
五.规则的不一致性问题及其检查解决方法
一个系统的建立初期,由于规则库较少,内容也比较简单,系统设计人员能对每条规则的条件和结论进行反复推敲和精心构造,能够防止不一致性问题的出现。随着系统投入运行,新的规则不断加入规则库中,规则库越来越庞大,这样规则之间的相互联系相互制约关系变得越来越复杂。这就必然导致规则的不一致性问题。
(一)主要的不一致性问题:
◆循环:多个规则的前提和结论构成一个循环链,导致用自己推导出自己的错误;
◆冲突:两个规则前提等价而一个或多个结论子句有矛盾,或者前提有矛盾而结论等价,又或者由多条规则链形成冲突矛盾集合;
◆冗余:两个规则的前提等价,一个或多个结论子句也等价;
◆蕴含:两个规则有相同的结果,但其中一个含有多余的约束条件。
(二)不一致规则的检查解决方法
◆对于循环,可以构造规则集的IF-THEN图,从起始规则的条件部分开始搜索,如果搜索过程中THEN的部分重复出现,则说明存在循环。中断搜索,规则集中包含的循环规则子集合需设计人员检查解决。
◆对于冲突,可以构造IF-IF表,对规则集内相同的IF规则子句构造规则树,得到推理图。同时建立THEN-THEN表用以判断是否有矛盾的规则出现。对相同IF部分的规则继续用它的各自THEN部分作为其他可以匹配的IF前提条件,递归地构造,如发现两个推理图上分别有结点在THEN-THEN表上是矛盾的,则检测出冲突规则,人工予以解决。
◆对于冗余和蕴含的检查类似于冲突链的方法,不同之处是前者在推理图中的遍历是试图发现有THEN部分等价的两条规则。
小结
本讲首先概要地介绍了产生式和产生式系统;然后给出产生式规则的定义以及产生式的形式描述及语义;接下来详细讨论了产生式规则的问题求解算法,包括数据驱动求解方法、目标驱动求解方法以及将数据驱动和目标驱动结合起来的的混合方法;最后探讨了规则的不一致性问题及其检查解决方法。
更多阅读
实验建筑师学者教授赵冰 闽江学者特聘教授
赵冰赵冰,武汉大学城市建设学院教授、博士生导师、享受国务院专家特殊津贴。1985年2月至1988年4月就读于同济大学建筑与城市规划学院,获博士学位。主要从事教学、理论研究、城市规划与建筑设计的研究与创作。发表论文百余篇,出版专著
杨澄浦十几位直系弟子85式全套视频集 杨大卫85式一全套演练
上一篇 下一篇杨澄浦十几位直系弟子85式全套视频集 更多▲阿伦 发表于2010年07月04日 18:35阅读(0)评论(0) 分类:太极拳大师 权限: 公开杨澄浦十几位直系弟子85式全套视频集Post By:2010-6-26 10:33:11
治理“慵懒散软”作风 慵懒散专项治理总结
党政办治理“慵懒散软”自查自纠报告近段时间,我镇组织全体干部认真学习了关于治理“慵 懒散软”工作行为的相关精神。通过集体学习和会后交流讨 论,同时结合党政办公室日常工作实际,围绕文件精神中的 要求,针对庸、懒、散、软的问题和
模糊数学之父扎德LotfiA.Zadeh 说“做菜” 扎德
与模糊数学之父扎德(Lotfi A. Zadeh)合影,你能看出谁是沙鞠么?厨师做菜都不可能精确按照菜谱来做,但他们完全能做出好菜。牺牲一些精确性,会得到更多的收益。这是今天上午沙鞠在和被誉为模糊系统理论的创始人、模糊数学之父的美国伯克利
产生式迁移理论 为迁移而教
迁移的产生式理论是由信息加工心理学家J·R·安德森提出的。其基本思想是:先后两项技能学习产生迁移的原因是两项技能之间产生式的重叠。重叠越大,迁移量越大。要实现“为迁移而教”的目的,在教材的选编,教法的选择和练习的设计等方面都