Różne reprezentacje mapy feromonowej w problemie plecakowym

Wielkość: px
Rozpocząć pokaz od strony:

Download "Różne reprezentacje mapy feromonowej w problemie plecakowym"

Transkrypt

1 Wydział Informatyki i Nauki o Materiałach Jarosław Dąbrowski Praca magisterska Różne reprezentacje mapy feromonowej w problemie plecakowym Promotor: dr inż. Mariusz Boryczka Sosnowiec, 2008

2 Spis treści Spis treści 2 Wstęp 4 1 Algorytmy mrówkowe i mrowiskowe Wprowadzenie do wirtualnych mrówek System mrówkowy (AS - Ant System) System mrówkowy Max-Min (MMAS - Min-Max Ant System) System Mrowiskowy - ACS (Ant Colony System) Problem plecakowy Klasyczny problem plecakowy Odmiany problemu plecakowego Przykład problemu plecakowego Techniki rozwiązywania problemów plecakowych Reprezentacje mapy feromonowej w problemie plecakowym Adaptacja systemu mrowiskowego do MKP Ślad feromonowy odkładany w węzłach Ślad feromonowy odkładany na krawędziach Aplikacja do analizy reprezentacji feromonowych Instrukcja obsługi programu Dokumentacja techniczna Badania i eksperymenty 55 2

3 5.1 Badanie parametrów dla krawędziowej reprezentacji feromonu Badanie parametrów dla węzłowej reprezentacji feromonu Porównanie różnych reprezentacji mapy feromonowej Podsumowanie 80 Bibliografia 82 Spis rysunków 84 Spis tabel 86 3

4 Wstęp Celem tej pracy jest porównanie różnych rodzajów reprezentacji feromonu w systemie mrowiskowym zaadaptowanym do optymalizacji problemu plecakowego. System mrowiskowy, podobnie jak algorytmy genetyczne i inne algorytmy ewolucyjne jest algorytmem niedeterministycznym. Bazuje na czynniku losowym. W wielu przypadkach jest niezastąpionym sposobem rozwiązywania problemów, dla których nie istnieją lub nie znaleziono do tej pory algorytmu o wielomianowej złożoności czasowej. Do pracy dołączona została płyta CD zawierająca aplikację testową umożliwiającą porównanie reprezentacji węzłowej i krawędziowej mapy feromonowej. Przy projektowaniu aplikacji testowej głównym zamierzeniem było stworzenie elastycznego i otwartego na modyfikacje modelu danych oraz intuicyjnego interfejsu użytkownika. Optymalizacja algorytmów nie była pierwszorzędnym celem. Aplikację przy niewielkiej modyfikacji będzie można rozszerzyć do rozwiązywania innego rodzaju trudnych, lub wręcz niemożliwych do rozwiązania za pomocą algorytmów deterministycznych problemów. Jako narzędzie do implementacji modelu systemu mrowiskowego wybrano Microsoft Visual Studio Kod programu napisany został w języku C#. Układ tej pracy jest następujący: W pierwszym rozdziale opisana jest geneza systemu mrówkowego oraz jego ewolucja do systemu mrowiskowego. Przedstawione są przykłady zastosowania i wyjaśniona jest zasada działania tych systemów. W kolejnym rozdziale została omówiona istota problemu plecakowego oraz jego modyfikacje. Przedstawiona została definicja problemu plecakowego oraz informacje dotyczące jego złożoności. Krótko opisano sposoby rozwiązywania różnych typów problemów plecakowych. 4

5 Rozdział trzeci przedstawia sposoby adaptacji systemu mrowiskowego do problemu plecakowego. Zostały omówione dwie różne reprezentacje mapy feromonowej: węzłowa i krawędziowa. Omówiono rodzaje lokalnych heurystyk i reguły aktualizacji śladu feromonowego dla każdej z wymienionych reprezentacji. W rozdziale czwartym opisana została aplikacja dołączona do pracy. W instrukcji użytkownika przedstawiono możliwości i opisano poszczególne funkcjonalności programu oraz opisano format danych wejściowych i wyjściowych. Dokumentacja techniczna przedstawia schemat działania programu, model danych oraz komunikację pomiędzy elementami systemu. Ostatni rozdział zawiera opis badań i eksperymentów, które umożliwiła przedstawiona wcześniej aplikacja. Zbadany został wpływ poszczególnych parametrów na wyniki działania algorytmu. Porównane zostały obie omówione reprezentacje feromonu. W rozdziale tym podjęto również próbę skonstruowania takiego zestawu parametrów, który dawałby satysfakcjonujące wyniki dla różnych problemów plecakowych. Praca kończy się wnioskami. 5

6 Rozdział 1 Algorytmy mrówkowe i mrowiskowe Początki sztucznej inteligencji sięgają lat pięćdziesiątych ubiegłego wieku. Powstały wówczas pierwsze, istniejące do dziś laboratorium AI na Uniwersytecie Carnegie Mellon, założone przez Allena Newella i Herberta Simona oraz Massachusetts Institute of Technology, założone przez Johna McCarthy ego. Sztuczna inteligencja po raz pierwszy została zdefiniowana Johna McCarthy ego w 1955 r.: konstruowanie maszyn, o których działaniu dałoby się powiedzieć, że są podobne do ludzkich przejawów inteligencji. Podejmowano wówczas próby zastosowania systemów komputerowych do rozwiązywania złożonych problemów przy braku wszystkich danych. Jednymi z pierwszych takich systemów były algorytmy genetyczne. Na początku lat 90-tych ubiegłego wieku zaproponowano system mrówkowy (z ang. Ant System). 1.1 Wprowadzenie do wirtualnych mrówek Mrówki są owadami żyjącymi w koloniach. Potrafią ze sobą współpracować, dzięki czemu tworzą silną społeczność. Dzięki organizacji grupowej są w stanie wykonać wiele czynności, z którymi nie poradziłyby sobie pojedyncze osobniki. Potrafią odnaleźć najkrótszą drogę z mrowiska do źródła pożywienia. Dokonują tego bez użycia znaków wizualnych. Potrafią przystosować się do zmian w otoczeniu. Przykładowo mogą odnaleźć nową drogę do pożywienia, gdy dotychczasowa droga staje się niedostępna. 6

7 Rysunek 1.1: Droga mrówek z mrowiska do pożywienia W latach czterdziestych ubiegłego wieku francuski entomolog Pierre-Paul Grasse zaobserwował, że niektóre gatunki termitów reagują na pewnego rodzaju bodźce. Zauważył, że reakcją owada na powyższe bodźce może być wyzwolenie tych samych bodźców. Sposób komunikacji, dzięki któremu praca osobników jest stymulowana przez wydajność jaką osiągnęły nazwał stygmerią. Stygmeria jest nie bezpośrednią formą komunikacji. Owady wymieniają informację modyfikując swoje otoczenie. Informacja stymergiczna może być więc odczytana jedynie przez te owady, które znajdują się w pobliżu miejsca wyzwolenia bodźca. Zjawisko stygmerii występuje również w koloniach mrówek. Aby uformować odpowiednią trasę od pożywienia do gniazda, mrówki posługują się śladem feromonowym. Podczas przemieszczania się mrówka pozostawia pewną ilość feromonu. W większości przypadków mrówki kierują się tam, gdzie feromonu jest więcej. To elementarne zachowanie pomoże odpowiedzieć na pytanie, jak mrówki odnajdują najkrótszą drogę pomiędzy pożywieniem a mrowiskiem, gdy na dotychczasowej drodze pojawia się przeszkoda. Drogę z mrowiska do źródła pożywienia przedstawia rysunek 1.1. W momencie pojawienia się przeszkody (rysunek 1.2, które znajdują się tuż przed przeszkodą nie mają możliwości kontynuowania drogi ustanowionej śladem feromonowym. Muszą skręcić w lewo lub w prawo. Pierwsza mrówka wybierze kierunek losowo. Prawdopodobieństwo, że wybierze krótszą drogę jest równe temu, że wybierze drogę dłuższą. W tej sytuacji w przybliżeniu połowa mrówek skręci w jedną stronę, a druga połowa w drugą. Część mrówek, która losowo wybrała krótszą drogę do ominięcia przeszkody, szybciej odnajdzie zagubiony ślad feromonowy. To spowoduje, że na krótszej ścieżce zostanie odłożona większa ilość feromonu w jednostce czasu. Drogę, na której znajduje się większa ilość feromonu jest bardziej atrakcyjna dla mrówek. Decyzja o wyborze 7

8 drogi o największej ilości feromonu nie jest deterministyczna, jednak prawdopodobieństwo wyboru drogi rośnie wraz z ilością odłożonego na niej śladu feromonowego. Przez to coraz więcej mrówek zaczyna wybierać krótsza trasę, gdyż znajduje się tam więcej feromonu (rysunek 1.3). Jest to tzw. proces autokatalityczny. Jak widać mrówka działa jako pojedynczy agent chaotycznie, wybierając drogę losowo, jednak dzięki kooperacji z innymi agentami uzyskuje dużo lepsze rezultaty. Zjawisko to zostało wykorzystane w informatyce. Sztuczne mrówki, wzorowane na mrówkach istniejących w środowisku naturalnym są tzw. agentami służącymi do optymalizacji rozwiązań wielu problemów algorytmicznych. Za pomocą tych mrówek otrzymujemy probabilistycznie przybliżone rozwiązania - jedynie w niektórych przypadkach optymalne. Systemy mrówkowe znajdują zastosowanie przy rozwiązywaniu trudnych problemów, często nierozwiązywalnym za pomocą deterministycznych algorytmów. Wykorzystuje się je m. in. do rozwiązywania problemu komiwojażera (TSP - Travelling Salesman Problem), problemów plecakowych (KP - Knapsack Problem) problemów szeregowania zadań (Scheduling problems), trasowania pakietów w sieciach bezprzewodowych i optycznych (Connectionless Network Routing, Optical Network Routing). W tej pracy system mrowiskowy (z ang. ACS - Ant Colony System) zostanie zaadoptowany do wielokrotnego problemu plecakowego w werjsji dyskretnej. Problem ten należy do dziedziny problemów plecakowych. Zwykle nie można rozwiązać metodami deterministycznymi. System mrowiskowy posłuży do generowania rozwiązań wspomnianego problemu. 1.2 System mrówkowy (AS - Ant System) System mrówkowy (Ant System) został zaproponowany przez Włochów: Marco Dorigo, Vittorio Maniezzo i Alberto Colorni na początku lat 90-tych ubiegłego wieku [4]. Stał się pierwszym algorytmem ACO (Ant Colony Optimalization). W tym systemie sztuczne mrówki poszukują rozwiązania poruszając się po grafie problemu. Uruchamiana jest zadana liczba iteracji. Podczas każdej z nich określona liczba mrówek porusza się po grafie wykonując n kroków. W każdym kroku mrówki nakładają ślad feromono- 9

9 wy i podejmują probabilistyczną decyzję o przejściu do kolejnego węzła grafu. Systemy mrówkowe i mrowiskowe zostały szerzej opisane w publikacjach [5], [6]. Okazało się, że systemy mrówkowe doskonale nadają się do rozwiązywania problemów NP-zupełnych. Działanie systemu mrówkowego najłatwiej opisać na przykładzie problemu komiwojażera. Optymalnym rozwiązaniem tego problemu jest najkrótsza droga (sumaryczna odległość) przebiegająca przez wszystkie miasta (węzły). Dodatkowym ograniczeniem jest to, że każde z miast można odwiedzić jednokrotnie. Problem TSP jest rozwiązywalny za pomocą algorytmu o złożoności n!, dlatego już przy większej liczbie miast nie można go rozwiązać w sensownym czasie. Przyjmijmy następujące założenia: zbiór n miast oznaczonych 1, 2... n oraz odległości między nimi oznaczone d ij graf (N, E), gdzie N jest zbiorem miast, a E - zbiorem odległości pomiędzy nimi. b i (t), gdzie i = 1, 2,..., n jest liczbą mrówek w mieście (węźle) i w chwili t. m jest sumaryczną liczbą mrówek we wszystkich miastach (węzłach). Każda mrówka to prosty agent, którego cechy zostaną omóione w dalszej części pracy. W pierwszym kroku algorytmu mrówki są ustawiane w losowo wybranych miastach (węzłach grafu problemu). W kolejnych krokach poruszają się po krawędziach grafu przechodząc do kolejnych miast. Kolejne krawędzie łączące miasta wybierane są przez mrówki na podstawie prawdopodobieństwa zależnego od funkcji odległości pomiędzy miastami (węzłami) oraz śladu feromonowego odłożonego na krawędzi. Przejście mrówki do miasta odwiedzonego wcześniej jest niedozwolone. Zrealizowane jest to za pomocą tzw listy tabu - listy odwiedzonych miast przez mrówkę. Zbiór miast odwiedzonych przez mrówkę k oznaczono M k. Prawdopodobieństwo przejścia mrówki k z miasta i do miasta j wyraża się wzorem: p ij (t) = [τ ij (t)] α [η ij ] β s/ M k [τ is (t)] α [η is ] β gdy j / M k 0 gdy j M k (1.1) 10

10 Rysunek 1.4: Wybór krawędzi gdzie η jest odwrotnością odległości między miastami (η ij = 1/d ij ), natomiast α i β to współczynniki wagowe. Wpółczynnik α jest wagą śladu feromonowego, a β jest wagą widoczności η. Przykład: Na rysunku 1.4 mrówka ma do wyboru 4 krawędzie: SA, SB, SC, SD, na których odłożono feromon o następujących wartościach: τ SA = 0.02, τ SB = 0.015, τ SC = 0.37, τ SD = Dla uproszczenia załóżmy, że dla każdej krawędzi widoczność η ij jest jednakowa, równa 1 i przyjmijmy parametry α = 1 i β = 1. Z wzoru 1.1 obliczamy prawdopodobieństwo wybrania każdej z krawędzi: 0.02 p A = = = p B = = = p C = = = p D = = =

11 Aktualizacja śladu feromonowego Po przejściu całej trasy przez pojedynczą mrówkę, nakładany jest ślad feromonowy na każdej odwiedzonej krawędzi (i, j). Niech τ ij oznacza wielkość śladu feromonowego na krawędzi (i, j): τ ij (t + 1) = (1 ρ) τ ij (t) + τ ij (t, t + 1) (1.2) gdzie ρ jest współczynnikiem takim, że (1 ρ) oznacza pozostałość śladu feromonowego - wartość ρ musi być mniejsza od 1, aby uniknąć nieskończonej kumulacji śladu feromonowego. τij(t, k t + 1) jest wartością śladu feromonowego odłożonego na krawędzi(i, j) przez k-tą mrówkę w chwili pomiędzy t a t + 1. Obliczana jest wg wzoru: m τ ij (t, t + 1) = τij(t, k t + 1) (1.3) k=1 Dla każdej mrówki tworzymy strukturę danych zwaną listą tabu, w której przechowywane będą identyfikatory odwiedzonych miast. Taki zabieg należy przeprowadzić, aby zapewnić, że każde miasto zostanie odwiedzone przez mrówkę dokładnie jeden raz. Przy kolejnych krokach mrówki, krawędzie prowadzące do miast znajdujących się naliście tabu nie są brane pod uwagę. Pojawiło się kilka koncepcji obliczania wyrażenia τij(t, k t+1). W zależności od sposobu obliczania tej wartości, oraz od tego, w którym momencie będzie uaktualniany ślad feromonowy τ ij (t), algorytm będzie skutkował innymi wynikami. W związku z tym powstały 3 postacie algorytmu mrówkowego. Feromon stały (Ant-density) W algorytmie Feromon stały dana ilość śladu feromonowego Q 1 jest odkładana za każdym razem, kiedy mrówka przechodzi z miasta i do miasta j. Q τij(t, k 1 gdy k-ta mrówka przechodzi z i do j pomiędzy chwilą t a t + 1 t+1) = 0 w przeciwnym wypadku 12

12 W momencie 0 (na początku działania algorytmu) mrówki zostają rozlokowane w różnych miastach, a intensywność śladu feromonowego na krawędziach jest ustawiana do wartości początkowej. Do listy tabu każdej mrówki dopisywane jest aktualne miasto. Każda mrówka przechodzi z miasta i do j wybierając miasto, do którego przechodzi z prawdopodobieństwem danym funkcją 1.1. Na wynik funkcji wpływają 2 czynniki: wielkość feromonu na krawędzi (τ ij ) oraz widoczność (η ij ) sterowane przez parametry wagowe α i β. Za każdym razem, gdy mrówka wykonuje przejście do kolejnego miasta, pozostawia ona ślad feromonowy na krawędzi (i, j) - ilość śladu odłożonego przez mrówkę jest dodawana do ilości feromonu znajdującego się wcześniej na tej krawędzi uwzględniając odparowywanie feromonu. Gdy każda mrówka wykona ruch, obliczane są prawdopodobieństwa przejść do kolejnych miast uwzględniając nowe wartości śladu feromonowego odłożonego na krawędziach. Algorytm zostaje zakończony po (n 1) krokach - listy tabu będą w tym momencie pełne, więc mrówki nie będą miały możliwości przejścia do żadnego miasta. Feromon średni (Ant-quantity) Sposób działania algorytmu feromon średni jest bardzo zbliżony do działania feromonu stałego z tą różnicą, że ilość feromonu odkładanego na krawędzi jest odwrotnie proporcjonalna do długości tej krawędzi. Zatem w algorytmie feromon średni mamy: τij(t, k t+1) = Q 2 d ij gdy k-ta mrówka przechodzi z i do j pomiędzy chwilą t a t w przeciwnym wypadku Feromon cykliczny (Ant-cycle) Ta postać algorytmu mrówkowego bardziej różni się od wcześniej omówionych algorytmów (feromon stały i średni). W tym przypadku ślad feromonowy nie jest nakładany po każdym przejściu mrówki z miasta do miasta, ale po przejściu całej drogi przez mrówkę: 13

13 τij(t, k t+1) = Q 3 L k gdy k-ta mrówka przechodzi z i do j pomiędzy chwilą t a t w przeciwnym wypadku gdzie Q 3 jest stałą, a L k jest długością trasy przebytej przez mrówkę k. W przypadku tego algorytmu można oczekiwać lepszych wyników od dwóch poprzednich, ponieważ użyta tutaj jest informacja związana z globalną wartością wyniku. Ilość feromonu jest aktualizowana co n kroków, a wartość jest obliczana analogicznie do wzoru 1.2: τ ij (t + n) = ρ 1 τ ij (t) + τ ij (t, t + n) (1.4) gdzie m τ ij (t, t + n) = τij(t, k t + 1) k=1 Używamy tu innego współczynnika ρ 1, ponieważ zanikanie śladu feromonowego również następuje po przejściu całej trasy przez mrówki. Więcej informacji na temat odmian systemu mrówkowego znajduje się w publikacji [9]. 1.3 System mrówkowy Max-Min (MMAS - Min-Max Ant System) W roku 2000 Stutzle i Hoos zaproponowali system mrówkowy Max-Min AS (MMAS)[7], który jest bardzo zbliżony do pierwotnej wersji systemu mrówkowego. Pierwszą cechą wyróżniającą to rozwiązanie jest fakt, że krawędzie odwiedzone przez najlepszą mrówkę w bieżącej iteracji otrzymują dodatkową dawkę feromonu. Dodatkowo wartości śladu feromonowego są ograniczone przez przedział [τ min, τ max ]. Pomaga to ominąć stagnację, która miała miejsce w systemach mrówkowych, gdy nagradzano jedynie tę mrówkę, która odkryła najlepsze rozwiązanie. Zastosowano tu również metodę wygładzania śladu feromonowego (z ang. trail smoothing mechanism). Polega ona na tym, że ostateczna ilość nakładanego śladu feromonowego jest proporcjonalna do różnicy maksymalnej możliwej ilości feromonu na krawędzi (τ max ) i ilości nałożonej ilości feromonu w danym cyklu, czyli: τ ij τ max τ ij (1.5) 14

14 . 1.4 System Mrowiskowy - ACS (Ant Colony System) Pierwotną wersją systemu mrowiskowego był system mrówkowy. AS był początkowo zastosowany do rozwiązania problemu komiwojażera (TSP). Powstały jednak lepsze algorytmy w tej dziedzinie. Mimo to, system mrówkowy stanowi trzon algorytmów mrowiskowych, w których również wykorzystuje się sztuczne mrówki i ślad feromonowy. Krawędzie grafu problemu są modyfikowane o odpowiednią ilość feromonu, proporcjonalną do wartości rozwiązania. Na koncu każdego cyklu część feromonu zanika. Aktualizacja śladu feromonowego (globalna i lokalna) W systemie mrowiskowym występuje dodatkowo zjawisko globalnej aktualizacji feromonu - ślad feromonowy nakładany jest dodatkowo tam, gdzie znaleziono najlepsze dotąd rozwiązanie w czasie działania algorytmu. Modyfikacja ta została wprowadzona, aby zwiększyć atrakcyjność najbardziej obiecującej trasy. Dzięki temu algorytm szybciej skupia się na poszukiwaniu optymalnej trasy w pobliżu najlepszego dotąd znalezionego rozwiązania. Globalna aktualizacja śladu feromonowego następuje po odwiedzeniu wszystkich miast przez mrówkę. Feromon jest aktulizowany w następujący sposób: τ ij (t + n) = (1 α) τ ij (t) + α 1 n L + (1.6) gdzie τ ij to ilość feromonu na krawędzi (i, j), α to współczynnik odparowywania feromonu, a L + to długość najlepszej znalezionej dotąd trasy. Podobnie jak w systemie mrówkowym, za każdym razem, gdy mrówka przemieszcza się do kolejnego miasta, następuje lokalna aktualizacja feromonu. Ślad fero- 15

15 monowy znajdujący się na aktualnej krawędzi jest modyfikowany według wzoru: τ ij (t + 1) = (1 ρ) τ ij (t) + ρ τ 0 gdzie τ 0 jest wartością początkową feromonu. W pierwszym cyklu na każdej z krawędzi nałożony jest ślad feromonowy o wartości τ 0. Dobry mechanizm aktualizacji śladu feromonowego pozwala ominąć stagnację. Jest to stan, w którym wszystkie mrówki zaczynają generować jednakowe rozwiązanie problemu, a tym samym zaprzestają dalszą eksplorację w poszukiwaniu lepszego wyniku. Stagnacja powodowana jest zbyt wysokim stężeniem feromonu na trasie jednego rozwiązania w przypadku, gdy parametry zostaną źle dobrane do aktualnego problemu. Jednym z najtrudniejszych zadań jest właśnie dobór odpowiednich parametrów, tak aby algorytm odpowiednio balansował pomiędzy eksploatacją znalezionych dotąd dróg a eksploracją nowych rozwiązań. Eksploracja i eksploatacja W systemie mrowiskowym, przed przejściem do kolejnego miasta, mrówka podejmuje decyzje o eksploracji lub eksploatacji trasy. Decyzja ta podejmowana jest na podstawie czynnika losowego. Jako jeden z parametrów algorytmu ustalana jest wartość q 0 < 0, 1 >. Przed każdym przejściem mrówki, w celu podjęcia decyzji generowana jest liczba pseudolosowa q również z przedziału < 0, 1 >. arg max{[τ ij ] [η ij ] β } jeżeli q q 0 j = j / M k J w przeciwnym przypadku (1.7) Jeżeli q jest mniejsze lub równe q 0, podejmowana jest decyzja o eksploracji. W tym przypadku mrówka wybiera najbardziej atrakcyjne miasto. Wybór miasta zależy od widoczności miasta (η) oraz ilości feromonu odłożonego na drodze do niego (τ). Decyzja ta jest deterministyczna i określona wzorem: j = arg max j / M k {[τ ij ] [η ij ] β } 16

16 W przypadku, gdy wartość q jest większa od q 0, podejmowana jest decyzja o eksploracji. Na wybór miasta podczas eksploracji ma wpływ czynnik losowy. Prawdopodobieństwo przejścia do miasta j w tym wypadku określone jest wzorem p ij (t) = τ ij (t) [η ij ] β s/ M k τ is (t) [η is ] β gdy j / M k 0 gdy j M k (1.8) 17

17 Rozdział 2 Problem plecakowy 2.1 Klasyczny problem plecakowy Załóżmy, że planujemy wycieczkę w góry. Jesteśmy zainteresowani, aby zapełnić nasz plecak najpotrzebniejszymi przedmiotami. Mamy do dyspozycji N różnych typów przedmiotów, które są nam niezbędne. Mogą to być: butelka wody, termos herbaty, kanapka, jabłko, pomarańcza, kurtka, sweter. Każdy z tych elementów ma określone dwa atrybuty: objętość przedmiotu oraz jego wartość (czynnik, który decyduje o stopniu przydatności danego przedmiotu). Pojemność naszego plecaka jest ograniczona, dlatego sumaryczna objętość przedmiotów nie może przekroczyć objętości plecaka. Zadanie polega na tym, aby zapakować do plecaka taką kombinację przedmiotów, aby ich sumaryczna wartość była jak największa. Powyższe problem nosi nazwę problemu plecakowego. Zwany również zadaniem załadunku lub dylematem złodzieja, jest popularnym problemem optymalizacji kombinatorycznej. Optymalizacja kombinatoryczna Optymalizacja kombinatoryczna jest gałęzią optymalizacji w matematyce stosowanej i informatyce. Jest szczególnym przypadkiem problemów optymalizacyjnych - przestrzeń rozwiązań jest zbiorem dyskretnym. Dodatkowo wszystkie rozwiązania muszą spełniać warunek wykonalności, który określa dziedzinę problemu. Algorytmy optymalizacji kombinatorycznej pomagają rozwiązać problemy ogólnie uznawane za 18

18 trudne do rozwiązania. Zwykle polegają na eksploracji dużej przestrzeni rozwiązań tych problemów, stopniowo zawężając ścieżkę poszukiwań. Opisywany wcześniej System Mrowiskowy, przystosowany do rozwiązywania problemu plecakowego jest jednym z takich algorytmów. Optymalizacja kombinatoryczna skupia się głównie wokół problemów NP-trudnych. Problemy te uznawanę są za nierozwiązywalnew rozsądnym czasie. Mimo to, w niektórych przypadkach (np. gdy przestrzeń rozwiązań jest niewielka), możemy je rozwiązać. Złożoność obliczeniowa Klasą złożoności nazywamy zbiór problemów obliczeniowych o podobnej złożoności obliczeniowej. Problem należy do klasy P, jeżeli istnieje deterministyczna maszyna turinga rozwiązująca ten problem w czasie wielomianowym.[18] Jeżeli istnieje niedeterministyczna maszyna turinga rozwiązująca problem w czasie wielomianowym, to problem należy do klasy NP. Problem p jest NP-zupełny, gdy należy do klasy NP oraz gdy każdy problem z klasy NP można sprowadzić w czasie wielomianowym do problemu p. Teoria złożoności obliczeniowej została szerzej opisana w publikacji [16]. Formalna definicja problemu plecakowego Problem plecakowy możemy sformułować w następujący sposób: Do dyspozycji mamy plecak o pojemności W oraz zbiór n elementów {x 1, x 2,..., x N }. Każdy element i ma określoną wartość p i oraz rozmiar w i. Maksymalizujemy funkcję: przy założeniu: n p i x i (2.1) i=1 n w i x i W, x i {0, 1} (2.2) i=1 19

19 Złożoność problemu plecakowego Problem plecakowy należy do klasy problemów NP-zupełnych. Dowód: Rozważmy szczególny przypadek problemu plecakowego, w którym p i = w i dla każdego i oraz W = P. To oznacza, że mamy dany zbiór liczb całkowitych w 1,, w n. Liczba P to łączna wartość obiektów wchodzących w skład rozwiązania. Sprawdzamy, czy można wybrać takie liczby, by ich suma wynosiła dokładnie P. Problem ten okazuje się być NP-zupełny. Można zredukować do niego problem pokrycia trójelementowymi podzbiorami, który jest NP-zupełny. Mamy dany przykładowy problem pokrycia trójelementowymi zbiorami: {S 1,, S n }. Musimy sprawdzić, czy wśród danych zbiorów istnieją takie zbiory, które są rozłączne parami i pokrywają zbiór U = {1, 2,, 3m}. Zbiory te przedstawiamy jako wektory bitowe z {0, 1} 3m. Sumowanie tych zbiorów przypomina dodawanie liczb zapisanych w systemie binarnym. Poszukujemy podzbioru tych liczb, którego elementy dadzą w sumie P = 2 n 1. Dodawanie wektorów binarnych różni się jednak od dodawania liczb, dlatego wektory potraktujemy jako liczby przedstawione nie przy podstawie 2, ale przy podstawie n + 1. Wtedy zbiór S staje się liczbą w i = j S(n+1) 3m j. Możemy więc dowieść, że jeżeli istnieje taki podzbiór liczb, którego suma wynosi P = 3m 1 j=0 (n + 1) j, to jest to równoważne istnieniu dokładnego pokrycia zbiorami {S 1, S 2,, S n }. Złożoność problemu plecakowego została omówiona szerzej w publikacji [16]. 2.2 Odmiany problemu plecakowego W klasycznym problemie plecakowym przedmioty nie powtarzają się. Mamy do dyspozycji po jednym elemencie o określonym typie i wartości. Powyższy przypadek nosi nazwę 0-1 lub binarnego problemu plecakowego. Podział ze względu na powtarzalność przedmiotów się powtarzać. Istnieją odmiany problemu plecakowego, w których elementy w plecaku mogą 20

20 Ze względu na powtarzalność przedmiotów problemy plecakowe dzielimy na: binarne (0-1), nieograniczone, ograniczone. Modyfikacja problemu plecakowego, w założeniach której możemy wielokrotnie umieszczać ten sam przedmiot w plecaku, nosi nazwę nieograniczonego problemu plecakowego (z ang. unbounded knapsack problem). W tym przypadku założenia matematyczne do problemu wyglądają nieco inaczej: n w i x i W, x i {0,, n} (2.3) i=1 Jeżeli przedmioty w plecaku mogą się powtarzać, ale mamy ograniczoną liczbę każdego z przedmiotów, to mówimy o ograniczonym problemie plecakowym (bounded knapsack problem): n w i x i W, x i {0,, b i } (2.4) i=1 gdzie b i jest maksymalną liczbą i-tego przedmiotu, jaka może znaleźć się w plecaku. Podział ze względu na możliwość dzielenia przedmiotów Biorąc pod uwagę możliwość dzielenia przedmiotów, problem plecakowy możemy podzielić na ciągły i dyskretny. W przypadku problemu ciągłego przedmioty możemy sobie wyobrazić jako substancje sypkie lub płynne. W plecaku możemy umieścić dowolną część przedmiotu: n w i x i W, x i R, x 0, 1 (2.5) i=1 Gdy mówimy o problemie dyskretnym, mamy do dyspozycji przedmioty, których nie możemy dzielić. Jeżeli istnieje możliwość dzielenia przedmiotu (i mówimy o problemie jednowymiarowym), to problem plecakowy jest rozwiązywalny przy użyciu algorytmu zachłannego. Aby rozwiązać taki problem, wystarczy obliczyć dla każdego przedmiotu współczynnik wartość/waga, a następnie wypełnić plecak przedmiotami według wielkości obliczonego współczynnika (ropoczynając od najwyższego). 21

21 Podział ze względu na liczbę ograniczeń Omówione wcześniej odmiany uwzględniały tylko jedno ograniczenie - wagę przedmiotów. W tym przypadku problem nazywamy jednowymiarowym. Każdy przedmiot oprócz wagi może charakteryzować się również objętością, a plecak może mieć ograniczoną dopuszczalną wagę i objętość. W tej sytuacji mówimy o problemie wielokrotnie ograniczonym lub wielowymiarowym (z ang. Multi-dimensional Knapsack Problem). Oczywiście oprócz wagi i objętości możemy ustalić inne ograniczenia. Liczba ograniczeń w problemie wielowymiarowym może być dowolna. Niech liczba ograniczeń jest równa m, wtedy musi zostać spełniony warunek: n w ij x i W j (2.6) i=1 dla każdego j takiego, że j {1,..., m} Podział ze względu na liczbę kontenerów Kolejnym rodzajem problemu plecakowego jest problem wieloplecakowy (z ang. Multiple Knapsack Problem). O takim problemie mówi się, gdy przedmioty mają zostać umieszczone w więcej niż jednym plecaku (kontenerze). Dodatkowo każdy plecak może mieć własną wartość ograniczenia (np. plecaki o różnej pojemności): n m p i x ij (2.7) i=1 j=1 przy założeniu: oraz: n w i x i W j dla każdegoj {1, 2,, m} i=1 n m x ij 1, i=1 j=1 x ij {0, 1}. 22

22 2.3 Przykład problemu plecakowego Załóżmy, że mamy do dyspozycji 4 przedmioty: A, B, C i D. Każdy z nich ma daną masę i cenę. Problem przedstawia tabela 2.1. Tabela 2.1: Przykładowy problem plecakowy A B C D masa (M) 5kg 10kg 15kg 20kg cena (W) 23zł 48zł 54zł 80zł cena/1kg 4,60zł 4,80zł 3,60zł 4zł Zadanie polega na tym, aby załadować do kontenera o dopuszczalnej masie 25 kg takie przedmioty, aby ich wartość była jak największa. W przypadku powyższego problemu przestrzeń rozwiązań jest stosunkowo mała. Na rysunku 2.2 przedstawione zostały wybrane rozwiązania. a) pusty kontener b) rozwiązanie nieoptymalne ( M = 20kg, W = 78zł ) c) rozwiązanie nieoptymalne ( M = 25kg, W = 102zł ) Rysunek 2.1: Ilustracja przykładowego problemu plecakowego 23

23 Rysunek 2.2: Wybrane rozwiązania przykładowego problemu d) rozwiązanie optymalne ( M = 25kg, W = 103zł ) Rozwiązania b i c nie są optymalne, ponieważ istnieje taka kombinacja przedmiotów, których sumaryczna waga nie przekracza ładowności plecaka, a których sumaryczna wartość jest większa. Taką kombinację przedstawia rozwiązanie d. 2.4 Techniki rozwiązywania problemów plecakowych W zależności od rodzaju problemu, możemy używać różnych sposobów jego rozwiązania. Większość stosowanych technik okazuje się skuteczna tylko do wybranego rodzaju problemu plecakowego. Na przykład do rozwiązywania problemu ciągłego stosuje się opisany dalej algorytm zachłanny, który nie sprawdza się w przypadku problemu dyskretnego. Programowanie dynamiczne Do rozwiązywania problemu plecakowego dyskretnego możemy wykorzystać programowanie dynamiczne. Polega ono na dzieleniu dużych problemów na mniejsze 24

24 podproblemy. Kluczem do zaprojektowania algorytmu techniką programowania dynamicznego jest znalezienie równania rekurencyjnego opisującego optymalną wartość funkcji celu dla danego problemu, jako funkcji optymalnych wartości funkcji celu dla podproblemów o mniejszych rozmiarach. Dzięki wykorzystaniu programowania dynamicznego, problem plecakowy jest rozwiązywalny w czasie pseudo-wielomianowym. Algorytm programowania dynamicznego dla 0-1 problemu plecakowego W przypadku klasycznego problemu plecakowego należy przyjąć następujące założenia: Niech w i {1,, n} to koszt i-tego przedmiotu, a p i {1,, n} to wartość i-tego przedmiotu. Maksymalizujemy sumaryczną wartość przedmiotów przy założeniu, że całkowity koszt jest mniejszy od c. Definiujemy rekurencyjną funkcję V (i, j) jako maksymalną sumaryczną wartość kombinacji przedmiotów od 1 i, dla której sumaryczny koszt jest mniejszy lub równy j. Funkcję V (i, j) możemy zdefiniować następująco: V (0, j) = 0 V (i, 0) = 0 V (i 1, j) V (i, j) = max{v (i 1, j), p i + V (i 1, j w i )} gdyw i > j gdyw i j Rozwiązaniem problemu jest wartość funkcji V (n, W ). Chcąc obliczyć wartość funkcji V (i, j), musimy znać obliczyć wartość funkcji V (i 1, j). Jeżeli j jest większe lub równe od kosztu i-tego elementu, to wartość funkcji V (i, j) obliczamy wybierając większą wartość spośród wartość funkcji V (i 1, j w i ) oraz V (i 1, j). W ten sposób z dużego problemu rekurencyjnie dochodzimy do małych podproblemów. Algorytm programowania dynamicznego dla nieograniczonego problemu plecakowego Programowanie dynamiczne można również zastosować do rozwiązywania problemu plecakowego nieograniczonego (czyli takiej modyfikacji problemu plecakowego, gdy w plecaku możemy umieścić ten sam przedmiot więcej niż 1 raz) [18]. 25

25 Algorytm 1: Algorytm zachłanny while (Plecak.PozostalaPojemnosc>0) (LiczbaDostepnychPrzedmiotow>0) do Przedmiot := { przedmiot o najwiekszym wspolczynniku wartość/objetość } if (Plecak.PozostalaPojemnosc > Przedmiot.Objetosc) then Plecak.DodajCalyPrzedmiot(przedmiot) else // dodajemy możliwie duży fragment przedmiotu: Plecak.DodajFragmentPrzedmiotu(przedmiot) end if end while Definiujemy funkcję V (i) jako maksymalną sumaryczną wartość przedmiotów, których całkowity koszt nie przekracza wartości i. Aby obliczyć wartość funkcji V (i), dla każdego j {1,, n} obliczamy wartość wyrażenia p j + V (i w j ) i wybieramy to, które ma największą wartość: V (i) = 0 V (i) = max{p i + V (i w j ) w j i} V (c). Rozwiązaniem nieograniczonego problemu plecakowego jest wartość funkcji Algorytm zachłanny Do rozwiązania problemów ciągłych można wykorzystać algorytm zachłanny (z ang. greedy algorithm). Jest to taki algorytm, w którym wybieramy przedmioty o największym współczynniku wartość/koszt. W celu lepszego zobrazowania algorytmu koszt jest przedstawiony jako objętość przedmiotu: Algorytm zachłanny nie przynosi oczekiwanych efektów w przypadku problemów dyskretnych. Rysunek 2.3 przedstawia rozwiązania przykładowego problemu plecakowego (2.1). I) rozwiązanie przy założeniach binarnego (0-1) problemu plecakowego ( M = 25kg, W = 71zł ) 26

26 Rysunek 2.3: Rozwiązania przykładowego problemu przy użyciu algorytmu zachłannego II) rozwiązanie przy założeniach nieograniczonego problemu plecakowego ( M = 25kg, W = 119zł) III) rozwiązanie przy założeniach ciągłego problemu plecakowego ( M = 25kg, W = 111zł ) Rozwiązanie optymalne algorytm zachłanny zwrócił przy założeniach problemu ciągłego. W powyższym przykładzie rozwiązanie optymalne zostało również znalezione przez algorytm zachłanny przy założeniach problemu dyskretnego nieograniczonego (jednak jest to szczególny przypadek). W przypadku problemu binarnego algorytm zachłanny zwrócił rozwiązanie nieoptymalne. System mrowiskowy Obiecujące rezultaty daje system mrowiskowy zaadoptowany do problemu plecakowego. Temat przystosowania ACO do rozwiązywania problemu plecakowego zostanie opisany szerzej w kolejnym rozdziale. 27

27 Rozdział 3 Reprezentacje mapy feromonowej w problemie plecakowym W poniższym rozdziale zostaną omówione różne podejścia do adaptacji systemu mrowiskowego do rozwiązywania problemu plecakowego. Główną różnicą jest model mapy feromonowej. Ślad feromonowy może być odkładany na krawędziach lub węzłach grafu problemu [1]. 3.1 Adaptacja systemu mrowiskowego do MKP Kluczowym punktem adaptacji systemu mrowiskowego do rozwiązywania problemu plecakowego jest wybór, które z elementów tworzonego rozwiązania mają być nagradzane. Związany jest z tym również sposób w jaki nagrody te będą wykorzystywane do tworzenia nowych rozwiązań. System mrowiskowy zaadoptowany do problemu plecakowego przedstawia algorytm 2. Rozwiązaniem MKP jest zbiór wybranych obiektów S = {0 1,, o k } (mówimy, że obiekt o i został wybrany, gdy zmienna decyzyjna x i jest równa 1. Można rozważyć następujące sposoby nakładania śladu feromonowego: Sposób I - feromon odkładany na obiektach [2]. Pierwszym sposobem jest nakładanie śladu feromonowego na każdym obiekcie w zbiorze S. W tym przypadku dążymy do zwiększenia atrakcyjności wybraneg obiektu, aby zwiększyć prawdo- 28

28 Algorytm 2: ACO zaadoptowany do MKP Inicjuj ślad feromonowy do wartości τ max. repeat for mrówka k 1..nb do Utwórz puste rozwiązanie S k. Wybierz losowo pierwszy obiekt o 1 1..n. S k := {o 1 } ObiektyKandydujace := {o i 1..n} while ObiektyKandydujace zawiera elementy do Wybierz obiekt o i z prawdopodobieństwem p Sk (o i ). S k := S k {oi }. Usuń z ObiektyKandydujace każdy obiekt, który nie spełnia ograniczeń. end while end for Aktualizuj ślad feromonowy. until warunek stopu nie spełniony podobnieństwo użycia tego obiektu przy tworzeniu nowego rozwiązania. Sposób II - feromon odkładany na parach wybranych obiektówx [1]. Ślad feromonowy można nakładać na każdej parze (o i, o i+1 ) wybranych obiektów ze zbioru S. Zabieg ten ma na celu zwiększenie atrakcyjności obiektu o i+1, jeżeli ostatnim wybranym obiektem był o i. 3.2 Ślad feromonowy odkładany w węzłach W problemie komiwojażera (TSP) mamy do czynienia ze zbiorem miast połączonych krawędziami. TSP można uznać za wzorcowy problem zdefiniowany za pomocą grafu (w którym węzłami są miasta, a krawędziami drogi łączące miasta). Rozwiazaniem problemu komiwojażera jest sekwencja: S =< o o, o 2,, o n > W przeciwieństwie do TSP, rozwiązaniem problemu plecakowego nie jest sekwencja, ale zbiór przedmiotów: S = {o 1, o 2,, o n } 29

29 Projektując model mapy feromonowej dla modelu plecakowego, można pominąć kolejność umieszczania przedmiotów w plecaku. Ze zbioru S zawierającego n przedmiotów wybieramy najlepszy podzbiór S zawierający s przedmiotów. Mając na uwadze powyższy fakt, można tak zmodyfikować system mrowiskowy, aby ślad feromonowy odkładany był na węzłach grafu. Taka reprezentacja mapy feromonowej, zwana dalej podejściem węzłowym, to pierwszy ze sposobów adaptacji systemu mrowiskowego do problemu plecakowego. Został on szerzej przedstawiony w publikacji [2]. Podejście węzłowe znacznie obniża koszt algorytmu. System nie musi pamiętać wartości śladu fermonowego na wszystkich krawędziach, których liczba w grafie pełnym wynosi n (n 1) 2, a jedynie na n węzłach. Aktualizacja śladu feromonowego Wartość feromonu odłożonego na węźle i w chwili t+1 w tym podejściu będzie obliczana według wzoru 3.1: τ i (t + 1) = (1 ρ) τ i (t, t + 1), (3.1) gdzie ρ oznacza współczynnik wyparowywania śladu feromonowego, a τ i to całkowity przyrost feromonu. Całkowity przyrost feromonu to suma wartości śladu feromonowego odłożonego przez wszystkie m mrówek w chwili t + 1. Jest obliczany według wzoru 3.2: m τ i (t, t + 1) = τi k (t, t + 1) (3.2) k=1 Kolejną różnicą pomiędzy problememami uporządkowania a problemem plecakowym jest wielkość rozwiązania. W problemie TSP wielkość rozwiązania jest z góry ustalona (komiwojażer musi przejść przez wszystkie miasta). W związku z tym z góra ustalona jest również ilość kroków algorytmu. Ilość feromonu, którym dysponuje mrówka dzielona jest przez ilość miast i odkładana proporcjonalnie na każdej krawędzi. W przypadku problemu plecakowego przestrzeń rozwiązań może składać się z elementów różnej wielkości. Innymi słowy ilość przedmiotów wchodzących w skład rozwiązania nie jest ustalona z góry. 30

30 W klasycznym systemie mrowiskowym wykonujemy aktualizację śladu feromonowego po przejściu N kroków przez każdą mrówkę. W problemie TSP ta liczba kroków była rowna ilości miast. W problemie plecakowym nie wiemy po ilu krokach mrówka zakończy cykl. Dlatego aby osiągnąć zgodność z systemem mrowiskowym, należy zdefiniować liczbę N max. Aktualizacja śladu feromonowego będzie odbywała się po każdych N max krokach algorytmu, a przyrost feromonu obliczany będzie według wzoru 3.3 Q L k gdy mrówka k włączy do rozwiązania obiekt i τ i (t, t + N max ) = 0 w przeciwnym przypadku (3.3) Wielkość feromonu, jakim dysponuje mrówka obliczamy według wzoru 3.4 Q = 1 ni=1 c i (3.4) Lokalne heurystyki Podejście to wymaga również modyfikacji sposobu obliczania prawdopodobieństwa przejścia do kolejnego węzła. W klasycznym systemie mrowiskowym mrówka w każdym kroku wybier jedną z krawędzi (i, j) z prawdopodobieństwem p ij. Prawdopodobieństwo wybrania krawędzi (i, j) zależy od wartości feromonu τ ij na tej krawędzi oraz lokalnej heurystki η ij. W omawianym podejściu adaptacji systemu mrowiskowego do problemu plecakowego feromon jest odkładany na węzłach grafu. Prawdopodobieństwo przejścia będzie więc zależeć od wartości śladu feromonowego odłożonego na węzłach oraz lokalnej heurystyki η i Lokalna heurystyka, podobnie jak w przypadku wartości feromonu, będzie obliczana nie dla krawędzi grafu, ale dla węzła. Nieistotne, jaki obiekt został ostatnio włączony do rozwiązania - lokalna heurystyka będzie obliczana jako stosunek wartości obiektu do średniego współczynnika wykorzystania zasobów. Wartośc lokalnej heurystyki obiektu i dla mrówki k jest obliczana według wzoru 3.5. η i (S k (t)) = c i δ i (k, t) (3.5) 31

31 gdzie: c i - wartość obiektu i. δ i (k, t) - średni współczynnik wykorzystania zasobów mrówki k przez obiekt i. 3.3 Ślad feromonowy odkładany na krawędziach Opisane poniżej podejście - zwane dalej podejściem krawędziowym lub reprezentacją krawędziową, bazuje na klasycznym algorytmie mrowiskowym. Podejście to zostało zaproponowane w 2004 roku przez Stefkę Fidanovą. Przedstawione zostało w publikacji [1]. Tak jak w przypadku podejścia węzłowego, obiektami włączanymi są do rozwiązania są węzły grafu. Podstawową różnicą między podejściem krawędziowym a węzłowym jest jednak to, że ślad feromonowy jest odkładany na krawędziach grafu. Mówimy w tym przypadku o mrówce krawędziowej. W każdym kroku mrówka k wybiera jedną z dozwolonych krawędzi. Prawdopodobieństwo przejścia z obiektu i do obiektu j zależy od dwóch wartości: atrakcyjności krawędzi eta ij oraz wartości śladu feromonowego τ ij. Jest obliczane według wzoru 3.6: p k ij(t) = τ ij η ij (S k (t)) q dozwolonek (t) τ iqη iq (S k (t)) gdyj dozwolone k (t) 0 w przeciwnym przypadku (3.6) Wartość η ij obliczana jest za pomocą jednej z zaproponowanych dalej heurystyk. Lokalne heurystyki Przy obliczaniu prawdopodobieństwa przejścia możemy korzystać z dwóch rodzajów heurystyk: statycznych i dynamicznych. Statyczne heurystyki nie zmieniają się w trakcie działania algortymu. Wartość heurystyki przy wyborze danej ścieżki będzie identyczna w każdym kroku algorytmu. 32

32 Dynamiczne heurystyki są zależne od aktualnego stanu algorytmu. W zależności jakie obiekty włączone są do rozwiązania częściowego, heurystyki mogą przyjmować różne wartości dla tego samego argumentu. W publikacji [1] zaproponowano kilka heurystyk dla problemu MKP. Aby wypromować obiekty o większej wartości i mniejszym koszcie, można użyć heurystyki 3.7: η ij = p d 1 j ( m i1 w ij ) d 2. (3.7) W heurystyce 3.7 możemy uwzględnić również budżet, jakim dysponujemy. Jako budżet należy rozumieć maksymalny dopuszczalny koszt wszystkich obiektów w rozwiązaniu. Taką modyfikację przedstawia wzór 3.8. W tym wypadku dla każego z zasobów liczony jest stosunek kosztu obiektu kandydującego do budżetu danego zasobu. η ij = p d 1 j ( m i1 w ij /c i ) d 2. (3.8) Wyżej opisane zostały heurystyki statyczne. Nie zależą od tego, jakie przedmioty zostały włączone wcześniej do rozwiązania. Podczas budowania rozwiązania częściowego można jednak uwzględnić pozostałą ilość zasobów, którymi dysponujemy. Jak wiadomo pozostałe zasoby zmieniają się w zależności od tego, jakie przedmioty zostały włączone do tej pory w rozwiązaniu częściowym. Takie podejście przedstawia heurystyka opisana wzorem 3.9: η ij = p d 1 j mi1 (w ij /(c i n j=1 w ij x j ). (3.9) Heurystyka 3.9 zależy od dotychczasowego przebiegu algorytmu, dlatego jest heurystyką dynamiczną. Aktualizacja śladu feromonowego W systemie mrowiskowym ślad feromonowy jest aktualizowany w dwóch etapach. Każda mrówka wykonuje aktualizację lokalną. Lokalna aktualizacja śladu feromonowego przebiega według reguły 3.10: 33

33 τ ij (t + 1) = (1 ρ)τ ij (t) + ρτ 0. (3.10) Po zakończeniu cyklu przez wszystkie mrówki odbywa się globalna aktualizacja śladu feromonowego. Na wszystkich krawędziach należących do najlepszego rozwiązania wartość feromonu jest modyfikowana według reguły τ ij (t + 1) = (1 α)τ ij (t) + α τ. (3.11) gdzie: α (0, 1 > - współczynnik wyparowywania feromonu. τ - wielkość odkładanego feromonu. Wielkość odkładanego feromonu τ jest wprost proporcjonalna do wartości funkcji celu najlepszego rozwiązania. 34

34 Rozdział 4 Aplikacja do analizy reprezentacji feromonowych. W tym rozdziale zostanie opisana aplikacja dołączona do niniejeszej pracy. Aplikacja ta umożliwia analizę omówionych wcześniej podejść adaptacji systemu mrowiskowego do problemu plecakowego. Graficzny interfejs użytkownika został zaprojektowany tak, aby korzystanie z aplikacji było możliwie wygodne i intuicyjne. 4.1 Instrukcja obsługi programu Program składa się z dwóch części: pierwsza z nich umożliwia wczytanie pojedynczego problemu, sterowanie parametrami algorytmu i analizowanie działania algorytmu przy pomocy kilku rodzajów wizualizacji; druga część to kolejka zadań, dzięki której można zaplanować obliczenia do wykonania. Przeznaczeniem kolejki zadań jest analiza wyników działania algorytmu przy różnych parametrach wejściowych. 35

35 Zalecane parametry sprzętowe Program działa w środowisku Microsoft Windows XP. Dołączona aplikacja została utworzona w środowisku Microsoft Visual Studio.NET Do prawidłowego funkcjonowania aplikacji wymagana jest biblioteka.net Framework w wersji 2.0. Aplikacja działa na każdej platformie sprzętowej spełniającej wymagania systemu Windows XP. Do efektywnej pracy programu zalecane są następujące parametry sprzętowe: Procesor Pentium 1.6 GHz, 256MB pamięci operacyjnej, 20MB wolnego miejsca na dysku twardym Szczegółowa analiza przebiegu działania algorytmu Po uruchomieniu programu pojawia się główne okno aplikacji wraz z informacją o programie (rysunek 4.1). Rysunek 4.1: Okno O programie 36

36 Na pasku u góry okna znajdują się trzy ikony. Pierwsza od lewej otwiera okno O programie. Kolejna (symbol wózka) otwiera nowe okno problemu do analizy. Trzecia ikona (zegar) pozwala otworzyć plik kolejki zadań. Aby wczytać dowolny problem plecakowy, należy otworzyć nowe okno problemu (zielona ikona symbolizująca wózek). Pojawi się okno, w którym znajdują się trzy zakładki: Problem, Parametry, Sterowanie. Rysunek 4.2: Zakładka Problem Na pierwszej zakładce należy wczytać problem plecakowy. Po kliknięciu na przycisk Wczytaj z pliku pojawi się okno dialogowe umożliwiające wybór pliku do wczytania. Pliki z danymi wejściowymi problemu muszą mieć rozszerzenie.mkp. Format pliku z danymi został opisany dalej. Jeżeli program napotka na problem podczas wczytywania pliku (np. brak dostępu do pliku, nieprawidłowy format pliku), to pojawi się odpowiedni komunikat. Jeżeli problem zostanie wczytany prawidłowo, to dane wejściowe zostaną wyświetlone w tabeli (rysunek 4.2). W pierwszym wierszu (Plecak 1 ) znajdujsą dane plecaka. Kolejne wiersze opisują przedmioty (Element 1.. n), które są do dyspozycji. 37

37 W kolumnach tabeli podana jest wartość przedmiotu i ograniczenia. Po wczytaniu problemu można przejść do wyboru reprezentacji mapy feromonowej (przycisk Następny krok). Zostanie otwarta druga zakładka, przedstawiona na rysunku 4.3. Rysunek 4.3: Zakładka Parametry - wybór reprezentacji feromonu Można wybrać jedną z dwóch reprezentacji feromonu opisanych w pracy: węzłową lub krawędziową. Po wybraniu reprezentacji feromonu należy kliknąć przycisk Dalej, aby przejść do ustawiania parametrów algorytmu (rysunek 4.4). Algorytm można skonfigurować ustawiając następujące wartości parametrów: Liczba mrówek - liczba całkowita, większa od 0 Wartość początkowa feromonu (τ 0 ) - liczba rzeczywista większa od 0 Waga heurystyki lokalnej (β)- liczba rzeczywista, większa lub równa 0 Współczynnik wyparowywania (ρ)- liczba rzeczywista z przedziału [0, 1] Wielkość poświaty feromonowej (α)- liczba rzeczywista z przedziału [0, 1] Prawdopodobieństwo eksploracji (q 0 ) - liczba rzeczywista z przedziału [0, 1] 38

38 Rysunek 4.4: Zakładka Parametry - ustawienia parametrów dla wybranej reprezentacji Gdy parametry algorytmu zostaną ustawione, należy kliknąć przycisk Dalej. Zostanie otwarta kolejna zakładka - Sterowanie (rysunek 4.5). Zakładka Sterowanie podzielona jest na kilka obszarów: Nawigacja - w tym miejscu można ustawić warunek stopu algorytmu: ograniczyć liczbę cykli algorytmu lub podać wartość funkcji celu, po osiągnięciu której działanie algorytmu zostanie zakończone. Prędkość - Za pomocą suwaka można ustawić opóźnienie pomiędzy cyklami. Gdy suwak znajduje się po lewej stronie, po każdym cyklu działanie algorytmu jest wstrzymywane na 1 sekundę. W przypadku, gdy suwak znajduje się po prawej stronie, opóźnienie jest zerowe. Zmiana położenia suwaka pozwala zatem sterować prędkością działania algorytmu. Jest to pomocne przy analizowaniu omówionych dalej wizualizacji. Wyniki - ten obszar poświęcony jest statusowi działania algorytmu. W tym miejscu wyświetlany jest czasie działania algorytmu, liczba wykonanych iteracji oraz wartość najlepszego znalezionego rozwiązania. Poniżej tych informacji znajdują 39

39 Rysunek 4.5: Zakładka Sterowanie - widok w trakcie działania algorytmu się cztery przyciski służące do otwierania okien wizualizacji: Wydajność, Szczegóły rozwiązania, Rozkład feromonu, Rozkład prawdopodobieństwa. w dolnej części okna znajduje się pasek postępu oraz dwa przyciski do sterowania algorytmem (Uruchom i Reset). Wizualizacje Użytkownik ma do dyspozycji kilka rodzajów wizualizacji: Szczegóły rozwiązania - okno zawierające informacje o aktualnym najlepszym znalezionym rozwiązaniu. Na zakładce Podsumowanie znajduje się wartość rozwiązania i lista przedmiotów, które znajdują się w plecakach. Na zakładce Plecak 1 znajduje się wizualizacja plecaka, która przedstawia procentowe zapełnienie plecaka przez poszczególne przedmioty we wszystkich wymiarach (rysunek 4.6). Wydajność - wykres, na którym przedstawione są wartości najlepsze i najgorsze rozwiązania znalezione w poszczególnych cyklach (rysunek 4.7). 40

40 Rysunek 4.6: Wizualizacja rozwiązania Rysunek 4.7: Wykres wydajności algorytmu Rozkład feromonu - wizualizacja aktualizowana w czasie rzeczywistym podczas działania algorytmu. Przedstawia rozkład feromonu na krawędziach lub węzłach w zależności od wybranego algorytmu. Wizualizacja mapy reprezentacji węzłowej przedstawia rysunek 4.8, natomiast rysunek 4.9 przedstawia wizualizację mapy feromonu reprezentacji krawędziowej. Ilość feromonu oznaczona jest kolorem. Kolor czarny oznacza wartość inicjalną feromonu. W przypadku reprezentacji węzłowej wizualizacja ma postać wykresu słupkowego, w którym każdy węzeł odpowiada 41

41 jednemu słupkowi. Reprezentacja krawędziowa została zwizualizowana przez siatkę punktów. Kolory punktów zmieniają się stopniowo od czarnego przez żółty do czerwonego. Kolor czerwony oznacza największą ilość feromonu. Rysunek 4.8: Wizualizacja mapy feromonowej w reprezentacji węzłowej Rozkład prawdopodobieństwa - wizualizacja bardzo zbliżona do Rozkładu feromonu. Różnica polega na tym, że przy wizualizacji jest brana pod uwagę jest nie tylko ilość feromonu, ale również heurystyka lokalna. Kolejka zadań Kolejka zadań to funkcjonalność programu pozwalająca na zaplanowanie wielu uruchomień algorytmu z różnymi parametrami. Po kliknięciu na pomarańczową ikonę symbolizującą zegar pojawia się okno dialogowe wyboru pliku. Jeżeli wybrany plik 42

42 Rysunek 4.9: Wizualizacja mapy feromonowej w reprezentacji kolejki ma prawidłowy format, to zostaje otwarte okno Kolejka zadań przedstawione na rysunku Kolejka ta wczytywana jest z pliku zapisanego w formacie.csv. Jest to plik tekstowy, w którym każdy wiersz odpowiada jednemu zadaniu. Parametry zadania są oddzielone średnikami. Każdy wiersz pliku zawiera następujące informacje: nazwa pliku problemu, np. sento.mkp rodzaj algorytmu (K - reprezentacja krawędziowa, W - reprezentacja węzłowa) liczba uruchomień algorytmu liczba cykli w każdym uruchomieniu algorytmu parametry algorytmu oddzielone spacjami (np. m=5 beta=1,5) Przykładowy plik kolejki wygląda następująco: 43

43 Rysunek 4.10: Kolejka zadań podczas działania test2.mkp;k;100;80;m=5 beta=0,4 alpha=8 rho=0,001 tau0=0,0001 test2.mkp;w;100;40;m=10 beta=0,4 alpha=8 rho=0,001 tau0=0,0001 test2.mkp;k;100;20;m=20 beta=0,4 alpha=8 rho=0,001 tau0=0,0001 test2.mkp;k;100;10;m=40 beta=0,4 alpha=8 rho=0,001 tau0=0,0001 test2.mkp;k;100;50;m=10 beta=0,4 alpha=8 rho=0,001 tau0=0,0001 test2.mkp;k;100;50;m=10 beta=0,4 alpha=4 rho=0,001 tau0=0,0001 test2.mkp;k;100;50;m=10 beta=0,4 alpha=2 rho=0,001 tau0=0,0001 test2.mkp;k;100;50;m=10 beta=0,4 alpha=1 rho=0,001 tau0=0,0001 Pierwszy wiersz informuje o tym, ze: test2.mkp - problem ma zostać wczytany z pliku test2.mkp K - do rozwiązania problemu zostanie użyty algorytm mrówki krawędziowej algorytm zostanie uruchomiony 100 razy 80 - każde uruchomienie będzie się składało z 80 cykli 44

44 m=5 beta=0,4 alpha=8 rho=0,001 tau0=0, parametry algorytmu: 5 mrówek, β = 0, 4, α = 8, ρ = 0, 001, τ 0 = 0, 0001 Kolejkę można zatrzymać lub uruchomić za pomocą przycisku Start/stop. Zadania wykonywane są w kolejności, w jakiej zostały zapisane w pliku. Gdy zadanie jest wykonywane, wiersz w tabeli zmienia kolor na żółty. Po wykonaniu zadania wiersz zmienia kolor na zielony (gdy w conajmniej jednym uruchomieniu znaleziono optymalne rozwiązanie) lub czerwony (gdy nie znaleziono optymalnego rozwiązania w żadnym z uruchomień). W tabeli znajdują się dodatkowo kolumny informujące o najlepszym znalezionym rozwiązaniu, ilości trafionych rozwiązań we wszystkich uruchomieniach oraz średni numer cyklu, w którym zostało znalezione najlepsze rozwiązanie. Wyniki zadania uruchamianych w kolejce są zapisywane do plików z rozszerzeniem.out. Na przykład wyniki kolejki test.csv są zapisywane do pliku test.csv.out. W pliku tym zapisywane są następujące informacje: dane wejściowe wykonywanego zadania, wartość najlepszego znalezionego rozwiązania, liczba uruchomień, w których znaleziono optymalne rozwiązanie, liczba cykli, w których trafiono na optymalne rozwiązanie, numer cyklu pierwszego trafienia (wartość średnia z wszystkich uruchomień), wartość najlepszego rozwiązania w poszczególnych cyklach (wartości średnie z wszystkich uruchomień), średnia wartość rozwiązania w poszczególnych cyklach (wartości średnie z wszystkich uruchomień), suma trafień optymalnego rozwiązania w poszczególnych cyklach z wszystkich uruchomień. 45

45 Format danych wejściowych i wyjściowych Problem plecakowy do analizy można wczytać z pliku. Pliki zawierające dane wejściowe problemu plecakowego są plikami tekstowymi z rozszerzeniem.mkp. Wartości w pliku są oddzielone spacjami. Przykładowo plik weing1.mkp ma następującą treść: Struktura plików mkp jest ustalona w następujący sposób: Pierwsza linia pliku zawiera liczbę ograniczeń oraz liczbę przedmiotów oraz. Problemie weing1 składa się z 28 przedmiotów. Objętość plecaka ma 2 ograniczenia. Kolejne 28 liczb to wartości poszczególnych przedmiotów (1898, 440,..., 10500). Następne 2 liczby to wartości ograniczeń plecaka (600, 600). W następnej kolejności podane są wartości ograniczeń (56 liczb) dla wszystkich przedmiotów. Ostatnia liczba to wartość optymalnego rozwiązania problemu. 4.2 Dokumentacja techniczna Do wykonania projektu użyta została platforma Microsoft Visual C# Express Kod programu został napisany w języku C#. Więcej informacji dotyczących tego 46

46 języka programowania można znaleźć w publikacjach [10], [11], [12]. Projekt aplikacji można podzielić na dwie warstwy: logiki i prezentacji. Warstwa prezentacji zawiera formatki oraz komponenty stanowiące graficzny interfejs aplikacji. Warstwa logiki dzieli się na następujące pakiety klas: model algorytmu mrowiskowego (AcoAlgorithm), model wielokrotnego problemu plecakowego (MkpModel), sterownik (Controller) Model algorytmu mrowiskowego W niniejszej pracy omawiane są dwie różne reprezentacje feromonu: węzłowa i krawędziowa. Algorytmy odpowiadające tym reprezentacjom umożliwiają rozwiązywanie problemu plecakowego o dowolnej liczbie wymiarów przedmiotu oraz dowolnej liczbie plecaków. W strukturze projektu tym algorytmom odpowiadają im klasy: NodeAntAlgorithm oraz EdgeAntAgorithm. Klasy te dziedziczą po abstrakcyjnej klasie AcoAlgorithm zawierającą wspólne elementy tych dwóch algorytmów. Klasa ta stanowi zarazem interfejs dla klas pakietu sterownika. Klasa AcoAlgorithm Klasa stanowi trzon algorytmu mrowiskowego (diagram więcej informacji na temat diagramów klas i języka UML można znaleźć w publikacji [17]). Do niej przekazywane są informacje o problemie do rozwiązania oraz parametry algorytmu. W klasie zdefiniowane są dwie kluczowe metody abstrakcyjne: Initalize i ExecuteCycle. Implementacje tych metod zostały zawarte w klasach potomnych (NodeAntAlgorith oraz EdgeAntAlgorithm) Metoda Initialize() jest uruchamiana po wczytaniu problemu oraz parametrów. Pozwala przygotować algorytm do działania. Podczas jej wywołania defi- 47

47 Rysunek 4.11: Diagram klas pakietu AcoAlgorithm niowane są elementy grafu problemu, zbiór mrówek oraz innych obiektów niezbędnych w trakcie działania algorytmu. Metoda ExecuteCycle() odpowiada za wykonanie pojedynczego cyklu algorytmu. Wyniki cyklu zwracane są w obiekcie klasy CycleResult. Wyniki te zawierają informacje o najlepszym i najgorszym rozwiązaniu znaleziony w wykonanym cyklu. W CycleResult przekazywana jest również informacja o średniej z wartości rozwiązań znalezionych w danym cyklu. Klasa NodeAntAlgorithm Szczegółowe informacje o sposobie działania algorytmu węzłowego zostały umieszczone w klasie NodeAntAlgorithm oraz związanymi z nim klasami: KnapsackItemNode oraz NodeAnt. Klasa KnapsackItemNode opisuje pojedynczy węzeł grafu problemu. Ślad feromonowy odkładany jest na węzłach, więc obiekty klasy KnapsackItemNode zawierają informację o ilości feromonu znajdującego się w węźle. Ponadto każdy węzeł odpwiada konkretnemu przedmiotowi umieszczanemu w plecaku w relacji 1-1 zawiera referencję do plecaka (obiekt Knapsack) oraz przedmiotu (KnapsackItem) Klasa NodeAnt reprezentuje agenta w reprezentacji węzłowej. Agent ten za- 48

48 wiera następujące informacje: lista odwiedzonych węzłów (visitednodes), lista dostępnych węzłów (availablenodes), referencja do węzła, w którym aktualnie się znajduje (currentnode), obiekt rozwiązania (Solution). Podczas działania algorytmu agent decyduje o tym, który węzeł jako kolejny ma zostać włączony do rozwiązania. Podjęcie takiej decyzji odbywa się w trakcie wywołania metody selectnextnode(). Wybór węzła odbywa się zgodnie z założeniami algorytmu: I) Obliczana jest atrakcyjność poszczególnych węzłów. II) Podejmowana jest decyzja o eksploatacji lub eksploracji. III) W drodze eksploatacji wybierany jest węzeł najbardziej atrakcyjny lub w przypadku eksploracji - kolejny węzeł jest losowany (prawdopodobieństwo wybrania węzła jest wprost proporcjonalne do jego atrakcyjności). IV) Agent (mrówka) ustawiana jest w wybranym węźle (KnapsackItemNode) za pomocą metody setlocation() po czym następuje lokalna aktualizacja śladu feromonowego. Lista dostępnych węzłów generowana jest na podstawie informacji o pozostałej ilości miejsca w plecaku oraz ograniczeniach. Dla każdego węzła sprawdzane jest, czy odpowiadający mu przedmiot zmieści się w plecaku (za pomocą metody Knapsack.IsEnoughPlaceFor()). Gdy lista dostępnych węzłów jest pusta, agent kończy cykl i analizowana jest wartość rozwiązania. Gdy wszyscy agenci zakończą cykl informacje o znalezionych rozwiązaniach przekazywane są w obiekcie CycleResult. Na początku kolejnego cyklu lista odwiedzonych węzłów każdej mrówki jest czyszczona. Informacją pozostałą po wcześniej odbytych cyklach jest ślad feromonowy odłożony na poszczególnych węzłach grafu (KnapsackItemNode). 49

49 Klasa EdgeAntAlgorithm Reprezentacja krawędziowa została zrealizowana przez klasę EdgeAntAlgorithm oraz związane z nią klasy: EdgeAnt, EdgeAntNode oraz Edge. Obiekty klas EdgeAntNode oraz Edge reprezentują odpowiednio węzły grafu oraz krawędzie pomiędzy nimi. W reprezentacji krawędziowej feromon odkładany jest na krawędziach grafu. W związku z tym informacja o ilości feromonu przechowywana jest w obiektach klasy Edge. Każda krawędź (Edge) zawiera również referencje do węzła (EdgeAntNode) źródłowego i docelowego. Węzły natomiast zawierają listę referencji do wychodzących z nich krawędzi (jest to pewien nadmiar informacji, jednak znacznie przyspiesza odwoływanie się do poszczególnych struktur danych). Obiekty węzłów w algorytmie krawędziowym (EdgeAntNode), tak jak w przypadku algorytmu węzłowego, zawierają informację o plecakach i przedmiotach. Różnią się tym od KnapsackItemNode, że zawierają informacji o feromonie (jak wspomniano wcześniej informacja ta przechowywana jest na krawędziach grafu. Agenta w algorytmie krawędziowym reprezentuje klasa EdgeAnt. W tym przypadku agent zawiera informację o odwiedzonych krawędziach oraz o węźle, w którym aktualnie się znajduje. Działanie EdgeAnt jest zbliżone do NodeAnt. Różni się ono tym, że feromon jest odkładany na krawędziach grafu. Podczas wykonywania cyklu w metodzie selectnextedge wybierana jest najbardziej atrakcyjna krawędź. Przy obliczaniu atrakcyjności krawędzi uwzględniany jest feromon odłożony na krawędzi oraz przedmiot znajdujący się w węźle do którego ta krawędź prowadzi. Model wielokrotnego problemu plecakowego Klasa MultipleKnapsackProblem opisuje problem plecakowy. Obiekt klasy MultipleKnapsackProblem zawiera następujące informacje: umowną nazwę problemu plecakowego, listę plecaków (Knapsack), które należy zapełnić, listę dostępnych przedmiotów (KnapsackItem), 50

50 Rysunek 4.12: Model wielokrotnego problemu plecakowego - diagram klas wartość rozwiązania optymalnego (jeżeli taka wartość jest znana) Klasa MultipleKnapsackProblem udostępnia również metodę MultipleKnapsackProblem.F która pozwala wczytać problem plecakowy z pliku. Format pliku wejściowego został w instrukcji obsługi użytkownika. Obiekt Knapsack reprezentuje pojedynczy plecak, w którym można umieszczać przedmioty. W obiekcie plecaka przechowywane są: lista przedmiotów, wartość pozostałej przestrzeni w plecaku (typu Size), sumaryczna wartośći przedmiotów w plecaku (typu Value). Każdy przedmiot charakteryzuje się dwoma parametrami: wartością przedmiotu (Value) oraz jego wielkością (Size). Wielkość przedmiotu może mieć dowolną liczbę wymiarów - liczba wymiarów to inaczej liczba ograniczeń w problemie plecakowym. Obiekt klasy Solution reprezentuje rozwiązanie problemu plecakowego. Zawiera listę przedmiotów wchodzących w skład rozwiązania oraz wartość rozwiązania. Sterownik Sterownik odpowiedzialny jest za sterowanie przebiegiem algorytmu. Komunikacja pomiędzy sterownikiem a graficznym interfejsem użytkownika oparta jest na 51

51 Rysunek 4.13: Diagram przejść stanów sterownika modelu zdarzeń. Klasa MkpSolver odpowiada za uruchamianie kolejnych cykli algorytmu, do póki warunek stopu nie zostanie spełniony. Umożliwia uruchomienie algorytmu w tle. MkpSolver stanowi pomost pomiędzy interfejsem użytkownika a modelem algorytmu. Klasa ta kontroluje stan algorytmu. Przykładowo, gdy użytkownik próbuje zmienić parametry w trakcie działania algorytmu, MkpSolver blokuje możliwość zmiany parametrów (wyrzucany jest wyjątek AcoException). Diagram 4.13 przedstawia możliwe przejścia pomiędzy stanami algorytmu. Po utworzeniu obiektu MkpSolver ma on stan New. Następnie wybierany jest problem plecakowy, po czym następuje zmiana stanu na ProblemSet. W następnej kolejności wybieramy rodzaj mapy feromonowej i sterownik przechodzi do stanu AlgorithmSet. Po ustawieniu parametrów algorytmu MkpSolver stan przyjmuje wartość ParametersSet. W tym momencie uruchamiana jest metoda Initialize(), a sterownik przechodzi do stanu Ready. Po uruchomieniu algorytmu sterownik przechodzi do stanu Running, a po zatrzymaniu powraca do stanu Ready. Po wykonaniu pojedynczego cyklu wywoływane jest zdarzenie ExecuteCycleEvent. 52

52 Rysunek 4.14: Diagram klas interfejsu użytkownika Jako parametry zdarzenia przekazywane są wyniki zakończonego cyklu (obiekt CycleResult). Obiekt ten jest wykorzystywany przez interfejs do wizualizacji wyników. Klasa TaskQueue reprezentuję kolejkę zadań. Dzięki niej można wykonać serie obliczeń za pomocą algorytmu. Do kolejki możemy dodawać zadania (obiekty klasy Task). Zadanie (Task) zawiera informację o problemie, rodzaj algorytmu (mrówka węzłowa lub krawędziowa) oraz informację o liczbie uruchomień algorytmu, liczbę cykli w jednym uruchomieniu oraz parametry algorytmu. Każde zadanie można uruchomić dzięki metodzie Execute(). Zadanie jest zakończone po zakończeniu ostatniego cyklu ostatniego uruchomienia algorytmu. Graficzny interfejs użytkownika Graficzny interfejs użytkownika został zbudowany przy użyciu pakietu Windows.Forms wchodzącego w skład biblioteki.net Framework. Do stworzenia interfejsu graficznego wykorzystano technologię MDI, która pozwala na stworzenie okna stanowiącego kontener dla innych okien uruchamianych w programie. Rolę głównego okna (MdiParent) pełni klasa MainWindow. Oknami należącymi do MainWindow są: MkpControlForm - okno sterowania przebiegiem i wizualizacją algorytmu, 53

53 TaskQueueForm - okno zarządzania kolejką zadań, SolutionForm - wizualizacja rozwiązania (używa komponentu KnapsackVisualisation do wizualizacji zawartości plecaka) PerformanceChart - wizualizacja wartości rozwiązań w poszczególnych cyklach algorytmu, PheromoneMap - wizualizacja mapy feromonowej 54

54 Rozdział 5 Badania i eksperymenty W rozdziale tym zostaną opisane doświadczenia mające na celu porównanie dwóch podejść adaptacji systemu mrowiskowego do problemu plecakowego. Zbadany z zostanie wpływ poszczególnych parametrów na wyniki działania algorytmów. W badaniach wykorzystano kilka znanych problemów plecakowych. Dla wszystkich testowanych problemów znana jest wartość optymalna rozwiązania. Dane wejściowe tych problemów znajdują się w plikach: hp1.mkp, hp2.mkp pb1.mkp - pb7.mkp sento1.mkp, sento2.mkp weing1.mkp - weing6.mkp weish01.mkp - weish30.mkp Pliki te znajdują się na płycie CD dołączonej do niniejszej pracy. 5.1 Badanie parametrów dla krawędziowej reprezentacji feromonu Algorytm mrówki krawędziowej można regulować za pomocą następujących parametrów: 55

55 liczba mrówek (m) wartość początkowa feromonu (τ 0 ) waga heurystyki (β) współczynnik poświaty feromonowej(α) współczynnik wyparowywania (ρ) prawdopodobieństwo eksploracji (q 0 ) Parametry dla każdego problemu są dobierane empirycznie. Ustalenie uniwersalnych parametrów dla wszystkich problemów jest niemożliwe. Powodem jest choćby fakt, że część problemów można rozwiązać za pomocą algorytmu używającego bardziej zachłannej strategii. W przypadku innych problemów takie strategie się nie sprawdzają. Zostało to zobrazowane na rysunku 5.1. Rysunek 5.1: Wykresy przykładowych funkcji o wielu optimach lokalnych. Porównując wykresy można stwierdzić, że funkcja f(x) zawiera mniej optimów lokalnych. Funkcja g(x) zawiera więcej optimów lokalnych, co nie sprawdziłoby się w przypadku algorytmu zachłannego (algorytm utknąłby w miejscu jednego z optimów lokalnych). W przypadku systemu mrowiskowego mamy do czynienia z tzw stagnacją. Zjawisko to pojawia się, gdy zbyt duża ilość feromonu zostanie odłożona na krawędziach grafu należących do rozwiązania znajdującego się w lokalnym optimum, a odparowywanie feromonu następuje zbyt wolno. Gdy trasa na której odkładany jest feromon staje się wielokrotnie bardziej atrakcyjna od innych tras, prawie wszystkie 56

56 mrówki zaczynają jej używać i szansa znalezienia rozwiązania leżącego w globalnym optimum jest znikoma. Należałoby użyć takich wartości parametrów, aby po znalezieniu jednego z optimów lokalnych algorytm był w stanie kontynuować poszukiwanie w pozostałych optimach lokalnych. Można zwiększyć współczynnik wyparowywania ρ lub zmniejszyć wartość feromonu odkładaną na krawędzi (współczynnik α) podczas globalnej aktualizacji śladu feromonowego. Można też zmodyfikować wagę heurystyki lokalnej w przypadku gdy jest ona zbyt duża, faworyzowane są przedmioty, które mają większy iloraz wartości przedmiotu przez jego wielkość. Przy modyfikowaniu parametrów należy jednak mieć na uwadze, że zbyt duża zmiana wartości parametru spowoduje, że stagnacja nie wystąpi, ale zastosowanie algorytmu nie da dobrych rezultatów. Przykładowo, gdy współczynnik wyparowywania feromonu ρ będzie zbyt duży, feromon będzie wyparowywał na tyle szybko, że mrówki nie będą poruszały się po trasach wyznaczających dobre rozwiązania. Jak widać problem doboru parametrów jest skomplikowany. Zmiana wartości jednego z parametrów może wpłynąć na to, że należałoby zmodyfikować również inny parametr. Poniższy rozdział został poświęcony eksperymentom mającym na celu dobór odpowiednich wartości parametrów. Nie jest możliwe znalezienie takich wartości parametrów, które byłyby złotym środkiem dla wszystkich problemów plecakowych. Jednak zostanie podjęta próba ustalenia zakresów wartości parametrów, dla których przy większości problemów zastosowanie algorytmu mrowiskowego daje dobre rezultaty. Współczynnik poświaty feromonowej Współczynnik poświaty feromonowej α pozwala regulować wartość feromonu odkładanego na krawędziach grafu podczas globalnej aktualizacji. Wartość tego współczynnika wpływa wprost proporcjonalnie na wielkość odkładanego feromonu. Badania współczynnika α zostały przeprowadzone dla problemów sento1 oraz weish01. Testowano następujące wartości parametru: 1, 2, 5, 10, 20, 50, 100, 200. Wartości pozostałych parametrów zostały dobrane empirycznie, drogą prób i błędów. Dla 57

57 każdej wartości parametru α wykonano 20 uruchomień algorytmu po 100 iteracji. Wartości pozostaych parametrów to: m = 20 β = 0, 4 τ 0 = 0, ρ = 0, q 0 = 0, 5 Na rysunku 5.2 znajdują się wykresy przedstawiające: całkowitą liczbę iteracji we wszystkich próbach, w których trafiono na optymalne rozwiązanie (wykresy a), c)) skuteczność algorytmu liczba prób, w których znaleziono optymalne rozwiązanie (wykresy b), d)) Wykresy a) i b) przedstawiają wyniki dla problemu sento1.mkp, a wykresy c) i d) dla weish01.mkp. Z wykresów można odczytać, że największą skuteczność algorytm osiągał w przypadku mniejszych wartości α: 1, 2 lub 4. Dla α = 1 i problemu sento1.mkp algorytm znalazł rozwiązanie optymalne w 14 z 20 prób (70%), a w przypadku α = 50 skuteczność zmniejszyła się o połowę (30%). Również w przypadku problemu weish01.mkp algorytm był najbardziej skuteczny, gdy α = 1. W tym przypadku 19 z 20 prób zakończyło się znalezieniem optymalnego rozwiązania. Przy zwiększaniu wartości α skuteczność ta zmniejszała się. Gdy α = 50, tylko w 14 z 20 prób znaleziono optimum. Nieco inaczej sytuacja wygląda po przeanalizowaniu wykresów a) i c). Wykresy te przedstawiają liczbę iteracji, w których znaleziono optymalne rozwiązanie. Liczba ta była stosunkowo niewielka dla α = 1. Fakt ten świadczy o tym, że gdy współczynnik α ma małą wartość, to algorytm unika stagnacji. Gdy współczynnik α jest duży, wtedy algorytm w wielu iteracjach generuje rozwiązanie optymalne, ale też nie potrafi wyjść z optimum lokalnego. 58

58 Rysunek 5.2: Całkowita liczba optymalnych rozwiązań w iteracjach (a, c) i skuteczność algorytmu (b,c). Współczynnik wyparowywania feromonu Gdy ilość feromonu odkładana na niektórych krawędziach narasta lawinowo w porównaniu do innych krawędzi, może to spowodować stagnację i niemożność algorytmu do wyjścia z optimum lokalnego. Z drugiej strony, gdy feromon odparowuje zbyt szybko, maleje skuteczność algorytmu. Parametrem umożliwiającym sterowanie szybkością wyparowywania feromonu jest współczynnik ρ. W tym doświadczeniu zostanie zbadany wpływ tego współczynnika na skuteczność algorytmu. Problemy, na których przeprowadzono doświadczenia to: sento1.mkp pb1.mkp Dla każdego zestawu wartości parametrów przeprowadzono 20 prób uruchomienia algorytmu. Badane wartości parametru ρ to: 0, 3 ; 0, 2 ; 0, 1 ; 0, 01 ; 0, 001 ; 59

59 0, 0001 ; 0, Wartości pozostaych parametrów są następujące: m = 20 β = 0, 4 τ 0 = 0, α = 2 q 0 = 0, 5 Rysunek 5.3 przedstawia wpływ parametru ρ na skuteczność algorytmu. Pionowa oś przedstawia procentową skuteczność algorytmu (stosunek znalezionych rozwiązań optymalnych do liczby prób). Kolorem jasnym przedstawione są wyniki dla problemu sento1, a kolorem ciemnym dla problemu pb1. Rysunek 5.3: Wpływ parametru ρ na skuteczność algorytmu. Można zauważyć, że algorytm inaczej reaguje na zmianę parametru ρ dla problemu sento1, a inaczej dla problemu pb1. W przypadku sento1 skuteczność algorytmu wzrasta wraz ze zmniejszaniem parametru ρ. Dobre rezultaty (pomiędzy 60 70%) 60

60 Rysunek 5.4: Średnie wartości rozwiązań w poszczególnych cyklach (sento1). algorytm osiąga zarówno przy wartościach 0, 0001 jak i 0, Natomiast przy większych wartościach parametru ρ skuteczność spada kilkakrotnie od 30% dla wartości 0, 01 do 10% przy wartości 0, 3. Inaczej wygląda sytuacja w przypadku problemu pb1. Tutaj algorytm osiąga największą skuteczność na poziomie 65% przy parametrze ρ = 0, 01. W miarę zwiększania lub zmniejszania parametru skuteczność maleje do ok 20% dla wartości parametru ρ równej 0, 3 lub 0, Analizując wpływ parametru ρ warto zwrócić również uwagę na jego wpływ na średnią wartość rozwiązania w poszczególnych iteracjach. Można to zaobserwować na rysunkach 5.4 oraz 5.5. Wykresy te przedstawiają zależność średniej wartości rozwiązania w poszczególnych iteracjach od parametru ρ. W przeciwieństwie do skuteczności algorytmu, w obu przypadkach średnia wartość rozwiązania rośnie szybciej dla mniejszych wartości parametru ρ. W przypadku problemu pb1 dla parametru ρ = 0, 0001 średnia wartość rozwiązania w ostatnich iteracjach kształtowała się na poziomie Jednak już dla ρ = 0, 01 średnia wartość rozwiązania w ostatnich cyklach oscylowała w granicach Trzeba zauważyć, że właśnie dla tej wartości parametru ρ algorytm miał naj- 61

61 Rysunek 5.5: Średnie wartości rozwiązań w poszczególnych cyklach (pb1). większą skuteczność. Nasuwa się wniosek, że średnia wartość rozwiązania oraz skuteczność nie zawsze idą w parze podczas zmiany wartości parametrów algorytmu. Mimo, że średnia wartość rozwiązania jest większa dla wartości ρ = 0, 0001, to liczba trafionych rozwiązań optymalnych jest mniejsza. Powodem może być fakt, że algorytm oscyluje w optimach lokalnych przy dużych wartościach rozwiązań, lecz nie znajduje optimum globalnego. W przypadku problemu sento1 w wyniku zmniejszania wartości parametru ρ średnia wartość rozwiązania w ostatnich iteracjach rośnie. Dla ρ = 0, 2 wartość ta oscyluje w granicach Po zmniejszeniu wartości, dla ρ = 0, 0001 wartość ta wzrasta do blisko 7000, czyli jest większa o ok 7%. Podsumowując nie można ustalić uniwersalnej wartości parametru ρ dla wszystkich problemów. Dla obu problemów algorytm przynosił satysfakcjonujące rezultaty, gdy wartość parametru ρ mieściła się w zakresie od 0, 001 do 0, 01. Nie są to jednak wartości, które gwarantują dobre rezultaty w przypadku innych problemów. Można je traktować co najwyżej jako punkt wyjścia do do dalszej analizy. 62

62 Rysunek 5.6: Liczba mrówek a skuteczność algorytmu. Liczba mrówek Zmieniając liczbę mrówek szukających rozwiązań, trzeba mieć na uwadze fakt, że zmiana pociąga za sobą zmianę ilości obliczeń wykonywanych podczas działania algorytmu. Przykładowo: czas w jakim zostanie wykonane 100 iteracji algorytmu po 20 mrówek jest zbliżony do czasu wykonania 20 iteracji algorytmu, gdy liczba mrówek wynosi 100. W tym doświadczeniu badany jest wpływ liczby mrówek na skuteczność algorytmu. Liczba iteracji algorytmu jest stała we wszystkich próbach. Należy zwrócić uwagę na fakt, że algorytm działający w pełni losowo ma teoretycznie większą szansę trafienia na optymalne rozwiązanie przy większej liczbie mrówek (liczba wygenerowanych rozwiązań w jednym eksperymencie jest równa iloczynowi liczby iteracji przez liczbę mrówek). Badane problemy to: hp1, weing1 oraz sento1. Dla każdego problemu wykonano 6 doświadczeń. Każda próba składała się ze 100 iteracji algorytmu. Wartości parametrów algorytmów zostały dobrane empirycznie dla każdego z problemów. Badane wartości parametru m to: 5, 10, 20, 40, 80, 160. Rysunek 5.6 przedstawia zależność pomiędzy liczbą mrówek a skutecznością algorytmu. Przy 5 mrówkach skuteczność w zależności od problemu mieściła się w 63

63 zakresie od 0 do 30%. Zwiększając liczbę mrówek ośmiokrotnie (m = 40), skuteczność ta osiągała wartość od 15% dla problemu hp1 do ponad 80% dla problemu sento1. Przy 160 mrówkach skuteczność wynosiła od ponad 40% dla problemu hp1 do blisko 100% dla problemów sento1 i weing1. Skuteczność algorytmu wzrastała wraz ze wzrostem liczby mrówek. Jednak przy 160 mrówkach czas obliczeń był około 30 razy dłuższy niż w przypaku 5 mrówek. Zadowalające wyniki, powyżej 90%, zostały osiągnięte dla problemów weing1 i sento1 w przypadku m = 80. Waga heurystyki Parametr β jest współczynnikiem wagowym lokalnej heurystyki. Gdy wartość tego parametru rośnie, wtedy rośnie również prawdopodobieństwo przejścia mrówki jest większe tam, gdzie wartość lokalnej heurystyki jest większa. W poniższym doświadczeniu zostały zbadane 3 problemy: hp1, sento1 oraz weing1. Dla każdego problemu wykonano po 50 prób dla każdej z poniższych wartości parametru β: 0, 1 ; 0, 2 ; 0, 5 ; 1 ; 2 ; 4 ; 8. Pozostałe parametry miały wartości: m = 40 α = 8 ρ = 0, 001 τ 0 = 0, 0001 q 0 = 0, 5 Wyniki doświadczenia przedstawia rysunek 5.7. Analizując wykres można zauważyć, że algorytm dla każdego problemu inaczej reagował na zmianę parametru β. W przypadku problemu weing1 dla 0, 1 < β < 2 skuteczność wynosiła ponad 50%. Jednak już dla wartości β = 4 i większej skuteczność drastycznie spadła do blisko 0%. 64

64 Rysunek 5.7: Wpływ parametru β na skuteczność algorytmu krawędziowego. W przypadku problemu sento1 skuteczność wynosiła 100%, gdy wartość parametru β mieściła się w przedziale od 2 do 4. Przy wartości β = 0, 2 skuteczność wynosiła już tylko 50%, a przy β = 0, 1 zaledwie 10%. Skuteczność algorytmu była niska dla problemu hp1. Jednak najlepsze rezultaty, na poziomie 20% zostały osiągnięte przy wartości parametru β = 0, 01. Dla β 1 skuteczność zmalała do kilku procent. Podsumowując, najepsze wyniki uzyskiwane były dla następujących wartości parametru: β = 2 w przypadku problemu sento1, β = 1 w przypadku weing1, β = 0, 1 w przpadku hp1. Prawdopodobieństwo eksploatacji Kolejnym parametrem jest q 0. Parametr wyznacza prawdopodobieństwo wyboru eksploatacji przez mrówkę i przyjmuje wartości z zakresu 0 do 1. Wartość q 0 = 0 oznacza, że w każdym ruchu mrówka podejmie decyzję o eksploracji przestrzeni rozwiązań. Wartość q 0 = 1 oznacza, że za każdym razem zostanie przeprowadzona eksploatacja (czyli deterministyczny wybór najbardziej obiecującej krawędzi). Doświadczenie przeprowadzono dla następujących wartości parametru q 0 : 0 65

65 Rysunek 5.8: Wpływ parametru q 0 na skuteczność algorytmu krawędziowego. (zawsze eksploracja) ; 0, 1 ; 0, 3 ; 0, 5 ; 0, 7 ; 0, 9 ; 1 (zawsze eksploatacja). Podobnie jak w przypadku poprzednich doświadczeń, badania przeprowadzono na problemach: hp1, sento1 oraz weing1. Wyniki przeprowadzonego doświadczenia zostały zaprezentowane na rysunku 5.8. Można zauważyć, że w przypadku problemu sento algorytm dawał satysfakcjonujące wyniki (blisko 100% skuteczności) gdy prawdopodobieństwo eksploracji mieściło się w przedziale [0; 0, 7]. Dla problemu hp1 największa skuteczność (na poziomie 30%) osiągnięta została przy wartości parametru q 0 = 0, 3. W przypadku problemu weing1 skuteczność powyżej 90% algorytm osiągał, gdy 0 < q 0 < 0, Badanie parametrów dla węzłowej reprezentacji feromonu W tym rozdziale zostanie zbadany wpływ następujących parametrów na skuteczność algorytmu dla reprezentacji węzłowej: współczynnik poświaty feromonowej α, 66

66 waga heurystyki lokalnej β, współczynnik wyparowywania ρ, liczba mrówek m, prawdopodobieństwo eksploracji q 0. Parametry te zostały szerzej opisane w poprzednich doświadczeniach. Dla reprezentacji węzłowej przeprowadzono szereg doświadczeń analogicznych do tych, które zostały opisane wcześniej dla reprezentacji krawędziowej. W doświadczeniach wykorzystano problemy sento1, weing1 oraz hp1. Problemy te różnią się wielkością i trudnością w rozwiązaniu ich przy pomocy algorytmu mrowiskowego. Wpółczynnik poświaty feromonowej Dla poszczególnych problemów parametry zostały dobrane empirycznie: Problem m β ρ τ 0 q 0 sento ,001 0,0001 0,1 hp1 40 0,4 0,001 0,0001 0,1 weing1 40 0,4 0,001 0,0001 0,1 Testowane wartości parametru α to: 1 (najmniejsza ilość feromonu odkładana przy aktualizacji globalnej), 2, 4, 8, 16, 32, 64, 128 (największa ilość feromonu odkładana przy aktualizacji globalnej). Wykonano po 20 prób dla każdej wartości parametru. Każda próba składała się ze 100 iteracji algorytmu. Wyniki doświadczenia przedstawia rysunek 5.9. Dla wszystkich testowanych wartości skuteczność algorytmu dla problemu weing1 wynosiła 100%. W przypadku problemu sento1 najlepsze rezultaty (100% skuteczności) przyniosły próby przy wartości parametru α = 1. Dla większych wartości parametru skuteczność stopniowo malała do ok. 80% dla wartości α = 128. Nieco inaczej sytuacja wygląda dla problemu hp1. W tym wypadku trudno stwierdzić zależność pomiędzy wartością parametru α, a skutecznością algorytmu. Aby 67

67 Rysunek 5.9: Wpływ współczynnika α na skuteczność algorytmu węzłowego. Rysunek 5.10: Średnia wartość rozwiązania w poszczególnych iteracjach algorytmu dla problemu hp1. dokładniej przeanalizować próby algorytmu dla problemu hp1, na rysunku 5.10 przedstawiono średnie rozwiąznia w poszczególnych iteracjach. Można zauważyć, że w przypadku α = 8 i α = 128 średnia wartość rozwiązania w iteracji szybko osiąga stały pułap na poziomie od 3240 do Dla α = 1 pułap 68

68 ten jest niższy od 3200 do Skuteczność algorytmu dla wymienionych wartości parametru α jest zbliżona, więc można przyjąć, że najlepszym wyborem jest tu α = 8. Największą skuteczność algorytm osiągał dla następujących wartości parametru α: hp1 : α = 8 sento1 : α = 1 weing1 : dowolna wartość α Waga heurystyki Eksperymenty przeprowadzone za pomocą algorytmu krawędziowego wykazały dużą rozbieżność pomiędzy optymalnymi wartościami parametru β w zależności od badanego problemu. W poniższym doświadczeniu przetestowano skuteczność algorytmu dla 7 różnych wartości parametru β. Dla każdej z wartości przeprowadzono 20 prób po 100 iteracji. Badane wartości parametru β to: 0, 1 (niewielki wpływ heurystyki lokalnej) ; 0, 2 ; 0, 5 ; 1 ; 2 ; 4 ; 8 (duży wpływ heurystyki lokalnej). Jak wynika z przeprowadzonego doświadczenia (rysunek 5.11), parametr β ma duży wpływ na osiągane rezultaty. W przypadku problemu sento1 skuteczność dla β = 0, 2 wynosi niespełna 20%, ale już dla wartości β = 0, 5 skuteczność ta wzrasta do blisko 100%. Rozwiązanie optymalne było znajdowane w każdej z prób, gdy parametr β przyjmował wartość od 1 do 8. Analizując wpływ wartości parametru β na wyniki rozwiązania problemu weing1 można zauważyć, że najwyższą skuteczność na poziomie 100% algorytm osiągał, gdy 0, 2 > β > 1. Już dla wartości β = 4 skuteczność zmalała do kilku procent, a dla wartości β = 8 algorytm nie potrafił znaleźć optymalnego rozwiązania. Ciekawą obserwację można przeprowadzić analizując wpływ parametru β na wyniki działania algorytmu dla problemu hp1. W żadnym z poprzednich doświadczeń, nawet w przypadku algorytmu krawędziowego nie udało się uzyskać takiej skuteczności dla problemu hp1. Najwyższa skuteczność, powyżej 50%, została osiągnięta, gdy 69

69 Rysunek 5.11: Waga heurystyki a skuteczność reprezentacji węzłowej. β = 0, 1. Zwiększanie wartości parametru β wpływało niekorzystnie na skuteczność algorytmu. Dla β = 4 skuteczność ta wynosiła 0%. Współczynnik wyparowywania feromonu W algorytmie węzłowym parametrem jest ρ, który odpowiada za sterowanie szybkością wyparowywania feromonu z węzłów grafu problemu. Podobnie jak w przypadku mrówki krawędziowej, większa wartość parametru ρ powoduje szybsze wyparowywanie feromonu. Niweluje przez to prawdopodobieństwo stagnacji, ale zwiększa czynnik losowy przy wyborze kolejnych węzłów przez mrówkę. Badane wartości parametru ρ są identyczne jak dla tego samego doświadczenia dla algorytmu krawędziowego. Wyniki doświadczenia przedstawia rysunek Można zaobserwować, że dla wszystkich trzech problemów algorytm osiągał najlepszą skuteczność dla ρ = 0, 01. Dla problemów sento1 i weing skuteczność ta wynosiła 100%, a w przypadku problemu hp1 około 60% (jest to dotychczas największa skuteczność dla tego prolemu otrzymana w przeprowadzonych doświadczeniach). Zmniejszenie wartości parametru ρ do 0, skutkowało nieznacznym spadkiem skuteczności w przypadku problemów sento1 i weing1. Dla problemu hp1 sku- 70

70 Rysunek 5.12: Współczynnik wyparowywania feromonu a skuteczność reprezentacji węzłowej. teczność spadła o ponad połowę. Zwiększenie wartości parametru ρ do 0, 1 zdecydowanie zmniejszyło skuteczność do odpowiednio 10% dla hp1, 30% dla weing1 i 60% dla sento1. Prawdopodobieństwo eksploatacji Doświadczenia wykazały, że w przypadku reprezentacji węzłowej lepsze wyniki uzyskiwane są w przypadku mniejszych wartości parametru q 0, niż w przypadku reprezentacji krawędziowej. W związku z tym zestaw wartości testowych parametru ρ dla algorytmu węzłowego został nieco zmodyfikowany: 0 (tylko eksploracja) ; 0, 05 ; 0, 1 ; 0, 2 ; 0, 3 ; 0, 5 ; 0, 7 ; 1 (tylko eksploatacja). W przypadku prawdopodobieństwa eksploatacji q 0 = 1 mrówki zawsze wybierają najbardziej obiecujący węzeł. Na rysunku 5.13 można zauważyć, że optimum dla problemu sento1 zostało uzyskane w blisko 100% prób niezależnie od wartości parametru q 0. Jednak zmiana parametru q0 znacząco wpływała na wyniki osiągnięte dla pozostałych dwóch problemów. Dla problemu weing1 Skuteczność bliską 100% algorytm osiągał, gdy 0 q 0 0, 3. Natomiast w przypadku problemu hp1 optimum osiągniete zostało w ponad 60% przypadków, gdy q 0 = 0, 2. 71

71 Rysunek 5.13: Wpływ prawdopodobieństwa eksploatacji na skuteczność reprezentacji węzłowej. Podsumowując wyniki działania algorytmu, były one satysfakcjonujące dla wszystkich badanych problemów, gdy wartość q 0 = 2. Na tej podstawie nie można stwierdzić, że powyższa wartość będzie również sprawdzać się w przypadku innych problemów. Można jednak przyjąć ją za punkt wyjścia przy dobieraniu wartości parametru q 0. Liczba mrówek W poniższym doświadczeniu zostanie zbadany wpływ liczby mrówek na skuteczność algorytmu. Testowane wartości parametru m są identyczne jak w przypadku reprezentacji krawędziowej (5, 10, 20, 40, 80, 160), a wartości pozostałych parametrów zostały dobrane empirycznie. Skuteczność algorytmu wzrastała wraz z wzrostem liczby mrówek. Po zwiększaniu liczby mrówek, podobnie jak dla algorytmu krawędziowego zwiększa się również liczba obliczeń. Czas wykonywania obliczeń dla 80 mrówek jest blisko dwukrotnie większy od czasu wykonywania obliczeń dla 40 mrówek. Na rysunku 5.14 widać, że w przypadku wszystkich problemów skuteczność przekraczała próg 50% dla m = 40. Skuteczność dla m = 40 dla poszczególnych pro- 72

72 Rysunek 5.14: Wpływ liczby mrówek na skuteczność reprezentacji węzłowej blemów wynosiła: 100% dla problemu sento1, 98% dla problemu weing1, 58% dla problemu hp1. Dwukrotne zwiększenie liczby mrówek (do 80) zwiększyło skuteczność dla problemu hp1 do 65%. Korzystając z własności prawdopodobieństwa (wzór 5.1), można obliczyć ile wynosi skuteczność w przypadku dwukrotnego uruchomienia algorytmu dla 40 mrówek. P (A B) = P (A) + P (B) + P (A B) (5.1). Jeżeli dla jednego uruchomienia prawdopodobieństwo trafienia optimum wynosi 58%, to przy dwukrotnym uruchomieniu algorytmu prawdopodobieństwo to wynosi: 0, , 58 0, 58 2 = 82, 36%. Można więc stwierdzić, że korzystniejsze pod względem skuteczności jest dwukrotne uruchomienie algorytmu z paramerem m = 40 niż jednokrotne uruchomienie algorytmu dla m =

73 Inaczej sytuacja wygląda dla wartości m = 20. Dwukrotne uruchomienie algorytmu dla takiej wartości m daje skuteczność: 0, 3 + 0, 3 0, 3 2 = 51%, czyli niższą niż w przypadku jednokrotnego uruchomienia algorytmu z parametrem m = 40. Z tego wynika, że najkorzystniejsze rezultaty dla problemu hp1 algorytm osiąga, gdy m = 40. Podsumowanie Nie można ustalić uniwersalnych parametrów dla każdego problemu. Dla testowanych problemów najlepsze rezultaty algorytm osiągał przy wartościach parametrów przedstawionych w tabeli 5.2. Przedstawione w tabeli wyniki okazały się najlepszymi z testowanych wartości przy 100 iteracjach algorytmu i 40 mrówkach. Tabela 5.1: Najlepsze wartości parametrów dla badanych problemów w reprezentacji krawędziowej Problem α β ρ q 0 sento , 01 0, , 5 weing , 1 1 0, 01 0, , 5 hp1 8 0, l 0, 001 0, Porównanie różnych reprezentacji mapy feromonowej Trudno jest porównywać oba algorytmy pod względem skuteczności, ponieważ nie ma gwarancji, że parametry, które zostały użyte były optymalne dla badanych problemów. Możliwe, że w przeprowadzonych doświadczeniach pominięte zostały optymalne wartości parametrów dla analizowanych problemów. W przypadku problemów sento1 i weing1 obie reprezenacje przy odpowiedniej konfiguracji parametrów pozwoliły osiągnąć 100% skuteczności. Inaczej sytuacja wyglądała w przypadku problemu hp1. Badane parametry w reprezentacji krawędziowej 74

74 pozwoliły osiągnąć skuteczność na poziomie 30%. Jednak już w reprezentacji węzłowej odpowiedni dobór wartości parametrów pozwolił osiągnąć skuteczność dwukrotnie wyższą, na poziomie 60%. Porównanie skuteczności dla poszczególnych problemów Aby porównać skuteczność obu algorytmów utworzono 5 zestawów parametrów dla każdej reprezentacji feromonu. Przy doborze parametrów kierowano się wynikami z przeprowadzonych wcześniej doświadczeń. Zestawy parametrów przedstawione zostały w tabelach 5.2 i 5.3. Tabela 5.2: Doświadczalne zestawy parametrów dla reprezentacji węzłowej Zestaw α β ρ q 0 W , 01 0, 1 W2 1 0, 1 0, 001 0, 2 W3 2 0, 5 0, 001 0, 2 W , 001 0, 4 W5 8 0, 5 0, 001 0, 2 Tabela 5.3: Doświadczalne zestawy parametrów dla reprezentacji krawędziowej Zestaw α β ρ q 0 K , 1 0, 3 K2 1 0, 1 0, , 2 K3 2 l 0, , 3 K4 4 0, 5 0, 01 0, 2 K , 001 0, 2 Doświadczenie zostało przeprowadzone na 21 problemach. Przy doborze problemów kierowano się ich zróżnicowaniem pod względem wielkości i trudności. Dla każdego z 10 zestawów parametrów wykonano 40 prób po 100 iteracji. W każdej iteracji rozwiązanie budowało 40 mrówek, co daje razem ponad 33 miliony wygenerowanych rozwiązań. Przeprowadzenie całego doświadczenia trwało kilkanaście godzin ciągłych obliczeń. Mimo tak dużej liczby wygenerowanych rozwiązań prawdopodobieństwo losowego trafienia optimum jest znikome. W przypadku największych problemów: weing8 75

75 Tabela 5.4: Skuteczność algorytmu dla poszczególnych problemów przy różnych zestawach parametrów. Problem W1 W2 W3 W4 W5 K1 K2 K3 K4 K5 weish01 100,0% 95,0% 100,0% 100,0% 100,0% 100,0% 40,0% 100,0% 100,0% 100,0% weish02 75,0% 85,0% 65,0% 42,5% 67,5% 100,0% 20,0% 100,0% 95,0% 75,0% weish06 100,0% 92,5% 80,0% 60,0% 72,5% 87,5% 0,0% 62,5% 100,0% 95,0% weish13 100,0% 87,5% 100,0% 100,0% 95,0% 62,5% 0,0% 37,5% 100,0% 100,0% weish14 97,5% 45,0% 100,0% 100,0% 97,5% 12,5% 0,0% 2,5% 100,0% 77,5% weish22 5,0% 0,0% 77,5% 92,5% 87,5% 0,0% 0,0% 0,0% 22,5% 15,0% weish27 0,0% 0,0% 95,0% 100,0% 92,5% 0,0% 0,0% 0,0% 32,5% 35,0% weing1 97,5% 100,0% 100,0% 90,0% 100,0% 60,0% 7,5% 77,5% 92,5% 97,5% weing3 100,0% 100,0% 100,0% 100,0% 100,0% 100,0% 77,5% 100,0% 95,0% 95,0% weing5 100,0% 100,0% 100,0% 100,0% 100,0% 100,0% 82,5% 100,0% 100,0% 97,5% weing7 0,0% 0,0% 0,0% 5,0% 0,0% 0,0% 0,0% 0,0% 0,0% 0,0% weing8 0,0% 0,0% 2,5% 20,0% 5,0% 0,0% 0,0% 0,0% 0,0% 0,0% hp1 35,0% 37,5% 32,5% 20,0% 17,5% 10,0% 22,5% 22,5% 17,5% 22,5% hp2 7,5% 90,0% 60,0% 17,5% 60,0% 0,0% 2,5% 2,5% 15,0% 15,0% pb1 47,5% 67,5% 52,5% 15,0% 30,0% 20,0% 25,0% 25,0% 15,0% 22,5% pb2 17,5% 85,0% 65,0% 15,0% 55,0% 2,5% 5,0% 0,0% 25,0% 15,0% pb4 100,0% 100,0% 90,0% 87,5% 95,0% 92,5% 45,0% 87,5% 97,5% 75,0% pb5 77,5% 55,0% 37,5% 7,5% 27,5% 55,0% 80,0% 77,5% 37,5% 40,0% pb7 97,5% 57,5% 75,0% 50,0% 45,0% 77,5% 5,0% 62,5% 85,0% 70,0% sento1 100,0% 15,0% 95,0% 100,0% 87,5% 75,0% 0,0% 25,0% 100,0% 75,0% sento2 90,0% 0,0% 62,5% 72,5% 40,0% 22,5% 0,0% 2,5% 77,5% 37,5% i weing7 liczba możliwych kombinacji przedmiotów wynosi , a liczba wygenerowanych rozwiązań w 100 iteracjach algorytmu wynosi 1, Wyniki doświadczenia procentowy stosunek liczby prób, w których udało się znaleźć optymalne rozwiązanie do całkowitej liczby prób przedstawia tabela 5.4. Analizując wyniki doświadczenia można zauważyć, że tylko jeden zestaw parametrów (W4 ) pozwolił rozwiązać wszystkie testowane problemy. Również tylko dla tego zestawu zostało osiągnięte optimum problemu weing7. 20 z 21 testowych problemów udało się rozwiązać używająć zestawów W3 i W5. W przypadku reprezentacji krawędziowej najwięcej, bo 19 z 21 problemów zostało rozwiązanych przy użyciu zestawów K4 i K5. Najsłabszym zestawem parametrów okazał się zestaw K5. Przy jego wykorzystaniu udało się rozwiązać tylko 12 problemów. Rysunek 5.15 przedstawia porównanie skuteczności algorytmów dla poszczególnych zestawów parametrów. Okazuje się, że mimo tego, że zestaw W4 jako jedyny pozwolił na rozwiązanie wszystkich problemów, to pod względem średniej skuteczności znajduje się w środku rankingu testowanych zestawów. Najlepszy w tym wypadku okazał się zestaw W1. Biorąc pod uwagę medianę skuteczności, najlepszy rezultat osiągnięto dla zestawu W1. Dla tego zestawu w przypadku połowy badanych problemów skuteczność przekraczała 90%. Pod względem mediany skuteczności na drugim miej- 76

76 Rysunek 5.15: Skuteczność dla poszczególnych zestawów parametrów. scu znalazł się zestaw dla reprezentacji krawędziowej K4. W tym przypadku połowa badanych problemów została rozwiązana w 85% prób. Podsumowując: zestawy wartości parametrów, na które warto zwrócić szczególną uwagę to: W1 znalezione optimum dla każdego z badanych problemów, W3 największa średnia skuteczność, W4 największa mediana skuteczności, K4 najwyższa średnia skuteczność i największa mediana skuteczności dla reprezentacji krawędziowej. Rysunek 5.16 przedstawia porównanie średniej skuteczności reprezentacji węzłowej i krawędziowej. Można zauważyć, że w większości problemów lepsza skuteczność 77

77 Rysunek 5.16: Średnia skuteczność algorytmów dla poszczególnych problemów. została osiągnięta przy użyciu reprezentacji węzłowej. Nie jest to jednak dowód wyższości reprezentacji węzłowej nad reprezentacją krawędziową. Można jedynie stwierdzić, że przy zestawach parametrów wykorzystanych w doświadczeniu średnia skuteczność reprezentacji węzłowej była wyższa niż w reprezentacji krawędziowej. Bardziej wiarygodne może okazać się porównanie skuteczności dla najlepszego spośród testowanych zestawów parametrów reprezentacji węzłowej i krawędziowej. Takie porównanie przedstawia rysunek W przypadku problemów weish02 oraz pb5 lepsze wyniki osiągnięto przy użyciu reprezentacji krawędziowej. W pozostałych przypadkach lepsze wyniki osiągnięto dla reprezentacji węzłowej. Jedynym wiarygodnym testem byłoby przetestowanie wszystkich możliwych kombinacji wartości parametrów. Nie jest to możliwe, dlatego nie można jednoznacznie określić, która z nich daje lepsze wyniki w przypadku problemu plecakowego. Dla testowych zestawów parametrów bardziej skuteczna okazała się reprezentacja węzłowa. Nie ma jednak dowodu na to, że 78

78 inne zestawy parametrów dla reprezentacji krawędziowej nie pozwoliłyby na osiągnięcie lepszych wyników niż dla reprezentacji węzłowej. Rysunek 5.17: Skuteczność algorytmu dla poszczególnych problemów przy najlepszym zestawie parametrów 79

79 Podsumowanie W pracy przedstawiono i porównano dwie reprezentacje mapy fermonowej w problemie plecakowym: węzłową i krawędziową. Do pracy dołączona została aplikacja testowa, dzięki której można przeanalizować wyniki działania tych dwóch algorytmów. W poprzednich pracach została zbadana jedna z reprezentacji map feromonowych. W tej pracy oprócz reprezentacji węzłowej zaproponowanej przez G. Leguizamon, Z. Michalewicza[2] zbadano również reprezentację krawędziową zaproponowaną przez S. Fidanovą. W odróżnieniu do poprzednich prac, w dołączonej aplikacji zostały wykorzystane heurystyki przedstawione przez S. Fidanovą w publikacji[1]. Celem badań było porównanie skuteczności dwóch reprezentacji w problemie plecakowym i zbadanie wpływu poszczególnych parametrów na osiągane wyniki. Przy adaptacji systemu mrowiskowego do problemu plecakowego problem stanowi odpowiedni dobór wartości parametrów algorytmu. Przeanalizowano szczegółowo wpływ każdego z parametrów na skuteczność algorytmu w obu reprezentacjach. Wartości parametrów powinny być dobierane indywidualnie do każdego problemu. Zestaw parametrów, który okaże się skuteczny dla jednego problemu, może nie spełniać oczekiwań w przypadku innego problemu. Aby badania były wiarygodne, każde z doświadczeń przeprowadzono na kilku różnych problemach plecakowych. Poszczególne doświadczenia zostały zakończone wnioskami. Liczba wartości parametrów i ich kombinacji jest nieskończenie wielka. Przy dobieraniu tych wartości trzeba ustalić zestaw parametrów będący punktem wyjścia do dalszej analizy. Poprzednie publikacje nie dostarczają takiego zestawu wartości parametrów. W tej pracy podjęta została próba skonstruowania takiego zestawu. Na wybranych 21 problemach plecakowych przeprowadzono analizę skuteczności dla róż- 80

Algorytmy mrówkowe (optymalizacja kolonii mrówek, Ant Colony optimisation)

Algorytmy mrówkowe (optymalizacja kolonii mrówek, Ant Colony optimisation) Algorytmy mrówkowe (optymalizacja kolonii mrówek, Ant Colony optimisation) Jest to technika probabilistyczna rozwiązywania problemów obliczeniowych, które mogą zostać sprowadzone do problemu znalezienie

Bardziej szczegółowo

Algorytmy mrówkowe. P. Oleksyk. Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny w Szczecinie Inteligentne systemy informatyczne

Algorytmy mrówkowe. P. Oleksyk. Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny w Szczecinie Inteligentne systemy informatyczne y mrówkowe P. Oleksyk Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny w Szczecinie Inteligentne systemy informatyczne 14 kwietnia 2015 1 Geneza algorytmu - biologia 2 3 4 5 6 7 8 Geneza

Bardziej szczegółowo

Zadania laboratoryjne i projektowe - wersja β

Zadania laboratoryjne i projektowe - wersja β Zadania laboratoryjne i projektowe - wersja β 1 Laboratorium Dwa problemy do wyboru (jeden do realizacji). 1. Water Jug Problem, 2. Wieże Hanoi. Water Jug Problem Ograniczenia dla każdej z wersji: pojemniki

Bardziej szczegółowo

Algorytmy mrówkowe. H. Bednarz. Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny w Szczecinie Inteligentne systemy informatyczne

Algorytmy mrówkowe. H. Bednarz. Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny w Szczecinie Inteligentne systemy informatyczne Algorytmy mrówkowe H. Bednarz Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny w Szczecinie Inteligentne systemy informatyczne 13 kwietnia 2015 1 2 3 4 Przestrzeń poszukiwań Ograniczenia

Bardziej szczegółowo

Techniki optymalizacji

Techniki optymalizacji Techniki optymalizacji Metaheurystyki oparte na algorytmach lokalnego przeszukiwania Maciej Hapke maciej.hapke at put.poznan.pl GRASP Greedy Randomized Adaptive Search Procedure T.A. Feo, M.G.C. Resende,

Bardziej szczegółowo

Temat: Algorytmy zachłanne

Temat: Algorytmy zachłanne Temat: Algorytmy zachłanne Algorytm zachłanny ( ang. greedy algorithm) wykonuje zawsze działanie, które wydaje się w danej chwili najkorzystniejsze. Wybiera zatem lokalnie optymalną możliwość w nadziei,

Bardziej szczegółowo

Problem komiwojażera ACO. Zagadnienie optymalizacyjne, polegające na znalezieniu minimalnego cyklu Hamiltona w pełnym grafie ważonym.

Problem komiwojażera ACO. Zagadnienie optymalizacyjne, polegające na znalezieniu minimalnego cyklu Hamiltona w pełnym grafie ważonym. Problem komiwojażera ACO Zagadnienie optymalizacyjne, polegające na znalezieniu minimalnego cyklu Hamiltona w pełnym grafie ważonym. -Wikipedia Problem do rozwiązania zazwyczaj jest przedstawiany jako

Bardziej szczegółowo

Algorytmy mrówkowe (ang. Ant Colony Optimization)

Algorytmy mrówkowe (ang. Ant Colony Optimization) Algorytmy mrówkowe (ang. Ant Colony Optimization) 1. Wprowadzenie do ACO a) mrówki naturalne b) mrówki sztuczne c) literatura (kilka pozycji) 2. ACO i TSP 1. Wprowadzenie do ACO a) mrówki naturalne ślepe,

Bardziej szczegółowo

Struktury danych i złożoność obliczeniowa Wykład 7. Prof. dr hab. inż. Jan Magott

Struktury danych i złożoność obliczeniowa Wykład 7. Prof. dr hab. inż. Jan Magott Struktury danych i złożoność obliczeniowa Wykład 7 Prof. dr hab. inż. Jan Magott Problemy NP-zupełne Transformacją wielomianową problemu π 2 do problemu π 1 (π 2 π 1 ) jest funkcja f: D π2 D π1 spełniająca

Bardziej szczegółowo

Wykorzystanie algorytmów mrówkowych w dynamicznym problem

Wykorzystanie algorytmów mrówkowych w dynamicznym problem Wykorzystanie algorytmów mrówkowych w dynamicznym problemie marszrutyzacji Promotor: dr inż. Aneta Poniszewska-Marańda Współpromotor: mgr inż. Łukasz Chomątek 14 czerwca 2013 Przedmiot i cele pracy dyplomowej

Bardziej szczegółowo

Algorytm genetyczny (genetic algorithm)-

Algorytm genetyczny (genetic algorithm)- Optymalizacja W praktyce inżynierskiej często zachodzi potrzeba znalezienia parametrów, dla których system/urządzenie będzie działać w sposób optymalny. Klasyczne podejście do optymalizacji: sformułowanie

Bardziej szczegółowo

OSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) Algorytmy i Struktury Danych PIŁA

OSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) Algorytmy i Struktury Danych PIŁA OSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) 16.01.2003 Algorytmy i Struktury Danych PIŁA ALGORYTMY ZACHŁANNE czas [ms] Porównanie Algorytmów Rozwiązyjących problem TSP 100 000 000 000,000 10 000 000

Bardziej szczegółowo

Badania operacyjne: Wykład Zastosowanie kolorowania grafów w planowaniu produkcji typu no-idle

Badania operacyjne: Wykład Zastosowanie kolorowania grafów w planowaniu produkcji typu no-idle Badania operacyjne: Wykład Zastosowanie kolorowania grafów w planowaniu produkcji typu no-idle Paweł Szołtysek 12 czerwca 2008 Streszczenie Planowanie produkcji jest jednym z problemów optymalizacji dyskretnej,

Bardziej szczegółowo

Algorytmy Mrówkowe. Daniel Błaszkiewicz. 11 maja 2011. Instytut Informatyki Uniwersytetu Wrocławskiego

Algorytmy Mrówkowe. Daniel Błaszkiewicz. 11 maja 2011. Instytut Informatyki Uniwersytetu Wrocławskiego Algorytmy Mrówkowe Instytut Informatyki Uniwersytetu Wrocławskiego 11 maja 2011 Opis Mrówki w naturze Algorytmy to stosunkowo nowy gatunek algorytmów optymalizacyjnych stworzony przez Marco Dorigo w 1992

Bardziej szczegółowo

Działanie algorytmu oparte jest na minimalizacji funkcji celu jako suma funkcji kosztu ( ) oraz funkcji heurystycznej ( ).

Działanie algorytmu oparte jest na minimalizacji funkcji celu jako suma funkcji kosztu ( ) oraz funkcji heurystycznej ( ). Algorytm A* Opracowanie: Joanna Raczyńska 1.Wstęp Algorytm A* jest heurystycznym algorytmem służącym do znajdowania najkrótszej ścieżki w grafie. Jest to algorytm zupełny i optymalny, co oznacza, że zawsze

Bardziej szczegółowo

Modele i narzędzia optymalizacji w systemach informatycznych zarządzania

Modele i narzędzia optymalizacji w systemach informatycznych zarządzania Politechnika Poznańska Modele i narzędzia optymalizacji w systemach informatycznych zarządzania Joanna Józefowska POZNAŃ 2010/11 Spis treści Rozdział 1. Metoda programowania dynamicznego........... 5

Bardziej szczegółowo

Systemy mrówkowe. Opracowali: Dawid Strucker, Konrad Baranowski

Systemy mrówkowe. Opracowali: Dawid Strucker, Konrad Baranowski Systemy mrówkowe Opracowali: Dawid Strucker, Konrad Baranowski Wprowadzenie Algorytmy mrówkowe oparte są o zasadę inteligencji roju (ang. swarm intelligence). Służą głównie do znajdowania najkrótszej drogi

Bardziej szczegółowo

Aproksymacja funkcji a regresja symboliczna

Aproksymacja funkcji a regresja symboliczna Aproksymacja funkcji a regresja symboliczna Problem aproksymacji funkcji polega na tym, że funkcję F(x), znaną lub określoną tablicą wartości, należy zastąpić inną funkcją, f(x), zwaną funkcją aproksymującą

Bardziej szczegółowo

Optymalizacja. Wybrane algorytmy

Optymalizacja. Wybrane algorytmy dr hab. inż. Instytut Informatyki Politechnika Poznańska www.cs.put.poznan.pl/mkomosinski, Andrzej Jaszkiewicz Problem optymalizacji kombinatorycznej Problem optymalizacji kombinatorycznej jest problemem

Bardziej szczegółowo

Zadanie 5 - Algorytmy genetyczne (optymalizacja)

Zadanie 5 - Algorytmy genetyczne (optymalizacja) Zadanie 5 - Algorytmy genetyczne (optymalizacja) Marcin Pietrzykowski mpietrzykowski@wi.zut.edu.pl wersja 1.0 1 Cel Celem zadania jest zapoznanie się z Algorytmami Genetycznymi w celu rozwiązywanie zadania

Bardziej szczegółowo

Algorytmy sztucznej inteligencji

Algorytmy sztucznej inteligencji www.math.uni.lodz.pl/ radmat Przeszukiwanie z ograniczeniami Zagadnienie przeszukiwania z ograniczeniami stanowi grupę problemów przeszukiwania w przestrzeni stanów, które składa się ze: 1 skończonego

Bardziej szczegółowo

Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott

Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Struktury danych i złożoność obliczeniowa Wykład 5 Prof. dr hab. inż. Jan Magott DMT rozwiązuje problem decyzyjny π przy kodowaniu e w co najwyżej wielomianowym czasie, jeśli dla wszystkich łańcuchów wejściowych

Bardziej szczegółowo

Schemat programowania dynamicznego (ang. dynamic programming)

Schemat programowania dynamicznego (ang. dynamic programming) Schemat programowania dynamicznego (ang. dynamic programming) Jest jedną z metod rozwiązywania problemów optymalizacyjnych. Jej twórcą (1957) był amerykański matematyk Richard Ernest Bellman. Schemat ten

Bardziej szczegółowo

Instrukcja obsługi programu Do-Exp

Instrukcja obsługi programu Do-Exp Instrukcja obsługi programu Do-Exp Autor: Wojciech Stark. Program został utworzony w ramach pracy dyplomowej na Wydziale Chemicznym Politechniki Warszawskiej. Instrukcja dotyczy programu Do-Exp w wersji

Bardziej szczegółowo

Programowanie dynamiczne cz. 2

Programowanie dynamiczne cz. 2 Programowanie dynamiczne cz. 2 Wykład 7 16 kwietnia 2019 (Wykład 7) Programowanie dynamiczne cz. 2 16 kwietnia 2019 1 / 19 Outline 1 Mnożenie ciągu macierzy Konstruowanie optymalnego rozwiązania 2 Podstawy

Bardziej szczegółowo

Obliczenia inspirowane Naturą

Obliczenia inspirowane Naturą Obliczenia inspirowane Naturą Wykład 10 - Mrówki w labiryntach Jarosław Miszczak IITiS PAN Gliwice 05/05/2016 1 / 48 Na poprzednim wykładzie 1... 2... 3... 2 / 48 1 Motywacja biologiczna Podstawowe mechanizmy

Bardziej szczegółowo

Problem Komiwojażera - algorytmy metaheurystyczne

Problem Komiwojażera - algorytmy metaheurystyczne Problem Komiwojażera - algorytmy metaheurystyczne algorytm mrówkowy algorytm genetyczny by Bartosz Tomeczko. All rights reserved. 2010. TSP dlaczego metaheurystyki i heurystyki? TSP Travelling Salesman

Bardziej szczegółowo

Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne

Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne Algorytmy i struktury danych Wykład VIII Elementarne techniki algorytmiczne Co dziś? Algorytmy zachłanne (greedyalgorithms) 2 Tytułem przypomnienia metoda dziel i zwyciężaj. Problem można podzielić na

Bardziej szczegółowo

operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je.

operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je. Problem porządkowania zwanego również sortowaniem jest jednym z najważniejszych i najpopularniejszych zagadnień informatycznych. Dane: Liczba naturalna n i ciąg n liczb x 1, x 2,, x n. Wynik: Uporządkowanie

Bardziej szczegółowo

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek Algorytmy i str ruktury danych Metody algorytmiczne Bartman Jacek jbartman@univ.rzeszow.pl Metody algorytmiczne - wprowadzenia Znamy strukturę algorytmów Trudność tkwi natomiast w podaniu metod służących

Bardziej szczegółowo

Data Mining Wykład 9. Analiza skupień (grupowanie) Grupowanie hierarchiczne O-Cluster. Plan wykładu. Sformułowanie problemu

Data Mining Wykład 9. Analiza skupień (grupowanie) Grupowanie hierarchiczne O-Cluster. Plan wykładu. Sformułowanie problemu Data Mining Wykład 9 Analiza skupień (grupowanie) Grupowanie hierarchiczne O-Cluster Plan wykładu Wprowadzanie Definicja problemu Klasyfikacja metod grupowania Grupowanie hierarchiczne Sformułowanie problemu

Bardziej szczegółowo

Algorytmy metaheurystyczne Wykład 6. Piotr Syga

Algorytmy metaheurystyczne Wykład 6. Piotr Syga Algorytmy metaheurystyczne Wykład 6 Piotr Syga 10.04.2017 Wprowadzenie Inspiracje Wprowadzenie ACS idea 1 Zaczynamy z pustym rozwiązaniem początkowym 2 Dzielimy problem na komponenty (przedmiot do zabrania,

Bardziej szczegółowo

Wykład 4. Droga i cykl Eulera i Hamiltona

Wykład 4. Droga i cykl Eulera i Hamiltona Wykład 4. i Hamiltona Wykład 4. i Hamiltona 1 / 35 Grafy Eulera Niech G będzie grafem spójnym. Definicja Jeżeli w grafie G istnieje zamknięta droga prosta zawierająca wszystkie krawędzie grafu, to taką

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Złożoność obliczeniowa, poprawność programów Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk(Wydział Fizyki) WP w. XII Jesień 2013 1 / 20 Złożoność obliczeniowa Problem Ile czasu

Bardziej szczegółowo

Program EWIDENCJA ODZIEŻY ROBOCZEJ INSTRUKCJA UŻYTKOWNIKA Przejdź do strony producenta programu

Program EWIDENCJA ODZIEŻY ROBOCZEJ INSTRUKCJA UŻYTKOWNIKA Przejdź do strony producenta programu Program EWIDENCJA ODZIEŻY ROBOCZEJ INSTRUKCJA UŻYTKOWNIKA Przejdź do strony producenta programu http://www.jarsoft.poznan.pl/ 1. STRUKTURA PROGRAMU Program EWIDENCJA ODZIEŻY ROBOCZEJ jest aplikacją wspierającą

Bardziej szczegółowo

Obliczenia Naturalne - Algorytmy Mrówkowe

Obliczenia Naturalne - Algorytmy Mrówkowe Plan Literatura Obliczenia Naturalne - Algorytmy Mrówkowe Paweł Paduch Politechnika Świętokrzyska 8 maja 2014 Paweł Paduch Obliczenia Naturalne - Algorytmy Mrówkowe 1 z 43 Plan wykładu Plan Literatura

Bardziej szczegółowo

Polcode Code Contest PHP-10.09

Polcode Code Contest PHP-10.09 Polcode Code Contest PHP-10.09 Przedmiotem konkursu jest napisanie w języku PHP programu, którego wykonanie spowoduje rozwiązanie zadanego problemu i wyświetlenie rezultatu. Zadanie konkursowe Celem zadania

Bardziej szczegółowo

Algorytm. a programowanie -

Algorytm. a programowanie - Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik

Bardziej szczegółowo

5.2. Pierwsze kroki z bazami danych

5.2. Pierwsze kroki z bazami danych 5.2. Pierwsze kroki z bazami danych Uruchamianie programu Podobnie jak inne programy, OO Base uruchamiamy z Menu Start, poprzez zakładkę Wszystkie programy, gdzie znajduje się folder OpenOffice.org 2.2,

Bardziej szczegółowo

Expo Composer. www.doittechnology.pl 1. Garncarska 5 70-377 Szczecin tel.: +48 91 404 09 24 e-mail: info@doittechnology.pl. Dokumentacja użytkownika

Expo Composer. www.doittechnology.pl 1. Garncarska 5 70-377 Szczecin tel.: +48 91 404 09 24 e-mail: info@doittechnology.pl. Dokumentacja użytkownika Expo Composer Dokumentacja użytkownika Wersja 1.0 www.doittechnology.pl 1 SPIS TREŚCI 1. O PROGRAMIE... 3 Wstęp... 3 Wymagania systemowe... 3 Licencjonowanie... 3 2. PIERWSZE KROKI Z Expo Composer... 4

Bardziej szczegółowo

Programowanie celowe #1

Programowanie celowe #1 Programowanie celowe #1 Problem programowania celowego (PC) jest przykładem problemu programowania matematycznego nieliniowego, który można skutecznie zlinearyzować, tzn. zapisać (i rozwiązać) jako problem

Bardziej szczegółowo

1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb.

1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb. 1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb. Algorytmy przeszukiwania w głąb i wszerz są najczęściej stosowanymi algorytmami przeszukiwania. Wykorzystuje się je do zbadania istnienia połączenie

Bardziej szczegółowo

Wykorzystanie algorytmów mrówkowych w dynamicznym problem

Wykorzystanie algorytmów mrówkowych w dynamicznym problem Wykorzystanie algorytmów mrówkowych w dynamicznym problemie marszrutyzacji Promotor: dr inż. Aneta Poniszewska-Marańda Współpromotor: mgr inż. Łukasz Chomątek 18 stycznia 2013 Przedmiot i cele pracy dyplomowej

Bardziej szczegółowo

Ćwiczenie 1 Planowanie trasy robota mobilnego w siatce kwadratów pól - Algorytm A

Ćwiczenie 1 Planowanie trasy robota mobilnego w siatce kwadratów pól - Algorytm A Ćwiczenie 1 Planowanie trasy robota mobilnego w siatce kwadratów pól - Algorytm A Zadanie do wykonania 1) Utwórz na pulpicie katalog w formacie Imię nazwisko, w którym umieść wszystkie pliki związane z

Bardziej szczegółowo

Program EWIDENCJA ODZIEŻY ROBOCZEJ INSTRUKCJA UŻYTKOWNIKA Przejdź do strony producenta programu

Program EWIDENCJA ODZIEŻY ROBOCZEJ INSTRUKCJA UŻYTKOWNIKA Przejdź do strony producenta programu Program EWIDENCJA ODZIEŻY ROBOCZEJ INSTRUKCJA UŻYTKOWNIKA Przejdź do strony producenta programu http://www.jarsoft.poznan.pl/ 1. STRUKTURA PROGRAMU Program EWIDENCJA ODZIEŻY ROBOCZEJ jest aplikacją pracującą

Bardziej szczegółowo

Algorytm dyskretnego PSO z przeszukiwaniem lokalnym w problemie dynamicznej wersji TSP

Algorytm dyskretnego PSO z przeszukiwaniem lokalnym w problemie dynamicznej wersji TSP Algorytm dyskretnego PSO z przeszukiwaniem lokalnym w problemie dynamicznej wersji TSP Łukasz Strąk lukasz.strak@gmail.com Uniwersytet Śląski, Instytut Informatyki, Będzińska 39, 41-205 Sosnowiec 9 grudnia

Bardziej szczegółowo

Droga i cykl Eulera Przykłady zastosowania drogi i cyku Eulera Droga i cykl Hamiltona. Wykład 4. Droga i cykl Eulera i Hamiltona

Droga i cykl Eulera Przykłady zastosowania drogi i cyku Eulera Droga i cykl Hamiltona. Wykład 4. Droga i cykl Eulera i Hamiltona Wykład 4. Droga i cykl Eulera i Hamiltona 1 / 92 Grafy Eulera Droga i cykl Eulera Niech G będzie grafem spójnym. Definicja Jeżeli w grafie G istnieje zamknięta droga prosta zawierająca wszystkie krawędzie

Bardziej szczegółowo

w analizie wyników badań eksperymentalnych, w problemach modelowania zjawisk fizycznych, w analizie obserwacji statystycznych.

w analizie wyników badań eksperymentalnych, w problemach modelowania zjawisk fizycznych, w analizie obserwacji statystycznych. Aproksymacja funkcji a regresja symboliczna Problem aproksymacji funkcji polega na tym, że funkcję F(), znaną lub określoną tablicą wartości, należy zastąpić inną funkcją, f(), zwaną funkcją aproksymującą

Bardziej szczegółowo

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main. Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo

Bardziej szczegółowo

Reprezentacje grafów nieskierowanych Reprezentacje grafów skierowanych. Wykład 2. Reprezentacja komputerowa grafów

Reprezentacje grafów nieskierowanych Reprezentacje grafów skierowanych. Wykład 2. Reprezentacja komputerowa grafów Wykład 2. Reprezentacja komputerowa grafów 1 / 69 Macierz incydencji Niech graf G będzie grafem nieskierowanym bez pętli o n wierzchołkach (x 1, x 2,..., x n) i m krawędziach (e 1, e 2,..., e m). 2 / 69

Bardziej szczegółowo

Elementy modelowania matematycznego

Elementy modelowania matematycznego Elementy modelowania matematycznego Modelowanie algorytmów klasyfikujących. Podejście probabilistyczne. Naiwny klasyfikator bayesowski. Modelowanie danych metodą najbliższych sąsiadów. Jakub Wróblewski

Bardziej szczegółowo

Algorytmy genetyczne

Algorytmy genetyczne Algorytmy genetyczne Motto: Zamiast pracowicie poszukiwać najlepszego rozwiązania problemu informatycznego lepiej pozwolić, żeby komputer sam sobie to rozwiązanie wyhodował! Algorytmy genetyczne służą

Bardziej szczegółowo

Laboratorium - Monitorowanie i zarządzanie zasobami systemu Windows 7

Laboratorium - Monitorowanie i zarządzanie zasobami systemu Windows 7 5.0 5.3.3.5 Laboratorium - Monitorowanie i zarządzanie zasobami systemu Windows 7 Wprowadzenie Wydrukuj i uzupełnij to laboratorium. W tym laboratorium, będziesz korzystać z narzędzi administracyjnych

Bardziej szczegółowo

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE WINDOWS 1 SO i SK/WIN 006 Wydajność systemu 2 SO i SK/WIN Najprostszym sposobem na poprawienie wydajności systemu, jeżeli dysponujemy zbyt małą ilością pamięci RAM

Bardziej szczegółowo

SCHEMAT ROZWIĄZANIA ZADANIA OPTYMALIZACJI PRZY POMOCY ALGORYTMU GENETYCZNEGO

SCHEMAT ROZWIĄZANIA ZADANIA OPTYMALIZACJI PRZY POMOCY ALGORYTMU GENETYCZNEGO SCHEMAT ROZWIĄZANIA ZADANIA OPTYMALIZACJI PRZY POMOCY ALGORYTMU GENETYCZNEGO. Rzeczywistość (istniejąca lub projektowana).. Model fizyczny. 3. Model matematyczny (optymalizacyjny): a. Zmienne projektowania

Bardziej szczegółowo

Algorytmika Problemów Trudnych

Algorytmika Problemów Trudnych Algorytmika Problemów Trudnych Wykład 9 Tomasz Krawczyk krawczyk@tcs.uj.edu.pl Kraków, semestr letni 2016/17 plan wykładu Algorytmy aproksymacyjne: Pojęcie algorytmu aproksymacyjnego i współczynnika aproksymowalności.

Bardziej szczegółowo

LABORATORIUM 7: Problem komiwojażera (TSP) cz. 2

LABORATORIUM 7: Problem komiwojażera (TSP) cz. 2 Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny, Politechnika Śląska www.imio.polsl.pl OBLICZENIA EWOLUCYJNE LABORATORIUM 7: Problem komiwojażera (TSP) cz. 2 opracował:

Bardziej szczegółowo

PRZEWODNIK PO ETRADER ROZDZIAŁ XII. ALERTY SPIS TREŚCI

PRZEWODNIK PO ETRADER ROZDZIAŁ XII. ALERTY SPIS TREŚCI PRZEWODNIK PO ETRADER ROZDZIAŁ XII. ALERTY SPIS TREŚCI 1. OPIS OKNA 3 2. OTWIERANIE OKNA 3 3. ZAWARTOŚĆ OKNA 4 3.1. WIDOK AKTYWNE ALERTY 4 3.2. WIDOK HISTORIA NOWO WYGENEROWANYCH ALERTÓW 4 3.3. DEFINIOWANIE

Bardziej szczegółowo

1 Automaty niedeterministyczne

1 Automaty niedeterministyczne Szymon Toruńczyk 1 Automaty niedeterministyczne Automat niedeterministyczny A jest wyznaczony przez następujące składniki: Alfabet skończony A Zbiór stanów Q Zbiór stanów początkowych Q I Zbiór stanów

Bardziej szczegółowo

etrader Pekao Podręcznik użytkownika Strumieniowanie Excel

etrader Pekao Podręcznik użytkownika Strumieniowanie Excel etrader Pekao Podręcznik użytkownika Strumieniowanie Excel Spis treści 1. Opis okna... 3 2. Otwieranie okna... 3 3. Zawartość okna... 4 3.1. Definiowanie listy instrumentów... 4 3.2. Modyfikacja lub usunięcie

Bardziej szczegółowo

Problemy z ograniczeniami

Problemy z ograniczeniami Problemy z ograniczeniami 1 2 Dlaczego zadania z ograniczeniami Wiele praktycznych problemów to problemy z ograniczeniami. Problemy trudne obliczeniowo (np-trudne) to prawie zawsze problemy z ograniczeniami.

Bardziej szczegółowo

Kumulowanie się defektów jest możliwe - analiza i potwierdzenie tezy

Kumulowanie się defektów jest możliwe - analiza i potwierdzenie tezy Kumulowanie się defektów jest możliwe - analiza i potwierdzenie tezy Marek Żukowicz 14 marca 2018 Streszczenie Celem napisania artykułu jest próba podania konstruktywnego dowodu, który wyjaśnia, że niewielka

Bardziej szczegółowo

Algorytmy i struktury danych.

Algorytmy i struktury danych. Algorytmy i struktury danych. Wykład 4 Krzysztof M. Ocetkiewicz Krzysztof.Ocetkiewicz@eti.pg.gda.pl Katedra Algorytmów i Modelowania Systemów, WETI, PG Problem plecakowy mamy plecak o określonej pojemności

Bardziej szczegółowo

1. Zarządzanie informacją w programie Access

1. Zarządzanie informacją w programie Access 1. Zarządzanie informacją w programie Access a. 1. Cele lekcji i. a) Wiadomości Uczeń: zna definicję bazy danych i jej zadania, zna pojęcia: rekord, pole, klucz podstawowy, zna obiekty bazy danych: tabele,

Bardziej szczegółowo

13. Równania różniczkowe - portrety fazowe

13. Równania różniczkowe - portrety fazowe 13. Równania różniczkowe - portrety fazowe Grzegorz Kosiorowski Uniwersytet Ekonomiczny w Krakowie rzegorz Kosiorowski (Uniwersytet Ekonomiczny 13. wrównania Krakowie) różniczkowe - portrety fazowe 1 /

Bardziej szczegółowo

1. Umieść kursor w miejscu, w którym ma być wprowadzony ozdobny napis. 2. Na karcie Wstawianie w grupie Tekst kliknij przycisk WordArt.

1. Umieść kursor w miejscu, w którym ma być wprowadzony ozdobny napis. 2. Na karcie Wstawianie w grupie Tekst kliknij przycisk WordArt. Grafika w dokumencie Wprowadzanie ozdobnych napisów WordArt Do tworzenia efektownych, ozdobnych napisów służy obiekt WordArt. Aby wstawić do dokumentu obiekt WordArt: 1. Umieść kursor w miejscu, w którym

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Algorytmy zachłanne, programowanie dynamiczne Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk(Wydział Fizyki) WP w. IX Jesień 2014 1 / 26 Algorytmy zachłanne Strategia polegająca

Bardziej szczegółowo

0 + 0 = 0, = 1, = 1, = 0.

0 + 0 = 0, = 1, = 1, = 0. 5 Kody liniowe Jak już wiemy, w celu przesłania zakodowanego tekstu dzielimy go na bloki i do każdego z bloków dodajemy tak zwane bity sprawdzające. Bity te są w ścisłej zależności z bitami informacyjnymi,

Bardziej szczegółowo

Rozdział 1 PROGRAMOWANIE LINIOWE

Rozdział 1 PROGRAMOWANIE LINIOWE Wprowadzenie do badań operacyjnych z komputerem Opisy programów, ćwiczenia komputerowe i zadania. T. Trzaskalik (red.) Rozdział 1 PROGRAMOWANIE LINIOWE 1.2 Ćwiczenia komputerowe Ćwiczenie 1.1 Wykorzystując

Bardziej szczegółowo

Struktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott

Struktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott Struktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott Metody konstrukcji algorytmów: Siłowa (ang. brute force), Dziel i zwyciężaj (ang. divide-and-conquer), Zachłanna (ang.

Bardziej szczegółowo

Spis treści. 1 Moduł Mapy 2

Spis treści. 1 Moduł Mapy 2 Spis treści 1 Moduł Mapy 2 1.1 Elementy planu............................. 2 1.1.1 Interfejs widoku......................... 3 1.1.1.1 Panel sterujacy.................... 3 1.1.1.2 Suwak regulujacy przybliżenie...........

Bardziej szczegółowo

PROBLEM: SORTOWANIE PRZEZ ODWRÓCENIA METODA: ALGORYTMY ZACHŁANNE

PROBLEM: SORTOWANIE PRZEZ ODWRÓCENIA METODA: ALGORYTMY ZACHŁANNE D: PROBLEM: SORTOWANIE PRZEZ ODWRÓCENIA METODA: ALGORYTMY ZACHŁANNE I. Strategia zachłanna II. Problem przetasowań w genomie III. Sortowanie przez odwrócenia IV. Algorytmy przybliżone V. Algorytm zachłanny

Bardziej szczegółowo

Rozdział 1 PROGRAMOWANIE LINIOWE

Rozdział 1 PROGRAMOWANIE LINIOWE Wprowadzenie do badań operacyjnych z komputerem Opisy programów, ćwiczenia komputerowe i zadania. T. Trzaskalik (red.) Rozdział 1 PROGRAMOWANIE LINIOWE 1.1 Opis programów Do rozwiązania zadań programowania

Bardziej szczegółowo

Efektywność Procedur Obliczeniowych. wykład 5

Efektywność Procedur Obliczeniowych. wykład 5 Efektywność Procedur Obliczeniowych wykład 5 Modele procesu obliczeń (8) Jedno-, wielotaśmowa MT oraz maszyna RAM są równoważne w przypadku, jeśli dany problem jest rozwiązywany przez jeden model w czasie

Bardziej szczegółowo

Algorytmy zachłanne. dr inż. Urszula Gałązka

Algorytmy zachłanne. dr inż. Urszula Gałązka Algorytmy zachłanne dr inż. Urszula Gałązka Algorytm zachłanny O Dokonuje wyboru, który w danej chwili wydaje się najkorzystniejszy. O Mówimy, że jest to wybór lokalnie optymalny O W rzeczywistości nie

Bardziej szczegółowo

Matematyka dyskretna - wykład - część Podstawowe algorytmy kombinatoryczne

Matematyka dyskretna - wykład - część Podstawowe algorytmy kombinatoryczne A. Permutacja losowa Matematyka dyskretna - wykład - część 2 9. Podstawowe algorytmy kombinatoryczne Załóżmy, że mamy tablice p złożoną z n liczb (ponumerowanych od 0 do n 1). Aby wygenerować losową permutację

Bardziej szczegółowo

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja

Bardziej szczegółowo

Algorytm Genetyczny. zastosowanie do procesów rozmieszczenia stacji raportujących w sieciach komórkowych

Algorytm Genetyczny. zastosowanie do procesów rozmieszczenia stacji raportujących w sieciach komórkowych Algorytm Genetyczny zastosowanie do procesów rozmieszczenia stacji raportujących w sieciach komórkowych Dlaczego Algorytmy Inspirowane Naturą? Rozwój nowych technologii: złożone problemy obliczeniowe w

Bardziej szczegółowo

Wyszukiwanie binarne

Wyszukiwanie binarne Wyszukiwanie binarne Wyszukiwanie binarne to technika pozwalająca na przeszukanie jakiegoś posortowanego zbioru danych w czasie logarytmicznie zależnym od jego wielkości (co to dokładnie znaczy dowiecie

Bardziej szczegółowo

Priorytetyzacja przypadków testowych za pomocą macierzy

Priorytetyzacja przypadków testowych za pomocą macierzy Priorytetyzacja przypadków testowych za pomocą macierzy W niniejszym artykule przedstawiony został problem przyporządkowania priorytetów do przypadków testowych przed rozpoczęciem testów oprogramowania.

Bardziej szczegółowo

I. Program II. Opis głównych funkcji programu... 19

I. Program II. Opis głównych funkcji programu... 19 07-12-18 Spis treści I. Program... 1 1 Panel główny... 1 2 Edycja szablonu filtrów... 3 A) Zakładka Ogólne... 4 B) Zakładka Grupy filtrów... 5 C) Zakładka Kolumny... 17 D) Zakładka Sortowanie... 18 II.

Bardziej szczegółowo

Heurystyczne metody przeszukiwania

Heurystyczne metody przeszukiwania Heurystyczne metody przeszukiwania Dariusz Banasiak Katedra Informatyki Technicznej W4/K9 Politechnika Wrocławska Pojęcie heurystyki Metody heurystyczne są jednym z ważniejszych narzędzi sztucznej inteligencji.

Bardziej szczegółowo

Programowanie dynamiczne

Programowanie dynamiczne Programowanie dynamiczne Patryk Żywica 5 maja 2008 1 Spis treści 1 Problem wydawania reszty 3 1.1 Sformułowanie problemu...................... 3 1.2 Algorytm.............................. 3 1.2.1 Prosty

Bardziej szczegółowo

Instrukcja projektowa cz. 2

Instrukcja projektowa cz. 2 Programowanie lokalnych aplikacji.net 2018/19 Instrukcja projektowa cz. 2 Wielozadaniowość w Windows Prowadzący: Tomasz Goluch Wersja: 7.0 I. Zadania projektowe 02. Cel: Utrwalenie wiedzy zdobytej podczas

Bardziej szczegółowo

Maciej Piotr Jankowski

Maciej Piotr Jankowski Reduced Adder Graph Implementacja algorytmu RAG Maciej Piotr Jankowski 2005.12.22 Maciej Piotr Jankowski 1 Plan prezentacji 1. Wstęp 2. Implementacja 3. Usprawnienia optymalizacyjne 3.1. Tablica ekspansji

Bardziej szczegółowo

4.2. Ustawienia programu

4.2. Ustawienia programu 4.2. Ustawienia programu Zmiana wielkości dokumentu Pracując w programie MS Excel 2010 niejednokrotnie doświadczysz sytuacji, w której otwarty przez Ciebie arkusz nie będzie mieścił się na ekranie monitora.

Bardziej szczegółowo

Układy VLSI Bramki 1.0

Układy VLSI Bramki 1.0 Spis treści: 1. Wstęp... 2 2. Opis edytora schematów... 2 2.1 Dodawanie bramek do schematu:... 3 2.2 Łączenie bramek... 3 2.3 Usuwanie bramek... 3 2.4 Usuwanie pojedynczych połączeń... 4 2.5 Dodawanie

Bardziej szczegółowo

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 INFORMATYKA W SZKOLE Dr inż. Grażyna KRUPIŃSKA grazyna@fis.agh.edu.pl D-10 pokój 227 Podyplomowe Studia Pedagogiczne 2 Algorytmy Nazwa algorytm wywodzi się od nazwiska perskiego matematyka Muhamed ibn

Bardziej szczegółowo

Spacery losowe generowanie realizacji procesu losowego

Spacery losowe generowanie realizacji procesu losowego Spacery losowe generowanie realizacji procesu losowego Michał Krzemiński Streszczenie Omówimy metodę generowania trajektorii spacerów losowych (błądzenia losowego), tj. szczególnych procesów Markowa z

Bardziej szczegółowo

Algorytmy metaheurystyczne podsumowanie

Algorytmy metaheurystyczne podsumowanie dr hab. inż. Instytut Informatyki Politechnika Poznańska www.cs.put.poznan.pl/mkomosinski, Andrzej Jaszkiewicz Problem optymalizacji kombinatorycznej Problem optymalizacji kombinatorycznej jest problemem

Bardziej szczegółowo

W. Guzicki Zadanie 41 z Informatora Maturalnego poziom podstawowy 1

W. Guzicki Zadanie 41 z Informatora Maturalnego poziom podstawowy 1 W. Guzicki Zadanie 41 z Informatora Maturalnego poziom podstawowy 1 W tym tekście zobaczymy rozwiązanie zadania 41 z Informatora o egzaminie maturalnym z matematyki od roku szkolnego 014/015 oraz rozwiązania

Bardziej szczegółowo

Heurystyki. Strategie poszukiwań

Heurystyki. Strategie poszukiwań Sztuczna inteligencja Heurystyki. Strategie poszukiwań Jacek Bartman Zakład Elektrotechniki i Informatyki Instytut Techniki Uniwersytet Rzeszowski DLACZEGO METODY PRZESZUKIWANIA? Sztuczna Inteligencja

Bardziej szczegółowo

Instrukcja wprowadzania graficznych harmonogramów pracy w SZOI Wg stanu na 21.06.2010 r.

Instrukcja wprowadzania graficznych harmonogramów pracy w SZOI Wg stanu na 21.06.2010 r. Instrukcja wprowadzania graficznych harmonogramów pracy w SZOI Wg stanu na 21.06.2010 r. W systemie SZOI została wprowadzona nowa funkcjonalność umożliwiająca tworzenie graficznych harmonogramów pracy.

Bardziej szczegółowo

ALHE. prof. Jarosław Arabas semestr 15Z

ALHE. prof. Jarosław Arabas semestr 15Z ALHE prof. Jarosław Arabas semestr 15Z Wykład 5 Błądzenie przypadkowe, Algorytm wspinaczkowy, Przeszukiwanie ze zmiennym sąsiedztwem, Tabu, Symulowane wyżarzanie 1. Błądzenie przypadkowe: Pierwszym krokiem

Bardziej szczegółowo

Przydziały (limity) pojemności dyskowej

Przydziały (limity) pojemności dyskowej Przydziały (limity) pojemności dyskowej W dużych sieciach lokalnych bądź w przypadku, gdy z danego komputera korzysta kilku różnych użytkowników, administrator może zechcieć mieć kontrolę nad przydziałem

Bardziej szczegółowo

Materiały: kartki papieru (5 x 5 kolorów), piłeczki pingpongowe (5 x 5 kolorów), worek (nieprzeźroczysty).

Materiały: kartki papieru (5 x 5 kolorów), piłeczki pingpongowe (5 x 5 kolorów), worek (nieprzeźroczysty). Pudełkowy komputer Materiały: kartki papieru (5 x 5 kolorów), piłeczki pingpongowe (5 x 5 kolorów), worek (nieprzeźroczysty). Budowa komputera: każdy uczeń składa proste pudełko metodą orgiami Zobacz:

Bardziej szczegółowo

TEORETYCZNE PODSTAWY INFORMATYKI

TEORETYCZNE PODSTAWY INFORMATYKI 1 TEORETYCZNE PODSTAWY INFORMATYKI 16/01/2017 WFAiS UJ, Informatyka Stosowana I rok studiów, I stopień Repetytorium złożoność obliczeniowa 2 Złożoność obliczeniowa Notacja wielkie 0 Notacja Ω i Θ Rozwiązywanie

Bardziej szczegółowo

Analiza i projektowanie obiektowe 2016/2017. Wykład 10: Tworzenie projektowego diagramu klas

Analiza i projektowanie obiektowe 2016/2017. Wykład 10: Tworzenie projektowego diagramu klas Analiza i projektowanie obiektowe 2016/2017 Wykład 10: Tworzenie projektowego diagramu klas Jacek Marciniak Wydział Matematyki i Informatyki Uniwersytet im. Adama Mickiewicza 1 Plan wykładu 1. Projektowy

Bardziej szczegółowo

S O M SELF-ORGANIZING MAPS. Przemysław Szczepańczyk Łukasz Myszor

S O M SELF-ORGANIZING MAPS. Przemysław Szczepańczyk Łukasz Myszor S O M SELF-ORGANIZING MAPS Przemysław Szczepańczyk Łukasz Myszor Podstawy teoretyczne Map Samoorganizujących się stworzył prof. Teuvo Kohonen (1982 r.). SOM wywodzi się ze sztucznych sieci neuronowych.

Bardziej szczegółowo