komputerowy system bada ia efektyw ości metaheurystycz ych
Transkrypt
komputerowy system bada ia efektyw ości metaheurystycz ych
Słowa kluczowe: algorytmy, metaheurystyki, symulacja, alokacja zadań, efektywność. Marek WÓJCIKOWSKI*, Wojciech KMIECIK* KOMPUTEROWY SYSTEM BADAIA EFEKTYWOŚCI METAHEURYSTYCZYCH ALGORYTMÓW ALOKACJI Artykuł obejmuje problematykę adaptacji trzech metaheurystycznych algorytmów przeszukiwania lokalnego do problemu alokacji zadań na dwuwymiarowej siatce procesorów. Prezentuje też komputerowy system eksperymentowania, służący do badania ich efektywności. Omawiane algorytmy to: Tabu Search, Simulated Annealing (Symulowane Wyżarzanie) oraz Random Search. Ponadto użyto algorytmów pomocniczych: First Fit oraz autorskiego Dumb Fit. 1. WPROWADZENIE Przetwarzanie współbieżne od dawna było wykorzystywane w różnych dziedzinach nauki i przemysłu. Stale zyskuje ono na popularności, ostatnimi czasy, także w zastosowaniach domowych. Jednak w praktyce, wykorzystanie stu procent potencjału wielu równoległych procesorów, jest bardzo rzadko osiągane – przeważnie wykorzystywany jest jedynie ułamek pełnej mocy [1]. Jednym z podstawowych problemów, przyczyniających się do tego stanu rzeczy, jest trudność zaalokowania zadań na równoległych procesorach w odpowiedni sposób. Dla dużej liczby zadań do przetworzenia, przejrzenie wszystkich ich permutacji, jest zadaniem przewyższającym zdecydowanie możliwości dzisiejszych komputerów. Dlatego właśnie zdecydowaliśmy się zaimplementować oprogramowanie umożliwiające sprawdzenie na ile zasadne jest wykorzystanie do tego celu algorytmów metaheursytycznych, które działają szybko i często efektywnie. Kolejne sekcje artykułu przedstawiają: sformułowanie problemu i założenia, opis użytych algorytmów, prezentację oprogramowania symulacyjnego oraz przykładowego badania i podsumowanie. * Studenckie Koło Naukowe Systemów Informatycznych i Sieci Komputerowych, Politechnika Wrocławska, Wybrzeże Wyspiańskiego 27, 50-370 Wrocław, POLAND, opiekun: Leszek Koszałka 2. SFORMUŁOWANIE PROBLEMU Węzeł – podstawowy element, reprezentujący procesor w siatce procesorów. Węzeł może być wolny lub zajęty. Siatka procesorów – dalej zwana „siatką” – dwuwymiarowa struktura równomiernie rozmieszczonych węzłów. Można ją oznaczyć, jako M(w, h, t), gdzie w i h to szerokość i wysokość siatki, zaś t to czas życia siatki. Wartość t może być niezerowa albo zerowa. Wartość zerowa oznacza, że siatka będzie aktywna aż do przetworzenia ostatniego zadania w kolejce. Podsiatka S – to prostokątny fragment siatki M, grupa węzłów w określonym momencie czasu. Oznaczyć ją można, jako S(a, b, e, j), gdzie (a, b) to pozycja lewego górnego węzła podsiatki S w siatce M (licząc od lewego górnego rogu, zaczynając od 1), zaś e, j to szerokość i wysokość podsiatki. Określenie, że podsiatka jest zajęta oznacza, że wszystkie jej węzły są zajęte. Siatkę w określonym momencie czasu – M(w, h, t1) – można przedstawić graficznie, jako tablicę liczb całkowitych, gdzie każda liczba odnosi się do jednego węzła. Zero, które można oznaczyć jako kropkę (.), oznacza wolny węzeł. Liczby niezerowe oznaczają zajęty węzeł. Ich wartość jest jednakowa dla podsiatki, do której przydzielono jedno zadanie i oznacza czas pozostały do przetworzenia tego zadania na danym węźle. Na rys. 1. przedstawiono przykład takiego przedstawienia siatki z zaalokowanymi zadaniami. Rys. 1. Przykładowe przedstawienie siatki w chwili czasu z 4 zaalokowanymi zadaniami Zadania, oznaczone jako T(p, q, s) są przechowywane na liście. Zawartość listy jest znana przed procesem alokacji. Podczas alokacji zadania są zdejmowane z listy i układane na siatce i zajmują tam podsiatkę Si(a,b,p,q) przez s jednostek czasu. Kluczowym zagadnieniem było opracowanie odpowiednich funkcji celu, pozwalających, w sposób obiektywny, oceniać skuteczność i porównywać badane algorytmy. Pierwszą, z utworzonych przez nas funkcji celu, jest funkcja sumarycznej efektywności (1), oznaczana jako CE. Jest używana, gdy jest zdefiniowany niezerowy czas życia siatki. W funkcji tej pi, qi, si to odpowiednio: szerokość, wysokość i czas przetwarzania dla i-tego zadania spośród n przetworzonych zadań. n CE = ∑ ( pi ⋅ qi ⋅ si ) i =1 (1) Znając parametry w, h, t całej siatki (szerokość, wysokość, czas życia) możemy, na podstawie wartości CE, obliczyć oparty na niej współczynnik użycia siatki U (2). U= CE ⋅ 100% w⋅h ⋅t (2) Na problem można spojrzeć trójwymiarowo, wtedy zarówno siatka jak i zadania to prostopadłościany (3-ci wymiar to czas). Wartość U, można więc interpretować, jako procent wykorzystania objętości siatki przez zaalokowane zadania. Daje to obiektywne pojęcie o tym, jaka część siatki została „zmarnowana”. Drugim wskaźnikiem jakości jest funkcja czasu zakończenia – TC=tfin. Stosowana jest, gdy czas życia siatki jest ustawiony na wartość 0, czyli siatka działa do przetworzenia wszystkich zadań. Funkcja TC, czyli tfin to chwila czasu, w której przetworzono ostatnie zadanie z listy. Stosowanie tej funkcji jest zalecane tylko czasami, gdyż nie pozwala ona obiektywnie ocenić wykorzystania siatki – pozwala jedynie porównywać algorytmy. Mimo to, czasem jest potrzebna, gdyż samo porównanie algorytmów może wystarczyć na potrzeby określonego badania, zaś stosowanie podejścia z zerowym czasem życia (a co za tym idzie – funkcji TC) skraca czas obliczeń. 3. UŻYTE ALGORYTMY Na potrzeby głównych algorytmów metaheurystycznych należało zdefiniować sposób reprezentacji rozwiązania problemu i sposób ewaluacji takiego rozwiązania. Zdecydowaliśmy, że rozwiązanie będziemy przedstawiać jako permutację zadań, w oparciu o którą, algorytmy pomocnicze przeprowadzą jednokrotną symulację alokacji. Dokonanie takiej symulacji pozwala wyliczyć wartość funkcji celu dla danego rozwiązania (permutacji zadań). Dlatego też, symulacja alokacji zadań wykonywana jest w każdej iteracji algorytmu głównego. Do tej symulacji wykorzystywane są algorytmy pomocnicze. Pierwszym z nich jest Dumb Fit (zwany dalej DF). Jest to prosty algorytm naszego autorstwa, będący zubożoną wersją, opisanego później, First Fit (zwanego dalej FF). Algorytm DF próbuje alokować kolejne zadania z listy, przeglądając ją i nie zmieniając kolejności (zawsze próbuje alokować tylko pierwsze zadanie). Przeglądana jest cała siatka w ciągu całego jej czasu życia. Algorytm FF działa identycznie, z tą różnicą, że dla każdej wykrytej wolnej podsiatki próbuje alokować wszystkie zadania z listy, a nie tylko pierwsze, więc może zmieniać kolejność zadań na liście. Obydwa algorytmy mogą także obracać zadania o 90 stopni przy próbach alokacji. Jako główne algorytmy, zaimplementowaliśmy 3 popularne algorytmy przeszukiwania lokalnego: Tabu Search [3][5][2][6], stworzony przez F. Glovera, Simulated Annealing (Symulowane Wyżarzanie) [5][2][6], S. Kirkpatricka oraz Random Search [5]. Każdy z nich korzysta z przeglądu sąsiedztwa danego rozwiązania (które w określonej iteracji zwane jest rozwiązaniem bieżącym). Zdefiniowaliśmy 2 typy sąsiedztwa – swap oraz insert. Algorytm RS jest najprostszym z trzech zaimplementowanych. Algorytm ten w każdej iteracji losuje nowe rozwiązanie bieżące z sąsiedztwa obecnego rozwiązania. Jest on bardzo odporny na minima lokalne ale, jako że stale zmienia rozwiązanie bieżące, nie jest w stanie precyzyjnie przeszukać żadnego sąsiedztwa. Algorytm SA posługuje się podstawowym parametrem temperatury. W czasie działania algorytmu temperatura ta spada. Na początku SA działa podobnie do RS, zaś wraz ze spadkiem temperatury zaczyna akceptować tylko rozwiązania lepsze od obecnego, dzięki czemu coraz dokładniej przegląda sąsiedztwo i „zsuwa się” do minimum. Algorytm TS działa podobnie do SA przy niskich temperaturach, jednak akceptuje, jako nowe bieżące, tylko te rozwiązania, które nie znajdują się na liście tabu. Tutaj podstawowym parametrem jest długość tej listy. Lista zabronionych rozwiązań utrudnia „zagrzebanie się” w minimum lokalnym. Każdy z w/w algorytmów zapamiętuje rozwiązanie bieżące jako najlepsze, jeśli jest ono lepsze od najlepszego dotychczas. 4. ŚRODOWISKO SYMULACYJNE W celu badania efektywności i specyfiki działania opisanych algorytmów dla zamodelowanego problemu, stworzyliśmy komputerowy system eksperymentowania. Jest to program napisany w jęz. C++ i działający w systemie Windows w środowisku konsolowym. Staraliśmy się go projektować pod kątem dania wielu możliwości badaczowi, w kwestii projektowania serii badań i analizy wyników. Stworzony przez autorów program, można uruchamiać z parametrami lub bez. Aplikacja umożliwia kilka trybów pracy. Pierwszy z nich to tryb demonstracyjny – pokazuje pracę algorytmów DF i FF w jednokrotnym przebiegu symulacji alokacji – krokowo, graficznie, tak jak na rys. 1. Kolejne 3 tryby umożliwiają wprowadzenie wszystkich potrzebnych danych i wykonanie jednokrotnego badania dla każdego z głównych algorytmów – np. w celu kalibracji wartości parametrów pod kątem późniejszych serii badań. Dodatkowo możliwe jest wczytanie serii badań z pliku (przy użyciu odpowiedniej opcji w programie lub przy uruchomieniu z parametrem). Podsumowując: przy użyciu naszego programu można badać 3 zaimplementowane algorytmy w zależności od parametrów (takich jak liczba iteracji, temperatura początkowa i końcowa, długość listy tabu etc. – od 4 do 7 parametrów dla każdego algorytmu) i w zależności od typu danych wejściowych (można generować różnej długości listy zadań, różnej wielkości zadania, różnej wielkości siatki). Można planować serie badań i podawać je z pliku, można też wszystkie wyniki zapisywać do wielu lub jednego plików wyjściowych. Możliwe jest włączenie powtarzania badań w celu uśrednień, wykonywanie badań dla wielu lub jednej listy zadań itd. Wyniki można analizować w arkuszu kalkulacyjnym. Więcej informacji na temat naszego programu oraz formatów używanych plików można uzyskać, uruchamiając go z parametrem –h, lub bezpośrednio z pliku pomocy help.txt. 5. BADANIA Wykonaliśmy przykładową serię badań dla wszystkich algorytmów i różnych parametrów w celu ogólnego porównania ich efektywności. Badania wykonywaliśmy dla instancji problemu określonej w tabeli 1. Mamy tu do czynienia ze zróżnicowaną wielkością zadań względem wymiarów siatki (przypadek ogólny). Wszystkie algorytmy działały przez 20000 iteracji (każde wykonanie trwało około 100 s). Tabela 1. Ustawienia listy zadań i siatki dla przykładowej serii badań. Zmienna Wartość w 12 h 12 t 1000 pi 2÷12 qi 2÷12 si 2÷12 U [%] SA od RS T S i FF 89 88 87 86 85 84 83 82 81 80 79 78 SA FF RS TS 0 500 1000 1500 2000 2500 temp max (SA) Rys. 2. Wyniki SA w zależności od temperatury początkowej względem pozostałych algorytmów. Badania wykonaliśmy dla różnych temperatur początkowych SA, różnych długości listy tabu w TS. We wszystkich przypadkach użyliśmy funkcji DF do zainicjowania oraz w trakcie działania algorytmów. Temperatura końcowa w SA była stała, profil spadku temperatury był geometryczny. Każde badanie było powtórzone 3krotnie w celu uśrednienia wyników. Seria badań była załadowana z 1 pliku wejściowego. Najskuteczniejszy okazał się algorytm SA. Niezależnie od temperatury dawał on lepsze wyniki od najlepszego dla TS i RS oraz o około 10% lepsze od samego FF. Rys. 2. przedstawia wykres wartości funkcji celu w SA, w zależności od temperatury początkowej, względem najlepszych wyników z pozostałych algorytmów. Taki rezultat można tłumaczyć elastycznością SA, jeśli chodzi o połączenie odporności na minima lokalne oraz możliwości precyzyjnego poprawiania wyniku. Widać też, że początkowa temperatura ma kluczowe znaczenie dla działania SA. 6. PODSUMOWANIE Projektowanie oprogramowania do badania efektywności określonych algorytmów w rozwiązywaniu określonego problemu jest zadaniem złożonym. Projektant musi wziąć pod uwagę rozmaite czynniki, takie jak zdefiniowanie sposobu oceny jakości algorytmów czy określenie ich parametrów. Musi on też umożliwić użytkownikowi wygodne wykonywanie rozmaitych testów pod wieloma kątami. Nasze oprogramowanie staraliśmy się projektować mając te cele na uwadze i mamy nadzieję, że daje ono dosyć szerokie możliwości wykonywania rzetelnych badań. LITERATURA [1] BUZZBEE B, The Efficiency of Parallel Processing, Frontiers of Supercomputing, Los Alamos, 1983. [2] EMDEN-WEINART T., Local Search Algorithms and Metaheuristics, http://home.arcor.de/EmdenWeinert/localsearch.html, 23 stycznia 2009. [3] GLOVER F., Tabu search, Kluwer Academic Publishers, 1997. [4] HERTZ A. TAILLARD E. WERRA D., A tutorial on taboo search, http://www.cs.colostate.edu/~whitley/CS640/hertz92tutorial.pdf, 23 stycznia 2009. [5] LICHTENSTEIN M., Algorytmy lokalnego przeszukiwania, ftp://ender.iiar.pwr.wroc.pl/Automatyka/PTA/ls.pdf, 23 stycznia 2009. [6] TROJANOWSKI K., Metaheurystyki praktycznie, WSISiZ, Warszawa, 2005. COMPUTER SYSTEM FOR RESEARCHING THE EFFICIENCY OF METAHEURISTIC ALLOCATION ALGORITHMS This article contains a short description of an experimentation system designed to test the efficiency of metaheuristic local search algorithms in two-dimensional task allocation. It defines the problem, methods of evaluation, gives a brief summary of the algorithms and describes the main ideas behind our simulation software. There is also an example of an experiment performed with our software.