Lo scenario
Vogliamo controllare la temperatura di una stanza regolando la potenza di un riscaldatore. Invece di usare una logica rigida, utilizziamo un sistema fuzzy per avere un comportamento più morbido e realistico.
Definizione delle variabili linguistiche
Ingresso: temperatura
Valori in °C con etichette fuzzy:
- Fredda
- Confortevole
- Calda
Uscita: potenza_riscaldatore
Valori percentuali con etichette fuzzy:
- Bassa
- Media
- Alta
Definizione delle regole fuzzy
Possiamo definire alcune regole linguistiche intuitive:
- SE temperatura è fredda ALLORA potenza_riscaldatore è alta.
- SE temperatura è confortevole ALLORA potenza_riscaldatore è media.
- SE temperatura è calda ALLORA potenza_riscaldatore è bassa.
Queste regole possono essere raffinate aggiungendo condizioni su umidità, presenza persone, orario del giorno, ecc., mostrando la flessibilità dei sistemi fuzzy.
Inferenza e defuzzificazione
Per una temperatura misurata, calcoliamo il grado di appartenenza alle etichette (fredda, confortevole, calda) e applichiamo le regole per ottenere un'uscita fuzzy per potenza_riscaldatore.
Con la defuzzificazione (ad esempio metodo del baricentro) otteniamo un valore numerico unico di potenza da applicare al riscaldatore.
Implementazione in Python
In Python possiamo:
- Definire le funzioni di appartenenza come funzioni Python o usando librerie dedicate.
- Scrivere una funzione di inferenza che applica le regole fuzzy.
- Implementare un metodo di defuzzificazione e visualizzare i risultati.
Questa pagina può essere collegata a un notebook o a un repository con il codice completo, pubblicato su fuzzypython.org.