Logica Fuzzy · Schema Mamdani

Sistemi di Inferenza Fuzzy: Schema Mamdani

Torna all'indice generale

Una descrizione passo-passo del flusso di calcolo in un tipico sistema fuzzy di tipo Mamdani.

Componenti principali di un FIS Mamdani

  • Variabili di ingresso con i loro insiemi fuzzy.
  • Base di regole del tipo IF–THEN.
  • Motore di inferenza che applica le regole.
  • Defuzzificatore per ottenere un'uscita numerica.

Fase 1: Fuzzificazione

Dato un ingresso numerico x (ad esempio una temperatura), calcoliamo il grado di appartenenza di x a ciascun insieme fuzzy definito per quella variabile (es. fredda, confortevole, calda).

Formalmente, per ogni insieme fuzzy Ai associato alla variabile X, si calcola μAi(x).

Fase 2: Inferenza sulle regole

Ogni regola fuzzy ha tipicamente la forma:

SE X è Ai E Y è Bj ALLORA Z è Ck

Si calcola il grado di attivazione della regola combinando i gradi di appartenenza delle condizioni tramite un operatore di congiunzione (spesso il minimo).

Ad esempio, per una regola con due condizioni:

α = min( μ_Ai(x), μ_Bj(y) )
          

Questo grado α verrà poi usato per “tagliare” o scalare l'insieme fuzzy di uscita Ck.

Fase 3: Aggregazione delle uscite

Ogni regola produce un insieme fuzzy di uscita parziale. Nella versione Mamdani classica, si usa l'operatore min per applicare il grado α all'insieme di uscita Ck:

μ_Ck'(z) = min( μ_Ck(z), α )
          

Le uscite parziali di tutte le regole vengono poi combinate, di solito tramite il massimo:

μ_out(z) = max_k μ_Ck'(z)
          

Fase 4: Defuzzificazione

Il risultato μ_out(z) è ancora un insieme fuzzy. Per pilotare un attuatore o prendere una decisione numerica, occorre trasformarlo in un singolo valore reale.

Uno dei metodi più diffusi è il centroide (baricentro):

output = ( ∑ z * μ_out(z) ) / ( ∑ μ_out(z) )
          

In implementazioni discrete, le somme vengono calcolate su una griglia di punti z nel dominio dell'uscita.

In Python, questo metodo può essere implementato facilmente con array NumPy e un loop o operazioni vettorializzate.