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.