3.2 KiB
Wykorzystanie pakietu jFuzzyLogic do modelowania sterownika rozmytego c.d.
Zadanie - Aktywny tempomat
Wykorzystując pakiet jFuzzyLogic zaprojektuj system rozmyty sterujący samochodem. Celem jest utrzymanie stałego dystansu od śledzonego samochodu.
Możesz wziąć pod uwagę np. dwie zmienne opisujące sytuacje: szybkość samochodu i dystans do samochodu jadącego z przodu i sterować zmianą prędkości: przyspieszaj, hamuj, utrzymuj prędkość.
- Szkielet aplikacji: FuzzyChase.zip
- przygotować plik: tempomat.fcl
Nazwy zmiennych lingwistycznych powinny być następujące:
VAR_INPUT
distance : REAL;
speed : REAL;
END_VAR
VAR_OUTPUT
acceleration : REAL;
END_VAR
Pod systemem Linux dla poprawy wydajności grafiki należy przekazać do maszyny wirtualnej Java następujący parametr -Dsun.java2d.opengl=true
Kompilacja w laboratoriach:
javac -cp jFuzzyLogic.jar [[FuzzyChase]].java
Uruchomienie Windows
java -cp jFuzzyLogic.jar;. [[FuzzyChase]]
Uruchomienie Linux
java -cp jFuzzyLogic.jar:. [[FuzzyChase]]
Pamiętaj by archiwum z biblioteką JFuzzyLogic jFuzzyLogic.jar wgrać do katalogu z którego uruchamiasz program.
Poniżej rozwiązanie proponowane przez Kazuo Tanaki.
Użyj go jako punkt wyjścia do konstrukcji sterownika.
- Czy spełnia on swoją rolę?
- Poeksperymentuj z definicjami poszczególnych zmiennych lingwistycznych.
- Jak wprowadzane zmiany wpływają na zachowanie samochodów?
- Jak powinny być one ustawione by sterownik działał optymalnie?
- Czy funkcje przynależności zmiennych powinny być symetryczne?
Dystans, szybkość i zmiana - zmienne lingwistyczne
- dystans
{{attachment:chris/MIN_2013/Zajecia_9/dystans.jpg}}
{=mediawiki}
- szybkość
{{attachment:chris/MIN_2013/Zajecia_9/szybkosc.jpg}}
{=mediawiki}
- zmiana szybkości
{{attachment:chris/MIN_2013/Zajecia_9/przyspieszenie.jpg}}
{=mediawiki}
Zbiór reguł
- R1: IF dystans jest krótki AND szybkość jest mała THEN utrzymuj szybkość
- R2: IF dystans jest krótki AND szybkość jest duża THEN redukuj szybkość
- R3: IF dystans jest długi AND szybkość jest mała THEN zwiększaj szybkość
- R4: IF dystans jest długi AND szybkość jest duża THEN utrzymuj szybkość
{{attachment:chris/MIN_2013/Zajecia_9/reguly.jpg}}
{=mediawiki}
Ilustracja działania sterownika:
{{attachment:chris/MIN_2013/Zajecia_9/sterownik1.jpg}}
{=mediawiki}
Zadanie 1
Oblicz stan sterownika dla parametrów wejściowych:
- prędkość 45 km/h
- dystans 25 m
Zadanie 2
Zaimplementuj sterownik w pliku tempomat.fcl, uruchom, przetestuj i dobierz optymalne jego parametry