Logica Fuzzy · Regole in Pratica

Regole Fuzzy in Pratica

Dal linguaggio naturale alla base di regole, per progettare sistemi fuzzy chiari e robusti.

Torna all'indice generale

1. Dal linguaggio naturale alla regola fuzzy

Molti sistemi fuzzy nascono da frasi del tipo:

"Se la temperatura è alta e l'umidità è bassa allora la velocità della ventola deve essere alta".

Il lavoro principale è tradurre queste frasi in elementi formali:

  • variabili linguistiche (Temperatura, Umidità, VelocitàVentola),
  • etichette fuzzy (bassa, media, alta),
  • regole del tipo IF–THEN con AND/OR tra le condizioni.

2. Struttura di una regola fuzzy

Una regola tipica in uno schema Mamdani ha la forma:

SE Temperatura è ALTA E Umidità è BASSA ALLORA VelocitàVentola è ALTA
          

Le parti principali sono:

  • Antecedente (SE ...): combina condizioni su variabili di ingresso.
  • Connettivi: AND/OR mappati su operatori fuzzy (min, max, prodotto, somma).
  • Consequente (ALLORA ...): assegna un insieme fuzzy all'uscita.

3. Esempi di controllo basati su regole

Controllo della temperatura di una stanza

  • SE Temperatura è BASSA ALLORA PotenzaRiscaldamento è ALTA.
  • SE Temperatura è CONFORTEVOLE ALLORA PotenzaRiscaldamento è MEDIA.
  • SE Temperatura è ALTA ALLORA PotenzaRiscaldamento è BASSA.

Controllo di un rischio qualitativo

  • SE ProbabilitàEvento è ALTA E Impatto è ALTO ALLORA Rischio è MOLTO_ALTO.
  • SE ProbabilitàEvento è BASSA E Impatto è ALTO ALLORA Rischio è MEDIO.

4. Buone pratiche per una base di regole

  • Coerenza: evitare regole che dicono cose opposte nelle stesse condizioni.
  • Copertura: coprire tutte le combinazioni rilevanti delle variabili di ingresso.
  • Compattezza: iniziare con poche regole ben scelte, poi raffinarsi.
  • Interpretabilità: mantenere nomi delle etichette chiari e vicini al linguaggio naturale.

È spesso utile partire da regole proposte da esperti di dominio e poi affinare i parametri tramite dati (approccio neuro-fuzzy).

5. Implementare regole fuzzy in Python

In Python si possono rappresentare le regole in vari modi, ad esempio come strutture dati che collegano nomi di variabili, etichette fuzzy e operatori.


rule = {
    "antecedent": [
        ("temperatura", "alta"),
        ("umidita", "bassa")
    ],
    "operator": "AND",
    "consequent": ("velocita_ventola", "alta")
}
          

Un motore di inferenza leggerà queste strutture, calcolerà i gradi di verità dell'antecedente e costruirà il contributo fuzzy all'uscita, come descritto nella pagina sullo Schema Mamdani.