Vinnaren i pepparkakshustävlingen!
2018-04-18, 22:21
  #1
Medlem
Tom.Of.Finlands avatar
Denna kan vara svår!

Jag har en kostfunktion som ser ut så här:

Citat:
J = X^T * Q * X + U^T * R * U

Jag vill minimera J.

Där:

Citat:
X = F * x0 + B * U

U är en vektor som innehåller flera vektorer. Lilla x0 är en enskild vektor. X är samma som U - megavektor. Q, F, B, R är matriser.

Målet är att skriva dessa ekvationer på formen:

Citat:
J = 1/2*x^T * M * x + C^T * x + K

Vilket är formeln för kvadratisk programmering.
Där K är en konstant, som kan glömmas bort vid körning av den kvadratiska funktionen. Men den ska ändå vara där när man vill räkna på hur stort J blev.
__________________
Senast redigerad av Tom.Of.Finland 2018-04-18 kl. 22:23.
Citera
2018-04-19, 23:18
  #2
Medlem
neuffss avatar
Citat:
Ursprungligen postat av Tom.Of.Finland
Denna kan vara svår!

Jag har en kostfunktion som ser ut så här:



Jag vill minimera J.

Där:



U är en vektor som innehåller flera vektorer. Lilla x0 är en enskild vektor. X är samma som U - megavektor. Q, F, B, R är matriser.

Målet är att skriva dessa ekvationer på formen:



Vilket är formeln för kvadratisk programmering.
Där K är en konstant, som kan glömmas bort vid körning av den kvadratiska funktionen. Men den ska ändå vara där när man vill räkna på hur stort J blev.

Du kan ju utrycka X i U eller tvärtom (beroende på storlekar) och bara utveckla och se vad M och C blir. Är x0 en variabel som du ska optimera med avseende på?

Eftersom J är Skalär kan du också säga att C^T*X=X^T*C.

För det var att hitta M och C som du ville göra? Eller vad är frågan?
Citera
2018-04-19, 23:36
  #3
Medlem
nerdnerds avatar
Citat:
Ursprungligen postat av Tom.Of.Finland
Denna kan vara svår!

Jag har en kostfunktion som ser ut så här:



Jag vill minimera J.

Där:



U är en vektor som innehåller flera vektorer. Lilla x0 är en enskild vektor. X är samma som U - megavektor. Q, F, B, R är matriser.

Målet är att skriva dessa ekvationer på formen:



Vilket är formeln för kvadratisk programmering.
Där K är en konstant, som kan glömmas bort vid körning av den kvadratiska funktionen. Men den ska ändå vara där när man vill räkna på hur stort J blev.

Tycker inte heller det är så klart vad du vill göra. Om det är att minimera J är det väl mest rakt på att skriva om J så att det bara beror på U (och inget X). Blir ett liknande uttryck som det du ville ha med bara X. Vad jag förstår är det inte helt säkert att det går att skriva på ditt sätt -- om B är en projektionsoperator, dvs om den har minst ett egenvärde = 0. Om det extrempunkten för J du vill ha ett slutet uttryck för går det att lösa efter lite meck.
Citera
2018-04-20, 02:44
  #4
Medlem
Regleringsproblem?

J = 1/2 * (X^T * Q * X + U^T * R * U)

X = F * x0 + B * U


J = 1/2 * (U^T * (B^T * Q * B + R) * U + 2*(F*x0)^T * Q * B * U + F*x0 * Q * F*x0)

dvs

K = F*x0*Q*F*x0
C^T = (F*x0)^T * Q * B
M = (B^T * Q * B + R)

Reserverar mig för räknefel.
Citera
2018-04-20, 07:34
  #5
Medlem
neuffss avatar
Ser rimligt ut förutom att jag tror du glömt någon transponater i K (måste ju vara skalär).

Vill du minimera så är Newtons metod perfekt för Qp utan constraints. Förutsätter dock att Q är positiv definit, och så kan det klart uppstå numeriska problem med matrisinversioner, pröva tex modified Newton isf, ett par iterationer.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback