Una volta che abbiamo fuzzyficato gli inputs e abbiamo fornito le informazioni in formato fuzzy al motore decisionale del nostro sistema (il programma che fa girare le regole) e che questo ci ha fornito in risposta degli output in formato fuzzy del tipo output 3 appartiene a classe2 con grado 0.6 , dobbiamo ora trovare un sistema che ci consenta di estrarre dati numerici precisi da applicare alle uscite.
Questa operazione detta defuzzyficazione dell’ output deve risolvere il problema della conflittualità che nasce dal fatto che alcune regole possono avere generato conseguenze contrastanti tipo:
conseguenza1: out1 appartiene a classe2 con grado 0.6
conseguenza2: out1 appartiene a classe3 con grado 0.3
dove, cioè lo stesso output viene assegnato a classi differenti(normalmente adiacenti o vicine nel range della variabile). Viene comunemente utilizzato un metodo chiamato "center of gravity method" che consiste nel calcolare le aree "attive" dei trapezi o triangoli che definiscono le classi e, una volta posizionato il valore a metà tra i centri delle classi in conflitto farlo "attrarre" dai rispettivi centri_classe in modo proporzionale alle aree attive associate, come mostrato in fig.6
. Una possibile semplificazione può essere quella di prendere i centri di tutte le classi in conflitto e far attrarre il valore numerico finale da tutti i centri in modo proporzionale alla forza delle regole che hanno determinato le conseguenze di appartenenza ad ogni classe:
valore finale = (f1*c1 + f2*c2 + f3*c3 ...+fn*cn)/(f1+f2+f3...+fn)
dove cn=centro numerico della classe n fn=grado di appartenenza (o forza della regola)
Luca Marchese
Successivo: Realizzazione Software
Sommario: Indice