Definizione matematica
Un insieme fuzzy A su un universo X è definito da una funzione di appartenenza μA(x) che associa a ogni x ∈ X un valore reale nell'intervallo [0, 1].
In notazione compatta:
μA : X → [0, 1]
dove μA(x) rappresenta il grado di appartenenza di x all'insieme fuzzy A.
Funzione di appartenenza triangolare
La funzione triangolare è definita da tre parametri (a, b, c) con a < b < c. È zero fuori dall'intervallo [a, c], cresce linearmente da a a b e decresce linearmente da b a c.
In forma piecewise:
0 se x ≤ a
(x - a) / (b - a) se a < x ≤ b
(c - x) / (c - b) se b < x < c
0 se x ≥ c
Questa forma è molto usata nei controllori fuzzy grazie alla sua semplicità e al fatto che i parametri hanno interpretazioni intuitive (inizio, picco, fine).
Funzione di appartenenza trapezoidale
La funzione trapezoidale è una generalizzazione della triangolare con un plateau centrale. È definita da quattro parametri (a, b, c, d) con a < b ≤ c < d.
0 se x ≤ a
(x - a) / (b - a) se a < x ≤ b
1 se b < x ≤ c
(d - x) / (d - c) se c < x < d
0 se x ≥ d
È utile per rappresentare concetti come “circa costante” in una regione centrale di valori.
Funzione di appartenenza gaussiana
La funzione gaussiana utilizza la forma tipica di una campana, controllata da media m e deviazione σ > 0:
exp( - ( (x - m)² ) / (2 σ²) )
La gaussiana è particolarmente utile quando si desidera una transizione liscia e infinita (anche se di fatto tagliata dal range dei dati). È comune nei modelli neuro-fuzzy, perché è facilmente derivabile rispetto ai parametri m e σ.
Criteri pratici di scelta
- Sistemi embedded o risorse limitate: triangolari e trapezoidali per semplicità computazionale.
- Modelli neuro-fuzzy: gaussiane o sigmoidi per facilità di ottimizzazione tramite gradienti.
- Prototipazione rapida: triangolari come scelta predefinita, da affinare in seguito.
In Python, le funzioni di appartenenza possono essere implementate come semplici funzioni o come oggetti con parametri modificabili dinamicamente durante il training.