Sterownik rozmyty (na przykładzie parkowania samochodu)

Transkrypt

Sterownik rozmyty (na przykładzie parkowania samochodu)
Sterownik rozmyty (na przykładzie parkowania
samochodu)
06 kwietnia 2010
Idea ogólna Celem programu jest symulacja zachowania się jakiegoś obiektu, zasymulowanie jakiegoś zjawiska, czynności, na podstawie rozmytych danych wejściowych.
Wynikiem będą odpowiednie działania wynikające z takich danych wejściowych.
Wersja 1 - dynamiczna: Symulacja ma na celu dotarcie do określonego stanu, np.
zaparkowania w danym miejscu, ustawienia dźwigu w określonej pozycji, holowanie samochodu. Dane wejściowe są zmienne i zależne od poprzedniego stanu układu.
Wersja 2 - statyczna: Symulacja polega na określeniu stanu układu w jednym momencie, przy zmianie przez użytkownika szeregu parametrów wejściowych, zmienia się
wynik układu, np. przy określonych: obciążeniu procesora, temperaturze na procesorze i
temperaturze otoczenia wynikiem będzie prędkość obracania się wiatraka (zwizualizowana
jedynie ze względów estetycznych).
Sterownik rozmyty składa się z bloków. Poniżej przedstawiony jest schemat takiego
sterownika.
Rysunek 1: Schemat sterownika rozmytego
Rozmywanie (fuzyfikacja) Polega na przekształceniu danych wejściowych (można
rzec - doświadczalnych) na dane rozmyte, wyrażone zmiennymi lingwistycznymi. Przykładowe dane wejściowe dla parkującej ciężarówki to jest x - przesunięcie względem linii
przechodzącej przez środek rampy, oraz µ - kąt między osią ciężarówki, a osią układu,
którą jest owa linia środka rampy. Na rysunku zaznaczone są te dane zieloną linią.
Rysunek 2: Parkowanie ciężarówki
Inną możliwość stanowi określenie danych wejściowych jako odległość od dwóch wybranych brzegów układu. Na rysunku są to wartości y i d zaznaczone pomarańczową linią.
Weźmy jednak jako wartości wejściowe dane x i µ. Dajmy na to, że x jest liczony w
centymetrach, zaś µ w radianach. Pierwszą rzeczą, jaką należy zrobić, jest wybór funkcji,
które będą nam określały zmienne lingwistyczne.
Rysunek 3: Zmienna µ
2
Można zdefiniować dla µ przykładowy zestaw zmiennych lingwistycznych: jeśli koła
są skręcone w lewo (zmienna “LEWO”), to będzie za to odpowiadała funkcja z, jeśli są
w miarę prosto (zmienna “PROSTO”), to odpowiada za to funkcja Λ, a jeśli w prawo
(zmienna “PRAWO”), to będzie to funkcja Γ. Oczywiście taka sytuacja jest czysto hipotetyczna - w końcu nie ma powodu, by skręt w lewo zdefiniowany był inną funkcją niż
skręt w prawo. W naszym przypadku należałoby zachować symetrię układu. Zmieńmy
zatem funkcje na z, Λ i s,
Rysunek 4: Zmienna µ
Podobnie trzeba uczynić z odległością x od osi układu. Tutaj jest pięć zmiennych lingwistycznych: “MOCNO LEWO”, “LEWO”, “ŚRODEK”, “PRAWO”, “MOCNO PRAWO”, czyli umiejscowienie ciężarówki jest odpowiednio mocno po którejś ze stron parkingu.
Zauważmy, że jeśli ciężarówka będzie bardzo blisko rampy, to taki manewr nie będzie
możliwy, dlatego należy sobie założyć jakąś określoną wartość y, która ten manewr umożliwia. Jeśli zaś ktoś wybierze zestaw danych wejściowych x i y, albo d i y, to ten problem
przerzucony jest na symulację.
Mając już funkcje rozmyte dla danych wejściowych możemy je wprowadzić. Przypuśćmy, że wejściową daną dla kąta ustawienia ciężarówki jest 0.33 radiana, a dla położenia
względem osi −54 metry. Podstawiając do wybranych funkcji rozmytych, otrzymujemy
wartości:
dla kąta
LEWO PROSTO PRAWO
0.77
0.34
0
dla przesunięcia
MOCNO LEWO LEWO SRODEK PRAWO MOCNO PRAWO
0.5
0.5
0
0
0
3
Rysunek 5: Zmienna x
Przyjmujemy, że dla wynikowego kąta skrętu będziemy mieli trzy zmienne lingwistyczne: LEWOSKRĘT, BEZ SKRĘTU, PRAWOSKRĘT.
Wnioskowanie Budujemy tablicą wnioskowania. Podstawą takiej tablicy może być
własna intuicja, doświadczenie, ale także mogą to być sieci neuronowe, czy siatki stochastyczne. Stąd wiemy, np. że jeśli samochód jest po lewej stronie i jest pod kątem w
lewo, to trzeba mocno skręcić w prawo, żeby po kroku tył samochodu znalazł się bliżej
rampy. Te wyrażenia zapisujemy w tabeli.
MOCNO LEWO LEWO SRODEK PRAWO MOCNO PRAWO
LEWO
PS
BS
LS
LS
LS
SRODEK
PS
PS
BS
LS
LS
PRAWO
PS
PS
PS
BS
LS
Wyliczamy wartości tej tabeli na podstawie danych wejściowych stosując t-normę Zadeha, czyli minimum po wartościach:
MOCNO LEWO LEWO SRODEK PRAWO MOCNO PRAWO
LEWO
0,5
0,5
0
0
0
SRODEK
0,34
0,34
0
0
0
PRAWO
0
0
0
0
0
Teraz grupujemy wartości odpowiadające poszczególnym zmiennym lingwistycznym
danych wejściowych za pomocą s-normy Zadeha, czyli maksimum po wartościach. Jest to
stopień aktywacji zbioru:
LEWOSKRĘT BEZ SKRĘTU PRAWOSKRĘT
0
0.5
0.5
Otrzymujemy zatem funkcję wyjściową, na podstawie której będziemy liczyć konkretną
wartość skrętu η.
4
Rysunek 6: Zmienna η
Wyostrzanie (defuzyfikacja) Mamy do wyboru szereg metod wyostrzania:
• metoda pierwszego maksimum
• metoda środkowego maksimum
• metoda ostatniego maksimum
• metoda środka ciężkości. Tak koncepcyjnie należy sprawdzić, w która wartość dzieli
pole pod wykresem na połowy:
Z
y · µwyn (y)dy
y? = Z
µwyn (y)dy
gdzie y ? to ostra wartość na wyjściu regulatora, µwyn to składana wynikowa funkcja
przynależności, a y to zmienna wyjściowa. Całkowanie jest w granicach, w których
funkcja przyjmuje wartości dodatnie.
• metoda singletonów
m
X
?
y =
yi
i=1
m
X
· µakt?
µakt?
i=1
gdzie y ? to ostra wartość na wyjściu regulatora, µakt? to stopień aktywacji i-tego
singletonu przez daną regułę, yi to wartość zmiennej wyjściowej dla i-tego singletonu,
a m to liczba reguł.
5
Jeśli wybraliśmy sobie np. metodę środkowego maksimum, to otrzymamy wartość ok.
0.165 radiana.
Rysunek 7: Ostra wartość zmiennej η
Symulacja Aby zasymulować parkowanie w tak stworzonym sterowniku, należy dla
otrzymanego skrętu kół wyznaczyć następne dane wejściowe, które otrzymamy po jednym
kroku symulatora. Krok taki, to może być np. przejechanie ciężarówki z tak skręconymi
kołami przez np. 5 metrów. W zależności od tabeli wnioskowania, możemy otrzymać różne
tory jazdy. Poniżej przedstawiony jest przykładowy tor.
Aby określić nowe położenie ciężarówki i obliczyć wartości kolejnych wejściowych danych, należy zastosować wzory na tor jazdy po okręgu dla przednich kół ciężarówki. Aby
to zrobić, musimy określić po kole o jakim promieniu poruszają się te koła, a następnie
zastosować wzory:
xi = xi−1 + R · sin(η)
yi = yi−1 + R · cos(η)
gdzie R to żądana długość przebywanej trasy, np. 5m, a η to kąt, pod jakim są skręcone
koła.
Uwagi do programu Program powinien umożliwiać:
• wprowadzenie danych wejściowych (wpisując je, umieszczając obiekt, który ma się
poruszać w odpowiednim miejscu - ma to być czysto intuicyjne)
• ustawienie t- i s-norm, na podstawie których będzie wyliczana wartość wnioskowana
oraz określenie funkcji wyostrzania, która będzie stosowana.
6
Rysunek 8: Parkowanie ciężarówki
• podgląd etapu rozmywania - dla danych wejściowych wykresy funkcji rozmytych,
zaznaczona wartość wejściowa i określenie wartości podanych funkcji dla tej danej
wejściowej.
• podgląd etapu wnioskowania - tabela bazy wiedzy
• podgląd etapu wyostrzania - tabela wartości funkcji rozmytych dla wywnioskowanej
wartości wejściowej, wykres funkcji opartej na tych wartościach
• zwizualizowanie (wystarczy wyrysowywanie kolejnych kroków) oraz przyciski: Animuj, Stop, Krok, lub im odpowiadające, które mają za zadanie odpowiednio: włączyć automatyczną symulację, która się odbywa, np. co sekundę; zatrzymać symulację; przejść przy zatrzymanej symulacji o jeden krok do przodu. Nie trzeba pamiętać
historii kroków i umożliwiać przechodzenie do nich w dowolnym momencie - wystarczy umożliwienie prześledzenia na bieżąco całego mechanizmu krok po kroku.
Propozycje Szereg propozycji sterowników:
1. stadion (pozostały czas, ilość wykonanej pracy, a liczba pracowników)
2. drzewo (nasłonecznienie, temperatura, a liczba liści)
3. mecz (wynik (np. losowe zmiany) - zaangażowanie, czas do końca, zmęczenie, a
tempo gry)
4. maraton (czas straty, zmęczenie, odległość do mety, a prędkość biegu)
5. student (zmęczenie, czas do egzaminu, a prędkość przyswajania wiedzy)
7
6. dokarmiacz rybek (liczba rybek (mogą się zjadać lub rozmnażać - wypadek losowy),
wielkość rybek, a ilość pokarmu)
7. owca (tempo wzrostu - wysokość trawy, głód, a prędkość pasienia się)
8. drwal (zapotrzebowanie na drewno, miesiąc, zmęczenie, a prędkość wyrębu)
9. giełda (zaufanie do giełdy, liczba grających, a wskaźnik giełdowy)
10. listonosz (liczba paczek, zmęczenie, a prędkość roznoszenia)
11. winda (in: ciężar, odległość; out: prędkość)
12. chłodzenie procesora (in: częstotliwość taktowania, temp. cieczy chłodzącej; out:
szybkość przepływu cieczy)
13. tempomat (in: ukształtowanie terenu, prędkość; out: otwarcie przepustnicy)
14. basen(in: temperatura wody, temperatura powietrza, liczba użytkowników; out:
moc grzałek)
15. wyprzedzanie samochodem (in: odległość od samochodu wyprzedzanego, odległość
od samochodu na przeciwległym pasie; out: prędkość
16. sterowanie światłami na skrzyżowaniu (in: liczba czekających samochodów w kierunku A i B, czas oczekiwania; out: czas działania świateł
17. sterowanie lotu balonem (in: temperatura zewnętrzna, wysokość; out: moc ogrzewania) lub (in: temperatura zewnętrzna, wysokość; out: wypuszczanie gazu, wyrzucanie balastu)
18. sterowanie opadaniem łodzi podwodnej (in: odległość , prędkość opadania, wyjście:
stopień napełnienia balastów)
19. lot samolotu nad wzgórzami (in: odległość od przeszkody, wysokość przeszkody,
prędkość lotu; out: ułożenie steru)
20. sterowanie karabinkiem (in: odległość, kierunek wiatru; out: kierunek strzału)
inne:
• basen-temperatura
• kredyty
• morale drużyny
• zysk na produkcie
• automatyczny rowerzysta (wejście: poziom terenu, prędkość, wyjście: siła nacisku
na pedały)
• ogrzewanie pokoju
8
• klimatyzacja z uwzględnieniem liczby osób
• skręcanie samolotu
• wznoszenie samolotu
• dawkowanie insuliny
• transport osób
• sterowanie piecem
• sterowanie filtrem-akwarium
• liczba policjantów względem liczby przestępców i intensywności ich działań
• omijanie przeszkód
• sterowanie rakieta do celu
• temperatura i wilgotność w pomieszczeniu
9

Podobne dokumenty