You are on page 1of 18

        

                         n                        ! " # $

Optymalizacja liniowa
w liczbach całkowitych (PLC)
DEFINICJE

Zadaniem PLC nazywamy następujące zadanie optymalizacji liniowej:

= ) &

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)

Zadanie (1-3) nazywamy zadaniem regularnym.


Zadanie (1-4) nazywamy zadaniem PLC.
Stosownie do tego podziału oznaczymy zbiory rozwiązań dopuszczalnych:
X - zbiór rozwiązań dopuszczalnych zadania regularnego (wypukły).
XC - zbiór rozwiązań dopuszczalnych zadania PLC (niewypukły);
zbiór ten spełnia oczywisty warunek XC ⊂ X
Z faktu, że zbiór XC nie jest zbiorem wypukłym wynika niemożność wykorzystania
twierdzenia Weierstrassa do znajdowania rozwiązania optymalnego zadania PLC.

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 , .

Na rysunku 1 przedstawiono zbiory rozwiązań dopuszczalnych X oraz XC .


Elementy zbioru XC jawią się jako izolowane punkty zawierające się w zbiorze X .
2
Rozwiązanie optymalne x (1−3) = 3  zadania regularnego (1-3) nie spełnia warunku
1
2

 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]

Rys. 1. Ilustracja zbioru XC dla zadania PLC z przykładu 1

METODY ROZWIĄZYWANIA ZADAŃ PLC

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 

  

5. poszukiwania przypadkowe i metody przybliżone

Ad. 1. Przegląd zupełny zbioru XC .


Podejście mało eleganckie. Możliwe tylko wtedy, gdy zbiór XC jest małoliczny i
skończony (por. przykład 1). W przeciwnym przypadku przegląd jest nie do zrealizowania.

Ad. 2. Regularyzacja (zaokrąglenie) rozwiązania optymalnego


zadania (1-3).
Często stosowane podejście. Można je zaliczyć do klasy metod przybliżonych.
Postępowanie takie kryje w sobie niebezpieczeństwo generowania rozwiązań PLC daleko
odbiegających od zbioru rozwiązań dopuszczalnych XC. Skala odstępstwa zależy od
wielkości liczb opisujących rozwiązanie optymalne zadania (1-3). Zilustrujemy ten problem
na przykładzie (por. przykład 2).
        
                         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.
  

Jako miary dopuszczalności (niedopuszczalności) rozwiązania zaokrąglonego użyjemy


stosunku różnicy prawej strony ograniczeń (RHS) i lewej strony ograniczeń (LHS) do
prawej strony ograniczeń, tj. (RHS-LHS)/RHS. Miarę taką (w wyrażeniu procentowym
można interpretować jako procentowe spełnienie (niespełnienie) danego ograniczenia.
Ujemna wartość takiej miary wskazuje na niespełnienie danego ograniczenia. Miary te
kształtują się następująco: 1 ~ 175%, 2 ~ −100%, 3 ~ 33, (3)% .
        

Otrzymujemy sygnał, że zaokrąglenie rozwiązania powoduje 100-procentowe niespełnienie


drugiego ograniczenia. Zatem proponowane rozwiązanie jest rozwiązaniem „mocno”
niedopuszczalnym.
Inaczej zachowa się takie postępowanie jeżeli będziemy zaokrąglać duże liczby.
Zamieniając w przykładzie 1 oryginalne parametry RHS ( 1 = 4 2 = 2 3 = 3 ) na inne   

1 = 45321 

2 = 25321 

3= 35321 otrzymamy jako rozwiązanie zadania (1-3):




1 = 6330,25 

2 =0 

3 = 54311,75 . Po regularyzacji (zaokrągleniu) tego rozwiązania


otrzymamy: 1 = 6330 2 =0 3 = 54312 . Omówione wcześniej miary zgodności
  

(niezgodności) ograniczeń są teraz następujące:


1 ~ 191,9%, 2 ~ 0%, 3 ~ 0% . Wynika z tego że w tym przypadku
        

zaokrąglenie rozwiązania zadania (1-3) nie prowadzi do zaproponowania rozwiązania


niedopuszczalnego.

Ad. 3. Metody płaszczyzn odcinających.


Ogólną ideę rozwiązywania zadań PLC podał w roku 1957 twórca metody simpleks
Georgie B. Dantzig1. Zgodnie z nią, jeżeli po rozwiązaniu zadania (1-3) nie otrzymujemy
rozwiązania w liczbach całkowitych, to do zadania (1-3) należy dołączyć nowe
ograniczenia, które muszą spełnić dwa warunki:
• odetną (nie obejmą) uzyskanego wcześniej rozwiązania zadania (1-3); nie było to
rozwiązanie w liczbach całkowitych oraz

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.).

Ad. 4. Metoda podziału i ograniczeń.


Ogólna idea metody polega na ciągłym podziale i rozwiązywaniu zadania (1-3).
Zadanie (1-3) jest dzielone na kolejne zadania, w których zbiór rozwiązań dopuszczalnych X
jest w wyniku każdego podziału zawężany. Po skończonej liczbie podziałów zadania (1-3)
uzyskuje się rozwiązanie zadania PLC (o ile istnieje).
W każdym podziale do rozwiązania zadania podzielonego wykorzystuje się zwykłe
metody rozwiązywania zadań PL (klasyczny algorytm simpleks, zrewidowany algorytm
simpleks, zmodyfikowany algorytm simpleks, itp.).

Ad. 5. Poszukiwania przypadkowe i metody przybliżone.


Trudno tutaj wymienić konkretne sposoby rozwiązywania zadania PLC. Najczęściej
są to postępowania związane z konkretnymi zastosowaniami. Wchodzą tuttaj w grę
postępowania, które ogólnie nazwać możemy postępowaniami heurystycznymi. Często
wykorzystują one uproszczone fragmenty sygnalizowanych wcześniej postępowań.
Generalnie chodzi w nich o to, aby szybko i sprawnie rozwiązać problem PLC i otrzymać
rozwiązanie jak najbliższe nieznanemu rozwiązaniu optymalnemu PLC.
        
                         n                        ! " # $

[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

=[ ] jeżeli nie jest liczbą całkowitą albo


• 1 1 +L+ = − 1 jeżeli jest liczbą całkowitą.
   n  n

Dołączamy do zadania regularnego (1-3) nowe ograniczenie i przechodzimy do kolejnej


iteracji.
≥1)
Iteracja k (k≥
Rozwiązujemy rozszerzone (zawsze o 1 ograniczenie) zadanie regularne (1-3).
Znajdujemy wszystkie alternatywne rozwiązania optymalne tego zadania2.
Jeżeli jedno z alernatywnych rozwiązań spełnia warunek całkowitoliczbowości, to
kończymy postępowanie.
Jeżeli żadne z rozwiązań alternatywnych nie spełnia warunku całkowitoliczbowości, to
budujemy liniową kombinację wypukłą ze wszystkich bazowych (wierzchołkowych)
rozwiązań optymalnych. Mogą zaistnieć tutaj dwa przypadki:
• wypukła kombinacja liniowa zawiera rozwiązanie w liczbach całkowitych. Kończymy
postępowanie.
• wypukła kombinacja liniowa nie zawiera rozwiązania w liczbach całkowitych.
Wówczas należy zmienić warstwicę zmniejszając o jednostkę wyraz wolny w
dodanym ograniczeniu wg następującego przepisu 1 1 + L + = −1.    n  n

Dokonujemy zmiany i przechodzimy do kolejnej ( +1) iteracji.

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

Nie uzyskaliśmy rozwiązania w liczbach całkowitych.


Konstruujemy dodatkowe ograniczenie, które ma postać: 3 1 + 4 2 = 19 (warstwica dla  

~ = 20 − 1 = 19 ). Rozszerzone zadanie regularne ma teraz postać:




~= 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


ograniczeniu, które będzie miało teraz postać: 3 1 + 4 2 = 18 . Rozszerzone zadanie


regularne ma teraz postać:


~= 3 + 4 2 → max

 

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 

całkowitych postaci: x =   =   . Kończymy postępowanie.


 2   3


Kolejne iteracje algorytmu można prześledzić na rysunku 2.


        
                         n                        ! " # $

[8]

Rozwiązanie końcowe przykładowego zadania PLC jest następujące:




~ 18
1 =2 2 =3


max = max
= =3
6 6

Rys. 2. Ilustracja cięć w zbiorze X w algorytmie Nieszczeriakov’a (dla przykładu 3)


        
                         n                        ! " # $

[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


i rozwiązujemy nowe zadanie regularne (1-3).



 

Nawiasy [ ] oznaczają funkcję Entier, a elementy ( ) oraz ( ) pochodzą z -tego wiersza


tablicy simpleksowej zawierającej rozwiązanie optymalne zadania (1-3) rozwiązywanego w




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) 

rozwiązywanego w iteracji -1 dokładamy dodatkowe równanie :

∑ ( [ ( ) ]− () ) ( [ ( ) ]− ( ) )
n

+ =
 


 
 

+1
  

=1


2. Jako kolejną (ostatnią) zmienną bazową w nowej tablicy przyjmujemy zmienną n

+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 

całkowitoliczbowe. Przechodzimy do iteracji +1.


• Nie można wykonać iteracji DLSX (brak elementów ujemnych w wierszu ( )).
Koniec postępowania. Rozwiązywane zadanie nie posiada rozwiązania
optymalnego w liczbach całkowitych.

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


Ograniczenia tego zadania nie spełniają założenia wstępnego algorytmu Gomory’ego.


Mnożymy ograniczenia ( ) przez stałą λ = 2 . Po takim zabiegu „nowe” zadanie PLC
spełnia już założenie wstępne algorytmu.
Rozwiązywane zadanie regularne ma postać:
1 2
= 1 + 2 → max 
 

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

2/3 2 0 1 0 1/2 3 1/2


1/2 1 1 0 1/2 −1/2 2
0


0 

1/4 −
1/12 3 1/3
 

Rozwiązanie nie jest całkowitoliczbowe. Przechodzimy do iteracji 1.


        
                         n                        ! " # $

[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] − 0) 1 + ([1] − 1) 2 + ([0] − 0) 1 + ([1 2] − 1 2) 2 + 3 = ([3 1 2] − 3 1 2)

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

2/3 2 0 1 0 1/2 0 3 1/2


1/2 1 1 0 1/2 −1/2 0 2
0 3 0 0 0 −1/2 1 −1/2


−  

0 0 1/4 1/12 0 3 1/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  

Otrzymane w wyniku zastosowania DLSX rowiązanie nie jest całkowitoliczbowe. Należy


przejść do kolejnej iteracji.

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)  

2 + ([1 2] − 1 2) 1 + ([0] − 0) 2 + ([− 1] − (− 1)) 3 +    

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]

Zmienne 1/2 2/3 0 0 0 0


B
c bazowe xB
1 2 1 2 3 4

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


−  

0 0 1/4 0 1/6 0 3 1/4


( 

− 


)/  

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  

Otrzymane w wyniku zastosowania DLSX rowiązanie jest całkowitoliczbowe. Kończymy


postępowanie.

Rozwiązanie końcowe przykładowego zadania PLC jest następujące:


1 1
=2 =3 =1 = = =3


1 2 1 2
λ 2 max

Kolejne odcięcia zbioru X w algorytmie Gomory’ego można prześledzić na rysunku 3.

Komentarz do rysunku 3.

Pokazane na rysunku odcięcia 1 i 2 są odwzorowaniami płaszczyzn odcinających z


przestrzeni -wymiarowej ( >2) na płaszczyznę 10 2 (przestrzeń R2). I tak3: n n
 

1 + ≤ 3 jest odwzorowaniem w przestrzeni R2 nierówności



• nierówność 0 2

odcinającej (iteracja 1) 0 1+0 2 + 0 1 −1 2 2 ≤ −1 2 z przestrzeni R4,

1 + ≤ 5 jest odwzorowaniem w przestrzeni R2 nierówności



• nierówność 2

odcinającej (iteracja 2) 0 1+0 2 − 1 2 1 + 0 2 + 0 3 ≤ −1 2 z przestrzeni R5.

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    

Wydawnictwo ABSOLWENT, Łódź, 2000, rozdział II).


        
                         n                        ! " # $

[13]

Rys. 3. Ilustracja odcięć zbioru X w algorytmie Gomory’ego (dla przykładu 4)

Metoda PODZIAŁU i OGRANICZEŃ


(Branch & Bound Method)
Metoda nie wymaga żadnych założeń odnośnie do parametrów zadania PLC (1-4).

Dla uproszczenia opisu zakładamy, że zadanie polega na znajdowaniu wartości największej


funkcji celu (maksymalizacja).
Jeżeli jest odwrotnie (minimalizacja), to mnożymy funkcję celu przez (-1), a po zakończeniu
postępowania jej wartość optymalną należy pomnożyć przez (-1).

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ę
   

( >>0). W sensie geometrycznym dobór parametrów określających dolną ( ) i górną ( )


 

   

wartość zmiennej ( ) jest taki, że hiperprostopadłościan H generowany przez (5) pokrywa na




początek zbiór rozwiązań dopuszczalnych X zadania regularnego (1-3), tj. H ⊇ X.


W całym procesie obliczeniowym metody podziału i ograniczeń rozwiązywane jest zadanie
regularne (1-3),(5). Z uwagi na ograniczenia (5) wygodną metodą rozwiązywania zadania
        
                         n                        ! " # $

[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
   


(początkowej) wartości jej górnego ograniczenia ( ) , to zadanie PLC (1-4)  

nie posiada skończonego rozwiązania optymalnego.


• Jeżeli rozwiązanie nie spełnia warunku całkowitoliczbowości, to przechodzimy do
kroku 4 w iteracji 1.

≥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ść    

jakiejkolwiek zmiennej jest równa oryginalnej (początkowej) wartości jej górnego 

ograniczenia ( ), to zadanie PLC (1-4) nie posiada skończonego rozwiązania optymalnego].  

Jeżeli nie istnieje takie zadanie aktywne, to przechodzimy do kolejnego kroku.


3. Wybór zadania do podziału.
Jako zadanie do podziału wybieramy to zadanie, które ma największą wartość funkcji celu i
nie spełnia warunków całkowitoliczbowości.
4. Wybór zmiennej wg której dokonamy podziału zadania.
Podziału zadania dokonujemy zawsze ze względu na dowolnie wybraną zmienną, która w
rozwiązaniu optymalnym nie miała wartości całkowitej (np.zmienna ). Załóżmy, że  

≤ ≤

ograniczenie widełkowe (5) dla tej zmiennej ma aktualnie postać: .


  

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
≤ ≤ [ ],


    

• dla drugiego z zadań („syn”) przyjmujemy


. [  

] +1 ≤  

≤  

W sensie geometrycznym w zbiorze rozwiązań dopuszczlnych X zadania „matka” wycinane


jest pasmo [ ] < < [ ] + 1 , co prowadzi do podziału tego zbioru na dwa
     

podzbiory związane odpowiednio z zadaniami „córka” i „syn”.


6. Rozwiązanie zadań z aktualnego podziału.
Po rozwiązaniu obu nowych zadań przechodzimy do kolejnej iteracji

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)
  

  

W celu rozwiązania zadania PLC metodą podziału i ograniczeń uzupełniamy ograniczenia


(2) zespołem nierówności widełkowych (5).
0≤ 

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,

• Z2/1 , max =13, rozwiązanie niecałkowitoliczbowe,

• Z3/1 , zadanie jest sprzeczne.


Usuwamy z listy zadanie Z1/− (już podzielone) oraz zadanie Z3/1 (sprzeczne).
Uporządkowana lista zadań to:
• Z2/1 , max =13, rozwiązanie niecałkowitoliczbowe,

Krok 2. Sprawdzanie czy można zakończyć postępowanie.


Jedyne na uporządkowanej liście zadanie aktywne nie daje rozwiązania w liczbach
całkowitych. Należy przejść do kolejnego kroku.
        
                         n                        ! " # $

[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 ,

max =12,75 , rozwiązanie niecałkowitoliczbowe,


• Z5/2 ,

max =13, rozwiązanie niecałkowitoliczbowe,.


Usuwamy z listy zadanie Z2/1 (już podzielone).
Uporządkowana lista zadań to:
• Z4/2 , max =12,75 , rozwiązanie niecałkowitoliczbowe,

• 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,

• Z6/5 , max =13 , rozwiązanie całkowitoliczbowe,

• Z7/5 , zadanie sprzeczne.


Usuwamy z listy zadanie Z5/2 (już podzielone), zadanie Z4/2 (nie da się z niego po
podziałach wygenerować zadania z wartością funkcji celu większą lub równą 13) oraz
zadanie Z7/5 (sprzeczne).
Uporządkowana lista zadań to:
• Z6/5 , max =13 , rozwiązanie całkowitoliczbowe,

Krok 2. Sprawdzanie czy można zakończyć postępowanie.


Lista zawiera jedno zadanie z rozwiązaniem w liczbach całkowitych. Brak na niej zadań
aktywnych nadających się do dalszego podziału.
Rozwiązaniem optymalnym zadania PLC (1-4) jest więc rozwiązanie zadania Z6/5.
Koniec postępowania.
Rozwiązanie końcowe przykładowego zadania PLC jest następujące:
=0 =3 =2 =2 =0 =3 = 13
 

   

 

1 2 3 1 2 3 max

You might also like