Как изменить целевую функцию квадратичной программы, чтобы она соответствовала matlab quadprog? - PullRequest
0 голосов
/ 17 ноября 2018

У меня вопрос квадратичной задачи с целевой функцией

f=arg min(A*f-b)^T*S*(A*f-b)+alpha*f^T*W*f
s.t.  d_low < C*f < d_up

, где f - переменная оптимизации, S и W - весовые матрицы с положительным определением. A*f-b - это матричная функция

A*f=b

мой вопрос - как преобразовать квадратичную целевую функцию, чтобы она соответствовала решателю matlab quadprog, с общим видом

min 0.5*x^T*H*x+f^T*x

Не могли бы вы дать мне совет или пример, спасибо.

/ ========================================== /

Я спросил одноклассника, он сказал мне, что пункт (A*f-b)^T*S*(A*f-b) может быть расширен как

(A*f-b)^T*S*(A*f-b)=(f^T*A^T-b^T)(S*A*f-S*b)=f^T*A^T*S*A*f-f^T*A^T*S*b-b^T*S*A*f+b^T*S*b=f^T*A^T*S*A*f-2*b^T*S*A*f+b^T*S*b

это правильно?

1 Ответ

0 голосов
/ 17 ноября 2018

Вот один из способов справиться с этим.

Позвольте мне немного переписать вашу проблему

f = min (Af-b)'S(Af-b) + α f'Wf
s.t.  d_low <= Cf <= d_up

Это можно переписать так:

f = min y'Sy + α f'Wf
s.t.  d_low <= Cf <= d_up
      y = Af-b

Я добавил переменную y и ограничение линейного равенства.

Итак

H = [ 2S    0  ]
    [ 0    2αW ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...