La logica booleana ( George Boole 1815 - 1864 ) è la formalizzazione matematica della logica Aristotelica ed è divenuta la base della programmazione dei sistemi embedded e di tutti i computer in generale . Il presupposto fondamentale e che esistano solo due livelli di verità: 1 e 0. Un computer, dal punto di vista concettuale, può essere progettato su qualsiasi rappresentazione di dato. Storicamente però i vantaggi dati dalla memorizzazione e riproduzione delle memorie bistabili hanno fatto in modo che i computer con questa tecnologia potessero sfruttare velocemente le congiunzioni logiche dell'algebra booleana. Questa base fu il primo immobile che avrebbe permesso quell'evoluzione disorganica della tecnologia digitale che stiamo vivendo. Ma la logica come i computer ha i suoi bachi e questa sarà una piccola storia di chi un giorno ha tentato di risolverli...
3-09-1995 Milano Centro direzionale Colleoni
Meeting giornaliero Microchip.
I meeting della Microchip erano diciamo quelli un po’ più blasonati rispetto alle case concorrenti. Il successo planetario del PIC nei sistemi embedded era diventata una certezza e molti volevano partecipare per acquisire segreti che non esistevano. Raggiunsi il palazzone da lontano piuttosto anonimo, poi la hall e il suo via vai senza fretta di Field Application, Vertical Segment Manager e altri variegati portaborse che parodiavano amministratori delegati di ditte fantasma.
Arrivai con mezzora di anticipo e la segretaria discretoccia mi riempì con le solite brochures e con i soliti gadget previsti per la presentazione. Chiedo per un bagno, il viaggio è stato un po' lungo e la tangenziale come solito mi ha messo alla prova. Nel frattempo arrivò altra gente che si dispose disseminandosi in gruppi omogenei per tutta la sala. Mi sedetti fra le utlime file e un po' alla volta intorno a me si formò un gruppo altrettanto omogeneo di single. Alzai il leggio della sedia e aprii il sacchetto, tirando fuori il contenuto, intanto arrivò un "Field non so che" e iniziò la presentazione dei prodotti. Intanto guardavo il contenuto ed erano un po' di ciclostilati sulle nuove famiglie e poi,anonimo, c'era un foglio di presenatazione per un nuovo tools di sviluppo. Il fuzzyTech.
Guardai un po' incuriosito e sfogliando fra le pagine, notai subito i riferimenti di un linguaggio naturale che poteva essere utilizzato nei nostri sistemi embedded. Tutta la giornata la passai fra variabili fuzzificate, funzioni di appartenenza, grafici, distraendomi così spesso dalla presentazione fastidiosamente noiosa. Il mese dopo ne parlai, in laboratorio con il mio capo. Se ne discusse così un po', a grandi linee, ma alla fine ci convincemmo e titubanti iniziammo lo sviluppo di un prototipo.
Nell'azienda dove lavoravo, producevamo elettronica nel settore consumer e automotive; i clienti erano la Piaggio, San Giorgio, Ferroli, York International, Olimpia, Ariete, De Longhi e così via. Avevamo come clienti un piccolo spaccato della traballante industria del tempo alle prese con il difficile mercato globale e con i cinesi già alle porte che da li a poco avrebbero rimescolato tutte le carte. Tutte le volte che gli amministratori si incontravano si abbracciavano e si dicevano "anche quest'anno ce l'abbiamo fatta " ( we did it! ). Ora i problemi erano così tanti che venivano prese in considerazione tutte le soluzioni alternative e quella Fuzzy era una di quelle.
I precursori del Fuzzy
La storia moderna della logica fuzzy nasce quando si mise in discussione i fondamenti della logica convenzionale. Il primo esempio storico è dato dal matematico Russel quando nel 1901 in piena belle epoque enunciò il paradosso del barbiere. Paradosso che per i puristi in realtà è una antinomia ma che, comunque la si chiami, mise in crisi le basi scientifiche del tempo o meglio dire mise in crisi il significato del vero scientifico.
« In un villaggio vi è un solo barbiere, un uomo ben sbarbato, che rade tutti e soli gli uomini del villaggio che non si radono da soli. Il barbiere rade se stesso[1]? »
Una delle più celebri antinomie è presente anche nella bibbia e viene definita con il paradosso del mentitore. Nella lettera a Tito 1:12-13 l’apostolo Paolo nel I secolo DC cade in questo paradosso quando appunto scrivendo al discepolo Tito disse:
“Uno di loro, proprio un loro profeta, ha detto: «I Cretesi sono sempre bugiardi, male bestie, ventri pigri». Questa testimonianza è vera, per questo motivo riprendili severamente, affinché siano sani nella fede”<br />
Se il Cretese dice che i Cretesi sono sempre bugiardi dice la verità o dice una bugia ? Questo paradosso però non è "originale" del biblico santo, ma ha origini ancora più lontane e proviene dal filosofo Epimenide del VII secolo AC.
Ma ritorniamo al problema di Russel. Con il suo paradosso, abbiamo detto, mise in crisi tutto il sistema logico e matematico del tempo. C’era chi cercò di arginare la pericolosa falla che si era creata e che stava per portare via tutte le basi della logica su cui si posava il progresso scientifico. I grandi filosofi e matematici del tempo come Whithead, Luitzen Brouwer, David Hilbert ed infine Russel stesso, cercarono teorie alternative che riuscissero a giustificare in modo convincente il paradosso come soluzione dei paradigmi della logica.
Non ci fu nulla da fare, alla fine tutti gli sforzi naufragarono con Kurt Gödel e il suo teorema dell’incompletezza del 1931 dove dimostrò che all’interno di una teoria matematica esisteva almeno un assioma che non era in grado di essere dimostrato. Con il crollo del vero scientifico venne alla ribalta il vero trascendente e Godel stesso si distinse per la famosa prova ontologica sull’esistenza di Dio che non pubblicò mai e wikipedia sostiene che non l’ha fatto per non essere frainteso ( mi sono chiesto da chi: da Dio, dall’umanità, dai colleghi atei ? ).
In ogni teoria matematica T sufficientemente espressiva da contenere l'aritmetica, esiste una formula tale che, se T è coerente, allora né la sua verità né la sua negazione sono dimostrabili in T.
La logica convenzionale non permette l’esistenza del terzo escluso ( Tertium non datur a chi piacciono i latinismi ) e cioè , in parole povere, i presupposti di tutti gli assiomi enunciati o sono veri o sono falsi e sono impossibili transizioni intermedie. Ma secondo Godel questo non è dimostrabile e così si dovevano cercare alternative che andassero oltre la logica del complemento fra 2 stati.
A ben vedere però si era già parlato di implementazioni di questo tipo chiamate logiche polivalenti che stavano piano piano prendendo piede. Questi nuovi sviluppi erano leggermente antecedenti rispetto a Godel ed erano stati sviluppati da Jan Łukasiewicz nel 1920. Al concetto di vero e falso il filosofo e matematico polacco aggiunse il poetico terzo escluso chiamato “problematico”. Comunque sia, Jan ha spianato la via ad un matematico sistemista per giunta ingegnere di origini iraniane chiamato Lotfi Zadeh, che ha trovato nelle logiche polivalenti un valido supporto su cui concretizzare la sua rivoluzionaria idea chiamata "logica Fuzzy".
Il nome Fuzzy si è indissolubilmente legato al suo autore. Pare che il suo percorso sia anche dovuto ai suoi studi pregressi relativi alla teoria dei sistemi. Questa è anch’essa una cosmogonica ipotesi che abbraccia tutto lo scibile umano. Un sistema nella sua definizione potrebbe essere un gruppo di persone che lavorano in una azienda, oppure un gruppo di atomi di giunzione di un mosfet o anche le persone di un sistema politico che governano in un paese democratico. La teoria dei sistemi è ad esempio la base analitica con cui si risolvono tutti i loop di controllo con PID.
Da questa teoria Zadeh ha cercato di modelizzare il concetto di “grado di appartenenza”. Fino a quel momento tutto il mondo occidentale aveva considerato i sistemi come insiemi di elementi dicotomici. Tutte le parti erano progettate in modo tale da considerarle come macchine a stati sequenziali che facevano corrispondere a noti sistemi di segnali in ingresso altrettanto noti sistemi di segnali in uscite. La relazione di causa effetto era evidente ma non bastava più.
Con il grado di appartenenza si eliminò l'ideale gradino di passaggio fra lo stato di vero e lo stato di falso per implementare una funzione che tipicamente è lineare ma potrebbe essere benissimo una curva di qualsiasi tipo in grado di unire i due stati.
Per spiegare meglio questo concetto prendo la definizione di logica Fuzzy dalla Treccani che non è proprio il massimo però ci accontentiamo...
La logica fuzzy ha l’obiettivo di rappresentare il più fedelmente possibile, su sistemi a logica binaria, il modo di ragionare tipico della mente umana. Il ragionamento umano ammette, infatti, la possibilità di passare da un concetto a un altro gradualmente, mentre ciò non è possibile nella logica booleana, in cui la definizione stessa di insieme ordinario (ordinary set) comporta che l’appartenenza di un elemento a un insieme corrisponda a un concetto binario, potendo assumere i due soli valori {1,0}.
Un piccolo accenno di teoria
Nel 1965 Zadeh sviluppò le basi della teoria che pubblicò su «Information and Control» con il titolo Fuzzy Sets.
La logica fuzzy è una estensione della logica booleana; ora prendiamo la definizione ufficiale di Zadeh
Let X be a space of points, with a generic element of X denoted by x. Thus X = {x}. A fuzzy set A in X is characterized by a membership function fA(x)which associates with each point in X a real number in the interval [0,1], with the values of fA(x) at x representing the "grade of membership" of xin A. Thus, the nearer the value of fA(x) to unity, the higher the grade of membership of x in A.
Si definisca un insieme fuzzy A in x a cui associare il grado di appartenenza. Dove X viene definito all'interno dell'intervallo reale U=[0.0,1.0]. In senso stretto un insieme Fuzzy è composto da ordinate coppie di valori
se μ(x)) si avvicina a 1.0, il "grado di appartenenza" di x in A aumenta. Come abbiamo già detto, questa funzione in genere è lineare, ma volendo complicarci la vita possiamo utilizzare anche curve alternative.
Nel fuzzy vengono implementate le variabili linguistiche che sono un po' la chiave della logica. Queste variabili linguistiche sono a loro volta associate a delle variabili fuzzy che infine sono associate a delle variabili di base. Le variabili linguistiche sono quelle che descrivono le sensazioni Oggettive/Soggettive umane. Caldo, Freddo, Vecchio, Giovane, Molto alto, Abbastanza basso... e così via.
Le operazioni fuzzy richiamano quelle della logica booleana, ma l'implementazione è diversa. Definiamo A e B come due insiemi Fuzzy.
L'operando OR o di unione
Questo operando in logica booleana è equivalente alla somma degli operandi
Operando AND o di intersezione
Operando NOT
μA(x) = 1 − μA(x)
L'alternativa
La logica convenzionale non è in grado di giustificare un evento che sia vero e falso nello stesso momento, però è in grado di giustificarlo quando, questo evento, sia vero o falso in momenti diversi. Questa miracolosa scienza viene chiamata teoria della probabilità. Gli eventi bivalenti, vengono messi all'interno di uno spazio campionario e prendono un valore che è molto simile al grado di appartenenza di una variabile fuzzy, idealizzato da Zadeh. Ma nella definizione di queste operazioni booleane si evidenziano le differenze più importanti.
Uno degli assiomi nella teoria della probabilità dice che se ho un insieme di due eventi incompatibili, la probabilità che accada un evento dell'insieme è pari alla somma delle proprietà degli eventi.
Nella logica fuzzy, come abbiamo visto poc'anzi, se ho un insieme di due variabili fuzzy, il grado di appartenenza dell'insieme fuzzy è pari al massimo grado delle funzioni di appartenenza delle variabili.
Un'altra importante differenza fra la logica fuzzy e la probabilità è che la probabilità fa riferimento a eventi che devono accadere mentre la logica fuzzy a quelli che stanno accadendo.
Parlando dei limiti del pensiero umano faccio un piccolo excursus storico. Nell'antico Israele ( X secolo AC ) c'era la consapevolezza che la sola logica umana non sarebbe stata in grado di arrivare alla verità in tutti gli affari umani. Queste difficoltà divennero evidenti specialmente nei casi di giudizio. Alcune cause che venivano portate a giudizio dal giudice e sommo sacerdote non avevano soluzioni possibili. Partendo dall'assunto che una non soluzione è peggio di una soluzione sbagliata, per divina provvidenza inserirono nella legislazione un metodo che gli avrebbe tirato di impiccio nei casi più difficili. Questo metodo era chiamato degli Urim e i Tummim.
Non si sa con precisione cosa fossero, si sa che erano celate all'interno dell'Efod, un prezioso pettorale che faceva parte del cerimoniale nel tempio, indossato dal sommo sacerdote e utilizzati quando era impossibile riuscire a dare un giudizio equo. Gli Urim e Tummim erano probabilmente pietre colorate, solo da un lato, che venivano lanciate lasciando con quel gesto il giudizio a Yahweh ( si noti quale importanza aveva assunto la probabilità del lancio che avrebbe dato la soluzione dell'evento contestato ).
Un po' più difficoltosa era invece la "scelta a Dio" effettuata ad esempio dai Longobardi. Questi infatti nel caso in cui ci fosse l'impossibilità di dimostrare la colpa, il presunto reo veniva assolto con l'ordalia. Il poveretto, che magari era lui a non poter dimostrare la sua innocenza,veniva costretto a prendere con le mani nude una spada incandescente o un altro ferro rovente lasciando a Dio l'incombenza di proteggerlo dal dolore e dall'ingiustizia.
Il principio fuzzy
Riporto il testo preso da Web di Antonella Giulia Pizzaleo che ha scritto nel 2004 un libro dedicato a questa teconolgia, intitolato banalmente “Fuzzy Logic”.
“Prendiamo in mano una mela. È una mela? Sì. L'oggetto nelle nostre mani appartiene agli agglomerati spazio-temporali che chiamiamo l'insieme delle mele, di tutte le mele di ogni tempo e luogo. Ora stacchiamone un boccone, mastichiamolo e inghiottiamolo. Lasciamo che il nostro apparato digerente separi le molecole della mela.''' L'oggetto''' che abbiamo in mano è ancora una mela? O no? Stacchiamone un altro boccone. L'oggetto è ancora una mela? Diamo ancora un altro morso, e così via fino a finirla. La mela è mutata da una cosa in una non-cosa, in nulla. Ma dove ha oltrepassato la linea di demarcazione fra mela e non-mela? Con questa metaforica descrizione Bart Kosko introduce nel suo libro la logica fuzzy. Gli oggetti che ci circondano, ma anche i nostri corpi e gli eventi che viviamo, mutano in maniera fluida e disinvolta, impedendoci di caratterizzarli in modo rigido, dicotomico.
Antonella fa riferimento esplicito alla citazione di Bart Kosko che è uno dei più celebri discepoli di Zadeh probabilemnte citando il suo libro "Il Fuzzy pensiero". L’argomento è relativo al concetto di mela e non mela che tutti citano pedissequamente spesso senza nominare l'autore. Comunque sia ,tutte le volte che mi presentano questo esempio, se faccio riferimento al linguaggio naturale utilizzato, mi si pongono molte perplessità, tanto da chiedermi se ci fossero delle differenze indotte, magari dalla traduzione in Inglese, che potevano variare il senso dell’insieme mela e del suo significato semiologico.
Dopo averne staccato un boccone abbiamo ancora una mela ? Io direi di no. Diciamo che sopra un tavolo ho accostate una mela intera e 3 mele morsicate. Se chiedo a voi di portarmi una mela che tipo di scelta farete ? Per di più è evidente che la demarcazione fra mela e non mela non è data solo dalla quantità mancante di mela ma anche dalla qualità di mela che voglio ottenere. Se sopra il tavolo metto accostate una mela integra e sana e 3 mele non morsicate ma palesemente ammaccate, marcite o lesionate quale scelta farete ? Nella definizione di una mela c’è quindi qualcosa di più di mela completa. Il senso di melinità che ho è che voi inferite non mi sembra così fuzzy come l’esempio vuol fare intendere.
Quello che si crede
Riprendo la citazione dal Treccani
...nella logica booleana, in cui la definizione stessa di insieme ordinario (ordinary set), comporta che l’appartenenza di un elemento a un insieme corrisponda a un concetto binario, potendo assumere i due soli valori {1,0}.
Questo è il classico esempio dove la logica convenzionale o del terzo escluso sembrano inadeguati, infatti il limite della logica booleana è quello di non poter descrivere, valori intermedi agli stati. Ma anche qui ho delle perplessità. Il concetto di vero e falso è un presupposto della logica e del pensiero universale ( e non solo occidentale )e il problema di includere i passaggi intermedi fra due stati in antitesi c'è sempre stato.
Fra uomo e donna c'è un universo di gay, così come fra il bene e il male c'è un mare di stupidità od anche fra il bianco e il nero tanti livelli di grigio ( o forse meglio un arcobaleno di colori.. ) Il concetto di mela con racchiuse tutte le caratteristiche semiologhe del termine è un concetto primordiale, basti pensare ad Adamo ed Eva e il morso fatale, o anche ad esempio, il quantomeno maledetto morso di Biancaneve sulla mela donata dalla strega cattiva. La mela morsicata divenne invece l'ispirazione vincente di Steve Jobs quando creò il logo della Apple includendo su di esso tutti i significati subliminali che il logo richiama e che in parte abbiamo citato.
Prendo ancora una citazione di Antonella ripresa sempre da una sintesi su web del suo libro.
“A proposito delle applicazioni fuzzy Cammarata ha scritto: Con l'inserimento della logica fuzzy nei normali prodotti industriali si possono ottenere, a costi relativamentebassi, molti vantaggi, come un loro maggiore quoziente d'intelligenza, uno sviluppo più rapido dei prodotti stessi (con minimo time to market), una maggiore affidabilità di funzionamento, una minore necessità di manutenzione, eventuali capacità autodiagnostiche, minore inquinamento e minor consumo di energia.”
Silvio Cammarata è un po’ il guru italiano della tecnologia Fuzzy e delle applicazioni di reti neurali. Ora la citazione di una citazione è notoriamente una cosa indelicata perché si decontestualizza ciò che è già decontestualizzato, ma la specificità dell’argomento mi permette di prendere in considerazione un aspetto. Infatti in questo caso siamo molto più vicini ad un partito preso che non a un rigoroso assioma scientifico ed è comico notare come essa stessa abbia l’indiscutibile proprietà di essere molto fumosa. “Costi relativamente bassi”, “molti vantaggi” “più rapido” sembra davvero la pubblicità di un’automobile. Senza considerare poi uno spiccato senso esoterico dei sistemi embedded che grazie al Fuzzy riescono ad aumentarne il “quoziente di intelligenza”. Associare il significato di intelligenza ad un elettrodomestico è un tentativo di illudere il consumatore a credere che il Fuzzy sia in grado di dare vita e coscienza agli oggetti cosi come faceva l'equivalenete apprendista stregone di disneyana memoria e che diventò il vero sogno di tutte le massaie. Il QIM esiste davvero, ma le applicazioni sono di intelligenza artificiale vera e non speculative selvagge operazioni di marketing. Sono convinto che se dovessi applicare il QIM ai miei sistemi embedded questo bene che vada potrebbe raggiungere un punteggio di qualche punto superiore ad un sasso, forse col fuzzy diverebbe come quello di una patata ma non molto di più.
In un altro sito web di tipo ingegneristico un blogger, dopo aver spiegato sommariamente alcuni esempi di logica fuzzy, si è posto la domanda chiave “ma a cosa serve ?” e così si è dato la risposta:
“A qualcosa servono, visto che se ne parla tanto, ed e' nato un mercato di sistemi fuzzy.”
mi astengo da ulteriori commenti perchè mi sembra abbondantemente autoesplicante.
Prendiamo ancora Allen Bonde dove nelle sue pagine web scrive:
Fuzzy rule-based systems apply these methods to solve many types of "real-world" problems, especially where a system is difficult to model, is controlled by a human operator or expert, or where ambiguity or vagueness is common.
Per i non anglofoni la citazione in sintesi dice che con Regole Fuzzy possono risolvere molti tipi di problemi del mondo reale specialmente in sistemi difficili da modelizzare. Tralasciamo il fatto che ovviamente tutti i sistemi embedded risolvono problemi del mondo reale e per quello trascendente abbiamo ancora molta strada da percorrere. Ora però mi chiedo: se un sistema è difficile da modelizzare per i numerosi stati di input e magari i molteplici attuatori di uscita, come può un sistema Fuzzy renderlo più semplice ? Con l’inclusione del terzo escluso ?
Esempio Embedded
Siccome siamo in un forum ingegneristico facciamo l’esempio di una semplice applicazione embedded. Diciamo che devo fare un termostato e devo controllare la temperatura di un frigo. Secondo la logica booleana per implementare un termostato deve definire una temperatura di setpoint che il mio termostato dovrà regolare. Siccome sono un sistemista embedded vi aggiunto mezzo grado di isteresi per evitare condizioni di isterismo del relè. La logica quindi diventerà in un ipotetico linguaggio pseudo informatico:
T_SETPOINT = 8 T_ISTERESI = 0.5 se Tmis < T_SETPOINT allora Out_Compressore = ON se Tmis > T_SETPOINT + T_ISTERESI allora Out_Compressore = OFF
Se dovessi farlo in logica fuzzy sostituisco la misura di temperatura con una serie di variabili linguistiche fuzzy , in grado di descrivere la sensazione di temperatura. In caso di un sistema di questo tipo potrei dichiararle così:
Molto Caldo +FS° a 12°
Caldo 13° a 8°
Freddo 9° a 3°
Molto Freddo 4° a -FS°
Innanzi tutto come avete potuto notare la sensazione di freddo ovviamente non è la mia ma è del sistema. Le funzioni che esprimono il grado di appartenenza potrebbero essere ad esempio aree trapezoidali con lati di ampiezza un grado. Il grado di appartenenza, ad esempio della variabile Molto Caldo, potrebbe valere "0.0" a 12 gradi e "1.0" da 13 in poi. Da questo si deduce che il grado di appartenenza a 12.5 sarà pari a "0.5" perchè la funzione è di tipo lineare. Dopo aver dichiarato le variabili di ingresso bisogna dichiarare quelle di uscita che descrivano lo stato dell'attuatore.
Compressore_Attivo Out_Compressore = ON Compressore_Disattivo Out_Compressore = OFF
Costruisco quindi la regola fuzzy:
Se è Caldo e Molto Caldo allora Compressore_Attivo
Se è Freddo e Molto Freddo allora Compressore_Disattivo
Ora mi chiedo è cambiato qualcosa ? Così a vista mi sembra di no... Ahhh si dimenticavo ... è vero. Qualcosa è cambiato. Le 4 istruzioni per eseguire il controllo sono state sostituire dai 100K di codice necessario ad implementare il motore fuzzy. ( NDR: 100 k ovviamente sono una iperbole... ). L'applicazione embedded di un termostato è semplice... ma non così semplice. Tutti i sistemi embedded ( compresi quindi anche quelli sviluppati con la logica Fuzzy ) hanno bisogno di una parte oscura di codice che "noi" chiamiamo firmware proprio per distinguerla dal senso comune che viene dato alla parola software. Questa parte oscura è fatta di impostazioni del microprocessore, della mappatura della memoria, della progettazione di una base tempi interna fondamentale per i sincronismi del sistema, della modellizzazione della sonda di temperatura e delle funzioni di linearizzazione di misura e di filtro per il rumore, di funzioni per il controllo delle uscite e così via. Insomma la parte intelligente di un termostato la possiamo racchiudere in 4 righe che diventano due col Fuzzy...
Certo alcuni di voi obbietteranno considerando che per evitare proprio l'handicap dato dall'includere una libreria fuzzy , molte case hanno pensato bene di sviluppare processori con dentro l'hardware necessario per eseguire le regole fuzzy. Anche in questo caso i problemi rimangono e forse sono anche più gravi, ad esempio la linea di prodotti deve essere garantita per almeno la durata di produzione, in caso di grosse numeri difficilmente i costi possono essere comparabili rispetto ad un micro tradizionale e così via. Tutta questa fatica e questo rischio progettuale poi per ottenere cosa ? Prestazioni progettuali inferiori e rischi di gestione del progetto superiori ? Sapete già quale sarà la risposta...
Sono nel laboratorio e ho appena installato il software fuzzyTECH. Che bello lavorare con le interfacce grafiche. E poi il diagramma 3D con visualizzato lo stato di tutte le variabili rendeva evidente gli eventuali buchi della logica. Dopo aver ultimato tutte le regole il modulo creava un codice oggetto che poi dovevo linkare nel mio progetto assembly.
Le regole assomigliavano molto al livello di supporto logico che volevamo implementare. Questa era un l'interfaccia ideale per i nostri clienti che avrebbero potuto utilizzare autonomamente, implementando così le loro malsane idee su un supporto che poteva diventare un simulatore logico del sistema. A me sarebbe bastato l'onere di includere all'interno del micro questo motore fuzzy. Che dire, inizialmente un sogno, ma poi mi risvegliai.
Una delle caratteristiche del software è che non può disallinearsi dal modello di pensiero del programmatore. C’è un importante legge della programmazione di Turinghiana memoria che in sintesi sostiene questo fatto: se sei in grado di descrivere la soluzione di un problema in un qualsiasi linguaggio naturale sei in grado anche di descrivere un algoritmo in grado risolvere il problema. Da questo si deduce, in generale, che più è difficile la descrizione della soluzione è più complicato sarà il nostro algoritmo. Così mi risvegliai dal sogno quando mi accorsi che l'implementazione della logica Fuzzy non mi semplificava le cose ma anzi veicolava pericolosi elementi di instabilità nel micro cosmo embedded dove vivevo
In questo altro sito trovato su web si descrivono le proprietà taumaturgiche del Fuzzy :
“FL was conceived as a better method for sorting and handling data but has proven to be a excellent choice for many control system applications since it mimics human control logic. It can be built into anything from small, hand-held products to large computerized process control systems. It uses an imprecise but very descriptive language to deal with input data more like a human operator. It is very robust and forgiving of operator and data input and often works when first implemented with little or no tuning."
In questo caso non posso che ammettere dei limiti perchè davvero questa proprietà di ordinamento davvero mi è sfuggita. Ma comunque sono ancora evidenti declamate proprietà fumose di robustezza che permettono addirittura di perdonare errori all’operatore. Ora se riprendo l’esempio del precedente termostato, visto che l’operatore vedrà solo variabili Fuzzy come può perdonarne gli errori ? Alla fine di questo commento, si raggiunge il massimo, quando sostanzialmente si dice che un sistema Fuzzy funziona alla prima implementazione e senza ritocchi. Devo solo sperare che Mangusta non legga questi articoli altrimenti sono davvero spacciato.
Le critiche feroci
Susan Haack un acclamato dottore di filosofia dell'università di Miami seguace di Peirce e del pragmatismo universale ha scritto un libello "Do I need fuzzy logic ?" dove sostanzialmente spara ad alzo zero sulla logica creata da Zadeh. In sintesi la Haack parla della logica fuzzy come di una "metodologia molto stravagante e linguisticamente incorretta" per poi dire che al contrario di quello che predica la logica non semplifica le cose ma le complica pesantemente a partire dal come vengono espressi i concetti di vero e falso e delle variabili
Questo un elenco di citazioni dirette che non hanno bisogno di traduzioni.
"Fuzzy theory is wrong, wrong, and pernicious. What we need is more logical thinking, not less. The danger of fuzzy logic is that it will encourage the sort of imprecise thinking that has brought us so much trouble. Fuzzy logic is the cocaine of science." - Professor William Kahan UC Berkeley
"’Fuzzification’ is a kind of scientific permissiveness. It tends to result in socially appealing slogans unaccompanied by the discipline of hard scientific work and patient observation." - Professor Rudolf Kalman UFlorida
"Fuzziness is probability in disguise. I can design a controller with probability that could do the same thing that you could do with fuzzy logic." - Professor Myron Tribus, on hearing of the fuzzy-logic control of the Sendai subway system IEEE Institute, may 1988.
Quello che tipicamente si obbietta alla logica fuzzy e che pur essendo vera l'idea che esistono livelli intermedi di verità e falsità è altrettanto vero che esistono comunque gli stati di verità e falsità assoluti che sono il riferimento di tutti gli assiomi e le ipotesi che facciamo sulla realtà che ci circonda. Questa sorta di distrazione dai concetti di vero e falso alla fin fine anzichè irrobustire il pensiero lo indeboliscono rendendo più plusibili le eccezioni che la regola.
Avevo appena finito di mettere su la piccola etichetta rifrangente su un lato della lunga ventola tangenziale. Stavo monitorando la stabilità della velocità ventola con il tachimetro ad infrarossi prestato dalla S.Giorgio per le prove. Allen si avvicinò guardando il condizionatore. Ad un certo punto mi chiese "Ma davvero hai implementato il controllo fuzzy ?" "Controllo... ho messo su la logica per la gestione delle velocità ventola...". Lui con la testa fece un cenno ci consenso. Rimase un attimo fermo guardando quel condizionatore in formato Monster. Si girò per ritornare al suo posto e disse senza guardami "Sai... non sembra...". Non gli risposi e rimanendo li con la tachimetrica in mano che visualizzava sulle 4 cifre gli RPM del motore pensai alla risposta. "Non sembra ? Certo che non sembra..." Ripensai allo sviluppo alle regole implementate che furono circa una ventina e che facevano tutto quello che promettevano. La velocità ventola aumentava e diminuiva a seconda delle temperature impostate così come la matrice gli comandava di fare. Tutta l'implementazione mi aveva tenuto impegnato per circa una settimana ma ovviamente il resto del firmware era già stato implementato. I risultati furono buoni, ma alla fine il condizionatore faceva le stesse cose di prima. La settimana dopo partì un nuovo progetto importante per una nota ditta nazionale e da li disinstallai il programma e non ne facemmo più niente...
Ma... e c'è sempre un ma...
Con la Logica Fuzzy non è tutto oro quello che luccica Zadeh lo sa bene. Quello che credo e che in fondo Zadeh abbia ragione. Cioè credo che la dicotomia mutuamente esclusiva tra vero e falso sia discutibile e per questo da tenere conto, ma credo anche che così come è stata dichiarata non possa essere digitalizzata attraverso la logica Fuzzy. Questa logica dovrebbe trovare un senso nello sviluppo del pensiero umano e non pretendere che sia la base algoritmica del mondo digitale. La logica fuzzy nei sistemi embedded così come sono attualmente sviluppati è naturalmente inefficiente e quindi destinata ad avere solo gruppi di aficionados. Magari può riuscire a cavalcare alcune ondate commerciali che però si esauriranno precocemente per ovvi motivi. Magari con un nuova concezione di microcontrollori, si possono ipotizzare altri scenari. Chi vivrà vedrà...
Parziale bibliografia web
http://it.wikipedia.org/wiki/Logica_fuzzy
http://www.jimbrule.com/fuzzytutorial.html
http://www.castelvecchieditore.com/spirale/mente_anima/estratti/fuzzylogic.html
http://www.fuzzytech.com/
http://www.cs.bilkent.edu.tr/~bulbul/depth/fuzzy.pdf
http://www.austinlinks.com/Fuzzy/
http://blog.peltarion.com/2006/10/25/fuzzy-math-part-1-the-theory/
http://www.calvin.edu/~pribeiro/othrlnks/Fuzzy/home.htm
http://www.cs.ucsb.edu/~foschini/files/P0406_preprint.pdf
http://home.howstuffworks.com/rice-cooker2.htm
http://www.istituto-meme.it/pdf/pubblicazioni/fuzzy_logic.pdf
http://tecalibri.altervista.org/K/KOSKO_fuzzy.htm#p009
http://sipi.usc.edu/~mendel/publications/FLS_Engr_Tutorial_Errata.pdf
http://www.bu.edu/wcp/Papers/Logi/LogiGrun.htm
http://www.ce.unipr.it/people/bianchi/Research/ProgettoFuzzy/home.html
http://www.webalice.it/capaso/DOCS/RETI_NEURALI/Logica%20Fuzzy.pdf
http://www.ildiogene.it/EncyPages/Opere/DeSimoneMatteo-La%20tecnologia%20Fuzzy.doc