Hitta minimum på ett område i en hyperrymd?

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Hitta minimum på ett område i en hyperrymd?

Inlägg av Korken »

Godagens!

Efter att ha gjort klart den sista av mina kurser i avancerad reglerteknik så har jag blivit lite frälst i MPCer (Model Predictive Control, http://en.wikipedia.org/wiki/Model_predictive_control).
Problemet med dessa är för att hitta den optimala styrsignalen så ska först ett minimeringsproblem lösas (det är den enkla biten) och om man antar att man har begränsningar på states och kontrollsignal av formen tex |styrsignalen/state| < 1 så får man en kub av samma dimension som sin prediction horizon som man ska hålla sig inom (detta är den svåra biten).

Det betyder för att hitta begränsat optimum så måste man först se om styrsignalen från minieringsproblemet är inom "bounds" så att säga.
Är den inte de så måste man kolla randen och ytorna på den "hyperkuben" för att hitta vart den optimala lösningen är.
Och här kommer mitt problem. Hur kollar jag ytorna och ränderna på en kub i ett n-dimensionellt rum? Jag hittar inga formler för detta.
Har någon koll på hur detta görs enklast? (Detta får mig tänka på va LHelge sa en gång: ... som kommer bli en orgie av flyttalsoperationer)

Min plan är att skriva ett enkelt program som genererar ekvationerna i tex C kod för att sedan användas i tex en MCU.
Nerre
Inlägg: 27410
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Hitta minimum på ett område i en hyperrymd?

Inlägg av Nerre »

Jag har ingen koll, men borde man inte kunna börja med 2-dimensioner och sen gå upp till 3 för att se hur det utvecklar sig?

Jag har aldrig riktigt orkat sätta mig in i hyperrymd, men minns att jag i början av 90-talet lekte på ett program som skapade en 3-dimensionell projicering av en 4-dimensionell kub (och den 3-dimensionella projiceringen visades ju 2-dimensionellt på skärmen).

Man hade 3 kontroller för att rotera den 3-dimensionella projiceringen på skärmen och sen 4 kontroller för att rotera den 4-dimensionella hyperkuben.

Jag kan nog ärligt säga att jag aldrig fattade nånting:)
Användarvisningsbild
MicaelKarlsson
Inlägg: 4669
Blev medlem: 18 juni 2004, 09:16:07
Ort: Aneby
Kontakt:

Re: Hitta minimum på ett område i en hyperrymd?

Inlägg av MicaelKarlsson »

Kan inte hjälpa dig, tyvärr. Men vill tacka för intressant läsning!
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Re: Hitta minimum på ett område i en hyperrymd?

Inlägg av Korken »

Nerre:
Projecering har jag inte inte kollat på än. Det ska jag göra! Fråga än bara hur mina "bounds" ändras med projektionen.
Dock så om jag tappar dimensioner så måste jag vrida min kub så alla dess dimensioner kommer med och jag tror inte det blir nå mindre beräkningar av det tyvärr. :humm:

MicaelKarlsson:
De bjuder jag på. :)
Det är en väldigt trevlig kontroller som dock tyvärr är väldigt beräkningstung då man måste lösa en invers av samma dimension som prediction horizon samt om man har bounds så måste man kolla den n-dimensionella kubens sidor och ränder.
Men oftast brukar den ge en överlägset bra reglering som är svårt att uppnå med tex LQG eller vanlig state-feedback. :)


Edit: Jag kanske ska påpeka att det finns två stycken horizons man kan ställa in, men det finns att läsa om det på google.
Jag tar bara med den som påverka beräkningarna här.
Användarvisningsbild
kimmen
Inlägg: 2042
Blev medlem: 25 augusti 2007, 16:53:51
Ort: Stockholm (Kista)

Re: Hitta minimum på ett område i en hyperrymd?

Inlägg av kimmen »

Hur jobbig är målfunktionen och bivillkoren i bemärkelsen linjär, kvadratisk, olinjär?

Skall du göra det algebraiskt och du har olinjära funktioner får man nog börja med KKT-villkoren:
http://en.wikipedia.org/wiki/Karush%E2% ... conditions

Det är egentligen bara nödvändiga men inte tillräckliga villkor, fast för snälla funktioner fungerar det. För linjär målfunktion och bivillkor finns en speciell effektiv metod som är garanterad att hitta den optimala lösningen.

edit: Det jag tänker är att bivillkoren (begränsningarna) bör ses som en del av optimeringsproblemet och inte något som läggs på efteråt.
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Re: Hitta minimum på ett område i en hyperrymd?

Inlägg av Korken »

Tackar ska kolla på det! Jag kör på linjär MPC så det ska vara linjära lösningar också.
Precis som du säger så tas begränsningarna med i optimeringen, de görs inte separat. Jag va nog lite oklar där.
Användarvisningsbild
kimmen
Inlägg: 2042
Blev medlem: 25 augusti 2007, 16:53:51
Ort: Stockholm (Kista)

Re: Hitta minimum på ett område i en hyperrymd?

Inlägg av kimmen »

Okej, så systemmodellen är alltså approximerad som linjär då?

I så fall borde det väl bli målfunktionen som finns här

http://en.wikipedia.org/wiki/Model_pred ... les_of_MPC

som är kvadratisk. Och för sådant med linjära likhets- och/eller olikhetsbivillkor finns speciella metoder (som kan vara bättre eller säga mer än de för generella olinjära problem), se t.ex.

http://en.wikipedia.org/wiki/Quadratic_programming
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Re: Hitta minimum på ett område i en hyperrymd?

Inlägg av Korken »

Precis så är det. Jag tar hänsyn till olinjariteterna genom kontinuerlig linjarisering av den icke-linjära modellen (som i ett EKF).
För om min matris stod helt stilla så kan jag i förtid beräkna alla styrsignaler och göra en karta över det, men då den ändras så måste jag verkligen lösa problemet för varje iteration.

Tack för länkarna! Ska kolla närmre på dom. :)
Skriv svar