Next: Ćwiczenia
Up: Zredukowana metoda sympleksowa
Previous: Podsumowanie
  Spis rzeczy
  Indeks
Programowanie liniowe
w liczbach całkowitych
Bardzo często w zadaniach praktycznych jest tak, że jedynymi interesującymi
rozwiązaniami
problemów programowania matematycznego w ogólności,
a liniowego w szczególności, są
rozwiązania całkowite.
Dla przykładu, jeśli są zmiennymi decyzyjnymi,
a więc mogącymi przyjmowaćtości
lub , to najczęściej rozwiązania niecałkowite
nie mają żadnej sensownej interpretacji.
Przykład 5.2
W pewnym przedsiębiorstwie
osób ma wykonywać
czynności, przy czym:
- -
- każda osoba ma wykonywać jedną (i tylko jedną) czynność,
- -
- koszt przystosowania tej osoby do wykonywania
ej czynności wynosi .
Zadanie polega na przyporządkowaniu każdej z osób zadania w taki
sposób, by suma kosztów
była możliwie najmniejsza.
Połóżmy
Problem programowania liniowego jaki otrzymamy dla tego zadania
jest następujący.
Problem przydziału:
Okazuje się, że zadanie programowania liniowego w liczbach
całkowitych jest problemem
trudnym, któremu jest poświęcona bardzo obszerna literatura. Zainteresowanego
czytelnika odsyłam do rozdziału osiemnastego [19], w którym poza wielu
innymi rezultatami znajdzie twierdzenie mówiące, że jeśli
współczynniki macierzy
i wektora są wymierne, to problem
jest zupełny.
Ogólna postać programowania liniowego w liczbach całkowitych jest następująca:
(5.14) |
|
Przykład 5.3
Rozważmy PPL
(5.15) |
|
Na rysunku 5.3.1 przedstawiono interpretację geometryczną zadania (
).
Łatwo zauważyć, że rozwiązaniem optymalnym problemu
)
jest
, a więc punkt znajdujący sie wewnątrz zbioru rozwiązań
dopuszczalnych problemu powstałego z (
) przez usunięcie
założeń o całkowitości zmiennych. Taki punkt jest oczywiście nie do
wykrycia przez algorylm sympleks.
W dalszym ciągu zajmiemy się sytuacją w której problem programowania
liniowego w liczbach całkowitych ma rozwiązanie które można otrzymać
stosując metodę sympleks. W rozdziale okaże się, że z takimi
właśnie sytuacjami mamy do czynienia częściej niż mogłoby się, na
pierwszy rzut oka, wydawać.
Definicja 5.2
Mówimy, że macierz
jest
totalnie unimodularna,
jeżeli dla każdej podmacierzy kwadratowej
macierzy
zachodzi
.
Przykład 5.4
Z łatwością można sprawdzić, że macierz
jest totalnie unimodularna.
Z definicji macierzy unimodularnych wynika natychmiast, że jej współrzędne są równe
lub .
Udowodnimy następujące twierdzenie.
Twierdzenie 5.2
Niech będzie dany PPL
(5.16) |
|
gdzie
jest macierzą rzędu
i
.
Jeśli dla każdej macierzy bazowej
zachodzi
, to
-
,
- każde rozwiązanie bazowe jest całkowite.
Dowód. W podrozdziale widzieliśmy,
że ograniczenia w problemie ()
można zapisać w postaci
(5.17) |
|
gdzie i są pewnymi podmacierzami
macierzy , zaś
jest nieosobliwą macierzą kwadratową rzędu .
Jeśli oznaczymy wyrazy macierzy
przez
, to
gdzie
jest macierzą powstałą z
przez skreślenie tego wiersza
i tej kolumny. Jest więc zupełnie oczywiste, że
dla wszystkich
. W rozwiązaniu bazowym mamy
i
(por. ()). Ponieważ jest
z założenia wektorem o współczynnikach całkowitych, także wektor
ma współczynniki całkowite.
Twierdzenie pociąga natychmiast podany niżej ważny wniosek który
ostatecznie wyjaśnia rolę macierzy totalnie unimodularnych w
całkowitoliczbowym programowaniu liniowym.
Wniosek 5.3
Niech będzie dany PPL
(5.18) |
|
gdzie
jest pewną macierzą totalnie unimodularną, zaś
wektorem
o współczynnikach całkowitych.
- Jeżeli () jest niesprzeczny, to jego rozwiązania bazowe mają
wszystkie współrzędne całkowite.
- Jeżeli istnieje rozwiązania optymalne problemu (), to istnieją
takie rozwiązania optymalne których wszystkie współrzędne są całkowite.
- Jeśli problem () jest niesprzeczny i ograniczony to algorytm
sympleks znajduje takie rozwiązanie () którego wszystkie
współrzędne są liczbami całkowitymi.
Wobec wniosku ważnym jest problem ozpoznania" macierzy totalnie
unimodularnych. W rozdziale okaże się jak ważnym warunkiem wystarczającym
dla tych macierzy jest poniższe twierdzenie.
Przykład 5.5
Macierz
(podobnie jak macierz z przykładu
) spełnia założenia twierdzenia
,
w więc jest macierzą totalnie unimodularną.
Dowód twierdzenia . Wystarczy wykazać, że dla każdej macierzy
o wierszach i kolumnach spełniającej założenia twierdzenia
. Dowód przeprowadzimy przez indukcję
ze względu na .
Dla przwdziwość twierdzenia jest oczywista. Przypuśćmy, więc, że
i twierdzenie jest prawdziwe dla macierzy o wierszach i kolumnach.
Rozpatrzymy trzy przypadki:
- Przypadek 1.
- Jedna z kolumn macierzy ma wszystkie wyrazy równe . Wtedy
oczywiście
.
- Przypadek 2.
- W jednej z kolumn jest jeden wyraz różny od zera, powiedzmy że tym wyrazem jest
. Wtedy
.
Rozwijamy wyznacznik macierzy względem kolumny i otrzymujemy
(5.19) |
|
gdzie
jest macierzą powstałą przez skreślenie w
wiersza
i kolumny .
Zauważmy, że macierz
jest macierzą kwadratową o
wierszach i kolumnach spełniającą warunki twierdzenia i wobec tego
. Stąd i () otrzymujemy
.
- Przypadek 3.
- Nie zachodzą przypadki 1 ani 2. Wtedy
(5.20) |
|
dla każdego . Udowodnienie, że w tym przypadku
jest bardzo prostym
ćwiczeniem, które pozostawiam czytelnikowi (p. ćwiczenie ).
Next: Ćwiczenia
Up: Zredukowana metoda sympleksowa
Previous: Podsumowanie
  Spis rzeczy
  Indeks