我制作了一个模糊的模板,代表学生在某个领域的知识.问题是,在声明学生John的low,他也将被宣布为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)
通过重叠范围,这是有道理的。但也许重叠并不是您想要做的。关于什么:
(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正好填补了裂缝。
| 归档时间: |
|
| 查看次数: |
312 次 |
| 最近记录: |