Fuzzy Logic
La logica fuzzy assegna valori di verità tra 0 e 1, consentendo ai sistemi basati su regole di ragionare con termini vaghi come caldo o vicino. Panoramica di controllori e codice.
La logica fuzzy è una forma di logica a molti valori in cui un'affermazione può essere parzialmente vera, con un grado di verità compreso tra 0 e 1, anziché essere soltanto vera o falsa. Nasce dall'articolo di Lotfi Zadeh del 1965 sugli insiemi fuzzy, pubblicato all'Università della California, Berkeley, e offre ai computer un modo per usare calcoli precisi con termini vaghi del linguaggio umano come «caldo», «vicino» o «veloce». Un sistema fuzzy codifica le conoscenze degli esperti sotto forma di semplici regole «se-allora» e combina le regole applicabili in parte, così l'output cambia gradualmente al variare degli input. Questa caratteristica ha reso la logica fuzzy un elemento fondamentale dell'ingegneria del controllo, dalla frenata dei treni alle lavatrici, e continua a essere utilizzata nei sistemi di intelligenza artificiale (AI) che richiedono regole interpretabili e regolabili manualmente.
Insiemi fuzzy e funzioni di appartenenza#
Nella teoria classica degli insiemi, un elemento appartiene o non appartiene a un insieme. Un insieme fuzzy assegna a ogni elemento un grado di appartenenza compreso tra 0 e 1 tramite una funzione di appartenenza, di solito una curva triangolare, trapezoidale o gaussiana sull'intervallo di input. Gli insiemi vicini si sovrappongono, quindi una stanza a 24 °C può essere «calda» al grado 0,6 e «molto calda» al grado 0,2 contemporaneamente; l'etichetta cambia gradualmente invece di scattare al superamento di una soglia. Gli operatori logici si estendono ai gradi: le definizioni originali di Zadeh prendono il minimo tra due gradi per AND, il massimo per OR e 1 meno il grado per NOT; altre scelte, come il prodotto per AND, appartengono a una famiglia chiamata t-norme.
Come funziona un sistema di inferenza fuzzy#
Un controllore fuzzy trasforma le letture discrete dei sensori in un comando discreto in quattro passaggi:
- Fuzzificazione: mappa ogni valore di input sul relativo grado di appartenenza in ciascun insieme fuzzy; per esempio, indica quanto un ostacolo è «vicino», «a media distanza» o «lontano».
- Valutazione delle regole: attiva ogni regola se-allora, come «se la distanza è ridotta, la frenata è intensa», in misura proporzionale al grado di validità della condizione.
- Aggregazione: limita l'insieme di output di ogni regola al relativo grado di attivazione e combina gli insiemi limitati, di solito prendendone il massimo.
- Defuzzificazione: riduce l'insieme combinato a un unico numero, molto spesso il suo baricentro.
Questo schema è il metodo di Mamdani, dal nome di Ebrahim Mamdani, che lo usò con Sedrak Assilian per controllare un motore a vapore da laboratorio nel 1975. I sistemi Takagi-Sugeno sostituiscono gli insiemi di output con formule degli input e ne calcolano la media; sono meno costosi dal punto di vista computazionale e più facili da regolare a partire dai dati. Questo esempio implementa un controllore Mamdani a tre regole che imposta la forza frenante in base alla distanza da un ostacolo:
import numpy as np
# Output fuzzy sets over braking force (0-100%)
force = np.linspace(0, 100, 501)
gentle = np.interp(force, [0, 40], [1, 0])
firm = np.interp(force, [20, 50, 80], [0, 1, 0])
hard = np.interp(force, [60, 100], [0, 1])
for distance in [8, 15, 22, 35]:
# Fuzzification: how near, medium, and far the obstacle is (meters)
near = np.interp(distance, [5, 20], [1, 0])
medium = np.interp(distance, [10, 20, 30], [0, 1, 0])
far = np.interp(distance, [20, 40], [0, 1])
# Rules: near -> hard, medium -> firm, far -> gentle; clip each set (min), combine (max)
combined = np.maximum.reduce([np.minimum(near, hard), np.minimum(medium, firm), np.minimum(far, gentle)])
# Defuzzification: the centroid of the combined set is the crisp braking command
print(f"{distance:>2} m -> brake {np.sum(force * combined) / np.sum(combined):.0f}%")Lo script stampa forze frenanti dell'86%, 60%, 47% e 14% per distanze di 8, 15, 22 e 35 metri. A 15 metri, l'ostacolo è «vicino» al grado 0,33 e «a media distanza» al grado 0,5, quindi le regole per la frenata intensa e sostenuta si attivano entrambe parzialmente e la loro combinazione produce il 60%. Tre regole generano una curva di frenata uniforme, senza soglie che facciano scattare bruscamente il comando.
Applicazioni#
- Sistemi di controllo: il sistema fuzzy di guida automatica dei treni di Hitachi controllava accelerazione e frenata sulla linea Namboku della metropolitana di Sendai alla sua apertura nel 1987, offrendo viaggi più fluidi e fermate più precise. I controllori fuzzy regolano anche elettrodomestici come lavatrici, cuociriso e condizionatori sulla base di letture imprecise dei sensori.
- Segmentazione delle immagini: il fuzzy c-means, una versione soft del clustering k-means, assegna a ogni pixel un grado di appartenenza a ciascun cluster. È ampiamente utilizzato nell'analisi di immagini mediche, per esempio per separare i tipi di tessuto cerebrale nelle scansioni MRI, in cui un pixel sul confine può contenere entrambi i tessuti.
- Decisioni basate sulla visione: la soluzione Ultralytics per la stima della velocità traccia i veicoli con un modello YOLO26 e indica la velocità di ciascuno in km/h; un controllore fuzzy può valutare questo input discreto come lento, moderato o veloce prima di impostare un livello di allerta o la temporizzazione di un segnale.
- Sistemi neuro-fuzzy: il sistema di inferenza neuro-fuzzy adattivo (ANFIS), introdotto da Jyh-Shing Roger Jang nel 1993, apprende dai dati le funzioni di appartenenza e i parametri delle regole con metodi di addestramento delle reti neurali, mantenendo le regole leggibili.
Logica fuzzy a confronto con probabilità e IA simbolica#
La logica fuzzy e la probabilità usano entrambe numeri compresi tra 0 e 1, ma descrivono tipi diversi di incertezza. Una probabilità, la quantità su cui ragionano le reti bayesiane, esprime quanto è probabile un evento definito con precisione, per esempio una probabilità del 30% che domani piova. Un grado di appartenenza fuzzy esprime quanto una descrizione vaga corrisponda a uno stato noto, per esempio una tazza di caffè a 50 °C che è «calda» al grado 0,7. Rispetto all'IA simbolica classica, i sistemi di regole fuzzy mantengono la forma leggibile «se-allora» dei sistemi esperti, ma sostituiscono la condizione sì-o-no di ogni regola con un grado, consentendo a più regole di contribuire contemporaneamente a una decisione.










