UN AMBIENTE AVANZATO PER LA PROGETTAZIONE ED IMPLEMENTAZIONE DEI TRANSPARENT FUZZY SYSTEMS
2
Il gruppo Power Train & Safety si occupa di tutta l’elettronica di potenza presente
nell’automotive come i sistemi di alimentazione e il controllo dei motori elettrici.
Parte fondamentale della ricerca e dello sviluppo è rivolta verso i sistemi di assistenza per
le parti meccaniche e in genere verso quei controlli che, secondo la tendenza chiamata X
By Wire, sostituiscono completamente le parti meccaniche stesse, come ad esempio
l’EPS (Electrical Power Steering) per lo sterzo, l’ABS e il freno assistito per la frenata, il
controllo degli iniettori, l’airbag, le sospensioni attive, il cambio ecc…
Il gruppo Body si occupa di componentistica automotive che richiedono un livello
inferiore di potenza, sviluppa centraline di controllo per le luci, alzacristalli e specchi
elettrici, climatizzatori, sensori di parcheggio e altri componenti che facilitano la guida,
nonché lo sviluppo di protocolli per l’interconnessione degli stessi.
Il gruppo Car Communication, infine, sviluppa la parte meno legata alla guida e più
rivolta al comfort dell’abitacolo. Si propone perciò di sviluppare sistemi audio, fra cui il
DAB (Digital Audio Broadcasting), sistemi di posizionamento globale (GPS), phone kit e
la parte di car multimedia nella quale rientrano gli equipaggiamenti per macchine di
livello medio-alto che comprendono lettori DVD e Tv per i passeggeri.
UN AMBIENTE AVANZATO PER LA PROGETTAZIONE ED IMPLEMENTAZIONE DEI TRANSPARENT FUZZY SYSTEMS
3
1.2 OBBIETTIVI E SVOLGIMENTO DEL TIROCINIO
L'interfaccia grafica (in inglese graphical user interface, abbreviato GUI) è un paradigma
di sviluppo che mira a consentire all'utente di interagire col calcolatore manipolando
graficamente degli oggetti, svincolandolo dall'obbligo di imparare una serie di comandi
da impartire con la tastiera come invece avviene con le interfacce testuali command line
interface (CLI).
Scopo del progetto è stato quello di realizzare un ambiente grafico facilmente usabile, per
la progettazione e lo sviluppo di sistemi fuzzy da implementare su microcontrollori della
famiglia ST10.
Il lavoro svolto in azienda è composto da diverse fasi essenziali per il raggiungimento
dell’obbiettivo.
Una prima fase è stata dedicata all’approccio verso la logica fuzzy e allo studio delle
proprietà fondamentali che ne descrivono le caratteristiche.
Una volta compresi i meccanismi alla base di tale logica si è passati all’analisi dello stato
dell’arte .
L’interfaccia grafica, semplice ed intuitiva, consente al sistema di essere facilmente
usabile. Essa è stata realizzata mediante SwiXML: uno strumento nuovo ed efficace che
integra la facilità di comprensione dell’XML con la potenza e la dinamicità delle librerie
Java Swing.
La successiva fase di lavoro è stata dedicata allo studio della libreria JGraph che ha
consentito la modellazione del sistema fuzzy in un grafo facilmente manipolabile.
UN AMBIENTE AVANZATO PER LA PROGETTAZIONE ED IMPLEMENTAZIONE DEI TRANSPARENT FUZZY SYSTEMS
4
Grazie a questo ambiente di sviluppo integrato è possibile giungere quindi alla
costruzione del codice FML (Fuzzy Markup Language): linguaggio basato su XML che si
presta a descrivere le informazioni della logica fuzzy applicata ai sistemi di controllo.
Il codice FML così generato può successivamente essere trasformato nel linguaggio di
programmazione desiderato, quale C, Java. Ciò, grazie all’utilizzo delle XSLT:
tecnologia anch’essa basata su XML che consente di manipolare e formattare l’FML per
visualizzare i dati come vogliamo.
UN AMBIENTE AVANZATO PER LA PROGETTAZIONE ED IMPLEMENTAZIONE DEI TRANSPARENT FUZZY SYSTEMS
5
CAPITOLO
2
LA LOGICA FUZZY
2.1 INTRODUZIONE
Questo capitolo intende introdurre la logica fuzzy e i principali concetti necessari per la
comprensione dei paragrafi che seguiranno. Si introdurranno così le definizioni di insiemi
fuzzy e di funzioni di appartenenza, passando poi, dopo una descrizione delle operazioni
previste per gli insiemi fuzzy, al concetto di regola e di algoritmo di inferenza . Saranno
trattati, inoltre, i diversi metodi usati per la risoluzione di tali algoritmi. Gli argomenti
introdotti non saranno definiti con rigorosità matematica, esigenza, questa, che esula
dallo scopo del presente testo.
Il capitolo si concluderà con una breve analisi dello stato dell’arte della logica fuzzy e dei
principali campi di impiego.
UN AMBIENTE AVANZATO PER LA PROGETTAZIONE ED IMPLEMENTAZIONE DEI TRANSPARENT FUZZY SYSTEMS
6
2.2 INTRODUZIONE ALLA LOGICA FUZZY
La logica fuzzy, detta anche logica sfumata o logica sfocata, fu introdotta da Lofti Zadeh
nel 1965, ed è un’estensione della logica booleana classica o bivalente. La logica fuzzy,
infatti, si basa sulla teoria degli insiemi sfocati.
Gli insiemi sfocati indicano una classe di oggetti per i quali la proprietà di appartenenza
alla classe stessa è rappresentata da una funzione continua piuttosto che da una funzione
del tipo vero-falso/si-no. Per questi insiemi non è più valido il principio di non
contraddizione secondo cui un elemento appartiene oppure non appartiene ad una
determinata classe assegnandoli un grado di appartenenza uno o zero, ma piuttosto vi
appartiene con un grado che varia con continuità fra zero e uno.
Questa logica, che si basa sugli insiemi, sui connettivi e sulle implicazioni, ha le stesse
proprietà di sintesi delle informazioni del ragionamento umano, infatti, nasce
dall’esigenza di trovare una strumentazione logico-matematica in grado di legare le
capacità proprie del linguaggio naturale a rappresentare la polivalenza e
l’indeterminazione con i vantaggi della formalizzazione algebrica e la
rappresentazione numerica.
UN AMBIENTE AVANZATO PER LA PROGETTAZIONE ED IMPLEMENTAZIONE DEI TRANSPARENT FUZZY SYSTEMS
7
2.3 INSIEMI FUZZY E FUNZIONI DI APPARTENENZA
Un insieme fuzzy è costituito da una collezione di oggetti dell’universo del discorso U
che hanno una qualche proprietà in comune. Contrariamente a quanto avviene per gli
insiemi classici, un insieme fuzzy si distingue dal fatto che ogni elemento dell’universo
del discorso U vi appartiene con un grado variabile nell’intervallo [0,1].
Il generico insieme fuzzy A è, quindi, caratterizzato da una funzione di appartenenza
(membership function) µA : U --> [0,1] che associa ad ogni elemento y di U il suo grado
di appartenenza ad A tramite il numero reale µA(y) con valori in [0,1]. Così, maggiore è il
valore del grado di appartenenza µA(y), maggiore è l’evidenza per la quale y appartiene
alla categoria descritta dall’insieme fuzzy A.
Si definisce sostegno di A, l’insieme punti di U ai quali è associato un grado di
appartenenza ad A maggiore di zero. Gli insiemi fuzzy che hanno un sostegno degenere
in un solo punto prendono il nome di singleton.
Per capire meglio il funzionamento degli insiemi fuzzy e delle relative funzioni di
appartenenza è conveniente fare alcuni esempi.
Si prenda in considerazione l’insieme delle persone adulte che sarà etichettato con il
termine “adulti”.
Secondo la logica tradizionale bivalente, una persona appartiene all’insieme degli adulti
se ha un’età maggiore o uguale a diciotto anni, quindi o appartiene all’insieme “adulti” al
100%, oppure appartiene all’insieme “non-adulti”al 100%. La funzione di appartenenza
per questo insieme che verrà chiamata µADULTI avrà quindi un andamento simile a quello
UN AMBIENTE AVANZATO PER LA PROGETTAZIONE ED IMPLEMENTAZIONE DEI TRANSPARENT FUZZY SYSTEMS
8
riportato in figura 1.1. È interessante notare che µADULTI può assumere solamente due
valori: zero per gli individui con età inferiore a 18 anni, uno per individui con età
maggiore o uguale a 18 anni.
Figura 1.1: Funzione di appartenenza per un insieme classico.
Nella logica fuzzy, invece, la zona di confine tra “adulti” e “non-adulti” non è netta ma
sfumata, e permette di classificare gli elementi in esame come appartenenti a
quell’insieme con un determinato grado di verità. L’etichetta “adulti”, infatti, rappresenta
un’informazione qualitativa piuttosto che quantitativa. Per questo motivo un individuo di
18 anni sarà al 50% “adulto” e al 50% “non-adulto”. La funzione di appartenenza µADULTI
in questo caso assumerà un andamento simile a quello riportato
in figura 1.2.
Figura 1.2: Funzione di appartenenza per un insieme fuzzy.
UN AMBIENTE AVANZATO PER LA PROGETTAZIONE ED IMPLEMENTAZIONE DEI TRANSPARENT FUZZY SYSTEMS
9
Prendendo in esame un caso più articolato si può pensare di ragionare su due insiemi che
rappresentano le vaghe nozioni di “vecchio” e “giovane” associando ad ogni insieme una
funzione di appartenenza come riportato in figura 1.3.
Figura 1.3: Funzioni di appartenenza per due insiemi fuzzy.
Anche in questo esempio non si notano zone di demarcazione nette fra “giovani” e
“vecchi”, infatti, fino a che età un individuo può essere considerato “giovane”? Fino a 20
anni? Oppure fino a 40? E da che età può essere considerato “vecchio”?
Certamente una persona di 20 anni è considerabile come “giovane” più di una persona di
40 anni. È possibile notare che una persona di 30 anni, per come sono stati definiti i
concetti di “giovani” e “vecchi”, appartiene sia all’insieme delle persone giovani con un
grado di appartenenza relativamente elevato, sia all’insieme delle persone vecchie con un
grado di appartenenza relativamente basso. L’appartenenza ad entrambi gli insiemi
potrebbe sembrare una contraddizione (come può una persona essere
contemporaneamente giovane e vecchio?) ma non lo è per la definizione che è stata data
dei due insiemi che hanno funzioni di appartenenza parzialmente sovrapposte.
UN AMBIENTE AVANZATO PER LA PROGETTAZIONE ED IMPLEMENTAZIONE DEI TRANSPARENT FUZZY SYSTEMS
10
2.4 OPERAZIONI SUGLI INSIEMI FUZZY
Per introdurre le operazioni sugli insiemi fuzzy si può ricorrere alla relazione esistente fra
la funzione caratteristica di un insieme ordinario e la funzione di appartenenza di un
insieme fuzzy.
Nel caso degli insiemi ordinari le operazioni di unione, intersezione e negazione sono
(con ovvio significato dei simboli):
A B = { u U | u A or u B}
A B = { u U | u A and u B}
A = {u U | u A}
Considerando la funzione caratteristica di A e B, le operazioni sopra riportate implicano
le seguenti relazioni:
χ A B (u) = max (χA (u), χB (u) ) = χA (u) χB(u)
χ A B (u) = min (χA (u), χB (u) ) = χA (u) χB(u)
χ Ā (u) = 1- χ A (u)
Sostituendo la funzione caratteristica con la funzione di appartenenza, si ottengono le
definizioni delle operazioni di unione, intersezione e negazione per gli insiemi fuzzy:
µ A B(u) = max (µ A(u), µ B(u))
µ A B(u) = min (µ A(u), µ B(u))
UN AMBIENTE AVANZATO PER LA PROGETTAZIONE ED IMPLEMENTAZIONE DEI TRANSPARENT FUZZY SYSTEMS
11
Per queste definizioni valgono ancora le leggi di De Morgan, tuttavia nel caso degli
insiemi fuzzy si avrà che:
A A ≠ U
A A ≠ Ø
Ciò era prevedibile dato che la teoria fuzzy non prevede la dicotomia caratteristica della
teoria degli insiemi.
Nelle figure che seguono sono riportati degli esempi di connettivi and e or su insiemi
fuzzy, supponendo che nell’universo del discorso di una grandezza x siano definiti i due
insiemi fuzzy, x_piccolo e x_grande come in figura 1.4.
Figura 1.4: Funzione di appartenenza dei due insiemi fuzzy "x_piccolo" e "x_grande".
In figura 1.5, 1.6 e 1.7 sono riportate rispettivamente le funzioni di appartenenza degli
insiemi fuzzy “x_piccolo or x_grande”, “x_piccolo and x_grande” e infine
UN AMBIENTE AVANZATO PER LA PROGETTAZIONE ED IMPLEMENTAZIONE DEI TRANSPARENT FUZZY SYSTEMS
12
“x_not_grande”.
Figura 1.5: Funzione di appartenenza dell'insieme fuzzy "x_piccolo or x_grande".
Figura 1.6: Funzione di appartenenza dell'insieme fuzzy "x_piccolo and x_grande".
UN AMBIENTE AVANZATO PER LA PROGETTAZIONE ED IMPLEMENTAZIONE DEI TRANSPARENT FUZZY SYSTEMS
13
Figura 1.7: Funzione di appartenenza dell'insieme fuzzy "x_not_grande".
2.5 REGOLE E ALGORITMO DI INFERENZA
La definizione di un sistema attraverso la logica fuzzy avviene utilizzando una serie di
regole fuzzy del tipo If- Then come ad esempio:
if x is A then y is B
dove sia A che B sono insiemi fuzzy. In tale espressione si individuano due parti distinte;
il termine
if x is A
detto antecedente della regola, e il termine:
then y is B
detto conseguente della regola. Si evidenzia il fatto che il conseguente di una regola non
può essere più vero di quanto lo sia l’antecedente.
UN AMBIENTE AVANZATO PER LA PROGETTAZIONE ED IMPLEMENTAZIONE DEI TRANSPARENT FUZZY SYSTEMS
14
Nella figura 1.8 è riportato un esempio grafico dell’ipotetica regola if x is piccolo then y
is grande (dove piccolo e grande indicano gli insiemi fuzzy precedentemente illustrati):
Figura 1.8: Rappresentazione grafica della regola "if x is piccolo then y is grande".
Tramite un’operazione di inferenza, si ricava il valore del conseguente di tale regola dato
un certo valore della grandezza x dell’antecedente. L’algoritmo di inferenza richiede,
quindi, di riportare sull’asse delle x il valore numerico assunto da tale variabile. Il valore
restituito dalla funzione di appartenenza dell’insieme x_is_piccolo in corrispondenza del
punto che individua il valore di x, rappresenta il grado di appartenenza di x all’insieme
fuzzy indicato con x_is_piccolo. Questa operazione è detta fuzzificazione.
Come già detto, l’uscita di un’implicazione non può avere un grado di verità maggiore
rispetto al proprio antecedente. Esistono diversi tipi di inferenza che rispettano questi
vincoli, ma nella pratica se ne usano principalmente due: il metodo del troncamento e il
metodo del prodotto. Nel primo caso si tronca il valore della funzione di appartenenza
dell’uscita al corrispondente valore calcolato per l’antecedente; nel secondo caso, invece,
si moltiplica la funzione di appartenenza del conseguente per il grado di attivazione
dell’antecedente.
UN AMBIENTE AVANZATO PER LA PROGETTAZIONE ED IMPLEMENTAZIONE DEI TRANSPARENT FUZZY SYSTEMS
15
La figura 1.9 riporta un esempio per entrambi i metodi descritti, con riferimento alla
regola precedentemente illustrata in figura 1.8. Nella figura si evidenzia l’insieme fuzzy
modificato dall’implicazione quando x assume un determinato valore numerico. Tale
insieme è posto in evidenza utilizzando le spezzate a tratto spesso.
Figura 1.9: Esempi di calcolo del conseguente di una regola utilizzando sia il metodo del
troncamento che il metodo del prodotto.
Quanto detto, però, può essere esteso al caso in cui il segnale scelto per rappresentare
l’uscita di un fenomeno dipenda da più variabili, e quindi le variabili dell’antecedente
(premessa) siano più di una. Le regole della logica fuzzy, quindi, possono avere
l’antecedente composto da due o più insiemi fuzzy uniti da connettivi di tipo and o or.