2014-04-24 26 views
7

我做了一個模糊模板,代表學生在某個領域的知識。問題是,在聲明學生Johnlow,他也將被宣佈爲med因爲低的學生也30和40之間配有剪輯中的模糊事實

我怎樣才能申報學生爲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)) 
) 

回答

1

通過具有重疊範圍,它是有道理的。但也許重疊不是你想要做的。怎麼樣:

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

這樣的話,你可以明確地告訴當分數低或高,以及loosy-goosy med正好填補了裂縫。