2014-04-24 7 views
7

Ho creato un modello fuzzy che rappresenterà la conoscenza di uno studente in un determinato dominio. Il problema è che al momento dichiarando uno studente John come low, sarà anche dichiarato come med perché gli studenti sono bassi anche med tra i 30 ei 40 anniFatti sfocati nelle clip

Come posso dichiarare una studentessa come low, senza essere med?

Nota che so che posso fare qualcosa come (student (name John) (knowledge (20 0) (21 1) (22 0))), ma cosa succede se voglio dichiararlo usando il valore fuzzy?

(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)) 
) 

risposta

1

Avere gamme sovrapposte ha senso. Ma forse la sovrapposizione non è quello che vuoi fare. Che dire:

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

In questo modo, si può chiaramente dire quando un punteggio è basso, o alto, e il loosy-goosy med riempie solo nelle crepe.