zmienną wchodzącą o największym współczynniku we wzorze na ,
-
zmienną wychodzącą o najmniejszym indeksie spośród tych które dają
najostrzejsze ograniczenie od góry na zmienną wchodzącą (np pierwszą
zmienną wychodzącą będzie ).
Iteracje powtarzaj aż do pojawienia się ponownie słownika ().
Wśród metod unikania cykliczności elegancją 3.5 wyróżnia się reguła R.G. Blanda [1] zwana także regułą najmniejszego indeksu.
Reguła Blanda.
Wybierz jako zmienną wychodzą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.28)
(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 [1])
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 [3].
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ść (gonienie
w piętkę).
Dla dowodu nie wprost przypuśćmy, że zmienne są wybierane
regułą Blanda, a jednak algorytm goni w piętkę
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.6 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.29)
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.30)
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.31)
-
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.32)
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łedną 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:Cykliczność Previous:Cykliczność
  Contents