剪辑中的模糊事实

Geo*_*iuc 7 fuzzy-logic clips

我制作了一个模糊的模板,代表学生在某个领域的知识.问题是,在声明学生Johnlow,他也将被宣布为med是因为低的学生也30和40之间的MED值.

我怎么能宣布学生是low,而不是med

请注意,我知道我可以做类似的事情(student (name John) (knowledge (20 0) (21 1) (22 0))),但如果我想使用模糊值声明他怎么办?

(deftemplate fz-knowledge
0 100
( (low (20 1) (40 0))
  (med (30 0) (50 1) (70 0))
  (high (60 0) (80 1))
))


(deftemplate student
(slot name)
(slot knowledge (type FUZZY-VALUE fz-knowledge))
)

(deffacts students
(student (name John) (knowledge low) )
)
Run Code Online (Sandbox Code Playgroud)

Gut*_*der 2

通过重叠范围,这是有道理的。但也许重叠并不是您想要做的。关于什么:

(deftemplate fz-knowledge
0 100
( (low (20 1) (40 0))
  (high (60 0) (80 1))
  (med   NOT [ low OR high ] )
))
Run Code Online (Sandbox Code Playgroud)

这样,你就可以清楚地知道分数何时低或高,而松散的东西med正好填补了裂缝。