Next: Ile jest rozwiązań optymalnych?
Up: Szczegóły metody
Previous: Czy simpleks może się
  Spis rzeczy
  Indeks
Zacznijmy od przykładu.
Przykład 3.4
Rozważmy słownik
(3.25) |
|
Rozwiązaniem bazowym tego słownika jest
.
Zmienną wchodzącą będzie
, zaś zmienną wychodzącą może być
lub
. Wybierzmy na przykład
. Nowym słownikiem będzie:
(3.26) |
|
Zauważmy więc, że na naszej operacji zamiany słownika nic nie zyskaliśmy
w tym sensie, że wartość
nie wzrosła.
Sytuacja w której zastąpienie jednej ze zmiennych bazowych zmienną niebazową
według podanych przez nas reguł nie spowoduje zwiększenia wartości
w rozwiązaniu bazowym może zajść tylko wtedy, gdy wartość jednej ze
zmiennych w rozwiązaniu bazowym wynosi zero. W naszym przykładzie takimi zmiennymi
były i dla słownika () i i dla słownika ().
Definicja 3.3
Mówimy, że rozwiązanie bazowe słownika jest zdegenerowane jeżeli co
najmniej jedna zmienna bazowa w tym rozwiązaniu przyjmuje wartość zero.
Odpowiedni słownik także nazywamy zdegenerowanym.
Przykład 3.4 (cd)
Czytelnik zechce sprawdzić, że następnym (po (
)) słownikiem
będzie
a więc simpleks doprowadził do rozwiązania optymalnego PPl (
),
rozwiązaniem
optymalnym jest
,
,
.
Ponieważ przy przejściu ze słownika () do () rozwiązanie
nie polepszyło się (wartość w tych słownikach jest taka sama)
powstaje pytanie, czy może zaistnieć sytuacja w której po kilku zmianach
słownika algorytm wróci do słownika który był już rozważany?
Odpowiedź na to pytanie brzmi tak! Jest jasne, że jeśli konsekwentnie według
jakiejś reguły wybieramy zmienne wchodzące i wychodzące i na jeden i ten sam
słownik wpadamy dwa razy, wtedy
te same słowniki będą sie pojawiały cyklicznie (będziemy wtedy też mówić,
że algorytm zapętla się.
Zauważmy od razu, że taka sytuacja może się pojawić tylko wtedy gdy pojawi się
słownik zdegenerowany - jeśli nie, to w każdej iteracji rozwiązanie bazowe jest
inne, różni się od wszystkich poprzednich wartością chociażby.
W przykładzie oba słowniki () i () są zdegenerowane.
Czytelnik zechce sprawdzić, że przykład Chvátala [4] zaproponowany
poniżej jako ćwiczenie jest problemem PL w którym po kilku odpowiednio
przeprowadzonych iteracjach wracamy do wyjściowego słownika 3.1.
Z twierdzenia wynika w szczególności, że każde rozwiązanie bazowe
jest rozwiązaniem każdego innego słownika (nie tylko tego którego jest
rozwiązaniem bazowym). Stąd zaś,
że wszystkich możliwych rozwiązań bazowych dla PPL jest
tyle na ile sposobów można wybrać elementów (zmiennych bazowych)
spośród elementów (tyle jest wszystkich zmiennych), a więc
.
Tak więc słowników dla danego PPL jest skończona liczba
i jeśli w każdej iteracji otrzymujemy inny słownik, wtedy algorytm simpleks
musi nas doprowadzić do rozwiązania problemu w skończonej liczbie
iteracji (co najwyżej
).
Wykazaliśmy więc
twierdzenie:
Twierdzenie 3.2
Jeśli algorytm simpleks nie zapętla się
3.2, to rozwiązuje PPL w skończonej
liczbie iteracji. Co więcej, jeśli problem jest
niesprzeczny i ograniczony, to istnieje rozwiązanie bazowe które
jest równocześnie rozwiązaniem optymalnym.
Wśród metod unikania cykliczności elegancją
3.3
wyróżnia się reguła R.G. Blanda [2]
zwana także regułą najmniejszego indeksu.
Reguła Blanda.
- Wybierz jako zmienną wchodzącą tę zmienną która
- (i)
- ma dodatni współczynnik we wzorze na ,
- (ii)
- spośród wszystkich zmiennych o dodatnim współczynniku we wzorze
na ma najmniejszy indeks.
- Wybierz jako zmienną wychodzącą tę która
- (iii)
- powoduje najsilniejsze ograniczenie od góry dla zmiennej wchodzącej,
- (iv)
- spośród wszystkich kandydatów na zmienną wychodzącą (tj zmiennych
bazowych spełniających (iii)) ma najmniejszy indeks.
Regułę Blanda można podać nieco bardziej formalnie w sposób następujący.
Niech będzie dany słownik
(3.27) |
|
(w słowniku () jest zbiorem indeksów zmiennych bazowych).
- -
- Wybierz jako zmienną wchodzącą dla której
- (a)
-
- (b)
-
- -
- Wybierz jako zmienną wychodzącą dla której
- (a)
-
- (b)
-
- (c)
-
W porównaniu z metodą którą stosowaliśmy do tej pory różnica pojawia się
tylko w punkcie (ii) - stosujemy tę regułe zamiast wybierać zmienną
wchodzącą o największym
współczynniku (dodatnim) w funkcji celu.
Przykład 3.5
Dla słownika
postępując według reguły Blanda wybierzemy
jako zmienną
wchodzącą i
jako zmienną wychodzącą.
Twierdzenie 3.3 (Bland [
2])
Jeśli wybory zmiennych wchodzących i wychodzących w algorytmie
simpleks dokonywane są według reguły Blanda, to algorytm kończy
się po skończonej liczbie iteracji.
Idea dowodu twierdzenia Blanda zaczerpnięta jest z [4].
Dowód. Ze względu na twierdzenie wystarczy
wykazać, że jeżeli zmienne wchodząca i wychodząca będą
wybierane według reguły Blanda to nie może wystąpić
cykliczność .
Dla dowodu nie wprost przypuśćmy, że zmienne są wybierane
regułą Blanda, a jednak algorytm zapętla się.
to znaczy, że poczynając
od pewnego słownika w kolejnych iteracjach otrzymujemy
-elementowy ciąg słowników
taki,że
i . Oczywiście wszystkie słowniki
są wtedy zdegenerowane.
Zmienną będziemy nazywali błędną3.4 jeżeli dla pewnych słowników spośród
jest zmienną bazową a dla innych niebazową.
Przypuśćmy, że jest zmienną błędną o największym inteksie
. Niech będzie jednym ze słowników
,
takim, że jest zmienną bazową wychodzącą słownika i niech
będzie zmienną wchodzącą . Inaczej mówiąc: i są takie, że
- -
- jest zmienną bazową i nie jest zmienną bazową
słownika następnego,
- -
- jest zmienną niebazową słownika i bazową słownika
następnego.
Oznaczmy przez zbiór indeksów zmiennych bazowych słownika i
powiedzmy, że jest postaci
(3.28) |
|
Skoro
jest cyklem, tzn , musi istnieć
inny słownik, nazwijmy go taki, że jest zmienną
wchodzącą . Z tego samego powodu wartość zmiennej (funkcji
celu) w rozwiązaniu bazowym każdego słownika
jest taka sama. Tak więc wzór na w słowniku jest postaci
(3.29) |
|
przy czym dla , gdzie jest zbiorem indeksów
zmiennych bazowych słownika .
Na mocy twierdzenia , każde rozwiązanie słownika
jest także rozwiązaniem słownika . Jednym z rozwiązań
słownika jest, jak łatwo zauważyć:
- dla wszystkich zmiennych niebazowych , poza
(czyli dla
),
-
dla dowolnego .
Wstawiając to rozwiązanie do wzoru () otrzymamy
Stąd
dla każdego . Wobec dowolności mamy
(3.30) |
|
- -
- Z faktu, że jest zmienną wchodzącą słownika
wynika, że
- -
- Przypomnijmy, że jest błędną zmienną o
największym indeksie. Stąd oczywiście wynika, że
( jest także zmienną błędną).
- -
- Skoro nie jest zmienną wchodzącą w słowniku ,
, i wybór zmiennej wchodzącej następuje według
reguły Blanda, mamy .
Ze wzoru () wynika więc, że
(3.31) |
|
Oczywiście jest zmienną bazową w słowniku
(bo ) i zmienną niebazową w słowniku
(
, w przeciwnym przypadku nie
moglibyśmy mieć
).
jest więc zmienną błędną i wobec tego
. Co więcej: , bowiem
skoro jest zmienną wychodzącą a zmienną
wchodzącą słownika . Pamiętamy, że jest
zmienną wchodzącą słownika . Wobec tego
i w konsekwencji . Ostatecznie .
nie jest jednak zmienną wchodzącą słownika
(jest nią przecież , a właśnie wykazaliśmy,
że ), a ponieważ zmienną wchodzącą wybieramy
według reguły Blanda, musi być
.
Ze wzoru () mamy więc .
Z faktu, że jest błędną zmienną oraz, że
wartość w rozwiązaniu bazowym jest stale równa
dla wszystkich słowników wynika, że
. Tak więc była zmienną
która powinna, według reguły Blanda, być zmienną
wychodzącą ze słownika (). Ta sprzeczność
kończy dowód twierdzenia Blanda.
Next: Ile jest rozwiązań optymalnych?
Up: Szczegóły metody
Previous: Czy simpleks może się
  Spis rzeczy
  Indeks