Sei sulla pagina 1di 13

Perché

programmare con le parole



Insiemi Fuzzy: tecnologia che serve per definire dei termini su delle variabili ordinali e quindi
arrivare a costruire dei modelli a parole che siano messi in relazione con della realtà anche fisica.

Cos’è un modello?
È una rappresentazione di aspetti rilevanti per una rappresentazione
Diversi elementi da tenere in conto:
- Contenuti: quali aspetti vogliamo rappresentare
- Modalità: come rappresentarli (mappa, descrizione a parole, …)
Dipendono dall’applicazione.

Es.: modelli linguistici
Modalità: parole

Per essere operativi su calcolatore è necessario che il modello sia espresso in modo formale.
Gli insiemi fuzzy sono stati introdotti come formalismo per rappresentare in forma linguistica
interpretazioni di valori di grandezze ordinali, cioè dare dei nomi (rappresentare in forma di
parole) alle interpretazioni dei valori che possono assumere delle grandezze ordinali.

Cos’è una grandezza ordinale?
È una grandezza per cui vale una relazione d’ordine tra i suoi valori (es. temperatura, livello di scolarità
-> elementari, medie, superiori, laurea, dottorato…)

Cos’è un’interpretazione linguistica?
Es. cosa vuol dire che una temperatura è alta? Per un reattore nucleare avrà un significato diverso che
per una temperatura corporea
-> dipende dal contesto ed è un’interpretazione linguistica, quindi dovremo cercare di mettere in
relazione questa temperatura alta con i valori che sono i valori della grandezza ordinale cui
facciamo riferimento

Perché avere delle interpretazioni linguistiche?
Ad esempio per poter ragionare a parole, quindi fare dei ragionamenti, delle inferenze, utilizzando
dei termini linguistici e simboli.
Quindi potremmo avere delle regole in cui si fanno delle valutazioni su valori di grandezze come
temperatura e pressione:
IF (T is High) and (P is Medium) THEN Alarm is Orange
Questo è un modo per esprimere una relazione tra valori di grandezze che sono interpretate in termini
linguistici.

Un altro motivo per avere interpretazione linguistiche è quello di descrivere situazioni ad alto
livello di astrazione:
es. per il reattore nucleare potremmo avere delle relazioni tra diversi valori delle grandezze in ingresso e
la situazione di allarme da segnalare:
(T = 473.5) (P = 13.7) Alarm Orange
(T = 475.2) (P = 13.4) Alarm Orange …
Questo tipo di modello non cattura il significato che vogliamo dare alla situazione: noi vogliamo avere
arancione quando la temperatura è alta e la pressione è media, e tutti questi numeri descrivono sì
anche puntualmente le varie situazioni ma devono essere anche elencati, e comunque non catturano
l’aspetto concettuale che sta dietro a questa situazione (= situazione abbastanza pericolosa quando si
hanno temperatura alta e pressione media).
Potremmo avere una situazione analoga, quindi un modello, descritta con degli intervalli:
(T>450) (0<P<15) Alarm Orange
Anche questo non cattura appieno il significato di quello che abbiamo scritto prima con la regola: se T
fosse 449 o P 15.1? Potrei comunque voler dare un qualche messaggio di errore.

Quindi sostanzialmente il modello a regole ci permette di catturare un aspetto concettuale
(temperatura alta e pressione media) e di ragionare a un livello di astrazione che non richiede
molti dettagli.
In generale questo tipo di modello è anche molto più compatti di analoghi modelli fatti a intervalli
o con elencazioni dei valori.

Significato dei termini linguistici
Il significato di un termine può essere definito da:
- Nella IA simbolica (IA classica): il significato di un termine (o simbolo) è dato dalla sua
relazione con altri termini (es. una persona è un mammifero, ha come parti la testa, le braccia, ecc.;
il significato del termine persona deriva dall’insieme di legami che ha con gli altri termini). Va
benissimo per costruire dei modelli concettuali però ha il difetto che ogni termine è
definito in relazione ad altri termini, quindi manca il collegamento con un significato primo
fondamentale che sta dietro ai termini. Questi termini in linea di principio potrebbero non
significare nulla per la persona che li usa e la persona potrebbe essere in grado
semplicemente di usarli seguendo le relazioni che ci sono ma senza capire realmente il loro
significato. Sulla base di questi problemi è nata l’esigenza di
- Collegare il significato dei termini con della realtà misurata, percepita in qualche modo.
Significativo in quanto possiamo mettere in relazione un’esperienza fisica.

Gli insiemi fuzzy sono uno degli strumenti che permettono di mettere in relazione dei simboli con
delle grandezze fisiche misurate (-> numeri). Grazie al fatto che permettono di definire
formalmente un’interpretazione linguistica di una variabile ordinale, permettono di creare questo
legame tra un simbolo e la realtà percepita in termini di dati sensoriali, ad esempio misurati con
dei sensori.
- Problema del Symbol Grounding: collegare almeno alcuni simboli base con la realtà
percepita. Dopo anni di attività nella AI simbolica si è riconosciuto che se vogliamo davvero
una macchina intelligente, in grado di interagire nel mondo reale, abbiamo bisogno di
fornirgli una base (grounding) con la realtà percepita (spesso attraverso sensori che
forniscono valori numerici dei segnali).
Es. colore di un oggetto è determinato da valori RGB, se vogliamo ragionare su queste cose è bene
ci sia un’interpretazione linguistica, dunque si può costruire questa trasformazione segnale-simbolo
che è alla base del symbol grounding con degli insiemi fuzzy, dunque dai 3 numeri (valori RGB) che
rappresentano quello che percepisce, ad esempio, la telecamera del colore dell’oggetto si può
astrarre l’aspetto concettuale che quell’oggetto è, diciamo, rosso, facendo un processo di
classificazione.

Cos’è un insieme fuzzy

Gli insiemi della matematica classica, definiti da una funzione di appartenenza che permette di
dire se un elemento appartiene o no a quell’insieme, sono detti “crisp” (rigidi, ben definiti, netti)

Fuzzy significa “sfuocato, sfumato”, quindi cattura l’idea di una definizione che tende a sfumare:
es. Adulto: da che età si può definire una persona “adulta”? A 30 anni una persona è certamente
definibile adulta, ma più si scende con l’età più la definizione è sfumata.
Gli elementi di un insieme fuzzy hanno un grado di appartenenza all’insieme che ha un valore
compreso nell’intervallo [0,1], quindi si può dire che un elemento appartiene a un insieme con un
certo grado di appartenenza.
Es. L’insieme dei ragazzi e quello degli adulti si intersecano nella sezione più sfumata.

La funzione di appartenenza di un insieme fuzzy è generalmente chiamata µ e definisce il grado di
appartenenza di un elemento all’insieme, quindi è una funzione che mappa gli elementi
dell’elemento del discorso U su un intervallo [0,1]:
µ: U->[0,1]
Si può definire anche graficamente:


Si può definire un livello di significatività, ad esempio 0.5, per cui se c’è bisogno di risparmiare
carico computazionale si tiene conto soltanto delle classificazioni che sono sopra la soglia di
significatività.
In questo esempio, nell’applicazione si può dire che una persona di 35 anni è “non molto giovane” con
grado 0,6 e tralasciare le altre classificazioni che sono sotto la soglia.

Come definire funzioni di appartenenza
- Selezionare una variabile e definire qual è l’intervallo di valori che vogliamo considerare
- Identificare i nomi degli insiemi fuzzy (etichette-label) che servono per la nostra
applicazione
- Identificare per ogni insieme fuzzy i punti caratteristici (in generale i punti in cui la funzione
va a 0, 1 e altri eventuali valori intermedi significativi)
- Identificare la forma della funzione di appartenenza
- Verifica sulla base dell’applicazione per valutare quanto quello che abbiamo definito
cattura gli aspetti che vogliamo modellizzare

Es.



Funzioni di appartenenza particolari
- Singleton: un insieme fuzzy con un elemento solo (che vale 1)
- Intervalli: insiemi fuzzy in cui gli elementi hanno grado di appartenenza 1

Insiemi fuzzy su scale ordinali



Operazioni su insiemi fuzzy
Le operazioni definite sugli insiemi crisp sono riportate anche agli insiemi fuzzy.
Operazioni standard:
- Complemento: µf –(x) = 1-µf(x)
L’appartenenza di un valore x al complemento dell’insieme fuzzy f è uguale a 1 meno il valore di
appartenenza di x all’insieme fuzzy f stesso.
- Unione: µf1Èf2(x) = max[µf1(x), µf2(x)]
Il valore di appartenenza di un elemento x all’insieme fuzzy unione tra gli insiemi fuzzy f1 e f2 è
il massimo tra i valori di appartenenza della stessa x a f1 e quelli di appartenenza a f2.
- Intersezione: µf1Èf2(x) = min[µf1(x), µf2(x)]

È possibile definire intere classi di operatori che si differenziano da questi per il tipo di operatore
(perché hanno le stesse proprietà matematiche ad alto livello) che danno origine a una serie di
modalità per definire aspetti concettuali collegati all’interazione tra insiemi fuzzy.

Logica fuzzy

A differenza della logica booleana, che ha solo due valori ed è quindi usata principalmente per
esprimere il vero-falso (-> problema se non si sa se un fatto è vero o falso, ad esempio un fatto
futuro), la logica fuzzy è una logica a infiniti valori:
- La verità di una proposizione può assumere valori reali compresi tra 0 e 1.
Possiamo esprimere un insieme di possibilità come valori di verità di una proposizione, che può
quindi essere vera (1), falsa (0) o assumere un valore intermedio.
- La logica fuzzy è isomorfa alla teoria degli insiemi fuzzy, con gli operatori standard visti
precedentemente, così come la logica booleana è isomorfa alla teoria degli insiemi (crisp).
Questo vuol dire che, una volta ottenuti dei risultati in uno di questi ambienti (logica o
insiemi), questi risultati possono poi essere riportati all’interno dell’altro ambiente
corrispondente.

Es. Possiamo dire che “domani pioverà” ha valore di verità 0.8 in base all’opinione che abbiamo rispetto
alla possibilità che questo evento si verifichi.

Ø Si può rappresentare l’incertezza di una proposizione.

In logica fuzzy le proposizioni sono espresse come:
X is L
Dove:
- is è una parola chiave che significa “è”
- X è la variabile linguistica
- L è un’etichetta che denota un insieme fuzzy

Es. Temperature is HIGH


Una variabile linguistica è definita da una quintupla di valori: (X, T(X), U, G, M)
- X è il nome della variabile (es. Temperature)
- T(X) è l’insieme dei valori linguistici che può assumere la variabile (es. parole)
- U è l’universo del discorso definito su una variabile di base u
- G è una grammatica che definisce delle regole sintattiche per generare l’interpretazione
T(X) per ogni valore di u (-> regole che permettono di passare da un valore della variabile di
base definita sull’universo del discorso a un valore linguistico, che è un valore che può
assumere la variabile linguistica)
- M è la regola semantica per associare X al suo significato

Es.
Abbiamo una variabile di nome “età”.
Per essa l’universo del discorso U = [0, 125].
I valori linguistici che può assumere sono: “vecchio”, “mezz’età”, “giovane”, “bambino”.
La variabile di base u è l’età in anni.
M è la definizione in termini di fuzzy set dei valori di X, quindi associamo a ciascuno dei valori linguistici
di X un fuzzy set che avrà un’etichetta corrispondente al valore linguistico e che definisce
l’interpretazione dei valori della variabile di base u in termini di fuzzy set.
G è la definizione del processo di unificazione tra T e U, quindi costituisce il modo di interpretare la
variabile di base u in termini linguistici nei termini che sono valori per la variabile T.

Il valore di verità di una proposizione in logica fuzzy è interpretato come il grado di appartenenza
all’insieme fuzzy corrispondente.

Es. Quanto è vero che una temperatura di 30 gradi è “alta”?
u = temperatura
p: Temperatura is alta
X = Temperatura
Abbiamo un fuzzy set che definisce cosa significa “alta”, quindi permette di classificare i valori di u in
termini di appartenenza all’insieme fuzzy.
Un valore di appartenenza di 0.75 viene riportato con una funzione lineare ad un valore di verità di 0.75.
Questo passaggio permette, in linea di principio, di trovare delle relazioni tra gradi di appartenenza e
valore di verità, e in effetti è possibile stabilire delle relazioni non lineari che permettono di dare
particolari interpretazioni alla verità.



Operatori logici
Gli operatori di composizione sono gli stessi usati nella teoria degli insiemi fuzzy:
- NOT (¬) è realizzato come il complemento: T(¬a) = 1–T(a)
- AND (∧) come Ç quindi è una T-norma, ad esempio min T(a∧b) = min{T(a), T(b)}
- OR (∨) come È, realizzato da una T-conorma, ad esempio MAX T(a∨b) = MAX{T(a), T(b)}

Un’altra T-norma comunemente usata è li prodotto T(a)*T(b):
il valore di verità di una proposizione che è l’AND di due proposizioni sarà il prodotto dei valori di
verità delle due proposizioni.
La sua corrispondente conorma è T(a)+T(b)–T(a)*T(b).

Similarità e differenze con la logica booleana
Operatori analoghi: quando i valori di verità sono 0 e 1 danno esattamente gli stessi risultati.
Alcune tautologie che sono alla base della logica booleana non valgono nella logica fuzzy:
- Legge del terzo escluso: a ∨ ¬a = 1 (è vero a o non a)
Es. in logica fuzzy:
se il valore di verità di una proposizione a è 0.7, allora (a ∨ ¬a) = MAX{0.7,(1–0.7)} = 0.7 ≠ 1
- Legge di non contraddizione: a ∧ ¬a = 0 (non è vera una cosa e il suo contrario)
Es. in logica fuzzy:
se il valore di verità di una proposizione a è 0.7, allora (a ∧ ¬a) = min{0.7,(1–0.7)} = 0.3 ≠ 0
Cade anche il paradosso del mentitore: “sono bugiardo” è un’asserzione che implica la verità della
negazione e si giunge a un paradosso.
In logica fuzzy può essere che il valore di verità della proposizione e della sua negazione siano
entrambi 0.5, quindi abbiamo valori di verità consistenti con gli assiomi e non c’è contraddizione.
I sistemi realizzati con regola fuzzy implementano delle inferenze tra valori di ingresso e valori di
uscita, analogamente a quanto abbiamo visto per le regole nei sistemi basati sulla conoscenza. Le
regole Fuzzy si mostrano esattamente come le regole di produzione in un tradizionale sistema
esperto.

Cos’è una regola fuzzy?
Una regola fuzzy è una regola per cui le clausole hanno la forma
V is L, quindi analoga a quella delle proposizioni
Dove:
- V è una variabile linguistica
- L è l’etichetta che denota un insieme fuzzy
Questa viene detta clausola linguistica.

Di solito le clausole dell’antecedente sono legate dal solo operatore AND, quindi rispetto a una
forma generale delle regole, le regole fuzzy non hanno l’operatore OR e NOT, ma hanno solo
l’operatore AND. (Questo è un uso, in realtà se fosse necessario OR e NOT sarebbero possibili
perché sono definiti comunque all’interno della logica fuzzy.)
L’antecedente viene unificato con fatti rappresentati da valori di variabili ordinali corrispondenti a
variabili linguistiche.
Il conseguente può essere di due tipi diversi, dando origine a due tipi diversi di regole linguistiche.
- Regole Mamdani: sono regole linguistiche, il conseguente è una congiunzione di clausole
linguistiche, quindi è del tutto analogo all’antecedente, e ancora una volta abbiamo solo
l’operatore AND che lega le varie clausole.
Es. IF (A is LAn) AND (B is LBk) AND… THEN (U is LUm) AND…
Sia nell’antecedente che nel conseguente ci sono dei termini che denotano dei valori linguistici
per delle variabili.
IF (Distance is Far) AND (BallDirection is Front) THEN (Speed is HIGH) AND (Direction is Ahead)
Questo tipo di regole mette in relazione l’interpretazione di una configurazione di ingresso
con una descrizione simbolica delle uscite desiderate.
- Regole Sugeno: sono regole matematiche o di modello, legano un modello matematico
(lineare, non lineare, rete neurale…) con l’interpretazione linguistica delle sue condizioni di
applicabilità. Il modello è definito sulle variabili d’ingresso alla regola, e siamo in grado di
definire, con le variabili di ingresso (antecedenti), delle condizioni di applicabilità di un
modello espresse in termine linguistico, e sulla base di questo decidiamo di applicare il
modello con un certo peso che dipende da quanto le condizioni della regola sono vere.
Es. IF (A is LAn) AND (B is LBk) AND… THEN U is f(A, B)
F può essere un modello di qualsiasi tipo.
IF (Temperature is High) AND (Pressure is High) THEN Heating = 2000 + 3T – 7P
Questa può essere considerata una relazione tra l’interpretazione di una configurazione
d’ingresso (che rappresenta le condizioni di applicabilità del modello) e la valutazione del
modello sulle variabili d’ingresso.
Questo tipo di regole ci permette di definire per ogni modello quando è il caso di applicarlo
e di mescolare, in casi che possono essere interpretati diversamente ma che sono vicini, gli
effetti di due modelli.

Come funzionano le regole fuzzy


Il meccanismo di attivazione delle regole è un processo di 5 passi:
- Input matching: mettere in relazione i fuzzy set con i valori d’ingresso, che in generale
saranno dei valori numerici o comunque valori di variabili ordinali.



- Combinazione gradi di matching nell’antecedente: (quanto è vero l’antecedente nel suo
complesso) viene fatta con una t-norma.
Es. con la t-norma minimo:



- Combinazione con il peso della regola: si può dare a una regola un “peso”, grado di
importanza relativa che può essere associato alle regole per definire quanto una regola è
più importante di un’altra. Il peso di una regola viene combinato col grado
dell’antecedente. L’operatore di combinazione è ancora una t-norma.



Il grado risultante viene riportato come peso del conseguente, cioè diventa l’importanza
che una regola ha nell’affermare qualcosa sulle variabili d’uscita. Quindi tanto più una
regola è “buona”, tanto più avrà diritto di ritenere che la sua uscita “conti” rispetto alla
valutazione finale.
Quindi (X is PM), (X is PS), (X is PM) hanno valore 0.2, 0.5, 0.4.

- Aggregazione delle uscite:
es. R1: if (A is PL) (B is PS) Then (X is PM) -> 0.2
R2: if (A is PM) (B is PS) Then (X is PS) -> 0.5
R2: if (A is PL) (B is PM) Then (X is PM) -> 0.4
Abbiamo due valori identici, (X is PM) in R1 e R2, a cui sono stati attribuiti dei gradi diversi, 0.2 e
0.4.
L’aggregazione è fatta con una t-conorma, quindi con un massimo:
(X is PM) -> MAX{0.2, 0.4} = 0.4

- (Eventuale) defuzzyficazione: in molte applicazioni è importante completare il passaggio
dai valori di ingresso, che originariamente erano numerici, per arrivare a valori d’uscita che
sono ancora numerici. Si considera che le corrispondenti membership functions in uscita
vengano tagliate ai livelli relativi ai pesi rispettivi.

La membership function di Positive Small (PS) viene
tagliata a 0.5 e quella di Postive Medium (PM) a 0.4.
Ora è come se avessimo due figure, che in questo caso
sono rappresentate solo da segmenti visto che
abbiamo dei singleton.



Occorre effettuare un’operazione di defuzzyficazione: possiamo scegliere tra tanti
operatori, ad esempio si può usare l’operatore “media pesata” (baricentro). Quindi
considerando le due aree (nell’esempio sono due segmenti) come se fossero dei segmenti
pesanti costituiti da un qualche materiale, posti alla distanza indicata dalla differenza di
valori della X, si applica semplicemente la formula del baricentro, che ci porta ad avere un
risultato finale numerico.

Altri operatori sono:
Ø Centroide
Ø Bisettrice
Ø Media dei massimi (mom)
Ø Massimo inferiore (lom)
Ø Massimo superiore (som)
Ø Centro dell’area più alta
Ø …
Questi operatori danno origine valori anche molto diversi tra loro: scegliere il metodo di
defuzzyficazione fa parte della progettazione del sistema basato su regole fuzzy.

Conclusione
Quindi dall’insieme di regole che abbiamo definito, abbiamo messo in relazione gli ingressi
numerici 22 e 140 con un’uscita numerica, 13.
Abbiamo ottenuto lo stesso risultato che avremmo potuto ottenere con un modello matematico,
ma l’abbiamo espresso in termini linguistici, cioè abbiamo dato delle qualità linguistiche ai dati in
ingresso e sulla base di queste li abbiamo interpretati e abbiamo ottenuto dei valori in uscita
ancora linguistici, e sulla base di questi siamo riusciti ad arrivare ad un numero.
Questo tipo di approccio ci permette di definire, ad esempio, dei sistemi di controllo in cui a parole
si dice cosa deve fare il controllore e si ottiene effettivamente un risultato: i sensori sentono dei
numeri, quindi forniscono dei numeri al controllore, e gli attuatori ricevono dei numeri dal
controllore.

Progettazione di sistemi a regole fuzzy
- Definizione del problema
- Parametrizzazione del modello: definire i concetti che vengono rappresentati con le regole
e gli insiemi fuzzy
- Definizione delle regole
- Realizzazione del sistema
- Verifica

Definizione del problema
Analoga a quella fatta nella progettazione dei sistemi classica:
- Selezione delle variabili di ingresso: in molti casi determinate da quello che riusciamo a
portare all’interno del sistema
- Selezione delle variabili di uscita: cosa vogliamo ottenere
- Selezione degli obiettivi del modello: cosa deve fare il modello

Per quanto riguarda la parametrizzazione del sistema dovremo:

- Definire le funzioni di appartenenza:
Ø Quante sono? Il numero spesso è legato all’applicazione e alla differenza che ci
interessa poter catturare. In generale non sono mai molte: studi psicologici hanno
definito come 7 il numero massimo di valori tra cui le persone sono in grado di
discriminare
Ø Garantire la copertura di tutto l’insieme dei valori di ingresso: è importante che per
ogni valore di ingresso ci siano delle funzioni di appartenenza definite
Ø Considerazioni agli estremi (valori a 1): agli estremi avremo dei valori che hanno
grado di appartenenza 1, perché dato che agli estremi non ci sono sovrapposizioni
tra diverse funzioni di appartenenza possiamo garantire che avremo un valore
massimo in quel punto
Ø Densità di valori: avremo più valori linguistici (quindi più fuzzy set) laddove ci
interessa discriminare meglio tra valori delle variabili numeriche, quindi avremo
maggiore densità dove necessario
Ø Incroci: le funzioni di appartenenza si incrociano, quindi sono sovrapposte le
interpretazioni che diamo dei vari calori numerici. C’è un risultato teorico che
dimostra che si ottiene una maggiore robustezza quando per ogni valore delle
variabili di ingresso la somma delle possibili interpretazioni è 1. Quindi se abbiamo
solo due funzioni di appartenenza che si incrociano, queste si devono incrociare a
un livello 0.5 per garantire questa robustezza.

- Definire i meccanismi inferenziali (t-norme, …): selezionare le t-norme opportune. Le
proprietà delle diverse t-norme danno luogo a una quantità di diversi operatori ognuno dei
quali ha significati particolari:
Ø Per definire un AND tra gli antecedenti o la composizione dell’antecedente col
peso della regola possiamo usare:
§ min: il grado di matching peggiore è il più rilevante
§ prodotto: tutti i gradi di matching sono ugualmente rilevanti e partecipano
al valore finale
§ o una qualsiasi delle norme comprese tra queste due
Ø Per OR e aggregazione dei gradi dello stesso conseguente (t-conorme):
§ max: il grado di matching migliore è il più rilevante
§ somma pesata: tutti i gradi di matching sono ugualmente rilevanti

N.B: se si usa il minimo come norma bisogna usare il massimo per la conorma,
quindi se si usa min per gli AND bisogna usare max per gli OR e viceversa.

- Definire meccanismi di fuzzyficazione e defuzzyficazione

La fase di test ha come scopo verificare gli obiettivi del progetto. A seconda degli obiettivi che ci si
è posti occorre verificare che il risultato delle nostre regole sia effettivamente quello che vogliamo
ottenere.
Come si fa?
- Simulazione dinamica: se abbiamo a disposizione il modello con cui vogliamo che il nostro
sistema fuzzy interagisca.
Es. Se abbiamo il modello di un sistema da controllare se il nostro sistema fuzzy è un
controllore, possiamo agganciare il controllore fuzzy alla simulazione del modello e quindi
vedere come si comporta il modello simulato.
Questo meccanismo ha i limiti della simulazione, in quanto da un lato occorre avere il
modello, dall’altro lato occorre che il modello catturi effettivamente tutte le caratteristiche
interessanti per, in questo caso, l’operazione di controllo.
- Simulazione statica: verifica delle coppie ingressi/uscite e analisi delle superfici di
controllo. La verifica della superficie di controllo serve per verificare che la superficie stessa
non presenti delle forme indesiderate o inattese. Di solito quando si definisce un sistema a
regole fuzzy si definiscono delle regole più o meno indipendentemente una dall’altra e
quello che ci si può ritrovare alla fine è una superficie di controllo con strani avvallamenti o
picchi.
- Test sul processo: si attacca il controllore direttamente al processo e si verifica che svolga
effettivamente il suo compito. Questo va fatto in condizioni di sicurezza perché non
vogliamo che eventuali errori di progettazione di ripercuotano in un danno del processo.

Strumenti di sviluppo disponibili
Esistono molti strumenti di sviluppo per realizzare sistemi fuzzy. La maggior parte sono strumenti
per il controllo fuzzy, quindi per la realizzazione di regole fuzzy allo scopo di controllare dei
processi. Molti di questi sono estensioni a pacchetti più generali di calcolo ingegneristico (es.
Matlab), altri sono dedicati, quindi realizzano soltanto sistemi fuzzy.

Caratteristiche comuni:
- Definizione guidata (grafica) di funzioni di appartenenza e regole
- Visualizzazione delle superfici di controllo
- Possibilità di avere diverse forme di funzioni di appartenenza, operatori e metodi di
defuzzyficazione
- Supporto per il testing in tempo reale
- Supporto per apprendimento (sistemi che permettono di apprendere automaticamente le
regole piuttosto che le funzioni di appartenenza o comunque di farne un adattamento alla
situazione che ci troviamo ad affrontare)
- Producono codice per diversi processori (es. C o codice macchina)

Esistono inoltre qualche strumento per la realizzazione di sistemi a regole fuzzy generici. Mentre
un sistema di controllo fuzzy ha soltanto regole che regolano ingressi con uscite (processo
inferenziale a un colpo solo: dati certi ingressi otteniamo un’uscita), in generale potremmo voler
realizzare dei sistemi fuzzy che hanno delle vere e proprie catene inferenziali, in cui le uscite delle
regole, i conseguenti, vengono usati come produttori di fatti che vengono usati come antecedenti
da altre regole per continuare una linea di ragionamento.
In questo caso abbiamo sistemi molto più generali che sono focalizzati non al controllo ma alla
realizzazione di sistemi a regole più complessi. In qualche caso sono estensioni di sistemi per l’AI,
in qualche altro caso sono librerie che implementato delle funzionalità che possono essere
integrate in un qualsiasi sistema software.
(FOOL, Fuzzy Clips, FLIP, FCL, …)