Algorytm hybrydowy dla problemu pakowania - Wydział ...
Algorytm hybrydowy dla problemu pakowania - Wydział ...
Algorytm hybrydowy dla problemu pakowania - Wydział ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Adam Stawowy <br />
<strong>Algorytm</strong> <strong>hybrydowy</strong> <strong>dla</strong> <strong>problemu</strong> <strong>pakowania</strong><br />
Summary: We present a meta-heuristic to combine simulated annealing (SA) with local<br />
search technique for Bin Packing Problem. The main idea is to embed local search<br />
algorithm into SA so that the chain explores only local optima. Tests on instances from<br />
Beaysley's library quantify the power of the technique.<br />
1. Wprowadzenie<br />
Problem <strong>pakowania</strong> pudełek (ang. Bin Packing Problem - BPP) ma wielkie<br />
znaczenie praktyczne, stąd jest szeroko badany przez teoretyków i praktyków<br />
zarządzania. Najlepszy algorytm <strong>dla</strong> tego zagadnienia - GGA (ang. Grouping<br />
Genetic Algorithm) został opracowany przez E. Falkenauera [2] <strong>dla</strong> potrzeb<br />
przemysłu metalowego. Prace nad tworzeniem i badaniem algorytmów <strong>dla</strong> trudnych<br />
problemów optymalizacji kombinatorycznej zmierzają w dwóch kierunkach.<br />
Pierwszy stawia sobie za cel opracowanie algorytmów rozwiązujących dokładnie<br />
problemy o coraz większych rozmiarach. Jednakże idą z tym w parze coraz większe<br />
nakłady obliczeniowe, czemu sprzyja dokonujący się nieustannie postęp w technice<br />
komputerowej. Praktycy uważają te algorytmy za zbyt trudne, czasochłonne i<br />
niestabilne (nie dają dokładnych rozwiązań <strong>dla</strong> problemów o różnych rozmiarach).<br />
W konsekwencji daje się zauważyć drugi kierunek zmierzający do znalezienia<br />
prostych i szybkich heurystyk dających dobre (niekoniecznie optymalne)<br />
rozwiązania, o zagwarantowanej jakości.<br />
Praca niniejsza jest próbą połączenia tych dwóch trendów: nasz algorytm ma<br />
dawać rozwiązania optymalne lub niewiele od niego odbiegające, bez wielkich<br />
nakładów obliczeniowych. Co więcej algorytm powinien dawać rozwiązania prawie<br />
powtarzalne o zagwarantowanej dokładności tak, by w dowolnym momencie<br />
procesu obliczeniowego można było stwierdzić, o ile aktualny wynik odbiega od<br />
optymalnego. Ma to niebagatelne znaczenie praktyczne, gdy istniejące ograniczenia<br />
mogą narzucić przerwanie obliczeń po zadanym okresie czasu.<br />
dr inż., <strong>Wydział</strong> Zarządzania, Akademia Górniczo-Hutnicza, Kraków
2. Problem <strong>pakowania</strong> pudełek<br />
Problem <strong>pakowania</strong> pudełek (ang. Bin Packing Problem - BPP) należy do<br />
dużej rodziny zagadnień grupowania elementów, które polegają na podziale<br />
zbioru elementów na rozdzielne podzbiory. Problemy te należą do NP-trudnych<br />
problemów optymalizacji kombinatorycznej. BBP formułujemy następująco:<br />
mamy n niepodzielnych obiektów, każdy o wadze (wartości) wi, (1in) oraz n<br />
pudełek (ang. bins) każde o pojemności C (wi
Funkcja kryterium<br />
Rozwiązanie pośrednie<br />
Perturbacja<br />
Optymalizacja lokalna<br />
Stan i<br />
Stan i+1<br />
Dopuszczalne rozwiązania<br />
Rys. 1 Schematyczne przedstawienie procedury łańcuchowej optymalizacji lokalnej<br />
Źródło: opracowanie własne na podstawie [4]<br />
Załóżmy, że Stan i oznacza lokalne optimum osiągnięte w kroku i. Po<br />
wykonaniu silnie zaburzającego ruchu (nazwanego tu perturbacją) osiągamy<br />
rozwiązanie pośrednie, które poprawiane jest przy użyciu wybranego algorytmu<br />
optymalizacji lokalnej. W konsekwencji przechodzimy do rozwiązania w<br />
stanie i+1, które poddawane jest procedurze testowej identycznej jak w algorytmie<br />
symulowanego wyżarzania. Jeśli rozwiązanie zostanie zaakceptowane, staje się<br />
nowym rozwiązaniem startowym, w przeciwnym razie - wracamy do stanu i. W<br />
przeciwieństwie do symulowanego wyżarzania procedura testowa wykonywana jest<br />
<strong>dla</strong> lokalnego optimum, a nie <strong>dla</strong> każdego kolejno wygenerowanego rozwiązania.<br />
Przyśpiesza to działanie algorytmu i zapewnia ominięcie nieefektywnych<br />
fragmentów przestrzeni przeszukiwań.<br />
Dla prawidłowego działania, algorytm CLO potrzebuje dobrej techniki<br />
lokalnego przeszukiwania oraz wyboru ruchu perturbacyjnego. Oba zagadnienia są<br />
specyficzne <strong>dla</strong> rozpatrywanego <strong>problemu</strong>. W przypadku BPP nie istnieje dobra<br />
technika optymalizacji lokalnej, stąd wykorzystano propozycję Falkenauera [3].<br />
<strong>Algorytm</strong> ten polega na wykreśleniu z rozwiązania wylosowanych grup i<br />
ponownym włączeniu skreślonych obiektów do niepełnych pudełek. Gdy dalsze<br />
włączanie nie jest możliwe, <strong>dla</strong> pozostałych obiektów stosowany jest algorytm FFD<br />
w celu uzyskania prawidłowego rozwiązania. W przypadku ruchu perturbacyjnego<br />
zdecydowano się na ruch typu wstawianie (insertion). Pozostałe elementy algorytmu<br />
przedstawiono poniżej.
Reprezentacja rozwiązania <strong>problemu</strong><br />
Dopuszczalne rozwiązania są reprezentowane w sposób proponowany<br />
przez nas <strong>dla</strong> strategii ewolucyjnej [5] tj. przez listę n elementów i s separatorów<br />
grup, przy czym wartość j (1jn) określająca numer elementu może wystąpić na<br />
liście tylko jeden raz, podobnie jak wartość i (n+1in+s) określająca numer<br />
separatora. W algorytmie przyjęto s = ROUND(0.7*n).<br />
Tak więc <strong>dla</strong> 7 elementów i 3 separatorów grup, rozwiązanie postaci R1 =<br />
(1,3,9,8,5,2,7,10,6,4) oznacza, że elementy spakowane są do trzech pudełek (1,3),<br />
(5,2,7) i (6,4), natomiast rozwiązanie R2 = (1,10,3,8,5,2,9,7,6,4) oznacza, że<br />
elementy mieszczą się w czterech pudełkach (1), (3), (5,2) i (7,6,4).<br />
Ruchowi perturbacyjnemu podlegają zarówno elementy jak i separatory.<br />
Sposób generowania rozwiązania początkowego<br />
Populację początkową stanowi rozwiązanie otrzymane algorytmem FF [6].<br />
Postać funkcji dopasowania<br />
FD<br />
W algorytmie maksymalizowano następującą funkcję:<br />
gdzie:<br />
N - liczba grup w danym rozwiązaniu,<br />
F i - suma wag elementów upakowanych w pudełku i, i=1, ..., N,<br />
C - pojemność pudełka,<br />
s - stała kary, taka że:<br />
1 jeśli Fi<br />
C<br />
s <br />
1000 jeśli Fi<br />
C<br />
Kryterium akceptacji<br />
Rozwiązania lepsze od startowego w danym kroku są bezwzględnie<br />
akceptowane, natomiast gorsze są akceptowane z prawdopodobieństwem<br />
zależnym od względnej różnicy wartości funkcji kryterium:<br />
P<br />
Fi<br />
<br />
s <br />
<br />
C <br />
N<br />
N<br />
<br />
2<br />
<br />
i FDSt<br />
FD <br />
0 .0001<br />
<br />
(2)<br />
FD <br />
akcp<br />
1<br />
(1)
4. Badania eksperymentalne<br />
Do badań wzięto 8 zestawów po 20 przykładowych problemów zawartych<br />
w bibliotece Beasley’a [1]. Problemy te podzielone są na dwie grupy:<br />
elementy o wagach wylosowanych z rozkładu równomiernego z przedziału<br />
[20..100] mają być umieszczone w pudełkach o rozmiarach 150, przy czym<br />
liczba elementów wynosi 120, 250, 500 i 1000,<br />
elementy o wartościach z przedziału [0,25..0,50] mają być umieszczone w<br />
pudełkach o rozmiarach 1, przy czym liczba elementów wynosi 60, 120, 249 i<br />
501, z czego 1/3 ma duże wagi a 2/3 - małe (poniżej 1/3 rozmiaru pudełka).<br />
Dla każdego zestawu danych wykonywano trzy przebiegi, z których<br />
wybierano najlepsze rozwiązanie. W jednym przebiegu algorytm badał 450 000<br />
rozwiązań, co stanowi znikomą część przestrzeni poszukiwań i jest wartością<br />
porównywalną ze stosowaną przez Khuriego i zespół (1000 generacji po 500<br />
rozwiązań) w ich algorytmie [3].<br />
Ogólnie rzecz biorąc problemy oznaczone binpack1-binpack3 oraz<br />
binpack5-binpack7 okazały się łatwe <strong>dla</strong> naszego algorytmu: w każdym<br />
przypadku osiągano rozwiązania optymalne. W tabeli 1 zaprezentowano wyniki<br />
osiągnięte przez znane algorytmy przybliżone <strong>dla</strong> 2 pozostałych zestawów z<br />
biblioteki Beasley’a: binpack4 <strong>dla</strong> 1000 elementów oraz binpack8 <strong>dla</strong> 501<br />
elementów, które stanowią największe i najtrudniejsze problemy odpowiednio z<br />
pierwszej i drugiej grupy zestawów. W zestawieniu nie ujęto propozycji<br />
Khuriego i zespołu ze względu na znacząco gorsze wyniki osiągane przez ten<br />
algorytm w porównaniu z innymi.<br />
Wyniki badań potwierdziły dominację algorytmu GGA Falkenauera,<br />
szczególnie <strong>dla</strong> problemów o dużych rozmiarach. <strong>Algorytm</strong>y Martello i Totha<br />
oraz FFD radzą sobie dobrze z problemami pierwszej grupy, natomiast zawodzą<br />
<strong>dla</strong> trudniejszych - wg Falkenauera - problemów drugiej grupy. <strong>Algorytm</strong> CLO<br />
daje tylko nieznacznie gorsze wyniki niż GGA Falkenauera, dominując nad<br />
pozostałymi technikami, szczególnie <strong>dla</strong> problemów drugiej grupy. Na uwagę<br />
zasługuje fakt, że osiągane rezultaty są lepsze niż nasza poprzednia propozycja,<br />
którą była prosta strategia ewolucyjna (w tabeli oznaczona jako ES-S).
Tabela 1. Wyniki osiągnięte przez FFD, GGA, MTP (Mortello i Toth), CLO oraz<br />
ES-S (Strategia ewolucyjna Stawowego); OPT - optimum globalne<br />
BINPACK4<br />
BINPACK8<br />
Lp OPT FFD GGA MTP ES-S CLO Lp. OPT FFD GGA MTP ES-S CLO<br />
.<br />
1 399 403 399 403 403 401 1 167 190 167 184 168 167<br />
2 406 411 406 410 409 407 2 167 191 167 181 168 168<br />
3 411 416 411 416 415 413 3 167 190 167 177 168 168<br />
4 411 416 411 416 417 413 4 167 190 167 180 168 167<br />
5 397 402 397 401 402 398 5 167 191 167 181 168 168<br />
6 399 404 399 402 403 401 6 167 190 167 183 168 168<br />
7 395 399 395 398 400 397 7 167 190 167 183 169 168<br />
8 404 408 404 406 411 407 8 167 189 167 183 169 168<br />
9 399 404 399 402 406 400 9 167 191 167 177 168 168<br />
10 397 404 397 402 403 398 10 167 190 167 185 168 168<br />
11 400 404 400 404 403 401 11 167 190 167 179 168 168<br />
12 401 405 401 404 405 403 12 167 190 167 178 168 168<br />
13 393 398 393 396 397 394 13 167 190 167 187 168 167<br />
14 396 401 396 401 400 398 14 167 190 167 181 168 168<br />
15 394 400 394 399 398 395 15 167 189 167 183 169 168<br />
16 402 408 402 407 408 405 16 167 190 167 181 168 167<br />
17 404 407 404 407 407 405 17 167 189 167 183 168 168<br />
18 404 409 404 407 408 406 18 167 191 167 183 168 168<br />
19 399 403 399 403 403 400 19 167 189 167 180 169 168<br />
20 400 406 400 405 404 401 20 167 191 167 188 168 168
5. Wnioski końcowe<br />
Przeprowadzone badania eksperymentalne wykazały dużą przydatność<br />
techniki CLO <strong>dla</strong> <strong>problemu</strong> <strong>pakowania</strong> pudełek, zaproponowany algorytm daje<br />
tylko nieznacznie gorsze rozwiązania niż, o wiele bardziej skomplikowany, GGA,<br />
natomiast dużo lepsze niż inne algorytmy przybliżone. Nasz algorytm bada tylko<br />
okolice optimów lokalnych, co znacząco redukuje przestrzeń poszukiwań.<br />
Kluczowym elementem sukcesu nowej techniki jest zastosowanie dobrego<br />
algorytmu optymalizacji lokalnej oraz dobrego ruchu perturbacyjnego.<br />
Zagadnienia te są specyficzne <strong>dla</strong> rozpatrywanego <strong>problemu</strong>. Zastosowane przez<br />
nas rozwiązania nie są prawdopodobnie najlepsze <strong>dla</strong> <strong>problemu</strong> <strong>pakowania</strong><br />
pudełek, stąd konieczne są dalsze prace zmierzające do doboru optymalnych<br />
elementów algorytmu CLO.<br />
Literatura<br />
[1] Beasley J.: "OR-Library: Distributing test problems by electronic mail". Journal<br />
of the Operational Research Society, vol. 41, no. 11, 1990, str. 1069-1072.<br />
[2] Falkenauer E.: "A new representations and operators for genetic algorithms<br />
applied to grouping problems". Evolutionaty Computations, vol. 2, no. 2, 1994,<br />
str. 123-144.<br />
[3] Khuri S., Schütz M., Heitkötter J.: "Evolutionary heuristics for the bin packing<br />
problem". Proceedings of ICANNGA’95, April 1995.<br />
[4] Martin O., Otto S.: "Combining simulated annealing with local search<br />
heuristics". Artykuł przeznaczony <strong>dla</strong> Metaheuristics in Combinatoric<br />
Optimization pod redakcją Laporte'a i Osmana.<br />
[5] Stawowy A.: "<strong>Algorytm</strong> ewolucyjny <strong>dla</strong> <strong>problemu</strong> <strong>pakowania</strong>". Kwartalnik<br />
AGH - Mechanika, Wydawnictwa AGH, Kraków 1997, str. 593-598.<br />
[6] Sysło M., Deo N., Kowalik J.: <strong>Algorytm</strong>y optymalizacji dyskretnej, PWN,<br />
Warszawa 1995.