Capitolo III Logica Fuzzy Sommario La logica fuzzy o logica sfumata o logica sfocata è una logica in cui si può attribuire a ciascuna proposizione un grado di verità compreso tra 0 e 1. È una logica polivalente, e pertanto un'estensione della logica booleana. È fortemente legata alla teoria degli insiemi sfocati e, già intuita da Cartesio, Bertrand Russell, Albert Einstein, Werner Karl Heisenberg, Jan Lukasiewicz e Max Black, venne concretizzata da Lotfi Zadeh. Nel seguente capitolo verranno illustrati i concetti base della logica fuzzy e le principali differenze che si incontrano rispetto al classico utilizzo di numeri crisp. In una prima parte si descriveranno le funzioni fuzzy e le relazioni insiemistiche più utilizzate, mentre nella seconda parte si mostreranno le tecniche di defuzzificazione che poi saranno utilizzate nel caso pratico. 3.1 La storia Nei primi anni sessanta, Lotfi A. Zadeh, professore all'Università della California di Berkeley, molto noto per i suoi contributi alla teoria dei sistemi, cominciò ad avvertire che le tecniche tradizionali di analisi dei sistemi erano eccessivamente ed inutilmente accurate per molti dei problemi tipici del mondo reale. L'idea di grado d'appartenenza, il concetto divenuto poi la spina dorsale della teoria degli insiemi sfumati, fu da lui introdotta nel 1964, e ciò portò in seguito, nel 1965, alla pubblicazione di un primo articolo, ed alla nascita della logica sfumata. Il concetto di insieme sfumato (o insieme 66 Capitolo III Logica Fuzzy sfocato), e di logica sfumata, attirò le aspre critiche della comunità accademica; nonostante ciò, studiosi e scienziati di tutto il mondo, dei campi più diversi, dalla psicologia alla sociologia, dalla filosofia all'economia, dalle scienze naturali all'ingegneria, divennero seguaci di Zadeh. In Giappone la ricerca sulla logica sfumata cominciò con due piccoli gruppi universitari fondati sul finire degli anni settanta: il primo era guidato, a Tokyo, da T. Terano e H. Shibata, mentre l'altro si stabilì a Kanasai sotto la guida di K. Tanaka e Kiyoji Asai. Al pari dei ricercatori americani, questi studiosi si scontrarono, nei primi tempi, con un'atmosfera fortemente avversa alla logica fuzzy. E tuttavia, la loro tenacia e il duro lavoro si sarebbero dimostrati estremamente fruttuosi già dopo un decennio: i ricercatori giapponesi, i loro studenti e gli studenti di questi ultimi produssero molti importanti contributi sia alla teoria che alle applicazioni della logica fuzzy. Nel 1974, Seto Assilian ed Ebrahim H. Mamdani svilupparono, in Gran Bretagna, il primo sistema di controllo di un generatore di vapore, basato sulla logica fuzzy. Nel 1976, la Blue Circle Cement e il SIRA idearono la prima applicazione industriale della logica fuzzy, per il controllo di una fornace per la produzione di cemento. Il sistema divenne operativo nel 1982. Nel corso degli anni ottanta, diverse importanti applicazioni industriali della logica fuzzy furono lanciate con pieno successo in Giappone. Dopo otto anni di costante ricerca, sviluppo e sforzi di messa a punto, nel 1987 Seiji Yasunobu ed i suoi colleghi della Hitachi realizzarono un sistema automatizzato per il controllo operativo dei treni metropolitani della città di Sendai. Un'altra delle prime applicazioni di successo della logica fuzzy è un sistema per il trattamento delle acque di scarico sviluppato dalla Fuji Electric. Queste ed altre applicazioni motivarono molti ingegneri giapponesi ad approfondire un ampio spettro di applicazioni inedite: ciò ha poi condotto ad un vero boom della logica fuzzy. Una tale esplosione era peraltro il risultato di una stretta collaborazione, e del trasferimento tecnologico, tra Università ed Industria. Due progetti di ricerca 67 Capitolo III Logica Fuzzy nazionali su larga scala furono decisi da agenzie governative giapponesi nel 1987, il più noto dei quali sarebbe stato il Laboratory for International Fuzzy Engineering Research (LIFE). Alla fine di gennaio del 1990, la Matsushita Electric Industrial Co. diede il nome di "Asai-go (moglie adorata) Day Fuzzy" alla sua nuova lavatrice a controllo automatico, e lanciò una campagna pubblicitaria in grande stile per il prodotto "fuzzy". Tale campagna si è rivelata essere un successo commerciale non solo per il prodotto, ma anche per la tecnologia stessa. Il termine d'origine estera "fuzzy" fu introdotto nella lingua giapponese con un nuovo e diverso significato: intelligente. Molte altre aziende elettroniche seguirono le orme della Panasonic e lanciarono sul mercato, tra l'altro, aspirapolvere, fornelletti per la cottura del riso, frigoriferi, videocamere (per stabilizzare l'inquadratura sottoposta ai bruschi movimenti della mano) e macchine fotografiche (con un autofocus più efficace). Ciò ebbe come risultato l'esplodere di una vera mania per tutto quanto era etichettato come fuzzy: tutti i consumatori giapponesi impararono a conoscere la parola "fuzzy", che vinse il premio per il neologismo dell'anno nel 1990. I successi giapponesi stimolarono un vasto e serio interesse per questa tecnologia in Corea, in Europa e, in misura minore, negli Stati Uniti, dove pure la logica fuzzy aveva visto la luce.La logica fuzzy ha trovato parimenti applicazione in campo finanziario. Il primo sistema per le compravendite azionarie ad usare la logica sfumata è stato lo Yamaichi Fuzzy Fund. Esso viene usato in 65 aziende e tratta la maggioranza dei titoli quotati dell'indice Nikkei Dow, e consiste approssimativamente in 800 regole. Tali regole sono determinate con cadenza mensile da un gruppo di esperti e, se necessario, modificate da analisti finanziari di provata esperienza. Il sistema è stato testato per un periodo di due anni e le sue prestazioni in termini di rendimento hanno superato l'indice Nikkei Average di oltre il 20%. Durante il periodo di prova, il sistema consigliò "sell", ossia "vendere", ben 18 giorni prima del Lunedì Nero (19 ottobre 1987): nel corso 68 Capitolo III Logica Fuzzy di quel solo giorno l'indice Dow Jones Industrial Average diminuì del 23%. Il sistema è divenuto operativo nel 1988. 3.2 Numeri fuzzy I numeri fuzzy sono insiemi fuzzy definiti sull’insieme R dei numeri reali con funzione di appartenenza normale e convessa. Per definire una funzione di appartenenza convessa è necessario introdurre l’insieme α-cut, ossia dato l’insieme fuzzy A l’insieme α-cut, Aα, è l’insieme crisp per cui: con Aα = { x | A (x) ≥ α } con 0 ≤ α ≤ 1 L’insieme Aα definisce una soglia che può essere interpretata come un livello di confidenza α in una decisione o concetto rappresentati mediante un insieme fuzzy. Un insieme fuzzy (definito su Rn) si definisce convesso se tutti i suoi α-cut, 0 ≤ α ≤ 1, sono insiemi crisp convessi nel senso classico. I numeri fuzzy di norma utilizzati sono triangolari e trapezoidali. Un numero fuzzy triangolare è tipicamente denotato: A = (a1, aM, a2) e rappresentato graficamente dalla seguente membership function: Figura 3.1 – Numero fuzzy triangolare 69 Capitolo III Logica Fuzzy Ovvero analiticamente: Nella pratica spesso si ha un numero fuzzy triangolare centrale: Figura 3.2 – Numero fuzzy triangolare centrale Un numero fuzzy triangolare centrale è adatto a descrivere il concetto “vicino a” (“vicino ad aM”). Operativamente, dovendo definire un valore incerto, si può considerare a1 come il più piccolo valore possibile, a2 come il più grande valore possibile, ed aM come il valore più plausibile. Un numero fuzzy A = (a1, aM, aM) è detto numero triangolare sinistro, esso è adatto a descrivere il termine ”altissimo” o simili nell’ipotesi che aM sia un numero grande. 70 Capitolo III Logica Fuzzy Mentre un numero fuzzy A = (aM, aM, a2) è detto numero triangolare destro. In particolare, un numero triangolare destro A= (0, 0, a), può essere usato per descrivere il termine “bassissimo” o simili. Un numero fuzzy trapezoidale è tipicamente denotato come segue: A = (a1, b1, b2, a2) ed è rappresentato graficamente dalla seguente membership function: Figura 3.3 – Numero fuzzy trapezoidale Analiticamente: Se b1= b2= aM il numero trapezoidale si riduce ad un numero triangolare ed è denotato A = (a1, aM, aM, a2). Di conseguenza, un qualunque numero triangolare può essere scritto sotto forma di numero trapezoidale, cioè (a1, aM, a2) = (a1, aM, aM, a2). 71 Capitolo III Logica Fuzzy Nella pratica risulta spesso [a1, b1] = [b2, a2], per cui il numero trapezoidale è simmetrico ed è detto numero fuzzy trapezoidale centrale. Esso è adatto a rappresentare l’intervallo [b1, b2] ed i numeri reali vicini a tale intervallo. Figura 3.4 – Numero fuzzy trapezoidale centrale Analogamente ai numeri triangolari si definisce un numero trapezoidale sinistro il numero fuzzy A = (a1, b1, b2, b2), ed è adatto a rappresentare “altissimo” o simili, nell’ipotesi che b1 sia un numero grande. Mentre si definisce numero trapezoidale destro il numero fuzzy A = (b1, b1, b2, a2) ed in particolare il numero A = (0, 0, b2, a2) è adatto a rappresentare il termine “bassissimo” o simili. 3.2.1 Combinazione di numeri fuzzy e numeri crisp Il principio di estensione ci permette di estendere ai numeri fuzzy le operazioni aritmetiche standard sui numeri reali. Introduciamo, quindi, le operazioni aritmetiche sui numeri fuzzy. Addizione di numeri triangolari Assegnati due numeri triangolari A1 e A2: 72 Capitolo III Logica Fuzzy si ha che: La somma può facilmente essere estesa a n numeri triangolari. Moltiplicazione e Divisione di un numero triangolare per un numero reale Dati A = (a1, aM, a2) numero fuzzy triangolare ed r numero reale si ha: Ar = rA = (ra1, raM, ra2) La divisione di A per r è definita come moltiplicazione di A per 1/r (ovviamente deve essere r ≠0). Addizione di numeri trapezoidali Assegnati due numeri trapezoidali A1 e A2: si ha che: La somma può facilmente essere estesa a n numeri trapezoidali. Moltiplicazione e Divisione di un numero trapezoidale per un numero reale Dati A = (a1, b1, b2, a2) numero fuzzy trapezoidale ed r numero reale si ha: Ar = rA = (ra1, rb1, rb2, ra2) La divisione di A per r è definita come moltiplicazione di A per 1/r (ovviamente deve essere r ≠0). 73 Capitolo III Logica Fuzzy Somma di numeri triangolari e trapezoidali Consideriamo il numero triangolare A1 = ( a1(1), aM(1),a2(1) ) che può essere rappresentato come numero trapezoidale A1 = ( a1(1), aM(1), aM(1), a2(1) ), ed il numero trapezoidale A1 = ( a1(2), b1(2), b2(2), a2(2) ). Si ha: Media fuzzy triangolare Consideriamo n numeri triangolari A1 = ( a1(i), aM(i),a2(i) ), i=1,…,n la media fuzzy A è così definita: che è il numero triangolare: Media fuzzy triangolare pesata Se i numeri reali rappresentano l’importanza di Ai = ( a1(i), aM(i),a2(i) ), abbiamo: 74 Capitolo III Logica Fuzzy Media fuzzy trapezoidale Analogamente ai numeri triangolari se consideriamo n numeri trapezoidali Ai = ( a1(i), b1(i), b2(i), a2(i) ) i=1,…,n la media fuzzy è ancora un numero trapezoidale così definito: Media fuzzy trapezoidale pesata Analogamente ai numeri triangolari possiamo definire le media fuzzy pesata nel modo seguente: 3.3 Insiemi fuzzy Un insieme fuzzy è caratterizzato dal fatto che il grado di appartenenza di ogni elemento all’insieme può essere un qualunque numero reale tra 0 e 1. Un insieme fuzzy A è definito quindi da una funzione di appartenenza µA : X→[0,1], essendo X l’universo di definizione. L’universo X è un insieme convenzionale (o crisp). Spesso si usa il nome dell’insieme, che tipicamente è un’etichetta linguistica, per indicare la funzione di appartenenza e si scrive semplicemente A:X→[0,1]. I seguenti tre insiemi fuzzy sono definiti sullo stesso universo: 75 Capitolo III Logica Fuzzy Figura 3.5 – Esempio di insieme fuzzy supporto: {x ∈X|µA (x) > 0} (insieme crisp) core: {x ∈X|µA (x)=1} (insieme crisp) altezza: h(A) = sup µA(x) x ∈X A è normale se h(A)=1 A è subnormale se h(A)<1 Fuzzy singleton ( o fuzzy point) : insieme fuzzy il cui supporto è un singolo punto. Alpha cut 76 Capitolo III Logica Fuzzy Consideriamo un insieme fuzzy A. Sia 0≤α ≤1. Un alpha-cut (o lambda-cut) è un insieme crisp Aα ={x|µA (x)≥α}. ∀λ≤α , 0≤λ,α ≤1, si ha A α ⊆Aλ , dove A0 =X. Figura 3.6 – Esempio di insieme alpha-cut Un insieme fuzzy (definito su Rn ) si dice convesso se tutti i suoi α− cut , α ∈ (0,1], sono insiemi convessi nel senso classico. Figura 3.7 – A, insieme fuzzy subnormale convesso; B, insieme fuzzy normale non convesso Come si denota un insieme fuzzy 77 Capitolo III Logica Fuzzy cioè x1 appartiene ad A con grado di appartenenza µA(x1), x2 con grado di appartenenza µA(x2) , etc. (Osserviamo che la barra orizzontale non indica una frazione, ma è semplicemente un delimitatore). Unione di insiemi fuzzy µA ∪ B (x)=max(µA (x),µB (x)) Figura 3.8 – Unione di insiemi fuzzy 78 Capitolo III Logica Fuzzy Intersezione di insiemi fuzzy µA∩B (x)=max(µA (x),µB (x)) Figura 3.9 – Intersezione di insiemi fuzzy Complemento di un insieme fuzzy Figura 3.10 – Intersezione di insiemi fuzzy Inclusione di insiemi fuzzy A ⊆ B ⇔µA (x)≤µB(x) Figura 3.11 – Inclusione di insiemi fuzzy 79 Capitolo III Logica Fuzzy 3.3.1 Relazioni fuzzy È un insieme fuzzy definito sul prodotto cartesiano R:X×Y→[0,1] Figura 3.12 – Esempi di relazioni fuzzy R∪R ≠E, con E relazione completa R∩R ≠O, con O relazione nulla Prodotto cartesiano di insiemi fuzzy Dati A:X→[0,1], B:Y→[0,1], il prodotto cartesiano A×B è una relazione fuzzy: A×B:X×Y→[0,1] µX×Y (x, y) =min (A(x),B(y)) Figura 3.13 – Prodotto cartesiano di insiemi fuzzy Rappresentazione di relazioni fuzzy 80 Capitolo III Logica Fuzzy Sia R la relazione che rappresenta il concetto “molto lontano” tra gli insiemi X={NewYork,Parigi} e Y={Pechino,NewYork,Roma}. R può essere rappresentata come segue: - matrice - R(X,Y) =1 (NewYork,Pechino) + 0 (NewYork,NewYork) +... Composizione di relazioni fuzzy R relazione fuzzy su X×Y, S relazione fuzzy su Y×Z, e W=R○S relazione fuzzy su X×Z: - composizione max-min fuzzy (o composizione standard): Analogamente si può definire la composizione max-product fuzzy. In generale, sia nel caso di composizione crisp sia nel caso di composizione fuzzy, risulta R○S≠S○R. Estensione di una funzione crisp Una funzione crisp f :X→Y può essere estesa in f :P(X)→P(Y) come segue: ∀A∈P(X): f (A) ={y| y =f (x), x∈A}. P(X) è l’insieme potenza (cioè l’insieme dei sottoinsiemi) di X. 81 Capitolo III Logica Fuzzy Figura 3.14 – Estensione di una funzione crisp La funzione inversa f −1 può essere estesa in f −1:P(Y)→P(X) come segue: -1 ∀B∈P(Y):f (B)={x| f (x) ∈B} 3.3.2 Variabili linguistiche Una variabile linguistica è una variabile i cui valori sono termini linguistici. Figura 3.15 - Esempio di variabile linguistica 82 Capitolo III Logica Fuzzy Una variabile linguistica è definita in termini di una variabile base (variabile in senso classico), i cui valori sono numeri reali all’interno di un dato intervallo. I termini linguistici, che rappresentano valori approssimati della variabile base, sono interpretati come numeri fuzzy. Una variabile linguistica è caratterizzata da una quintupla (v, T, X, g, m) dove: v = nome della variabile T = insieme dei termini linguistici di v; X = universo di definizione della variabile base; g = regola sintattica (una grammatica) per generare i termini linguistici (ad esempio, “molto alta”, “non molto bassa”); m = regola semantica che assegna a ciascun termine linguistico t∈T il suo significato, m(t), che è un insieme fuzzy su X (universo di definizione della variabile base), cioè m:T→F(X) . Una variabile linguistica è definita attraverso i suoi termini primari (rappresentati nella figura precedente). I termini primari sono etichette di insiemi fuzzy: ‘bassissima’, ‘bassa’, ‘media’, ‘alta’ e ‘altissima’. Modificatori linguistici I termini atomici (quali ‘medio’, ‘alto’, ‘buono’, ‘bello’) del linguaggio naturale possono essere modificati con aggettivi o avverbi come ‘molto’, ‘quasi’, ‘più o meno’, …. Interpretando i termini atomici come insiemi fuzzy, l’effetto di un modificatore linguistico è quello di modificare la funzione di appartenenza di un termine atomico. Sia α un termine atomico 83 Capitolo III Logica Fuzzy Si ha, ad esempio, per "molto"α = α 2 : per "leggermente"α= α1/2: …. Le espressioni come la prima sono dette concentrazioni, perché riducono il grado di appartenenza di tutti gli elementi che sono “parzialmente” nell’insieme (riduzione dell’incertezza). Più basso è il valore di appartenenza di un elemento ad un insieme fuzzy, più è ridotta la sua appartenenza mediante una concentrazione. Le espressioni come la seconda sono dette dilatazioni, perché incrementano l’appartenenza di elementi che sono “parzialmente” nell’insieme (aumento dell’incertezza). Figura 3.16 – Concentrazione di un insieme fuzzy Figura 3.17 – Dilatazione di un insieme fuzzy 84 Capitolo III Logica Fuzzy Intensificazione Un’altra operazione sugli insiemi fuzzy linguistici è l’intensificazione. Questa operazione incrementa il grado di appartenenza degli elementi il cui valore di appartenenza originale è > 0.5 e diminuisce il grado di appartenenza degli elementi il cui valore di appartenenza originale è < 0.5. L’intensificazione può essere espressa in vari modi, uno dei quali, proposto da Zadeh, è L’intensificazione aumenta il contrasto tra gli elementi dell’insieme con µ >0.5 e quelli con µ <0.5. Figura 3.18 – Intensificazione di un insieme fuzzy 85 Capitolo III Logica Fuzzy 3.4 Defuzzificazione Sia C l’insieme fuzzy di uscita. In generale, C risulterà dall’unione di varie funzioni triangolari, trapezoidali, etc. Magari non tutte queste funzioni saranno normali. Occorre “defuzzificare” C per produrre un numero crisp. 3.4.1 Metodi di defuzzificazione - Metodo della massima appartenenza (o metodo dell’altezza): è usato solo per funzioni di uscita con un picco: µ C(z*)≥ µ C(z) ∀z∈Z Figura 3.19 - Metodo della massima appartenenza - Metodo del centroide (o centro di gravità): è il più usato: dove ∫ denota integrazione algebrica. 86 Capitolo III Logica Fuzzy Figura 3.20 – Metodo del centroide - Metodo della media pesata: è usato solo per funzioni di appartenenza simmetriche. dove Σ denota somma algebrica. Ogni funzione membro nell’uscita è pesata con il suo valore di appartenenza massimo. Esempio: Figura 3.21 – Metodo della media pesata dove a e b sono le medie delle rispettive funzioni. 87 Capitolo III Logica Fuzzy - Metodo della media dei massimi: è simile al primo metodo eccetto il fatto che il valore massimo può essere assunto in più di un punto. Si ha dove a e b sono definiti come segue: Figura 3.22 – Metodo della media dei massimi a = inf {z|µ C(z) h(C)} b = sup{z| µ C(z) h(C)} con h = altezza di C. 3.4.2 Scelta del metodo di defuzzificazione La scelta del metodo dipende dal contesto e dal problema. Possono comunque essere tenuti presenti alcuni criteri per misurare la bontà di un metodo, quali: 1) continuità: un piccolo cambiamento nell’input di un processo fuzzy non dovrebbe produrre un grande cambiamento nell’output. 88 Capitolo III Logica Fuzzy 2) Non ambiguità: un metodo di defuzzificazione dovrebbe produrre un solo valore per z*. 3) Plausibilità: per essere plausibile, z* dovrebbe trovarsi approssimativamente nel mezzo del supporto di C ed avere un alto grado di appartenenza a C. 4) Semplicità computazionale: per esempio, il metodo dell’altezza e il metodo della media dei massimi sono più semplici del metodo del centroide. 89