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