Metoda SimpleksMetoda Simpleks Jak wiadomo, problem PL z dowolną liczbą zmiennych można...

14
Metoda Simpleks Jak wiadomo, problem PL z dowolną liczbą zmiennych można rozwiązać wyznaczając wszystkie wierzchołkowe punkty wielościanu wypukłego, a następnie porównując wartości funkcji celu w tych punktach wierzchołkowych. Jednak w związku z wielością punktów wierzchołkowych metoda przeszukania wszystkich punktów w celu znalezienia punktu optymalnego jest nieefektywna obliczeniowo. Istota metody Simpleks sprowadza się do tego, że jeżeli znany jest jakikolwiek wierzchołkowy punkt i wartość funkcji celu w tym punkcie, to wszystkie punkty wierzchołkowe, w których funkcja celu przyjmuje wartości mniejsze, są odrzucane.

Transcript of Metoda SimpleksMetoda Simpleks Jak wiadomo, problem PL z dowolną liczbą zmiennych można...

Page 1: Metoda SimpleksMetoda Simpleks Jak wiadomo, problem PL z dowolną liczbą zmiennych można rozwiązać wyznaczając wszystkie wierzchołkowe punkty wielościanu wypukłego, a następnie

Metoda Simpleks

Jak wiadomo, problem PL z dowolną liczbą zmiennych można

rozwiązać wyznaczając wszystkie wierzchołkowe punkty

wielościanu wypukłego, a następnie porównując wartości funkcji

celu w tych punktach wierzchołkowych. Jednak w związku z

wielością punktów wierzchołkowych metoda przeszukania

wszystkich punktów w celu znalezienia punktu optymalnego jest

nieefektywna obliczeniowo.

Istota metody Simpleks sprowadza się do tego, że jeżeli znany jest

jakikolwiek wierzchołkowy punkt i wartość funkcji celu w tym

punkcie, to wszystkie punkty wierzchołkowe, w których funkcja

celu przyjmuje wartości mniejsze, są odrzucane.

Page 2: Metoda SimpleksMetoda Simpleks Jak wiadomo, problem PL z dowolną liczbą zmiennych można rozwiązać wyznaczając wszystkie wierzchołkowe punkty wielościanu wypukłego, a następnie

Kolejny krok iteracji polega na tym, że przechodzimy do

następnego wierzchołka, znajdującego się na jednej krawędzi z

odnalezionym już punktem, w którym funkcja celu osiąga lepszą

wartość. Ogólna idea metody polega więc na odwiedzaniu

kolejnych punktów wierzchołkowych w taki sposób, aby w każdym

kroku poprawić wartość funkcji celu. Metoda zatrzymuje się gdy

dalsza poprawa nie jest już możliwa. Można w ten sposób

utworzyć ciąg rozwiązań dopuszczalnych bazowych zbieżny do

rozwiązania optymalnego (o ile istnieje).

Punktem wyjścia do metody Simpleks jest postać standardowa

problemu PL. Autorem metody jest George Bernard Dantzig (1914

– 2005), który opracował ją w końcu lat 40-tych XX wieku. Nazwa

metody pochodzi od simpleksu, figury wypukłej będącej

uogólnieniem trójkąta na wiele wymiarów.

Page 3: Metoda SimpleksMetoda Simpleks Jak wiadomo, problem PL z dowolną liczbą zmiennych można rozwiązać wyznaczając wszystkie wierzchołkowe punkty wielościanu wypukłego, a następnie

Metoda korzysta z tablic przekształceń simpleksowych. Każdej

iteracji odpowiada jedna tablica, a danej tablicy odpowiada

bieżące rozwiązanie dopuszczalne bazowe.

Tablica przekształceń simpleksowych:

𝑐1 𝑐𝑙 𝑐𝑚 𝑐𝑘 𝑐𝑛

Baza 𝒄𝐵 𝒃 𝑥1 … 𝑥𝑙 … 𝑥𝑚 … 𝑥𝑘 … 𝑥𝑛

𝑥𝑖 𝑐𝑖𝐵 𝑏𝑖 𝑎11 𝑎1𝑙 𝑎1𝑚 𝑎1𝑘 𝑎1𝑛

𝑥𝑙 𝑐𝑙𝐵 𝑏𝑙 𝑎𝑙1 𝑎𝑙𝑙 𝑎𝑙𝑚 𝑎𝑙𝑘 𝑎𝑙𝑛

𝑥𝑚 𝑐𝑚𝐵 𝑏𝑚 𝑎𝑚1 𝑎𝑚𝑙 𝑎𝑚𝑚 𝑎𝑚𝑘 𝑎𝑚𝑛

wiersz

wskaźnikowy

𝑧 𝑧1 − 𝑐1 𝑧𝑙 − 𝑐𝑙 𝑧𝑚 − 𝑐𝑚 𝑧𝑘 − 𝑐𝑘 𝑧𝑛 − 𝑐𝑛

Page 4: Metoda SimpleksMetoda Simpleks Jak wiadomo, problem PL z dowolną liczbą zmiennych można rozwiązać wyznaczając wszystkie wierzchołkowe punkty wielościanu wypukłego, a następnie

ALGORYTM SIMPLEKS

1. Sprawdzić, czy istnieje takie 𝑗, że 𝑧𝑗 − 𝑐𝑗 < 0.

Jeśli NIE, to bieżące rozwiązanie dopuszczalne bazowe jest

optymalne i STOP. W przeciwnym wypadku przejść do punktu 2.

2. (Kryterium wejścia) Wybrać 𝑘 takie, że:

𝑧𝑘 − 𝑐𝑘 = min𝑗:(𝑧𝑗−𝑐𝑗)<0

{𝑧𝑗 − 𝑐𝑗} , 𝑗 = 1, … , 𝑛

wektor 𝒂𝑘 wchodzi do kolejnej bazy.

3. (Kryterium wyjścia) Wybrać 𝑙 takie, że:

𝑏𝑙

𝑎𝑙𝑘= min

𝑖:𝑎𝑖𝑘>0{

𝑏𝑖

𝑎𝑖𝑘} , 𝑖 = 1, … , 𝑚

wektor 𝒂𝑙 będzie wychodził z bazy.

Jeśli 𝑎𝑖𝑘 > 0 nie istnieje, tzn. ⋁ 𝑎𝑖𝑘 ≤ 0𝑖∈{1,…,𝑚} , to problem ma

rozwiązanie optymalne nieskończone i STOP.

Page 5: Metoda SimpleksMetoda Simpleks Jak wiadomo, problem PL z dowolną liczbą zmiennych można rozwiązać wyznaczając wszystkie wierzchołkowe punkty wielościanu wypukłego, a następnie

4. Wyrazić wektory niebazowe jako kombinacje liniowe wektorów

nowej bazy, stosując metodę eliminacji współczynników

Gaussa-Jordana:

𝑎𝑙𝑗′ =

𝑎𝑙𝑗

𝑎𝑙𝑘 , 𝑗 = 1, … , 𝑛

𝑏𝑙′ =

𝑏𝑙

𝑎𝑙𝑘

𝑎𝑖𝑗′ = 𝑎𝑖𝑗 −

𝑎𝑙𝑗 ∙ 𝑎𝑖𝑘

𝑎𝑙𝑘 , 𝑖 ≠ 𝑙, 𝑗 = 1, … , 𝑛

𝑏𝑖′ = 𝑏𝑖 −

𝑏𝑙 ∙ 𝑎𝑖𝑘

𝑎𝑙𝑘, 𝑖 ≠ 𝑙

Page 6: Metoda SimpleksMetoda Simpleks Jak wiadomo, problem PL z dowolną liczbą zmiennych można rozwiązać wyznaczając wszystkie wierzchołkowe punkty wielościanu wypukłego, a następnie

Obliczyć:

𝑧𝑗 − 𝑐𝑗: 𝑧𝑗 = ∑ 𝑐𝑖𝐵𝑎𝑖𝑗 ,

𝑚

𝑖=1

𝑗 = 1, … , 𝑛

𝑧 = ∑ 𝑐𝑖𝐵𝑏𝑖

𝑚

𝑖=1

i wrócić do punktu 1.

Page 7: Metoda SimpleksMetoda Simpleks Jak wiadomo, problem PL z dowolną liczbą zmiennych można rozwiązać wyznaczając wszystkie wierzchołkowe punkty wielościanu wypukłego, a następnie

Jak znaleźć początkowe rozwiązanie dopuszczalne bazowe ?

Przedstawmy macierz ograniczeń 𝑨 w postaci: 𝑨 = [𝑩, 𝑷], gdzie:

𝑩[m x m] – baza zbioru kolumn macierzy 𝑨, 𝑷[(n–m) x m] – zbiór

pozostałych kolumn.

Z definicji rozwiązania bazowego wynika, że 𝒙𝐵 = 𝑩−1 ∙ 𝒃.

Jeżeli przyjąć, że 𝑩 = 𝑰, gdzie 𝑰 − macierz jednostkowa stopnia m,

to 𝑩−1 = 𝑰 i stąd: 𝒙𝐵 = 𝒃.

Wniosek

Jeśli w macierzy 𝑨 uda się wyróżnić podmacierz jednostkową

stopnia m, to rozwiązanie dopuszczalne bazowe początkowe jest po

prostu równe wektorowi stałych 𝒃 w układzie ograniczeń 𝑨𝒙 = 𝒃.

Page 8: Metoda SimpleksMetoda Simpleks Jak wiadomo, problem PL z dowolną liczbą zmiennych można rozwiązać wyznaczając wszystkie wierzchołkowe punkty wielościanu wypukłego, a następnie

Jak zapewnić istnienie podmacierzy jednostkowej stopnia m w

zbiorze kolumn macierzy 𝑨 ?

1. wykorzystać wektory jednostkowe oryginalnie istniejące w

macierzy 𝑨 (jeśli takie występują)

2. wykorzystać wektory jednostkowe odpowiadające zmiennym

osłabiającym wprowadzonym ze współczynnikiem +1

(ograniczenie typu ≤)

3. wprowadzić zmienne sztuczne (metoda sztucznej bazy).

Dla rozwiązania początkowego 𝒙0 = 𝒃 wartość 𝑧 w tablicy

simpleksów (𝑧 = ∑ 𝑐𝑖𝐵𝑏𝑖

𝑚𝑖=1 ) jest początkową wartością funkcji celu

odpowiadającą początkowemu rozwiązaniu dopuszczalnemu

bazowemu 𝒙0, a więc startowemu punktowi wierzchołkowemu w

przestrzeni 𝑅𝑛 o współrzędnych [𝒙0

𝟎].

Page 9: Metoda SimpleksMetoda Simpleks Jak wiadomo, problem PL z dowolną liczbą zmiennych można rozwiązać wyznaczając wszystkie wierzchołkowe punkty wielościanu wypukłego, a następnie

Przykład

Rozwiązać problem PL:

min 𝑧 = −5𝑥1 − 2𝑥2

p. o. − 2𝑥1 + 𝑥2 ≥ −3

𝑥1 + 4𝑥2 ≤ 6

𝑥1, 𝑥2 ≥ 0

Postać standardowa:

max − 𝑧 = 5𝑥1 + 2𝑥2

p. o. 2𝑥1 − 𝑥2 ≤ 3

𝑥1 + 4𝑥2 ≤ 6

𝑥1, 𝑥2 ≥ 0

Page 10: Metoda SimpleksMetoda Simpleks Jak wiadomo, problem PL z dowolną liczbą zmiennych można rozwiązać wyznaczając wszystkie wierzchołkowe punkty wielościanu wypukłego, a następnie

max − 𝑧 = 5𝑥1 + 2𝑥2

p. o. 2𝑥1 − 𝑥2 + 𝑠1 = 3

𝑥1 + 4𝑥2 + 𝑠2 = 6

𝑥1, 𝑥2, 𝑠1, 𝑠2 ≥ 0

𝑨 = [2 −1 1 01 4 0 1

]

fragment macierzy 𝑨 (zaznaczony): [… …… …

1 00 1

] jest macierzą

jednostkową stopnia m = 2 utworzoną z wektorów 𝒂3 i 𝒂4.

𝒃 = [36

]

𝒄T = [5 2 0 0]

Page 11: Metoda SimpleksMetoda Simpleks Jak wiadomo, problem PL z dowolną liczbą zmiennych można rozwiązać wyznaczając wszystkie wierzchołkowe punkty wielościanu wypukłego, a następnie

Tworzymy tablicę simpleks:

Baza 𝒄𝑩 𝒃 5 2 0 0

𝑥1 𝑥2 𝑠1 𝑠2

𝑠1 0 3 2 -1 1 0

𝑠2 0 6 1 4 0 1

0 -5 -2 0 0

k. zielony – wektor c, niebieski – wektor b, czerwony – macierz 𝑨

wektory bazowe zawsze tworzą macierz jednostkową

dla wektorów bazowych wartość w wierszu wskaźnikowym zawsze

wynosi zero

na przecięciu wektora wchodzącego i wychodzącego znajduje się

tzw. element centralny

Page 12: Metoda SimpleksMetoda Simpleks Jak wiadomo, problem PL z dowolną liczbą zmiennych można rozwiązać wyznaczając wszystkie wierzchołkowe punkty wielościanu wypukłego, a następnie

Tablica 2:

Baza 𝒄𝑩 𝒃 5 2 0 0

𝑥1 𝑥2 𝑠1 𝑠2

𝑥1 5 3/2 1 -1/2 1/2 0

𝑠2 0 9/2 0 9/2 -1/2 1

15/2 0 -9/2 5/2 0

< 0

Page 13: Metoda SimpleksMetoda Simpleks Jak wiadomo, problem PL z dowolną liczbą zmiennych można rozwiązać wyznaczając wszystkie wierzchołkowe punkty wielościanu wypukłego, a następnie

Tablica 3:

Baza 𝒄𝑩 𝒃 5 2 0 0

𝑥1 𝑥2 𝑠1 𝑠2

𝑥1 5 2 1 0 4/9 1/9

𝑥2 2 1 0 1 -1/9 2/9

12 0 0 2 1

≥0 STOP

𝑥1𝑏1 : 3

2−

92

(−12

)

92

= 2

𝑥1𝑠1 : 1

2−

(−12

) (−12

)

92

=1

2−

1

4∙

2

9=

8

18=

4

9

Page 14: Metoda SimpleksMetoda Simpleks Jak wiadomo, problem PL z dowolną liczbą zmiennych można rozwiązać wyznaczając wszystkie wierzchołkowe punkty wielościanu wypukłego, a następnie

𝑥1𝑠2: 0 −1 (−

12

)

92

=1

9

wiersz wskaźnikowy:

𝑠1: 5 ∙4

9+ (2 ∙ (−

1

9)) − 0 =

20

9−

2

9=

18

9= 2

Wyniki odczytujemy z wektora 𝒃:

𝑥1∗ = 2

𝑥2∗ = 1

𝑠1∗ = 𝑠2

∗ = 0

−𝑧∗ = 12

𝑧∗ = −12