Fuzzy Logic - SmartParking
"...e ora qualche esempio."
di Giovanelli Simone, Celaschi Matteo e Stillo Alberto
In questa sezione potete trovare alcuni esempi per comprendere meglio quali possano essere le appllicazioni di quanto avete fino ad ora appreso.
Sono stati presi in considerazione due problemi apparentemente banali per la mente umana, la cui interpretazione è alquanto complessa in logica binaria. Questa difficoltà nasce dalla necessità di considerare contemporaneamente diverse variabili il cui stato non si limita ai due valori convenzionali della logica binaria (vero o falso), ma possono acquisire infiniti stati intermedi.

Per ovviare al problema si sono implementati algoritmi fuzzy che, come spiegato in precedenza, sono quelli che riescono ad approssimare nel modo migliore la mente umana.

Consideriamo il primo esempio: il problema del parcheggio.
L'obiettivo è quello di far parcheggiare al calcolatore un autovettura in retromarcia; le variabili di input (o variabili di stato) del problema, che vengono assegnate dall'utente, sono la posizione (x,y) e l'orientazione dell'auto.
Nel simulatore SmartParking™ la possibile posizione dell'autovettura varia da (0,0) a (360,294).

Una volta inseriti i valori, ci basta premere il pulsante "Simula" per far partire la simulazione che provvederà, basandosi su regole fuzzy, a parcheggiare l'auto in retromarcia nel parcheggio. Il tasto "Step" consente il controllo della simulazione passo-passo, mentre "Soluzione" consente di configurare in modo ottimale la matrice delle regole per portare a termine il problema. E' doveroso ricordare che se l'auto non ha spazio di manovra, e tenta di uscire dal parcheggio, la simulazione viene interrotta; questo può succedere non perché la logica utilizzata è in un qualche modo errata, ma perché l'auto è vincolata al potersi muovere solo in retromarcia con angoli di sterzata limitati come in un caso reale. E' possibile, inoltre, modificare la tabella delle regole su cui si basa il movimento della macchina. A questo proposito è necessario soffermarsi brevemente sul come è stata realizzata la suddetta matrice, e come viene utilizzata dal simulatore. Nello sviluppo delle regole Fuzzy, viene valutata la posizone x dell'auto (la y viene trascurata) e il suo orientamento; le regole sono quindi del tipo:

"Se x è molto a sinistra del parcheggio e l'angolo è sud ovest allora sterza di un piccolo angolo positivo"
ovvero:
IF x is S AND a is SO THEN a is a+PP
Dove a è l'orientamento della macchina.

Qui di seguito riportiamo la matrice delle regole e i fuzzy sets delle variabili di stato:

a/X
S
CS
C
CD
D
SO
PS
PM
PM
PB
PB
O
NS
PS
PM
PB
PB
NO
NM
NS
PS
PM
PB
N
NM
NM
ZE
PM
PM
NE
NB
NM
NS
PS
PM
E
NB
NB
NM
NS
PS
SE
NB
NB
NM
NM
NS
Posizione Auto
Orientamento Auto
Angolo di Sterzata

 

Il controllore fuzzy si basa su tre stadi:

  1. Fuzzificazione
  2. Controllo
  3. Defuzzificazione

Fuzzificazione
La fuzzificazione consiste nella conversione dei valori di input (che nel nostro caso sono posizione ed orientamento) in valori linguistici con un grado di membership che può essere dato come nel nostro caso da funzioni triangolari; per la variabile "posizione" abbiamo definito cinque sets (vedi figura), per "angolo" sette.

Controllo
Per ogni regola "if then" definita viene computato il grado di applicabilità della stessa dato dal minimo tra i due valori di membership delle variabili.

Defuzzificazione
La defuzzificazione consiste nella riconversione di valori linguistici di output in valori crisp; quetso viene effettuato tramite la regola del controide che, nel nostro caso, è facilmente schematizzabile nel seguente modo:

Dove zi è il grado di applicabilità della regola e fi è il valore centrale della funzione di mebership.

Sistemi Fuzzy e Fuzzy Logic ControllersEsempio2