Jedno z tych wystarczy, żeby punkt był optymalny. Jak
Transkrypt
Jedno z tych wystarczy, żeby punkt był optymalny. Jak
Jedno z tych wystarczy, żeby punkt był optymalny. Jak jedno z ograniczeń nie jest spełnione, to zawsze może być inne. *TERAZ PARĘ ZADAŃ Z JEDNEJ SZTAMPY (WARUNKI KUHNA-TUCKERA): TE WZORKI POWYŻEJ WARTO ZAPAMIĘTAĆ :) Ogólna postać 1szego) warunku KT. ∇f(x) + ∑i ∈ E λi*∇ci(x) + ∑ j∈ I λj*∇cj(x) = 0 W naszym przypadku ograniczenia nierównościowe dają nam ∇cj(x) = 1, zatem warunek jest: ∇f(x) + ∑i ∈ E λi*∇ci(x) + ∑ j∈ I λj = 0 Pozostałe warunki dla ograniczeń mieszanych: Co dla danej postaci ograniczeń nierównościowych daje nam: 2) x <= 0 3) ci(x)= 0 4) λi >= 0 5) λi*x = 0 W tym przypadku nie ma ograniczeń równościowych, zatem nie będzie składnika ∑i ∈ E λi*∇ci(x), natomiast ograniczenia nierównościowe ci(x) >= 0 są w złą stronę i trzeba je zamienić na -ci(x) <=0 Zatem mamy: ∇f(x) + ∑i ∈ E 0 + ∑ j∈ {1..m} -λj*∇cj(x) + ∑ j∈ {1..n} λj = 0 Reszta warunków: 2) -ci(x) <=0 2') x <= 0 3) 0 = 0 4) λi >= 0 5) -λici(x) = 0 5') λi*x = 0 W tym przypadku nie ma ograniczeń równościowych, zatem nie będzie składnika ∑i ∈ E λi*∇ci(x), natomiast ograniczenia nierównościowe x >= 0 są w złą stronę i trzeba je zamienić na -x <=0 Zatem mamy: ∇f(x) + ∑i ∈ E 0 + ∑ j∈ {1..m} λj*∇cj(x) + ∑ j∈ {1..n} -λj = 0 Reszta warunków: 2) ci(x) <=0 2') -x <= 0 3) 0 = 0 4) λi >= 0 5) λici(x) = 0 5') -λi*x = 0 Zadanie 5. Takie samo jak 3. (a) Generalnie trzeba zapisać konkretne warunki Kuhna-Tuckera ograniczeń (które są wektorowe!) dla tej funkcji i później rozpisać je do układu równań. W naszym zadaniu są same ograniczenia nierównościowe (kurwa do tego w złą stronę), więc zmieniamy znaki i przenosimy dziewiątkę: -(3-x1)3 + (x2 – 2) <= 0 -3x1 – x2 + 9 <= 0 Ogólny sztampowy pierwszy warunek: 1) ∇f(x) + ∑i ∈ E λi*∇ci(x) + ∑ j∈ I λj*∇cj(x) = 0. A w naszym przypadku: ∇f(x) + ∑ j∈ I λj*∇cj(x) = 0, co się rozpisuje się na: • 1 dla x1): 0 + -3(3-x1)2*(-1)*λ1 - 3*λ2 = 0 • 1 Dla x2): 1 + 1 * λ1 – 1 * λ2 = 0 OK. Pierwszy warunek rozpisany jest. Teraz jedziemy dalej: 2) ci(x) <=0 -----> 2 dla x1) -(3-x1)3 + (x2 – 2) <= 0 2 dla x2) -3x1 – x2 + 9 <= 0 3) λi >= 0 -----> λ1 >=0 ORAZ λ2 >= 0 4) λici(x) = 0 ----- > λ1*{ -(3-x1)3 + (x2 – 2) } = 0 ORAZ Mamy więc układ 4 równań: I) -3(3-x1)2 * (-1)*λ1 - 3*λ2 = 0 II) 1 + 1 * λ1 – 1 * λ2 = 0 III) λ1*{ -(3-x1)3 + (x2 – 2) } = 0 IV) λ2*{-3x1 – x2 + 9 } = 0 λ2*{-3x1 – x2 + 9 } = 0 W ogólnym przypadku λ zerujemy, jeżeli chcemy aby ograniczenie i-te było nieaktywne. W naszym przypadku nie jest to możliwe, gdyż wtedy punkt nie spełnia warunków Kuhna-Tuckera (II). Z tego wynika, że (III) i (IV) można podzielić obustronnie przez λ. Μamy zatem: III) -(3-x1)3 + (x2 – 2) = 0 IV) -3x1 – x2 + 9 = 0 I) (3-x1)2 *λ1 = λ2 II) 1 + λ1 = λ2 Rozwiązanie dla chętnych ;) Wychodzi: (x1,x2) = (2,3) ; (5,–6) Trzeba sprawdzić, które z tych rozwiązań spełnia ograniczenia nierównościowe. Zapewne tak jest. Dla tych punktów sprawdzamy wartość funkcji i patrzymy która jest mniejsza, więc ta będzie punktem optymalnym. (b) Napierdalasz wykres ograniczeń i zgadujesz, gdzie jest rozwiązanie (akurat tutaj to jest kretyńsko proste – funkcja celu = x2 więc szkoda czasu to rysować) (c) wnioski były na bieżąco Zadanie 7. Jest na takie samo kopyto jak 6-te. SZTAMPA DO ZADAŃ TEGO TYPU: Generalnie jak na POBO, ale jeżeli ograniczenia A: – <= to w dualnym λ >= 0 – >= to w dualnym λ <= 0 – == to λ są dowolne Jeżeli x są : – >= to w dualnym ograniczenia A >= – <= to w dualnym ograniczenia A <= – dowolne to w dualnym A równościowe Przykładowo, w naszym zadaniu: maxλ λ1 + 3λ2 3λ1 + 2λ1 >= 1 2λ1 + λ2 >= 1 λ dowolne Ogólny wzór: L(x,λ) = f(x) + suma ( λi∗ci ). Wzór ogólny Lagrange'a: LD(x,λ) = infx∈R L(x,λ) Ζadanie dualne to max LD(x,λ). Zadanie 10 to jeden chuj. Sformułowanie: maxλ λ1 + 3λ2 3λ1 + 2λ1 <= 1 2λ1 + λ2 <= 1 λ1,λ2 <= 0 ( znak taki jak ograniczenie x-a) (wynika z ograniczeń A >= 1 >= 3) maxλ λ1 + 3λ2 3λ1 + 2λ1 <= 1 2λ1 + λ2 <= 1 λ1 dowolne λ2 <= 0 ∇f(x) + λ1∗∇c1(x) = 0 ------- > 2x1 + x2 = 0 5x1 + 3x2 – 11 + λ1 ∗ 2 = 0 3x1 + 2x2 – 4 + λ1 = 0 Mamy 3 równania, 3 niewiadome. Napierdalamy. Powinno wyjść (3,-6). A = [2 ,1]; b = [0]; Macierz pochodnych: g(x) = [ 5x1 + 3x2 – 11 (pochodna po x1) , 3x1 + 2x2 – 4 ]; Macierz drugich pochodnych: G(x) = [fx1x1, fx1x2 ; fx2x1, fx2x2] = [5, 3 ; 3, 2]. V jest dowolne, tak aby powyższa definicja była spełniona. Najlepiej dobrać V = [1; 0]. [ AT V ] = [2, 1; 1, 0]. det ( AT V ) = -1. Odwracamy macierz AT V: [ AT V ]-1 = 1/det * [d, -b; -c, a]. (Jeżeli macierz początkowa [a, b ; c, d]). W naszym przypadku: [ AT V ]-1 = [0, 1; 1, -2] Stąd: S = [0;1] oraz Z = [1;-2] x = S*α + Z*z. Podstawiając to gówno do wzoru Ax = b dostajemy: A*S*α + A*Z*z = b = 0; Stąd wynika, że α = b = 0. (ZAWSZE BĘDZIE RÓWNE, ALE NIE ZAWSZE = 0) Τeraz przydadzą nam się te G. ZT * G * Z = 1. Ponieważ det (ZT * G * Z) > 0 zatem jest ograniczenie z dołu i liczymy dalej, gdyby nie było to skończylibyśmy obliczenia. Należy rozwiązać równanie: ZT * G * Z * z = -ZT * g(S*b) Po rozwiązaniu równania otrzymujemy z = 3. x = S* b + Z*z; I już. I to się równa = 0 + Z*3 = [3; -6]. I koniec. Ogólna postać: min x∈Rn { f(x) = ½ xTQx + tTx } p.o. aiTx >= bi i∈ I Po zamianie ograniczenia przyjmują postać: -x1 – x2 >= 3 2x1 + x2 >= 2 3x1 + 2x2 >= 4 ** METODA OGRANICZEŃ AKTYWNYCH ** g(x) = [x1 + x2 + 5 ; x1 + 2x2 ] G(x) = [1, 1 ; 1, 2] g(x0) = [8;7] A(x0) = { 1,2 } - aktywne ograniczenia dla punktu x0 Rozwiązujemy dodatkowe zadanie programowania liniowego: min { ½ δ T * G * δ + g(x0)T * δ } W naszym przypadku: min { ½ δ T * [1,1 ; 1,2 ] * δ + [8;7]T * δ } p.o. -δ1 - δ2 = 0 (pierwsze ogr., aktywne, zawsze przyrównuje się do zera, nie wiemy dlaczego) 2δ1 + δ2 = 0 (drugie ogr., aktywne, zawsze przyrównuje się do zera, nie wiemy dlaczego) Stąd wynika, że δ1 , δ2 = 0 zatem d0 = 0. Liczymy mnożniki Lagrange'a więc: g(x0) = [macierz wsp. ogr. 1] * λ1 + [macierz wsp. ogr. 2] * λ2. O to tu chodzi: [8;7] = [-1 ;-1] * λ1 + [2 ; 1] * λ2 Stąd : λ1 = −6, λ2 = 1. Ponieważ λ1 < 0, to wywalamy ograniczenie pierwsze. Co w efekcie daje nam A(x0) = {2}. Rozwiązujemy kolejne zadanie programowania liniowego: min { ½ δ T * [1,1 ; 1,2 ] * δ + [8;7]T * δ } p.o. 2δ1 + δ2 = 0 (pierwsze ograniczenie się wyjebało) Rozwiązujemy to zadanie metodą uogólnionej eliminacji. A = [2, 1], b = [0]. [ AT V ] = [2, 1; 1, 0]. det ( AT V ) = -1. Odwracamy macierz AT V: [ AT V ]-1 = [0, 1; 1, -2] Stąd: S = [0;1] oraz Z = [1;-2] δ = S*α + Z*z. Podstawiając to gówno do wzoru Aδ = b dostajemy: A*S*α + A*Z*z = b = 0; Stąd wynika, że α = b = 0. (ZAWSZE BĘDZIE RÓWNE, ALE NIE ZAWSZE = 0) Τeraz przydadzą nam się te G. ZT * G * Z = 5. Ponieważ det (ZT * G * Z) > 0 zatem jest ograniczenie z dołu i liczymy dalej, gdyby nie było to skończylibyśmy obliczenia. Należy rozwiązać równanie: ZT * G * Z * z = -ZT * g(S*b) Po rozwiązaniu równania otrzymujemy z = -1. δ = S* b + Z*z; I już. I to się równa = 0 + Z*(-1) = [-1; 2]. Ponieważ d0 = [-1;2] to musimy znaleźć krok α aby dotrzeć do ograniczeń. Dla ograniczenia 1 a1T = [-1,-1] a1T * d = -1 Dla ograniczenia 2 a2T = [2,1] a 2T * d = 0 Dla ograniczenia 3 a3T = [3,2] a 3T * d = 1 Ponieważ ograniczenie 2 ma postać 2x1 + x2 >= 4 zatem jedynym krokiem który przybliży nas do rozwiązania jest α = 1 x = x0 + α*d = [0;2] g(x) = [x1 + x2 + 5 ; x1 + 2x2 ] G(x) = [1, 1 ; 1, 2] g(x0) = [7;4] A(x0) = {2,3} Rozwiązujemy dodatkowe zadanie programowania liniowego: min { ½ δ T * G * δ + g(x0)T * δ } W naszym przypadku: min { ½ δ T * [1,1 ; 1,2 ] * δ + [7;4]T * δ } p.o. 2δ1 + δ2 = 0 3δ1 + 2δ2 = 0 d0 = 0, więc [7;4] = λ2 * [2;1] + λ3 * [3;2], stąd λ2 = 2 i λ3 = 1 Minimum z λ2 , λ3 jest > 0 zatem koniec. x = x0 = [0;2] – punkt optymalny. * WZÓR DO ZADAŃ 20+: min f(x) = { f(x) + µ * a^(x) } a^(x) = Σ i∈E(ci(x))p + Σ i∈Ι |max[0, (ci(x))p]| 30 I 2007