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

Jak używać funkcji "quadprog" w Matlabie?
K1
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 6 lat
  • Postów:126
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.

edytowany 1x, ostatnio: Kosimazaki123
madmike
!Zmień temat na sensowny, opisujący problem - inaczej poleci do kosza...
flowCRANE
Ehh... Zmieniłem temat wątku na normalny, stary wyglądał jak zlepek słów kluczowych; Jakby nie można napisać normalnym zdaniem co i jak...
bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
1

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


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
edytowany 1x, ostatnio: bogdans
K1
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 6 lat
  • Postów:126
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

Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
1

"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 1x, ostatnio: Shalom
Madaoo
Uprzedziłeś Mnie i z resztą w linku co podał @Kosimazaki123, wytłumaczyli jak robia macierze H f x
bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
0

H i f to Ty musisz zdefiniować.


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
K1
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 6 lat
  • Postów:126
0

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

edytowany 1x, ostatnio: Kosimazaki123
bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
0

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


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
edytowany 2x, ostatnio: bogdans
Shalom
Tam nie jest napisane w jaki sposób uzyskuje się macierz formy kwadratowej a on chyba o to właśnie pyta ;)
bogdans
A co to jest H = [1 -1; -1 2]; ?
Shalom
Widzisz różnicę między podaniem rozwiązania a napisaniem w jaki sposób tą macierz uzyskać? Fakt że nie jest to żadna wielka filozofia i właściwie od razu to widać, ale jednak najwyraźniej autor przespał edukację z matematyki ;)
bogdans
Widzę, ale jak nie opisał problemu, to nikt nie zgadnie jak powinna wyglądać macierz.
Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
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ć?

"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
K1
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 6 lat
  • Postów:126
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

Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
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


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 2x, ostatnio: Shalom
K1
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 6 lat
  • Postów:126
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??

edytowany 1x, ostatnio: Shalom
Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
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


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 4x, ostatnio: Shalom
flowCRANE
Produkujcie się dalej - jeden jego wątek już poleciał do kosza za trolowanie (i proszenie o gotowca); Jemu nie chce się uczyć, nie zna składni, instrukcji, nie chce nic sam zrobić; Ma zaliczenie i musi dostać odpowiedź, a najlepiej gotowca, bo go czas nagli;
bogdans
Pamiętam, że miał obiecanego bana, twierdził że się nie boi. bo ma jeszcze trzy IP w domu.
flowCRANE
Dokładnie - niewyparzony język i cwaniactwo zasługuje na bana; Zobaczymy jak się sprawy potoczą;
madmike
oj tam... ban tak od razu? może na spokojnie uda się i bez bana? :D
flowCRANE
No no, najpierw trzeba sobie zasłużyć, dlatego napisałem, że &quot; Zobaczymy jak się sprawy potoczą&quot;; Ale za jego odzywki w stylu &quot;A jeśli dostane bana to co mi szkodzi zrobić jeszcze jedno konto, zwłaszcza że w domu mam 3 łącza&quot; powinien dostać kilka dni wolnego;
K1
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 6 lat
  • Postów:126
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

edytowany 2x, ostatnio: Kosimazaki123
Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
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.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
K1
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 6 lat
  • Postów:126
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

Kopiuj
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

edytowany 1x, ostatnio: flowCRANE
Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.