Horyzont predykcji (rolling horizon), LQR jako MPC z ∞ horyzontem, linear MPC z ograniczeniami (QP per krok).
W każdym kroku , mając aktualny stan , rozwiązujemy problem optymalizacji:
Dostajemy sekwencję sterowań . Aplikujemy tylko , mierzymy nowy stan , i powtarzamy całą procedurę. To jest receding horizon principle — predykcja jest WYRZUCANA w każdym kroku.
Najsilniejszą wizualizacją MPC jest pokazanie, jak w każdym kroku regulator wyobraża sobie przyszłą trajektorię na kroków, wybiera najlepszą, ale stosuje tylko pierwsze sterowanie z planu. Demo poniżej pokazuje cztery snapshoty predykcji w czasie symulacji oraz rzeczywistą trajektorię (obserwowaną).
4 fioletowe „cienie" to przewidywane trajektorie planowane przez MPC w chwilach 0, 0.5, 1.5, 3 s. Każda zaczyna się w bieżącej pozycji (kropka) i pokazuje, jak MPC wyobraża sobie następne kroków. Niebieska linia to to, co FAKTYCZNIE się stało.
Zauważ: predykcja z t=0 nie pokrywa się z rzeczywistą trajektorią (mimo identycznych parametrów planu). MPC w każdym kroku replanuje od bieżącej obserwacji — to receding horizon principle.
Receding horizon. W chwili MPC:
„Cień w przyszłość" jest WYRZUCANY w każdym kroku. To jest źródło robustności MPC: błędy modelu nie kumulują się, bo predykcja startuje od pomiaru, a nie od poprzedniej predykcji.
Zwiększ i widać, że MPC „oszczędza energię" — predykcja wyprowadza system wolniej, ale gładziej. Zmniejsz do 3 — predykcja zacznie „uderzać" o ograniczenie i odkształcać się: trajektoria nie idzie już w najszybsze rozwiązanie, tylko w najszybsze dopuszczalne.
Klasyczne LQR i MPC są ze sobą blisko spokrewnione. Dla problemu BEZ ograniczeń, z funkcją kosztu kwadratową:
optymalna strategia to liniowe sprzężenie zwrotne , gdzie wyznacza się z algebraicznego równania Riccatiego (DARE). Twierdzenie: dla rosnącego horyzontu , gain MPC pierwszego kroku zbiega monotonicznie do .
Wykres poniżej pokazuje wprost zbieżność dla naszego planta MSD. Dla horyzontu różnica między MPC a LQR jest poniżej 1%. Stąd praktyczna wskazówka: w MPC bez ograniczeń, jeśli stać Cię na (gdzie to dominująca stała czasowa), MPC zachowuje się jak LQR — możesz równie dobrze użyć LQR analitycznie. MPC płaci się, gdy są ograniczenia (które LQR nie potrafi obsłużyć).
Zbieżność do LQR. Dla nieograniczonego problemu MPC z funkcją kosztu:
gain pierwszego kroku wyznaczany przez cofającą się rekurencję Riccatiego, monotonicznie zbieżny do z DARE (przerywana linia). Wykres pokazuje wprost: dla różnica jest znikoma — finite MPC jest już praktycznie LQR.
To uzasadnia twierdzenie pedagogicznie: LQR to MPC z nieskończonym horyzontem. Wybór w MPC to kompromis: większe = bliżej optimum, ale droższe obliczeniowo (QP ma zmiennych decyzyjnych).
Dla planta drugiego rzędu z dynamiką spoczynkową w skali kilku sekund i krokiem MPC s wystarcza . Dla cart-pole'a (czwarty rząd, niestabilny) typowe .
Spróbuj: zwiększ (waga sterowania) do 100 — gain spada, MPC będzie „leniwy". Zmniejsz do 0.001 — gain rośnie wykładniczo, MPC „agresywny" za cenę większego .
Z ograniczeniami pudełkowymi (i ewentualnie ) problem MPC przestaje mieć rozwiązanie analityczne. Mamy program kwadratowy z zmiennymi decyzyjnymi:
gdzie wyrażone są przez , a kodują ograniczenia. Standardowe algorytmy QP: aktywny zbiór (active set), punkt wewnętrzny (interior point), operator splitting (OSQP). W praktyce embedded używa się explicit MPC — prekomputowanego rozwiązania jako odcinkowo-liniowej funkcji (Bemporad et al. 2002).
W naszym demo § 1 powyżej rozwiązujemy QP iteracyjnie (gradient z projekcją na pudełko). To NIE jest wydajne, ale wystarcza do wizualizacji. Spróbuj zmniejszyć tam: gdy ograniczenie jest aktywne, predykcja deformuje się — zamiast prostej drogi do referencji, planuje „okrężną" tak, by nigdzie nie naruszyć saturacji. To jest jakościowa różnica względem PID lub LQR: te ostatnie najpierw obliczają sterowanie a potem clip do limitu (z możliwością wind-upu); MPC od początku uwzględnia ograniczenie w optymalizacji.
Dla zbieżności i feasibility MPC potrzebne są:
W naszym demo pomijam terminal cost (używam ) — dla małego planta i dużego N nie ma to znaczenia praktycznego. Pełna teoria — Mayne et al. „Constrained Model Predictive Control" (Automatica 2000).
Klasyczny (nominalny) MPC zakłada, że model planta jest dokładny. W rzeczywistości , gdzie to ograniczone zaburzenie . Pytanie: jak zaprojektować MPC, żeby gwarantował feasibility i stabilność w obecności zaburzeń?
Tube-based MPC (Mayne, Seron, Raković 2005) jest najpopularniejszym podejściem. Ideę można oddać tak:
Cena: konserwatyzm. Tubka „zjada" margines bezpieczeństwa, więc dopuszczalny zbiór nominalnych trajektorii jest mniejszy niż dla nominal MPC. Dla małych akceptowalne; dla dużych — pojawia się min-max MPC, gdzie sterowanie optymalizuje koszt w najgorszym przypadku.
Pełen demo tube-based MPC wymaga obliczania zbiorów niezmienniczych (operacje Pontryagina, Minkowskiego), co wykracza poza prosty interaktywny komponent. Pomijam implementację — najlepszy wstęp: Rawlings, Mayne, Diehl „Model Predictive Control: Theory, Computation, and Design" rozdz. 3.