Jak używać funkcji "quadprog" w Matlabie?

0

http://www.mathworks.com/help/optim/ug/quadprog.html

W podanym linku jest przykład w zakładce examples
Czy powie mi ktoś skąd się wzięły te macierze H f x.

1

Przewin podaną stronę w dół i przeczytaj sekcję Input Arguments.

0

No błaga, od piątku szukam rozwiązania, i nie rozumiem tego co tam jest napisane.
Chce prostej odpowiedzi zawartość H się wzieła bo przemnożone zostało to z tym albo dodane to z tym, i tak samo z resztą.
Bo ja tam nic takiego nie znajduje

0

H i f to Ty musisz zdefiniować.

0

no ale jak??
Proszę o jakis przykład

0

Omg. Wejdź na stronę, którą podałeś, przewiń do końca. Tam jest sekcja Examples.

0

@Kosimazaki123 ale czego dokładnie nie rozumiesz?

  • Nie wiesz jak zdefiniować argumenty metody? Masz sekcje examples która to pokazuje
  • Nie wiesz jak na podstawie wzoru funkcji uzyskać macierze? Masz linki które podałem
    Czego jeszcze możesz nie rozumieć?
0

Tak, nie rozumiem jak zdefiniować te macierze. Mam zadanie z badań operacyjnych i nie umiem sobie tych macierzy zdefiniować do matlaba
W tych linkach co podałeś jest jakiś i wzur a macierz jego formy kwadratowej wygląda tak ..., i dalej nie wiem jak stworzyli tą macierz.
To co jest na matematyka pl co dałeś wygląda dobrze, no ale patrząc na ten wzór co podali, i na to co jest w tym linku co dałem,
to jednak jest to inaczej zrobione.
Dlatego proszę o wytłumaczenie

1

Masz badania operacyjne a nie miałeś algebry na studiach? Jakoś trudno mi w to uwierzyć... Ale widocznie zasada "zakuć, zdać, zapomnieć" przeniosła się już z podstawówki/gimnazjum na studia...
Zapewniam cię że w tutorialu matlaba zrobili DOKŁADNIE to samo co na matematyka.pl z tą subtelną różnicą że wyciągnęli sobie 1/2 przed macierz bo taką przyjęli notację że
f(x) to nie jest po prostu xTHx tylko 1/2 xTHx (patrz: http://www.mathworks.nl/help/optim/ug/quadprog.html#inputarg_H )
zapewne dlatego żeby się to liczyło łatwiej bo nie musisz dzielić przez pół wyrazów dla x1x2 (co może dać brzydkie ułamki) tylko musisz pomnożyć wyrazy przy x2 przez 2

0

to jak mam tak:
zysk wyrażony jest fubkcją
f(x1,x2)=15x1+30x2 +4x1x2-2x12-4x22

x1- produkt pierwszy x2 produkt drugi

koszt produkcji to : f(x1,x2) = 10x1 + 20x2 i nie może przekraczać 300

więc

macierz H = [-2 4; 4 -4] f = [15 30] x = [x1; x2]

robie ograniczenie

10x1 + 20x2 <= 300

i mam ze A = [10 20] b = [300]

tak będzie??

0

Nie. Stary czy ty w ogóle potrafisz czytać?
Oni zakładają że wyciągasz sobie 1/2 przed macierz H więc wewnątrz macierzy elementy z kwadratem mają pomnożone współczynniki przez 2 (ergo mają współczynniki -4 oraz -8 w twoim przypadku) a xi*xj mają niezmienione (ergo w twoim przypadku 4 4).
Więc H = [-4 4; 4 -8]
f = [15 30]
x = [x1 x2]

Zresztą to jest komiczne co ty robisz. Przecież możesz sobie to sprawdzić po prostu mnożąc przez siebie macierz H oraz x i zobaczysz co ci wyjdzie...

Macierz którą podałeś, przy założeniu że mamy 1/2 przed macierzą to byłoby f(x) = -x12 - 2x22 + 2x1x2 + 15x1 + 30x2

0

czyli to 1/2 wyciągamy tylko dla wartości które są przy x z kwadratem tak?? bo tak mi to wygląda, oraz po podstawieniu do tego wzorku tych macierzy ma mi wyjść moja funkcja tak??

i mam jeszcze taki przykład:

f(x1,x2) = 10x1+25x2-10x1^2 -4x1x2-x2^2
to macierze będą wyglądać

H = [-20 -4; -4 -2] f=[10; 25] x=[x1;x2]
tak to ma być??

dodanie znaczników <code> - fp

0

czyli to 1/2 wyciągamy tylko dla wartości które są przy x z kwadratem tak

Nie. Co ty miałes z algebry? o_O Umiesz ty mnożyć macierze? Przecież skoro masz taką macierz symetryczną to wyrazy na przekątnej (to są te z kwadratami) będą mnożone tylko raz a wyrazy pozostałe będą niejako policzone podwójnie bo występują w macierzy w dwóch miejscach. Stąd w normalnej sytuacji wszystkie wyrazy bez kwadratów miałbyś w macierzy podzielone przez 2. Ale oni uznali że wygodniej będzie wyciągnąć tą 1/2 przed macierz, ale to oznacza że trzeba wyrazy na przekątnej przemnożyć przez 2 żeby po pomnożeniu przez 1/2 się zgadzały.

Jeśli chodzi o twoje obliczenia to tak, teraz jest ok.

0

chyba już rozumiem. to wróćmy jeszcze do zadania które podałem wcześniej:
zysk wyrażony jest fubkcją

f(x1,x2)=15x1+30x2 +4x1x2-2x12-4x22

x1- produkt pierwszy x2 produkt drugi
koszt produkcji to : f(x1,x2) = 10x1 + 20x2 i nie może przekraczać 300

pisze taki kod

H = [-4 4; 4 -8]
f = [15; 30]
A = [10 20]
b = [300]
lb = [0; 0]
[x fval] = quadprog(H,f,A,b,[],[],lb,[])

ale wychodzi tylko zero, i nie wiem czy dobrze robię te ograniczenia kosztu produkcji.
Oraz z tego co jest na stronie, w opisie quadprog to nie ruzmiem czym jest aeq i beq

dodanie znacznika <code class="matlab"> - fp

1 użytkowników online, w tym zalogowanych: 0, gości: 1