27.12.2014 Views

Algorytm hybrydowy dla problemu pakowania - Wydział ...

Algorytm hybrydowy dla problemu pakowania - Wydział ...

Algorytm hybrydowy dla problemu pakowania - Wydział ...

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!