Programowanie liniowe – metoda sympleks
Mirosław Sobolewski
Wydział Matematyki, Informatyki i Mechaniki UW
13. wykład z algebry liniowej Warszawa, stycze ´n 2018
Mirosław Sobolewski (UW) Warszawa, 2018 1 / 12
Metoda sympleks
Twórca– George Dantzig, USA 1947 rok
Cel: rozwi ˛azywanie zadania programowania liniowego okre ´slonego w postaci standardowej
f (x1, . . . ,xn) =c1x1+ · · · +cnxn→ min (f –funkcja celu) przy warunkach
U :
a11x1+ · · · +a1nxn =b1 ... . .. ... ... am1xm1+ · · · +amnxn =bm
, x1≥ 0, . . . , xn≥ 0, gdzie bi ≥ 0 dla i = 1, . . . , m. W skrócie :
Min{c>· x : Ax = b, x ≥ 0}, gdzie A =
a11 · · · a1n ... . .. ... am1 · · · amn
,
b1 ..
x1 ..
c1 ..
Schemat przeszukiwania: Zaczynaj ˛ac od pewnego rozwi ˛azania bazowego dopuszczalnego, przechodzimy kolejno do innych rozwi ˛aza ´n rozwi ˛aza ´n bazowych dopuszczalnych, w ka˙zdym kroku zast ˛epuj ˛ac jeden element zbioru bazowego innym, dopóki da si ˛e pomniejsza´c warto´s´c funkcji celu f .
Interpretacja geometryczna: Rozwi ˛azania bazowe dopuszczalne = wierzchołki zbioru dopuszczalnego X .
Wymiana jednego elementu w zbiorze bazowym = przej´scie do s ˛asiedniego ( tzn. poł ˛aczonego kraw ˛edzi ˛a) wierzchołka X . W˛edrówk˛e po wierzchołkach ko ´nczymy w wierzchołku ”najni˙zszym” w sensie funkcji celu f .
Mirosław Sobolewski (UW) Warszawa, 2018 3 / 12
Przykład (Szczegóły metody sympleks ) Szukamy najwi ˛ekszej warto´sci funkcji
g(x1,x2,x3,x4,x5) =16x1+10x2+x3, przy ograniczeniach : x1+x3=2
x2+x4=3 x1+x2+x5=4 x1≥ 0, . . . , x5≥ 0
Sprowadzamy problem do postaci standardowej zast ˛epuj ˛ac maksymalizacj ˛e funkcji g minimalizacj ˛a funkcji
f (x1,x2,x3,x4,x5) = −16x1− 10x2− x3. Inaczej mo˙zna to zadanie zapisa´c w postaci f (x1,x2,x3,x4,x5) = −16x1− 10x2− x3→ min przy
Ax = b, x ≥0, gdzie A =
1 0 1 0 0 0 1 0 1 0 1 1 0 0 1
,x =
x1 x2 x3 x
,b =
2 3 4
Przykład (cd)
Macierz ˛a rozszerzon ˛a układu jest:
1 0 1 0 0 2 0 1 0 1 0 3 1 1 0 0 1 4
Widzimy st ˛ad, ˙ze wybieraj ˛ac jako zmienne bazowe (zale˙zne) x3,x4,x5mamy rozwi ˛azanie ogólne postaci:
U1:
x3=2 −x1 x4=3 −x2 x5=4 −x1 −x2
Pocz ˛atkowym wektorem bazowym dopuszczalnym jest
(x1,x2,x3,x4,x5) = (0, 0, 2, 3, 4), zbiór bazowy to {3, 4, 5}. Wyra˙zamy funkcj ˛e celu f przy pomocy zmiennych wolnych x1,x2:
f (x ) = −16x1−10x2−x3= −16x1−10x2−(2−x1) = −2−15x1−10x2. Dla pocz ˛atkowego rozwi ˛azania bazowego dopuszczalnego warto´s´c f wynosi −2 (bo x1=x2=0). Czy mo˙zemy j ˛a polepszy´c (tj.
pomniejszy´c)? Tak, powi ˛ekszaj ˛ac x1albo x2.
Mirosław Sobolewski (UW) Warszawa, 2018 5 / 12
Przykład (cd)
Wybieramy wi ˛ec x1jako now ˛a zmienn ˛a bazow ˛a (kierujemy si ˛e tym, ˙ze współczynnik przy x1w zapisie f jest ”najbardziej” ujemny - to reguła heurystyczna(=intuicyjna), a nie ´sci´sle uzasadniona).
Musimy równie˙z okre´sli´c, która ze zmiennych x3,x4,x5przestanie by´c zmienn ˛a bazow ˛a. Wybór jest zdeterminowany przez to, by nowe rozwi ˛azanie bazowe było dopuszczalne (tzn. nie pojawiły si ˛e ujemne warto´sci zmiennych).
Reguła jest nast ˛epuj ˛aca: spo´sród dotychczasowych zmiennych bazowych (=zale˙znych) wybieramy t ˛e, w której dotychczasowym przedstawieniu jako funkcji zmiennych wolnych współczynnik a przy nowej zmiennej bazowej jest ujemny i iloraz wyrazu stałego b przez ten współczynnik, czyli b/a jest najwi ˛ekszy(=jego moduł jest najmniejszy). Czyli: dla x3iloraz b/a = 2/ − 1, za´s dla x5iloraz b/a = 4/ − 1, wybieramy wi ˛ec x3– przestanie ona by´c zmienn ˛a bazow ˛a (prosz ˛e sprawdzi´c, ˙ze wybór x5da rozwi ˛azanie bazowe niedopuszczalne).
Przykład (cd)
Wybieramy wi ˛ec x1jako now ˛a zmienn ˛a bazow ˛a (kierujemy si ˛e tym, ˙ze współczynnik przy x1w zapisie f jest ”najbardziej” ujemny - to reguła heurystyczna(=intuicyjna), a nie ´sci´sle uzasadniona).
Musimy równie˙z okre´sli´c, która ze zmiennych x3,x4,x5przestanie by´c zmienn ˛a bazow ˛a. Wybór jest zdeterminowany przez to, by nowe rozwi ˛azanie bazowe było dopuszczalne (tzn. nie pojawiły si ˛e ujemne warto´sci zmiennych).
Reguła jest nast ˛epuj ˛aca: spo´sród dotychczasowych zmiennych bazowych (=zale˙znych) wybieramy t ˛e, w której dotychczasowym przedstawieniu jako funkcji zmiennych wolnych współczynnik a przy nowej zmiennej bazowej jest ujemny i iloraz wyrazu stałego b przez ten współczynnik, czyli b/a jest najwi ˛ekszy(=jego moduł jest najmniejszy). Czyli: dla x3iloraz b/a = 2/ − 1, za´s dla x5iloraz b/a = 4/ − 1, wybieramy wi ˛ec x3– przestanie ona by´c zmienn ˛a bazow ˛a (prosz ˛e sprawdzi´c, ˙ze wybór x5da rozwi ˛azanie bazowe niedopuszczalne).
Mirosław Sobolewski (UW) Warszawa, 2018 6 / 12
Przykład (cd)
Wybieramy wi ˛ec x1jako now ˛a zmienn ˛a bazow ˛a (kierujemy si ˛e tym, ˙ze współczynnik przy x1w zapisie f jest ”najbardziej” ujemny - to reguła heurystyczna(=intuicyjna), a nie ´sci´sle uzasadniona).
Musimy równie˙z okre´sli´c, która ze zmiennych x3,x4,x5przestanie by´c zmienn ˛a bazow ˛a. Wybór jest zdeterminowany przez to, by nowe rozwi ˛azanie bazowe było dopuszczalne (tzn. nie pojawiły si ˛e ujemne warto´sci zmiennych).
Reguła jest nast ˛epuj ˛aca: spo´sród dotychczasowych zmiennych bazowych (=zale˙znych) wybieramy t ˛e, w której dotychczasowym przedstawieniu jako funkcji zmiennych wolnych współczynnik a przy nowej zmiennej bazowej jest ujemny i iloraz wyrazu stałego b przez ten współczynnik, czyli b/a jest najwi ˛ekszy(=jego moduł jest najmniejszy).
Czyli: dla x3iloraz b/a = 2/ − 1, za´s dla x5iloraz b/a = 4/ − 1, wybieramy wi ˛ec x3– przestanie ona by´c zmienn ˛a bazow ˛a (prosz ˛e sprawdzi´c, ˙ze wybór x5da rozwi ˛azanie bazowe niedopuszczalne).
Przykład (cd)
Wybieramy wi ˛ec x1jako now ˛a zmienn ˛a bazow ˛a (kierujemy si ˛e tym, ˙ze współczynnik przy x1w zapisie f jest ”najbardziej” ujemny - to reguła heurystyczna(=intuicyjna), a nie ´sci´sle uzasadniona).
Musimy równie˙z okre´sli´c, która ze zmiennych x3,x4,x5przestanie by´c zmienn ˛a bazow ˛a. Wybór jest zdeterminowany przez to, by nowe rozwi ˛azanie bazowe było dopuszczalne (tzn. nie pojawiły si ˛e ujemne warto´sci zmiennych).
Reguła jest nast ˛epuj ˛aca: spo´sród dotychczasowych zmiennych bazowych (=zale˙znych) wybieramy t ˛e, w której dotychczasowym przedstawieniu jako funkcji zmiennych wolnych współczynnik a przy nowej zmiennej bazowej jest ujemny i iloraz wyrazu stałego b przez ten współczynnik, czyli b/a jest najwi ˛ekszy(=jego moduł jest najmniejszy).
Czyli: dla x3iloraz b/a = 2/ − 1, za´s dla x5iloraz b/a = 4/ − 1, wybieramy wi ˛ec x3– przestanie ona by´c zmienn ˛a bazow ˛a (prosz ˛e sprawdzi´c, ˙ze wybór x5da rozwi ˛azanie bazowe niedopuszczalne).
Mirosław Sobolewski (UW) Warszawa, 2018 6 / 12
Przykład
Uwaga: je´sli wszystkie współczynniki przy nowej zmiennej bazowej s ˛a nieujemne, to oznacza to, ˙ze funkcja celu f jest na zbiorze rozwi ˛aza ´n dopuszczalnych nieograniczona z dołu – osi ˛aga dowolnie niskie ujemne rozwi ˛azania.
Nowy zbiór bazowy to {1, 4, 5} i odpowiadaj ˛ace mu rozwi ˛azanie ogólne to:
U2:
x1=2 −x3 x4=3 −x2 x5=2 −x2 +x3
Mo˙zemy zapisa´c funkcj ˛e celu
f (x ) = −2 − 15x1− 10x2= −2 − 15(2 − x3) −10x2= −32 − 10x2+15x3 Mamy dopuszczalne rozwi ˛azanie bazowe (2, 0, 0, 3, 2), w którym f osi ˛aga −32. Mo˙zemy zmniejszy´c warto´s´c f zwi ˛ekszaj ˛ac x2. B ˛edzie ono, wi ˛ec now ˛a zmienn ˛a bazow ˛a. Poniewa˙z 3/ − 1 < 2/ − 1, zatem x5
przestanie by´c zmienn ˛a bazow ˛a.
Przykład
Uwaga: je´sli wszystkie współczynniki przy nowej zmiennej bazowej s ˛a nieujemne, to oznacza to, ˙ze funkcja celu f jest na zbiorze rozwi ˛aza ´n dopuszczalnych nieograniczona z dołu – osi ˛aga dowolnie niskie ujemne rozwi ˛azania.
Nowy zbiór bazowy to {1, 4, 5} i odpowiadaj ˛ace mu rozwi ˛azanie ogólne to:
U2:
x1=2 −x3 x4=3 −x2 x5=2 −x2 +x3
Mo˙zemy zapisa´c funkcj ˛e celu
f (x ) = −2 − 15x1− 10x2= −2 − 15(2 − x3) −10x2= −32 − 10x2+15x3 Mamy dopuszczalne rozwi ˛azanie bazowe (2, 0, 0, 3, 2), w którym f osi ˛aga −32. Mo˙zemy zmniejszy´c warto´s´c f zwi ˛ekszaj ˛ac x2. B ˛edzie ono, wi ˛ec now ˛a zmienn ˛a bazow ˛a. Poniewa˙z 3/ − 1 < 2/ − 1, zatem x5
przestanie by´c zmienn ˛a bazow ˛a.
Mirosław Sobolewski (UW) Warszawa, 2018 7 / 12
Przykład
Nowy zbiór bazowy to {1, 2, 4}, za´s odpowiadaj ˛ace mu rozwi ˛azanie ogólne to
U3:
x1=2 −x3
x2=2 +x3− x5
x4=1 −x3 +x5 Mo˙zemy przedstawi´c
f (x ) = −32 − 10(2 − x5+x3) +15x3= −52 + 5x3+10x5. Poniewa˙z w zbiorze rozwi ˛aza ´n dopuszczalnych x3≥ 0, x5≥ 0 zatem f osi ˛aga warto´s´c najmniejsz ˛a = −52 dla x3=x5=0 czyli dla rozwi ˛azania bazowego dopuszczalnego (2, 2, 0, 1, 0). Zatem rozwi ˛azanie pierwotnego problemu to max g = − min f = 52
Znajdowanie pocz ˛ atkowego wektora bazowego dopuszczalnego
Mamy zbiór X opisany standardowo przez
Ax = b, x = [x1, . . . ,xn]> ≥ 0, gdzie A ∈ Mm×n,b ∈ Mm×1,b ≥0. Jak stwierdzi´c, ˙ze X jest niepusty, i je´sli tak jest jak znale´z´c wektor bazowy dopuszczalny?
Stosuje si ˛e tzw. metod ˛esztucznej bazy, wprowadzaj ˛ac dodatkowe zmienne, y1, . . . ,ym, macierz współczynników A przedłu˙zaj ˛ac o
macierz jednostkow ˛a Im. Tzn. macierz układu dla n + m zmiennych ma teraz posta´c [A|Im|b] ∈ Mm×(n+m+1)(R), z macierz ˛a współczynników A0 = [A|Im] ∈Mm×(n+m) oraz x0 = [x1, . . . ,xn,y1, . . . ,ym]>,i
rozwi ˛azujemy problem y1+ · · · +yn→ min przy warunkach A0x0 =b, x0 ≥ 0.
Ten problem ma zawsze rozwi ˛azanie.
Je´sli osi ˛agamy min = 0 to X 6= ∅, w przeciwnym wypadku, tzn. min > 0 mamy X = ∅.
Mirosław Sobolewski (UW) Warszawa, 2018 9 / 12
Znajdowanie pocz ˛ atkowego wektora bazowego dopuszczalnego
Mamy zbiór X opisany standardowo przez
Ax = b, x = [x1, . . . ,xn]> ≥ 0, gdzie A ∈ Mm×n,b ∈ Mm×1,b ≥0. Jak stwierdzi´c, ˙ze X jest niepusty, i je´sli tak jest jak znale´z´c wektor bazowy dopuszczalny?
Stosuje si ˛e tzw. metod ˛esztucznej bazy, wprowadzaj ˛ac dodatkowe zmienne, y1, . . . ,ym, macierz współczynników A przedłu˙zaj ˛ac o
macierz jednostkow ˛a Im. Tzn. macierz układu dla n + m zmiennych ma teraz posta´c [A|Im|b] ∈ Mm×(n+m+1)(R), z macierz ˛a współczynników A0 = [A|Im] ∈Mm×(n+m)oraz x0 = [x1, . . . ,xn,y1, . . . ,ym]>,i
rozwi ˛azujemy problem y1+ · · · +yn→ min przy warunkach A0x0 =b, x0 ≥ 0.
Ten problem ma zawsze rozwi ˛azanie.
Przykład
Zbiór X ⊂ R4opisany jest przez:
8x1+3x2− 5x3+x4=4 3x1+x2− 2x3− x4=1 x1,x2,x3,x4≥ 0
Wprowadzamy sztuczne zmienne y1,y2i funkcj ˛e celu f (x1, . . . ,x4,y1,y2) =y1+y2→ min przy warunkach 8x1+3x2− 5x3+x4+y1=4
3x1+x2− 2x3− x4+y2=1 x1, . . . ,x4≥ 0, y1,y2≥ 0
y1,y2s ˛a pocz ˛atkowymi zmiennymi bazowymi (zale˙znymi)
y1=4 −8x1 −3x2 +5x3 −x4 y2=1 −3x1 −x2 +2x3 +x4
Wyra˙zamy f przez zmienne niezale˙zne: f = 5 − 11x1− 4x2+7x3.
Mirosław Sobolewski (UW) Warszawa, 2018 10 / 12
Przykład
Zbiór X ⊂ R4opisany jest przez:
8x1+3x2− 5x3+x4=4 3x1+x2− 2x3− x4=1 x1,x2,x3,x4≥ 0
Wprowadzamy sztuczne zmienne y1,y2i funkcj ˛e celu f (x1, . . . ,x4,y1,y2) =y1+y2→ min przy warunkach 8x1+3x2− 5x3+x4+y1=4
3x1+x2− 2x3− x4+y2=1 x1, . . . ,x4≥ 0, y1,y2≥ 0
y1,y2s ˛a pocz ˛atkowymi zmiennymi bazowymi (zale˙znymi)
y1=4 −8x1 −3x2 +5x3 −x4 y2=1 −3x1 −x2 +2x3 +x4
Wyra˙zamy f przez zmienne niezale˙zne: f = 5 − 11x1− 4x2+7x3.
Przykład
Zbiór X ⊂ R4opisany jest przez:
8x1+3x2− 5x3+x4=4 3x1+x2− 2x3− x4=1 x1,x2,x3,x4≥ 0
Wprowadzamy sztuczne zmienne y1,y2i funkcj ˛e celu f (x1, . . . ,x4,y1,y2) =y1+y2→ min przy warunkach 8x1+3x2− 5x3+x4+y1=4
3x1+x2− 2x3− x4+y2=1 x1, . . . ,x4≥ 0, y1,y2≥ 0
y1,y2s ˛a pocz ˛atkowymi zmiennymi bazowymi (zale˙znymi)
y1=4 −8x1 −3x2 +5x3 −x4 y2=1 −3x1 −x2 +2x3 +x4
Wyra˙zamy f przez zmienne niezale˙zne: f = 5 − 11x1− 4x2+7x3.
Mirosław Sobolewski (UW) Warszawa, 2018 10 / 12
Przykład
Zbiór X ⊂ R4opisany jest przez:
8x1+3x2− 5x3+x4=4 3x1+x2− 2x3− x4=1 x1,x2,x3,x4≥ 0
Wprowadzamy sztuczne zmienne y1,y2i funkcj ˛e celu f (x1, . . . ,x4,y1,y2) =y1+y2→ min przy warunkach 8x1+3x2− 5x3+x4+y1=4
3x1+x2− 2x3− x4+y2=1 x1, . . . ,x4≥ 0, y1,y2≥ 0
y1,y2s ˛a pocz ˛atkowymi zmiennymi bazowymi (zale˙znymi)
y1=4 −8x1 −3x2 +5x3 −x4
y =1 −3x −x +2x +x
Przykład
mo˙zemy zmniejszy´c f wybieraj ˛ac x2jako now ˛a zmienn ˛a bazow ˛a, natomiast y2przestanie by´c zmienna bazow ˛a.
x2=1 −3x1 +2x3 +x4 −y2
y1=1 +x1 −x3 −4x4 +3y2 Wyra˙zamy f przez nowe zmienne niezale˙zne:
f = 1 + x1− x3− 4x4+4y2
Mirosław Sobolewski (UW) Warszawa, 2018 11 / 12
Przykład
mo˙zemy zmniejszy´c f wybieraj ˛ac x2jako now ˛a zmienn ˛a bazow ˛a, natomiast y2przestanie by´c zmienna bazow ˛a.
x2=1 −3x1 +2x3 +x4 −y2
y1=1 +x1 −x3 −4x4 +3y2
Wyra˙zamy f przez nowe zmienne niezale˙zne: f = 1 + x1− x3− 4x4+4y2
Przykład
mo˙zemy zmniejszy´c f wybieraj ˛ac x2jako now ˛a zmienn ˛a bazow ˛a, natomiast y2przestanie by´c zmienna bazow ˛a.
x2=1 −3x1 +2x3 +x4 −y2
y1=1 +x1 −x3 −4x4 +3y2 Wyra˙zamy f przez nowe zmienne niezale˙zne:
f = 1 + x1− x3− 4x4+4y2
Mirosław Sobolewski (UW) Warszawa, 2018 11 / 12
Przykład
Jako now ˛a zmienn ˛a bazowa wprowadzamy x3natomiast y1staje si ˛e zmienn ˛a niebazow ˛a (woln ˛a):
x2=3 −x1 +2x3 −7x4 +2y1 +5y2 x3=1 +x1 −4x4 −y1 +3y2
Wyra˙zamy f przez nowe zmienne niezale˙zne: f = y1+y2
Otrzymali´smy minf = 0, zatem mamy niepusty X i nale˙zy do niego dopuszczalny punkt bazowy (x1,x2,x3,x4) = (0, 3, 1, 0).
Przykład
Jako now ˛a zmienn ˛a bazowa wprowadzamy x3natomiast y1staje si ˛e zmienn ˛a niebazow ˛a (woln ˛a):
x2=3 −x1 +2x3 −7x4 +2y1 +5y2 x3=1 +x1 −4x4 −y1 +3y2
Wyra˙zamy f przez nowe zmienne niezale˙zne: f = y1+y2
Otrzymali´smy minf = 0, zatem mamy niepusty X i nale˙zy do niego dopuszczalny punkt bazowy (x1,x2,x3,x4) = (0, 3, 1, 0).
Mirosław Sobolewski (UW) Warszawa, 2018 12 / 12
Przykład
Jako now ˛a zmienn ˛a bazowa wprowadzamy x3natomiast y1staje si ˛e zmienn ˛a niebazow ˛a (woln ˛a):
x2=3 −x1 +2x3 −7x4 +2y1 +5y2 x3=1 +x1 −4x4 −y1 +3y2
Wyra˙zamy f przez nowe zmienne niezale˙zne:
f = y1+y2
Otrzymali´smy minf = 0, zatem mamy niepusty X i nale˙zy do niego dopuszczalny punkt bazowy (x1,x2,x3,x4) = (0, 3, 1, 0).
Przykład
Jako now ˛a zmienn ˛a bazowa wprowadzamy x3natomiast y1staje si ˛e zmienn ˛a niebazow ˛a (woln ˛a):
x2=3 −x1 +2x3 −7x4 +2y1 +5y2 x3=1 +x1 −4x4 −y1 +3y2
Wyra˙zamy f przez nowe zmienne niezale˙zne:
f = y1+y2
Otrzymali´smy minf = 0, zatem mamy niepusty X i nale˙zy do niego dopuszczalny punkt bazowy (x1,x2,x3,x4) = (0, 3, 1, 0).
Mirosław Sobolewski (UW) Warszawa, 2018 12 / 12