Wykorzystanie algorytmu genetycznego do strojenia kontrolerów

9

Przeczytałem kilka artykułów na temat sterowania układami nieliniowymi (np. Wahadło nieliniowe). Istnieje kilka podejść do kierowania systemów nieliniowych. Najczęstsze z nich to kontrolery trybu liniowego sprzężenia zwrotnego , cofania i przesuwania .

W moim przypadku zrobiłem teoretyczne i praktyczne części sterowania nieliniowym modelem prostego wahadła oraz inne problemy z manipulatorami w C ++. W przypadku wahadła wykorzystałem kontroler cofania do rozwiązania zadania śledzenia przesunięcia kątowego i prędkości. Wyniki są

θ¨+(k/m)θ˙+(g/L)sinθ=u

gdzie oraz .m=0.5,k=0.0001,L=.2g=9.81

Wykres 1

Wykres 2

Wyniki są dobre. Strojenie kontrolera jest jednak czasochłonne. Większość artykułów używa algorytmów genetycznych do dostrajania swoich sterowników, takich jak PD, PID i kontrolery cofania. Nie mam pojęcia w tej dziedzinie i mam nadzieję, że ktoś rzuci nieco światła na tę koncepcję, najlepiej, jeśli istnieje próbka MATLAB do przynajmniej kontrolowania prostego wahadła.

Do tej pory zaprojektowałem prosty GUI w C ++ / Qt, aby ręcznie dostroić kontroler. Na poniższym zdjęciu odpowiedź sterownika na funkcję kroku.

Zrzut ekranu GUI aplikacji dostrajającej kontroler

CroCo
źródło

Odpowiedzi:

1

Stosowanie metod ewolucyjnych (GA jest jednym z nich) do dostrajania parametrów jest rzeczywiście powszechną metodą [1] w dziedzinie kontroli. Zwłaszcza w przypadku systemów nieliniowych rozwiązania analityczne dla optymalnych parametrów mogą być trudne do znalezienia. Metody ewolucyjne są jednym ze sposobów skutecznego przeprowadzania wyszukiwania parametrów prawie optymalnych.

Bardzo udaną i uniwersalną metodą, która jest szeroko stosowana, jest CMA-ES . Istnieje wiele wdrożeń , w tym dla MATLAB. Wiem, że równoważenie biegunów w różnych formach jest często stosowane jako punkt odniesienia.

Zastosowanie algorytmu zwykle nie jest takie trudne. Ocena wydajności wyniku - w EA nazywa się to funkcją fitness - jest zwykle najbardziej zaangażowana.

[1] PJ Fleming, RC Purshouse, Algorytmy ewolucyjne w inżynierii systemów sterowania: ankieta, Control Engineering Practice, tom 10, wydanie 11, listopad 2002, strony 1223-1241, ISSN 0967-0661, http: //dx.doi. org / 10.1016 / S0967-0661 (02) 00081-3 .

Jakob
źródło
Czy natrafiłeś na jakąś dobrą książkę, którą Twoim zdaniem warto przeczytać o GA?
CroCo
8

Algorytmy genetyczne są techniką uczenia maszynowego, która eliminuje potrzebę „dostrojenia” systemu przez użytkownika, a zamiast tego pozwala komputerowi dowiedzieć się, jak dostroić system. Korzyści z tego podejścia polegają na tym, że zwalniają czas badaczy / użytkowników i często mogą prowadzić do lepszego dostosowania systemu niż to, co naukowiec / użytkownik byłby w stanie osiągnąć samodzielnie.

Ogólna idea użycia algorytmu genetycznego byłaby zgodna z pewnym podstawowym przepływem kontroli, jak następuje:

Create_X_Number_Of_Random_Controllers()
while (Not_Yet_Satisfied_With_tuning)
    Score_Each_Controller_Based_On_Performance()
    Remove_Lowest_Performing_Controllers()
    Create_New_Controllers_By_Mixing_Best_Performers()
    Add_Slight_Randomness_For_Evolution()
Display_Top_Performer()

Najlepszym przykładem, jaki mogę łatwo wykazać w praktyce w tej zasadzie, jest ta „gra”, która wykorzystuje ewolucję genetyczną do projektowania pojazdów zdolnych do jazdy na kursie. Ten sam pomysł dotyczy każdego systemu, który chcesz dostroić bez konieczności samodzielnego strojenia. Przykład: http://rednuht.org/genetic_cars_2/

beeedy
źródło
Jeśli to właśnie miałoby na myśli @CroCo przy użyciu algorytmu genetycznego, to metoda strojenia Zieglera Nicholsa byłaby doskonałym kandydatem do wdrożenia, ponieważ jest ładnie proceduralna.
SteveO,
Nie rozumiem, co jeszcze oznaczałoby @CroCo, ale problem z Zieglerem Nicholsem polega na tym, że nadal musisz dostroić jeden z elementów, w którym podobnie jak w przypadku algo genetycznego możesz zmienić dowolny aspekt systemu i „ewoluuje” pasować bez konieczności brutalnej pracy
dewelopera
1
Ta odpowiedź wciąż stanowi ogólny proces osiągnięcia tego celu. Algorytmy genetyczne są całym obszarem badań i są zbyt skomplikowane, ale aby naprawdę wyjaśnić w krótkiej odpowiedzi, polecam je przeczytać, jeśli jednak jesteś zainteresowany ich wykorzystaniem do dostrojenia modeli!
beeedy
2
Wyobrażam sobie źle ograniczony algorytm genetyczny, który całkiem chętnie porywa strunę, gdy przestaje działać.
Ramrod
1
jak wspomniano @octopus, jest to trudne do osiągnięcia przy użyciu rzeczywistego sprzętu fizycznego, chyba że jesteś skłonny pozwolić komputerowi na kontrolowanie urządzenia, które próbujesz dostroić, nawet przez długi czas, nawet wtedy potrzebujesz programu „opiekuńczego”, który monitoruje i ocenia każdego kontrolera na podstawie wydajności i sprawdza, czy nie spowoduje to uszkodzenia maszyny. Podsumowując, jest to stosunkowo złożone zadanie, które wymaga dużo czytania na temat algorytmów genetycznych do wdrożenia, nie jest to małe zadanie.
beeedy
2

Jestem zdezorientowany tym, co nazywasz algorytmem genetycznym. Kontrolery PD, PID itp. Nie są metodami heurystycznymi ani stochastycznymi i nie są oparte na algorytmach ewolucyjnych. Są to natomiast algorytmy deterministyczne, które mają na celu umiejscowienie biegunów i zer odpowiedzi systemu w celu zapewnienia pożądanej wydajności (minimalizacja błędów, szybkość odpowiedzi, czas ustalania, stabilność i odrzucanie zakłóceń). Moim zdaniem dobrym odniesieniem do nauki jest książka Kuo's Automatic Control Systems . Mniej rygorystyczne podejście można znaleźć w książce Raven's Automatic Control Engineering .

SteveO
źródło
Nie znam algorytmu genetycznego (GA). Właśnie widziałem, jak niektóre dokumenty twierdzą, że tuningowanie ich kontrolerów odbywa się za pomocą GA. Brak dalszych szczegółów w ich artykułach na ten temat. Nie wiem, co to do diabła jest GA i jak mogę to wykorzystać.
CroCo
Stosowanie ewolucyjnych metod dostrajania parametrów jest bardzo powszechną techniką. Uważam, że jest to metoda alternatywna do opisywanych przez ciebie podejść analitycznych.
Jakob