|
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:
- Fuzzificazione
- Controllo
- 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.
|