Professional Documents
Culture Documents
n ! " # $
Optymalizacja liniowa
w liczbach całkowitych (PLC)
DEFINICJE
= ) &
1 1 + L + )
n
&
n
→ max(min) (1)
+ L + =
'
( & ( &
11 1 1 n n
M M M M M M M ( 2)
+ L + =
'
( & ( &
1 1 , n n ,
&
≥0 1 , L , &
n
≥0 (3)
1∈ L ∈
% %
&
, , &
n
( 4)
PRZYKŁAD 1
Rozważmy następujące zadanie PLC:
1 2
= 1 + 1
. .
2 → max
2 3
2 1 + 2 . .
2 ≤ 11 ( ) 0
7
≤
/
2 ( )
2
.
1 ≥0 , .
2 ≥0
∈ ∈
- -
1 , .
2
2
całkowitoliczbowości (4). Rozwiązanie optymalne x (1−4 ) = zadania PLC (1-4) warunek
3
3
ten oczywiście spełnia.
n ! " # $
[2]
I. Proste
1. przegląd zupełny zbioru XC
2. regularyzacja (zaokrąglenie) rozwiązania optymalnego zadania (1-3)
II. Złożone
3. regularyzacja zadania (1-4);
metody płaszczyzn odcinających
4. wykorzystanie kombinatorycznego charakteru przeglądu zbioru XC;
metoda podziału i ograniczeń ( & ) n n
[3]
PRZYKŁAD 2
Rozważmy następujące zadanie PLC:
*
= &
1 − 3 &
2 + 3 &
3 → max (1)
2 &
1 + &
2 − &
3 ≤ 4
4 &
1 − 3 &
2 ≤ 2 ( 2)
−3 &
1 + 2 &
2 + &
3 ≤ 3
&
1≥0 , &
≥0 2 , &
3 ≥0 (3)
1∈ 2 ∈ 3 ∈
% % %
&
, &
, &
( 4)
Rozwiązanie zadania (1-3) jest tutaj następujące:
1 = 0,5
2 =0
3 = 4,5 . Po
regularyzacji (zaokrągleniu) tego rozwiązania otrzymujemy: 1 = 1 2 = 0 3 = 5.
1 = 45321
2 = 25321
1 = 6330,25
2 =0
1
G.B.Dantzig, , Opns. Res., 5, 2, 1957, ss. 266-277
n ! " # $
[4]
• będzie wiadomo, że nowe ograniczenia nie odetną wszystkich rozwiązań w liczbach
całkowitych, tj. obejmą przynajmniej jedno rozwiązanie dopuszczalne w liczbach
całkowitych.
Tę stosunkowo prostą ideę zilustrujemy dwoma algorytmami. Będą to podejścia
zaproponowane przez:
1. Nieszczeriakova (płaszczyznami odcinającymi będą warstwice funkcji celu) oraz
2. Gomory’ego (płaszczyznami odcinającymi będą odpowiednio przekształcone
równania z tablicy simpleksowej zawierającej rozwiązanie optymalne rozszerzanego
zadania (1-3)).
W obu podejściach wykorzystuje się zwykłe metody rozwiązywania zadań PL (klasyczny
algorytm simpleks, dualny algorytm simpleks, itp.).
[5]
Algorytm NIESZCZERIAKOV’a
!!! ZAŁOŻENIE !!!
Wszystkie współczynnikiw funkcji celu
muszą być liczbami całkowitymi.
Jeżeli oryginalna funkcja celu nie spełnia tego warunku, to należy ją pomnożyć przez
odpowiednio dobraną dodatnią stałą, a po uzyskaniu rozwiązania optymalnego należy
podzielić otrzymaną optymalną wartość funkcji celu przez tą stałą.
Iteracja 0
Postępowanie rozpoczynamy od rozwiązania zadania regularnego (1-3).
• Jeżeli rozwiązanie optymalne dane jest w liczbach całkowitych to kończymy
postępowanie.
• Jeżeli rozwiązanie nie spełnia warunku całkowitoliczbowości, to rozpoczynamy
opisane niżej postępowanie.
Oznaczmy przez uzyskaną optymalną wartość funkcji celu .
Konstruujemy dodatkowe ograniczenie dla zadania regularnego (1-3). Jest nim warstwica
funkcji celu postaci:
•
1 1
+L+ n n
2
Obecność warstwicy funkcji celu jako aktywnego ograniczenia powoduje, że zawsze (począwszy od iteracji 1) rozwiązanie
optymalne będzie niejednoznaczne. Istnieć będą alternatywne rozwiązania optymalne.
n ! " # $
[6]
PRZYKŁAD 3
Rozważmy zadanie PLC z przykładu 1. Funkcja celu tego zadania nie spełnia
założenia wstępnego algorytmu Nieszczeriakov’a. Mnożymy ją zatem przez stałą λ = 6 . Po
takim zabiegu „nowa” funkcja celu spełnia już założenie wstępne algorytmu. Rozwiązywane
zadanie regularne ma postać:
~= 3 + 4 2 → max
2 1 + 2 2 ≤ 11 ( )
7
≤
2 ( )
2
1 ≥0 , 2 ≥0
Iteracja 0
Rozwiązanie zadania regularnego jest następujące:
2
x1 = 1 ~
= 20
3 2 max
~= 3 + 4 2 → max
2
1 + 2
2 ≤ 11 ( )
7
≤
2 ( )
2
3
+ 1 4
2 = 19
1 ≥0 , ≥0
Przechodzimy do iteracji 1.
Iteracja 1
Wszystkie alternatywne rozwiązania optymalne rozszerzonego zadania regularnego są
następujące:
2
3 1 3
x2 = 1 x3 =
~
1
= 19
2 2 3
max
2
Żadne z rozwiązań alternatywnych nie jest całkowitoliczbowe. Należy sprawdzić czy za
pomocą wypukłej kombinacji liniowej rozwiązań alternatywnych można uzyskać
rozwiązanie całkowitoliczbowe. Wypukła kombinacja rozwiązań wierzchołkowych ma
postać:
2
1 3
1 3
x = = αx 2 + (1 − α )x 3 = α 1 + (1 − α ) przy 0 ≤ α ≤ 1
2 2 1
2 3
2
n ! " # $
[7]
4 5
1 3 α +
3
= =
Po uporządkowaniu mamy:
x przy 0 ≤ α ≤ 1 .
2 − α + 7
2
Łatwo zauważyć, że nie istnieje takie 0 ≤ α ≤ 1 , dla którego otrzymalibyśmy rozwiązanie
optymalne w liczbach całkowitych.
Zmieniamy poziom warstwicy (warstwica dla ~ = 19 − 1 = 18 ) w dodatkowym
2
1 + 2
2 ≤ 11 ( )
7
≤
2 ( )
2
3
+ 1 4
2 = 18
1 ≥0 , ≥0
Przechodzimy do iteracji 2.
Iteracja 2
Wszystkie alternatywne rozwiązania optymalne rozszerzonego zadania regularnego są
następujące:
1
4 1 3
x4 = 1 x5 =
1
= 18
1 2 3
max
2
Żadne z rozwiązań alternatywnych nie jest całkowitoliczbowe. Należy sprawdzić czy za
pomocą wypukłej kombinacji liniowej rozwiązań alternatywnych można uzyskać
rozwiązanie całkowitoliczbowe. Wypukła kombinacja rozwiązań wierzchołkowych ma
postać:
1
1 4
1 3
x = = αx 4 + (1 − α )x 5 = α 1 + (1 − α ) przy 0 ≤ α ≤ 1
1 2 1
2 3
2
8 4
1 3 α +
3
= =
Po uporządkowaniu mamy:
x 7 przy 0 ≤ α ≤ 1 .
2 − 2α +
2
1
Łatwo zauważyć, że dla α = otrzymujemy rozwiązanie optymalne w liczbach
4
1 2
[8]
~ 18
1 =2 2 =3
max = max
= =3
6 6
[9]
Algorytm GOMORY’ego
!!! ZAŁOŻENIE !!!
Wszystkie parametry i ograniczeń
muszą być liczbami całkowitymi.
Jeżeli oryginalne ograniczenia nie spełniają tego warunku, to należy pomnożyć każde z nich
z osobna przez odpowiednio dobraną dla niego dodatnią stałą, a po uzyskaniu rozwiązania
optymalnego należy wartość zmiennej swobodnej podzielić przez tą stałą.
Iteracja 0
Postępowanie rozpoczynamy od rozwiązania zadania regularnego (1-3).
• Jeżeli zadanie jest sprzeczne albo nie posiada skończonego rozwiązania optymalnego,
to kończymy postępowanie.
• Jeżeli rozwiązanie optymalne dane jest w liczbach całkowitych to kończymy
postępowanie.
• Jeżeli rozwiązanie nie spełnia warunku całkowitoliczbowości, to przechodzimy
kolejnej iteracji.
≥1)
Iteracja k (k≥
W zbiorze wartości zmiennych bazowych znajdujemy wartość o największej części
ułamkowej. W przypadku niejednoznacznego wyboru kierujemy się zasadą niższego numeru
(niższej pozycji na liście zmiennych bazowych). Niech taką zmienną będzie zmienna
bazowa o numerze ( ), tj.
( ) : ( ( ) − [ ( ) ] ) = max { ( ( ) − [ ( ) ] ) }.
()
Obcinamy zbiór rozwiązań dopuszczalnych X zadania regularnego (1-3) dodając do zbioru
ograniczeń półpłaszczyznę zdefiniowaną następująco:
∑ ( [ ( ) ]− () ) ( [ ( ) ]− ( ) )
n
≤
=1
iteracji -1.
Technicznie postępowanie „obcinania” zbioru X aktualnego zadania regularnego (1-3)
realizujemy następująco:
1. Do tablicy simpleksowej zawierającej rozwiązanie optymalne zadania (1-3)
∑ ( [ ( ) ]− () ) ( [ ( ) ]− ( ) )
n
+ =
+1
=1
+1 .
n ! " # $
[10]
3. Tablica taka zawiera zawsze rozwiązanie bazowe dualnie dopuszczalne, które jest
jednak niedopuszczlne prymalnie (składowa z wartością nowej zmiennej bazowej
„doklejonego” równania jest ujemna).
4. Wykonujemy itercję DLSX udopuszczalniającą prymalnie aktualne rozwiązanie
bazowe dualnie dopuszczalne.
W kroku 4 mogą zaistnieć trzy sytuacje.
• Można wykonać iterację DLSX i otrzymane rozwiązanie jest
całkowitoliczbowe. Koniec postępowania.
• Można wykonać iterację DLSX ale otrzymane rozwiązanie nie jest
PRZYKŁAD 4
Rozważmy zadanie PLC z przykładu 1.
1 2
= 1 + 2
→ max
2 3
2 1 + 2 2
≤ 11 ( )
7
≤
2 ( )
2
1 ≥0 ,
2 ≥0
∈ , 2∈
1
2 3
2 1 + 2 2 ≤ 11 ( )
≤
2 2 7 ( )
1 ≥0 , 2 ≥0
1∈ , 2∈
Iteracja 0
Tablica simpleksowa zawierająca rozwiązanie optymalne jest następująca:
Zmienne 1/2 2/3 0 0
B
c bazowe xB
1 2 1 2
0
1/4 −
1/12 3 1/3
[11]
Iteracja 1
Pozycją w bazie o największej części ułamkowej przy wartości zmiennej bazowej jest ( =1).
Równanie obcinające zbiór X należy wygenerować z równania dla zmiennej (1) = 2.
Równanie to ma następującą postać:
0 1+0 2 + 0 1 −1 2 2 + 3 = −1 2
Rozszerzona tablica simpleksowa z rozwiązaniem optymalnym zadania regularnego (1-3) z
iteracji 0 oraz iteracja udopuszczalniająca DLSX są następujące:
Zmienne 1/2 2/3 0 0 0
cB bazowe xB
1 2 1 2 3
−
−
)/
x x x −1/6 x x
2/3 2 0 1 0 0 1 3
1/2 1 1 0 1/2 0 −1 2 1/2
0 2 0 0 0 1 −2 1
0 0 1/4
0
1/6 −
3 1/4
Iteracja 2
Pozycją w bazie o największej części ułamkowej przy wartości zmiennej bazowej jest teraz
( =2). Kolejne równanie obcinające zbiór X należy wygenerować z równania dla zmiennej
(2 ) = 1. Równanie to ma następującą postać:
([1] − 1) 1 + ([0] − 0)
4 = ([2 1 2] − 2 1 2)
0 1+0 2 −1 2 1 + 0 2 + 0 3 + 4 = −1 2
Rozszerzona tablica simpleksowa z rozwiązaniem optymalnym zadania regularnego (1-3) z
iteracji 1 oraz iteracja udopuszczalniająca DLSX są następujące:
n ! " # $
[12]
2/3 2 0 1 0 0 1 0 3
1/2 1 1 0 1/2 0 −1 0 2 1/2
0 2 0 0 0 1 −2 0 1
0 4 0 0 −1/2 0 0 1 −1/2
−
−
)/
x x −1/2 x x x x
2/3 2 0 1 0 0 1 0 3
1/2 1 1 0 0 0 −1 1 2
0 2 0 0 0 1 −2 0 1
0 1 0 0 1 0 0 −2 1
0 0 0
0
1/6 1/2 − 3
1 2 1 2
λ 2 max
Komentarz do rysunku 3.
• nierówność 0 2
• nierówność 2
3
Opisane przekształcenia wykonano tradycyjnie („ręcznie”) wykorzystując postaci kanoniczne modeli zadania regularnego (1-3) z
kolejno dołączanymi zmiennymi swobodnymi oraz równaniami odcięć. Proces znajdowania odworowań można zautomatyzować
wykorzystując przekształcenia liniowe przestrzeni wektorowej (por. E.Żółtowska, E.Porazińska, J.Żółtowski, ,
n
[13]
Do zadania PLC (1-4) dołączamy dodatkowe warunki (5). Warunki (5) są ograniczeniami
widełkowymi dla zmiennych, tj. narzucają indywidualnie zakres dopuszczalnych wartości
poszczególnych zmiennych. Ograniczenia (5) mają postać:
≤ ≤
(5)
= 1, 2, L ,
Granice ograniczeń widełkowych (5) , tj. parametry oraz powinny być liczbami
całkowitymi. Najczęściej przyjmuje się, że dolne ograniczenia dla zmiennych są równe zero
( =0). Z kolei dla górnych ograniczeń ( ) przyjmuje się dostatecznie dużą całkowitą liczbę
[14]
regularnego (1-3),(5) jest zmodyfikowana metoda simpleks4 (
n
).
Iteracja 0
Postępowanie rozpoczynamy od rozwiązania zadania regularnego (1-3),(5).
• Jeżeli zadanie jest sprzeczne, to kończymy postępowanie.
• Jeżeli rozwiązanie optymalne dane jest w liczbach całkowitych,
to kończymy postępowanie.
!!! Jeżeli optymalna wartość jakiejkolwiek zmiennej jest równa oryginalnej
≥1)
Iteracja k (k≥
Kolejne kroki każdej iteracji są następujące.
1. Porządkowanie listy zadań.
Z listy zadań usuwamy:
• zadania już podzielone,
• zadania sprzeczne oraz
• zadania, które mają wartość funkcji celu mniejszą lub równą wartości funkcji celu
zadań spełniających warunki całkowitoliczbowości.
Pozostałe na liście zadania nazywamy zadaniami aktywnymi.
2. Sprawdzanie czy można zakończyć postępowanie.
Sprawdzamy czy istnieje takie zadanie aktywne, którego rozwiązanie optymalne spełnia
warunki całkowitoliczbowości, a jednocześnie na liście nie ma żadnego innego zadania
aktywnego lub wszystkie pozostałe zadania aktywne mają wartość funkcji celu nie większą
niż w takim zadaniu.
Jeżeli istnieje takie zadanie aktywne, to kończymy postępowanie. Zadanie to generuje
rozwiązanie optymalne zadania PLC (1-4). [ !!! Jeżeli optymalna wartość
≤ ≤
4
Modyfikacja metody simpleks polega tutaj na tym, że w tablicy simpleksowej przetwarzany jest tylko układ ograniczeń (2).
Ograniczenia (5) są kontrolowane poza tablicą simpleksową poprzez rozbudowanie kryterium optymalności, wejścia i wyjścia.
Komplikuje to nieznacznie samo przepatrywanie rozwiązań ale rozmiary zadania PL są zdecydowanie mniejsze. Zwiększa to w
sensie numerycznym stabilność i dokładność procesu obliczeniowego. Z popularnych programów komputerowych metodę GUB do
rozwiązywaniu regularnych zadań PL (1-3) wykorzystuje pakiet WinStorm.
n ! " # $
[15]
5. Podział zadania.
W wyniku podziału zadania z kroku 3 (zadanie „matka”) powstaną zawsze dwa nowe
zadania (zadanie „córka” oraz zadanie „syn”). Oba nowe zadania są kopiami zadania
dzielonego i różnią się wyłącznie ograniczeniem widełkowym dla zmiennej , które
modyfikujemy następująco:
• dla pierwszego z zadań („córka”) przyjmujemy
≤ ≤ [ ],
] +1 ≤
≤
PRZYKŁAD 5
Rozważmy następujące zadanie PLC:
= 3
1 + 3
2 + 2
3 → max (1)
2
1 +
2 + 3
3 ≤ 11
4
1 + 3
2 + 2
3 ≤ 13 (2)
3
1 + 2
2 +
3 ≤ 11
1≥0 ,
≥02 ,
3≥0 (3)
1∈ , 2 ∈ , 3∈ (4)
1 ≤ 100
0≤
2 ≤ 100 (5)
0≤
3 ≤ 100
Iteracja 0
Oznaczenia zadań którymi będziemy posługiwali się do końca tego przykładu są
następujące: Znr bieżący zadania / nr zadania „matki”.
Rozwiązujemy zadanie regularne (1-3),(5) i otrzymujemy rozwiązanie optymalne:
aktualne
Z1/− ograniczenia (5)
1 0 0 100
2 4,33 0 100
3 0 0 100
max 13 × ×
n ! " # $
[16]
Jak widać zadanie (1-3),(5), tj. zadanie Z1/− , nie jest sprzeczne i ma skończone rozwiązanie
optymalne.
Rozwiązanie optymalne zadania Z1/− nie jest jednak całkowitoliczbowe.
Przechodzimy do kroku 4 w iteracji 1.
Iteracja 1
Krok 4. Wybór zmiennej wg której dokonamy podziału zadania Z1/− .
Zadaniem, które zostanie podzielone jest zadanie Z1/− . Zmienna względem której
dokonamy podziału to zmienna 2=4,33.
Krok 5. Podział zadania Z1/− .
Dzielimy ograniczenie widełkowe (5) dla zmiennej 2 , które w zadaniu Z1/− wyglądało
następująco: 0 ≤ 2 ≤ 100.
W zadaniu „córka” (Z2/1) będzie ono następujące:
0 ≤ 2 ≤ [4,33] czyli 0 ≤ x2 ≤ 4
W zadaniu „syn” (Z3/1) będzie ono następujące:
[4,33]+1 ≤ 2 ≤100 czyli 5 ≤ x2 ≤ 100
Krok 6. Rozwiązanie zadań z aktualnego podziału, tj.zadań Z2/1 i Z3/1 .
Rozwiązania obu zadań są następujące:
aktualne aktualne
Z2/1 ograniczenia (5) Z3/1 ograniczenia (5)
0 0 100 0 100
sprzeczne
1 1
zadanie
4
0 4
5 100
jest
2 2
3 0,5
0 100
3 0 100
max 13
× ×
max × ×
Przechodzimy do iteracji 2.
Iteracja 2
Krok 1. Porządkowanie listy zadań.
Aktualna lista zadań jest następująca:
•
Z1/− , max =13, rozwiązanie niecałkowitoliczbowe,
[17]
Krok 3. Wybór zadania do podziału.
Wybieramy zadanie o największej wartości funkcji celu spośród zadań nadających się do
podziału. Jest nim zadanie Z2/1 .
Krok 4. Wybór zmiennej wg której dokonamy podziału zadania Z2/1 .
Zadaniem, które zostanie podzielone jest zadanie Z2/1 . Zmienna względem której
dokonamy podziału to zmienna 3=0,5.
Krok 5. Podział zadania Z2/1 .
Dzielimy ograniczenie widełkowe (5) dla zmiennej 3 , które w zadaniu Z2/1 wyglądało
następująco: 0 ≤ 3 ≤ 100.
W zadaniu „córka” (Z4/2) będzie ono następujące:
0 ≤ 3 ≤ [0,5] czyli 0 ≤ x3 ≤ 0
W zadaniu „syn” (Z5/2) będzie ono następujące:
[0,5]+1 ≤ 3 ≤100 czyli 1 ≤ x3 ≤ 100
Krok 6. Rozwiązanie zadań z aktualnego podziału, tj.zadań Z4/2 i Z5/2 .
Rozwiązania obu zadań są następujące:
aktualne aktualne
Z4/2 ograniczenia (5) Z5/2 ograniczenia (5)
0,25
0 1 100
1 0 0 100
2 4
0 4
2 3,67 0 4
3 0
0 0
3 1 1 100
max 12,75
× ×
max 13 × ×
Przechodzimy do iteracji 3.
Iteracja 3
Krok 1. Porządkowanie listy zadań.
Aktualna lista zadań jest następująca:
• Z2/1 , max =13, rozwiązanie niecałkowitoliczbowe,
• Z4/2 ,
• Z5/2 ,
=13, rozwiązanie niecałkowitoliczbowe,.
max
Krok 2. Sprawdzanie czy można zakończyć postępowanie.
Brak zadań aktywnych o rozwiązaniu w liczbach całkowitych.
Należy przejść do kolejnego kroku.
Krok 3. Wybór zadania do podziału.
Wybieramy zadanie o największej wartości funkcji celu spośród zadań nadających się do
podziału. Jest nim zadanie Z5/2 .
n ! " # $
[18]
Krok 4. Wybór zmiennej wg której dokonamy podziału zadania Z5/2 .
Zadaniem, które zostanie podzielone jest zadanie Z5/2 . Zmienna względem której
dokonamy podziału to zmienna 2=3,67.
Krok 5. Podział zadania Z5/2 .
Dzielimy ograniczenie widełkowe (5) dla zmiennej 3 , które w zadaniu Z5/2 wyglądało
następująco: 0 ≤ 2 ≤ 4.
W zadaniu „córka” (Z6/5) będzie ono następujące:
0 ≤ 2 ≤ [3,67] czyli 0 ≤ x2 ≤ 3
W zadaniu „syn” (Z7/5) będzie ono następujące:
[3,67]+1 ≤ 2 ≤4 czyli 4 ≤ x2 ≤ 4
Krok 6. Rozwiązanie zadań z aktualnego podziału, tj.zadań Z6/5 i Z7/5 .
Rozwiązania obu zadań są następujące:
aktualne Aktualne
Z6/5 ograniczenia (5) Z7/5 ograniczenia (5)
0 0 100 0 100
sprzeczne
1 1
zadanie
3
0 3
4 4
jest
2 2
3 2
1 100
3 1 100
max 13
× ×
max × ×
Przechodzimy do iteracji 4.
Iteracja 4
Krok 1. Porządkowanie listy zadań.
Aktualna lista zadań jest następująca:
• Z4/2 , max =12,75 , rozwiązanie niecałkowitoliczbowe,
•
Z5/2 , max =13, rozwiązanie niecałkowitoliczbowe,
1 2 3 1 2 3 max