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 (
![[*]](file:/usr/local/lib/latex2html/icons/crossref.gif)
).
Łatwo zauważyć, że rozwiązaniem optymalnym problemu
![[*]](file:/usr/local/lib/latex2html/icons/crossref.gif)
)
jest

, a więc punkt znajdujący sie wewnątrz zbioru rozwiązań
dopuszczalnych problemu powstałego z (
![[*]](file:/usr/local/lib/latex2html/icons/crossref.gif)
) 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
![[*]](file:/usr/local/lib/latex2html/icons/crossref.gif)
) spełnia założenia twierdzenia
![[*]](file:/usr/local/lib/latex2html/icons/crossref.gif)
,
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