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. 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

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

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

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

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

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

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

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

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

Ć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

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

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

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

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

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

UNIWERSYTET RZESZOWSKI KATEDRA INFORMATYKI

UNIWERSYTET RZESZOWSKI KATEDRA INFORMATYKI UNIWERSYTET RZESZOWSKI KATEDRA INFORMATYKI LABORATORIUM TECHNOLOGIA SYSTEMÓW INFORMATYCZNYCH W BIOTECHNOLOGII Aplikacja bazodanowa: Cz. II Rzeszów, 2010 Strona 1 z 11 APLIKACJA BAZODANOWA MICROSOFT ACCESS

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

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

Generowanie i optymalizacja harmonogramu za pomoca

Generowanie i optymalizacja harmonogramu za pomoca Generowanie i optymalizacja harmonogramu za pomoca na przykładzie generatora planu zajęć Matematyka Stosowana i Informatyka Stosowana Wydział Fizyki Technicznej i Matematyki Stosowanej Politechnika Gdańska

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

Modyfikacja algorytmów retransmisji protokołu TCP.

Modyfikacja algorytmów retransmisji protokołu TCP. Modyfikacja algorytmów retransmisji protokołu TCP. Student Adam Markowski Promotor dr hab. Michał Grabowski Cel pracy Celem pracy było przetestowanie i sprawdzenie przydatności modyfikacji klasycznego

Bardziej szczegółowo

Wymagania edukacyjne z informatyki dla klasy szóstej szkoły podstawowej.

Wymagania edukacyjne z informatyki dla klasy szóstej szkoły podstawowej. Wymagania edukacyjne z informatyki dla klasy szóstej szkoły podstawowej. Dział Zagadnienia Wymagania podstawowe Wymagania ponadpodstawowe Arkusz kalkulacyjny (Microsoft Excel i OpenOffice) Uruchomienie

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

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

Instrukcja użytkowania

Instrukcja użytkowania Instrukcja użytkowania Aby skutecznie pracować z programem Agrinavia Map należy zrozumieć zasadę interfejsu aplikacji. Poniżej można odszukać zasady działania Agrinavia Map. Szczegółowe informacje na temat

Bardziej szczegółowo

PROBLEMY NIEROZSTRZYGALNE

PROBLEMY NIEROZSTRZYGALNE PROBLEMY NIEROZSTRZYGALNE Zestaw 1: T Przykład - problem domina T Czy podanym zestawem kafelków można pokryć dowolny płaski obszar zachowując odpowiedniość kolorów na styku kafelków? (dysponujemy nieograniczoną

Bardziej szczegółowo

Instrukcja użytkownika

Instrukcja użytkownika SoftwareStudio Studio 60-349 Poznań, ul. Ostroroga 5 Tel. 061 66 90 641 061 66 90 642 061 66 90 643 061 66 90 644 fax 061 86 71 151 mail: poznan@softwarestudio.com.pl Herkules WMS.net Instrukcja użytkownika

Bardziej szczegółowo

Rozdział ten zawiera informacje na temat zarządzania Modułem Modbus TCP oraz jego konfiguracji.

Rozdział ten zawiera informacje na temat zarządzania Modułem Modbus TCP oraz jego konfiguracji. 1 Moduł Modbus TCP Moduł Modbus TCP daje użytkownikowi Systemu Vision możliwość zapisu oraz odczytu rejestrów urządzeń, które obsługują protokół Modbus TCP. Zapewnia on odwzorowanie rejestrów urządzeń

Bardziej szczegółowo

Definicje. Algorytm to:

Definicje. Algorytm to: Algorytmy Definicje Algorytm to: skończony ciąg operacji na obiektach, ze ściśle ustalonym porządkiem wykonania, dający możliwość realizacji zadania określonej klasy pewien ciąg czynności, który prowadzi

Bardziej szczegółowo

Ćwiczenia nr 2. Edycja tekstu (Microsoft Word)

Ćwiczenia nr 2. Edycja tekstu (Microsoft Word) Dostosowywanie paska zadań Ćwiczenia nr 2 Edycja tekstu (Microsoft Word) Domyślnie program Word proponuje paski narzędzi Standardowy oraz Formatowanie z zestawem opcji widocznym poniżej: Można jednak zmodyfikować

Bardziej szczegółowo

Rozdział II. Praca z systemem operacyjnym

Rozdział II. Praca z systemem operacyjnym Rozdział II Praca z systemem operacyjnym 55 Rozdział III - System operacyjny i jego hierarchia 2.2. System operacyjny i jego życie Jak już wiesz, wyróżniamy wiele odmian systemów operacyjnych, które różnią

Bardziej szczegółowo

Przeszukiwanie z nawrotami. Wykład 8. Przeszukiwanie z nawrotami. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 238 / 279

Przeszukiwanie z nawrotami. Wykład 8. Przeszukiwanie z nawrotami. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 238 / 279 Wykład 8 J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 238 / 279 sformułowanie problemu przegląd drzewa poszukiwań przykłady problemów wybrane narzędzia programistyczne J. Cichoń, P. Kobylański

Bardziej szczegółowo

Instrukcja wczytywania i przekazywania zbiorów centralnych w Centralnej Aplikacji Statystycznej (CAS) przez użytkowników podobszaru PS

Instrukcja wczytywania i przekazywania zbiorów centralnych w Centralnej Aplikacji Statystycznej (CAS) przez użytkowników podobszaru PS Instrukcja wczytywania i przekazywania zbiorów centralnych w Centralnej Aplikacji Statystycznej (CAS) przez użytkowników podobszaru PS Uwaga! Opisane w niniejszej instrukcji funkcje Centralnej Aplikacji

Bardziej szczegółowo

Ćwiczenie: JavaScript Cookies (3x45 minut)

Ćwiczenie: JavaScript Cookies (3x45 minut) Ćwiczenie: JavaScript Cookies (3x45 minut) Cookies niewielkie porcje danych tekstowych, które mogą być przesyłane między serwerem a przeglądarką. Przeglądarka przechowuje te dane przez określony czas.

Bardziej szczegółowo

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32 Analiza i projektowanie oprogramowania Analiza i projektowanie oprogramowania 1/32 Analiza i projektowanie oprogramowania 2/32 Cel analizy Celem fazy określania wymagań jest udzielenie odpowiedzi na pytanie:

Bardziej szczegółowo

Rysunek 8. Rysunek 9.

Rysunek 8. Rysunek 9. Ad 2. Dodatek Excel Add-Ins for Operations Management/Industral Engineering został opracowany przez Paul A. Jensen na uniwersytecie w Teksasie. Dodatek można pobrać ze strony http://www.ormm.net. Po rozpakowaniu

Bardziej szczegółowo

MIO - LABORATORIUM. Imię i nazwisko Rok ak. Gr. Sem. Komputer Data ... 20 / EC3 VIII LAB...

MIO - LABORATORIUM. Imię i nazwisko Rok ak. Gr. Sem. Komputer Data ... 20 / EC3 VIII LAB... MIO - LABORATORIUM Temat ćwiczenia: TSP - Problem komiwojażera Imię i nazwisko Rok ak. Gr. Sem. Komputer Data Podpis prowadzącego... 20 / EC3 VIII LAB...... Zadanie Zapoznać się z problemem komiwojażera

Bardziej szczegółowo

1 Moduł Modbus ASCII/RTU 3

1 Moduł Modbus ASCII/RTU 3 Spis treści 1 Moduł Modbus ASCII/RTU 3 1.1 Konfigurowanie Modułu Modbus ASCII/RTU............. 3 1.1.1 Lista elementów Modułu Modbus ASCII/RTU......... 3 1.1.2 Konfiguracja Modułu Modbus ASCII/RTU...........

Bardziej szczegółowo

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno Instrukcja laboratoryjna 5 Podstawy programowania 2 Temat: Drzewa binarne Przygotował: mgr inż. Tomasz Michno 1 Wstęp teoretyczny Drzewa są jedną z częściej wykorzystywanych struktur danych. Reprezentują

Bardziej szczegółowo

Webowy generator wykresów wykorzystujący program gnuplot

Webowy generator wykresów wykorzystujący program gnuplot Uniwersytet Mikołaja Kopernika Wydział Fizyki, Astronomii i Informatyki Stosowanej Marcin Nowak nr albumu: 254118 Praca inżynierska na kierunku informatyka stosowana Webowy generator wykresów wykorzystujący

Bardziej szczegółowo

Celem ćwiczenia jest zapoznanie się z podstawowymi funkcjami i pojęciami związanymi ze środowiskiem AutoCAD 2012 w polskiej wersji językowej.

Celem ćwiczenia jest zapoznanie się z podstawowymi funkcjami i pojęciami związanymi ze środowiskiem AutoCAD 2012 w polskiej wersji językowej. W przygotowaniu ćwiczeń wykorzystano m.in. następujące materiały: 1. Program AutoCAD 2012. 2. Graf J.: AutoCAD 14PL Ćwiczenia. Mikom 1998. 3. Kłosowski P., Grabowska A.: Obsługa programu AutoCAD 14 i 2000.

Bardziej szczegółowo

10. Wstęp do Teorii Gier

10. Wstęp do Teorii Gier 10. Wstęp do Teorii Gier Definicja Gry Matematycznej Gra matematyczna spełnia następujące warunki: a) Jest co najmniej dwóch racjonalnych graczy. b) Zbiór możliwych dezycji każdego gracza zawiera co najmniej

Bardziej szczegółowo

Scenariusz zajęć. Moduł VI. Projekt Gra logiczna zgadywanie liczby

Scenariusz zajęć. Moduł VI. Projekt Gra logiczna zgadywanie liczby Scenariusz zajęć Moduł VI Projekt Gra logiczna zgadywanie liczby Moduł VI Projekt Gra logiczna zgadywanie liczby Cele ogólne: przypomnienie i utrwalenie poznanych wcześniej poleceń i konstrukcji języka

Bardziej szczegółowo

INDUKOWANE REGUŁY DECYZYJNE ALORYTM APRIORI JAROSŁAW FIBICH

INDUKOWANE REGUŁY DECYZYJNE ALORYTM APRIORI JAROSŁAW FIBICH INDUKOWANE REGUŁY DECYZYJNE ALORYTM APRIORI JAROSŁAW FIBICH 1. Czym jest eksploracja danych Eksploracja danych definiowana jest jako zbiór technik odkrywania nietrywialnych zależności i schematów w dużych

Bardziej szczegółowo

MsAccess 2013 - ćwiczenie nr 3 Kwerendy wybierające cd oraz kwerendy funkcjonalne

MsAccess 2013 - ćwiczenie nr 3 Kwerendy wybierające cd oraz kwerendy funkcjonalne Opracowanie: mgr Grażyna Gębal, dr hab. Marzena Nowakowska, dr Maria Szczepańska MsAccess 2013 - ćwiczenie nr 3 Kwerendy wybierające cd oraz kwerendy funkcjonalne 1. Zdefiniować kwerendę o nazwie Statystyka,

Bardziej szczegółowo

www.plansoft.org plansoft.org Zmiany w Plansoft.org Panel wyszukiwania PLANOWANIE ZAJĘĆ, REZERWOWANIE SAL I ZASOBÓW

www.plansoft.org plansoft.org Zmiany w Plansoft.org Panel wyszukiwania PLANOWANIE ZAJĘĆ, REZERWOWANIE SAL I ZASOBÓW Zmiany w Plansoft.org Panel wyszukiwania... 1 Uruchamianie panelu wyszukiwania... 2 Wyszukiwanie poleceń menu... 2 Wyszukiwanie rozkładów zajęć wykładowców... 3 Wyszukiwanie rozkładów zajęć grup i użycia

Bardziej szczegółowo

Kodu z klasą. Skarb w zatrutej wodzie, cz. 2. Scenariusz 6

Kodu z klasą. Skarb w zatrutej wodzie, cz. 2. Scenariusz 6 W scenariuszu nr 6 kontynuujemy pracę rozpoczętą na poprzednich zajęciach i ukończymy cały scenariusz. Dzisiaj przygotujemy zdarzenia, gdzie fabryka zatruwa wodę i zwierzęta stają się agresywne oraz zaprogramujemy

Bardziej szczegółowo

7. Podstawy zarządzania szablonami

7. Podstawy zarządzania szablonami 7 7. Podstawy zarządzania szablonami Większość istotnych ustawień konfiguracyjnych jest przechowywana w pliku projektu. Wszystkie takie ustawienia będą zapamiętane także w szablonie. Jeżeli wykonuje się

Bardziej szczegółowo

METODA SYMPLEKS. Maciej Patan. Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski

METODA SYMPLEKS. Maciej Patan. Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski METODA SYMPLEKS Maciej Patan Uniwersytet Zielonogórski WSTĘP Algorytm Sympleks najpotężniejsza metoda rozwiązywania programów liniowych Metoda generuje ciąg dopuszczalnych rozwiązań x k w taki sposób,

Bardziej szczegółowo

Rozdział ten zawiera informacje o sposobie konfiguracji i działania Modułu OPC.

Rozdział ten zawiera informacje o sposobie konfiguracji i działania Modułu OPC. 1 Moduł OPC Moduł OPC pozwala na komunikację z serwerami OPC pracującymi w oparciu o model DA (Data Access). Dzięki niemu można odczytać stan obiektów OPC (zmiennych zdefiniowanych w programie PLC), a

Bardziej szczegółowo

Viatoll Calc v1.3. Viatoll Calc. Instrukcja użytkownika. Strona 1

Viatoll Calc v1.3. Viatoll Calc. Instrukcja użytkownika. Strona 1 Viatoll Calc Instrukcja użytkownika Strona 1 Spis treści 1 Wstęp...3 2 Opis panelu głównego...3 2.1 Menu aplikacji...4 2.2 Tabela z trasami...5 2.3 Strona kalkulatora viatoll...6 2.4 Pasek statusu...7

Bardziej szczegółowo

P R Z E T W A R Z A N I E S Y G N A Ł Ó W B I O M E T R Y C Z N Y C H

P R Z E T W A R Z A N I E S Y G N A Ł Ó W B I O M E T R Y C Z N Y C H W O J S K O W A A K A D E M I A T E C H N I C Z N A W Y D Z I A Ł E L E K T R O N I K I Drukować dwustronnie P R Z E T W A R Z A N I E S Y G N A Ł Ó W B I O M E T R Y C Z N Y C H Grupa... Data wykonania

Bardziej szczegółowo

Klasy abstrakcyjne i interfejsy

Klasy abstrakcyjne i interfejsy Klasy abstrakcyjne i interfejsy Streszczenie Celem wykładu jest omówienie klas abstrakcyjnych i interfejsów w Javie. Czas wykładu 45 minut. Rozwiązanie w miarę standardowego zadania matematycznego (i nie

Bardziej szczegółowo

Komputerowe Systemy Przemysłowe: Modelowanie - UML. Arkadiusz Banasik arkadiusz.banasik@polsl.pl

Komputerowe Systemy Przemysłowe: Modelowanie - UML. Arkadiusz Banasik arkadiusz.banasik@polsl.pl Komputerowe Systemy Przemysłowe: Modelowanie - UML Arkadiusz Banasik arkadiusz.banasik@polsl.pl Plan prezentacji Wprowadzenie UML Diagram przypadków użycia Diagram klas Podsumowanie Wprowadzenie Języki

Bardziej szczegółowo

Tom 6 Opis oprogramowania Część 8 Narzędzie do kontroli danych elementarnych, danych wynikowych oraz kontroli obmiaru do celów fakturowania

Tom 6 Opis oprogramowania Część 8 Narzędzie do kontroli danych elementarnych, danych wynikowych oraz kontroli obmiaru do celów fakturowania Część 8 Narzędzie do kontroli danych elementarnych, danych wynikowych oraz kontroli Diagnostyka stanu nawierzchni - DSN Generalna Dyrekcja Dróg Krajowych i Autostrad Warszawa, 21 maja 2012 Historia dokumentu

Bardziej szczegółowo

Programowanie w VB Proste algorytmy sortowania

Programowanie w VB Proste algorytmy sortowania Programowanie w VB Proste algorytmy sortowania Sortowanie bąbelkowe Algorytm sortowania bąbelkowego polega na porównywaniu par elementów leżących obok siebie i, jeśli jest to potrzebne, zmienianiu ich

Bardziej szczegółowo

ViLab- program służący do prowadzenia obliczeń charakterystyki energetycznej i sporządzania świadectw charakterystyki energetycznej

ViLab- program służący do prowadzenia obliczeń charakterystyki energetycznej i sporządzania świadectw charakterystyki energetycznej ViLab- program służący do prowadzenia obliczeń charakterystyki energetycznej i sporządzania świadectw charakterystyki energetycznej ViLab jest samodzielnym programem służącym do prowadzenia obliczeń charakterystyki

Bardziej szczegółowo

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie

Bardziej szczegółowo

Dodatkowe możliwości RDF. Seminarium magisterskie Paweł Chrząszczewski

Dodatkowe możliwości RDF. Seminarium magisterskie Paweł Chrząszczewski Dodatkowe możliwości RDF Seminarium magisterskie Paweł Chrząszczewski Inne możliwości RDF RDF posiada szereg dodatkowych funkcji, takich jak wbudowane typy i właściwości reprezentujące grupy zasobów i

Bardziej szczegółowo

Słowa kluczowe Sterowanie klawiaturą, klawiatura, klawisze funkcyjne, przesuwanie obiektów ekranowych, wydawanie poleceń za pomocą klawiatury

Słowa kluczowe Sterowanie klawiaturą, klawiatura, klawisze funkcyjne, przesuwanie obiektów ekranowych, wydawanie poleceń za pomocą klawiatury Obsługa za pomocą klawiatury Różnego typu interfejsy wykorzystują różne metody reagowania i wydawania poleceń przez użytkownika. W środowisku graficznym najpopularniejsza jest niewątpliwie mysz i inne

Bardziej szczegółowo

1 Moduł Modbus ASCII/RTU

1 Moduł Modbus ASCII/RTU 1 Moduł Modbus ASCII/RTU Moduł Modbus ASCII/RTU daje użytkownikowi Systemu Vision możliwość komunikacji z urządzeniami za pomocą protokołu Modbus. Moduł jest konfigurowalny w taki sposób, aby umożliwiał

Bardziej szczegółowo

Jak rozpocząć pracę? Mapa

Jak rozpocząć pracę? Mapa Jak rozpocząć pracę? SWDE Manager jest aplikacją służącą do przeglądania graficznych i opisowych danych ewidencji gruntów i budynków zapisanych w formacie SWDE (.swd,.swg,.swde). Pracując w SWDE Managerze,

Bardziej szczegółowo

Tom 6 Opis oprogramowania

Tom 6 Opis oprogramowania Część 4 Narzędzie do wyliczania wielkości oraz wartości parametrów stanu Diagnostyka stanu nawierzchni - DSN Generalna Dyrekcja Dróg Krajowych i Autostrad Warszawa, 30 maja 2012 Historia dokumentu Nazwa

Bardziej szczegółowo

Optymalizacja parametrów w strategiach inwestycyjnych dla event-driven tradingu dla odczytu Australia Employment Change

Optymalizacja parametrów w strategiach inwestycyjnych dla event-driven tradingu dla odczytu Australia Employment Change Raport 4/2015 Optymalizacja parametrów w strategiach inwestycyjnych dla event-driven tradingu dla odczytu Australia Employment Change autor: Michał Osmoła INIME Instytut nauk informatycznych i matematycznych

Bardziej szczegółowo

Metody Programowania

Metody Programowania POLITECHNIKA KRAKOWSKA - WIEiK KATEDRA AUTOMATYKI i TECHNIK INFORMACYJNYCH Metody Programowania www.pk.edu.pl/~zk/mp_hp.html Wykładowca: dr inż. Zbigniew Kokosiński zk@pk.edu.pl Wykład 8: Wyszukiwanie

Bardziej szczegółowo

Misja #1 Poznajemy Prophio.

Misja #1 Poznajemy Prophio. Po dzisiejszym spotkaniu będziesz: bezpiecznie pracować z urządzeniami zasilanymi prądem elektrycznym, organizować stanowisko pracy w sposób zgodny z przepisami bezpieczeństwa i higieny pracy, stosować

Bardziej szczegółowo

Import danych z plików Excel. (pracownicy, limity urlopowe i inne)

Import danych z plików Excel. (pracownicy, limity urlopowe i inne) Import danych z plików Excel (pracownicy, limity urlopowe i inne) 1. Wstęp BeeOffice umożliwia import z plików Excel kilku rodzajów danych, najczęściej wykorzystywanych podczas tworzenia nowego systemu

Bardziej szczegółowo

5.4. Tworzymy formularze

5.4. Tworzymy formularze 5.4. Tworzymy formularze Zastosowanie formularzy Formularz to obiekt bazy danych, który daje możliwość tworzenia i modyfikacji danych w tabeli lub kwerendzie. Jego wielką zaletą jest umiejętność zautomatyzowania

Bardziej szczegółowo

Metody przeszukiwania

Metody przeszukiwania Metody przeszukiwania Co to jest przeszukiwanie Przeszukiwanie polega na odnajdywaniu rozwiązania w dyskretnej przestrzeni rozwiązao. Zwykle przeszukiwanie polega na znalezieniu określonego rozwiązania

Bardziej szczegółowo

Kurs logiki rozmytej - pomoc. Wojciech Szybisty

Kurs logiki rozmytej - pomoc. Wojciech Szybisty Kurs logiki rozmytej - pomoc Wojciech Szybisty 2009 Spis treści 1 Wymagania 3 2 Zawartość strony internetowej 3 3 Obsługa apletów 6 3.1 Aplet Rodzaje funkcji przynależności...................... 6 3.2

Bardziej szczegółowo

1. Pamięć wirtualna. 2. Optymalizacja pliku pamięci wirtualnej

1. Pamięć wirtualna. 2. Optymalizacja pliku pamięci wirtualnej 1. Pamięć wirtualna Jeśli na komputerze brakuje pamięci RAM wymaganej do uruchomienia programu lub wykonania operacji, system Windows korzysta z pamięci wirtualnej, aby zrekompensować ten brak. Aby sprawdzić,

Bardziej szczegółowo

Instrukcja obsługi programu PowRek

Instrukcja obsługi programu PowRek Instrukcja obsługi programu PowRek środa, 21 grudnia 2011 Spis treści Przeznaczenie programu... 4 Prezentacja programu... 5 Okno główne programu... 5 Opis poszczególnych elementów ekranu... 5 Nowy projekt...

Bardziej szczegółowo

Kompletna dokumentacja kontenera C++ vector w - http://www.cplusplus.com/reference/stl/vector/

Kompletna dokumentacja kontenera C++ vector w - http://www.cplusplus.com/reference/stl/vector/ STL, czyli o co tyle hałasu W świecie programowania C++, hasło STL pojawia się nieustannie i zawsze jest o nim głośno... często początkujące osoby, które nie znają STL-a pytają się co to jest i czemu go

Bardziej szczegółowo

Tworzenie nowego projektu w asemblerze dla mikroprocesora z rodziny 8051

Tworzenie nowego projektu w asemblerze dla mikroprocesora z rodziny 8051 Tworzenie nowego projektu w asemblerze dla mikroprocesora z rodziny 8051 Katedra Automatyki, Wydział EAIiE Akademia Górniczo-Hutnicza w Krakowie Marcin Piątek Kraków 2008 1. Ważne uwagi i definicje Poniższy

Bardziej szczegółowo

Algorytmy i struktury danych

Algorytmy i struktury danych POLITECHNIKA KRAKOWSKA - WIEiK KATEDRA AUTOMATYKI i TECHNIK INFORMACYJNYCH Algorytmy i struktury danych www.pk.edu.pl/~zk/aisd_hp.html Wykładowca: dr inż. Zbigniew Kokosiński zk@pk.edu.pl Wykład 5: Algorytmy

Bardziej szczegółowo

Mathcad c.d. - Macierze, wykresy 3D, rozwiązywanie równań, pochodne i całki, animacje

Mathcad c.d. - Macierze, wykresy 3D, rozwiązywanie równań, pochodne i całki, animacje Mathcad c.d. - Macierze, wykresy 3D, rozwiązywanie równań, pochodne i całki, animacje Opracował: Zbigniew Rudnicki Powtórka z poprzedniego wykładu 2 1 Dokument, regiony, klawisze: Dokument Mathcada realizuje

Bardziej szczegółowo

WYMAGANIE EDUKACYJNE Z MATEMATYKI W KLASIE II GIMNAZJUM. dopuszczającą dostateczną dobrą bardzo dobrą celującą

WYMAGANIE EDUKACYJNE Z MATEMATYKI W KLASIE II GIMNAZJUM. dopuszczającą dostateczną dobrą bardzo dobrą celującą 1. Statystyka odczytać informacje z tabeli odczytać informacje z diagramu 2. Mnożenie i dzielenie potęg o tych samych podstawach 3. Mnożenie i dzielenie potęg o tych samych wykładnikach 4. Potęga o wykładniku

Bardziej szczegółowo

Tworzenie bazy danych na przykładzie Access

Tworzenie bazy danych na przykładzie Access Tworzenie bazy danych na przykładzie Access Tworzenie tabeli Kwerendy (zapytania) Selekcja Projekcja Złączenie Relacja 1 Relacja 2 Tworzenie kwedend w widoku projektu Wybór tabeli (tabel) źródłowych Wybieramy

Bardziej szczegółowo

Instrukcja szybkiej obsługi

Instrukcja szybkiej obsługi Instrukcja szybkiej obsługi Uwaga!!! Dla prawidłowego działania wymagany jest program Excel 2003 lub nowszy. Program należy ściągnąć ze strony internetowej i zapisać na dysku twardym. Wyjście z programu

Bardziej szczegółowo

Stawiamy pierwsze kroki

Stawiamy pierwsze kroki Stawiamy pierwsze kroki 3.1. Stawiamy pierwsze kroki Edytory tekstu to najbardziej popularna odmiana programów służących do wprowadzania i zmieniania (czyli edytowania) tekstów. Zalicza się je do programów

Bardziej szczegółowo

Instrukcja obsługi Zaplecza epk w zakresie zarządzania tłumaczeniami opisów procedur, publikacji oraz poradników przedsiębiorcy

Instrukcja obsługi Zaplecza epk w zakresie zarządzania tłumaczeniami opisów procedur, publikacji oraz poradników przedsiębiorcy Instrukcja obsługi Zaplecza epk w zakresie zarządzania tłumaczeniami opisów procedur, publikacji oraz poradników przedsiębiorcy Spis treści: 1 WSTĘP... 3 2 DOSTĘP DO SYSTEMU... 3 3 OPIS OGÓLNY SEKCJI TŁUMACZENIA...

Bardziej szczegółowo

Dodatek Solver Teoria Dodatek Solver jest częścią zestawu poleceń czasami zwaną narzędziami analizy typu co-jśli (analiza typu co, jeśli?

Dodatek Solver Teoria Dodatek Solver jest częścią zestawu poleceń czasami zwaną narzędziami analizy typu co-jśli (analiza typu co, jeśli? Dodatek Solver Teoria Dodatek Solver jest częścią zestawu poleceń czasami zwaną narzędziami analizy typu co-jśli (analiza typu co, jeśli? : Proces zmieniania wartości w komórkach w celu sprawdzenia, jak

Bardziej szczegółowo

Korzystanie z edytora zasad grupy do zarządzania zasadami komputera lokalnego w systemie Windows XP

Korzystanie z edytora zasad grupy do zarządzania zasadami komputera lokalnego w systemie Windows XP Korzystanie z edytora zasad grupy do zarządzania zasadami komputera lokalnego w systemie Windows XP W tym opracowaniu opisano, jak korzystać z edytora zasad grupy do zmiany ustawień zasad lokalnych dla

Bardziej szczegółowo

Jak przygotować pliki gotowe do publikacji w sieci za pomocą DigitLabu?

Jak przygotować pliki gotowe do publikacji w sieci za pomocą DigitLabu? Jak przygotować pliki gotowe do publikacji w sieci za pomocą DigitLabu? Po zainstalowaniu DigitLabu na komputerze otrzymujemy pakiet programów niezbędnych do przygotowania cyfrowych wersji obiektów tekstowych.

Bardziej szczegółowo

Instrukcja obsługi Rejestrator Parametrów

Instrukcja obsługi Rejestrator Parametrów Instrukcja obsługi Rejestrator Parametrów ( instrukcja dostępna także w programie diagnostycznym oraz na www.ac.com.pl) ver. 1.1 2012-06-20 Producent: AC Spółka Akcyjna. 15-182 Białystok, ul. 27 Lipca

Bardziej szczegółowo

Programowanie 3 - Funkcje, pliki i klasy

Programowanie 3 - Funkcje, pliki i klasy Instytut Informatyki Uniwersytetu Śląskiego Laborki funkcja; parametry funkcji; typ zwracany; typ void; funkcje bez parametrów; napis.length() - jako przykład funkcji. Zadania funkcja dodająca dwie liczby;

Bardziej szczegółowo

Automatyczny dobór parametrów algorytmu genetycznego

Automatyczny dobór parametrów algorytmu genetycznego Automatyczny dobór parametrów algorytmu genetycznego Remigiusz Modrzejewski 22 grudnia 2008 Plan prezentacji Wstęp Atrakcyjność Pułapki Klasyfikacja Wstęp Atrakcyjność Pułapki Klasyfikacja Konstrukcja

Bardziej szczegółowo

INSTRUKCJA DO OPROGRAMOWANIA KOMPUTEROWEGO

INSTRUKCJA DO OPROGRAMOWANIA KOMPUTEROWEGO INSTRUKCJA DO OPROGRAMOWANIA KOMPUTEROWEGO DLA LEKKIEJ PŁYTY DO BADAŃ DYNAMICZNYCH HMP LFG WYMAGANE MINIMALNE PARAMETRY TECHNICZNE: SPRZĘT: - urządzenie pomiarowe HMP LFG 4 lub HMP LFG Pro wraz z kablem

Bardziej szczegółowo

ERGODESIGN - Podręcznik użytkownika. Wersja 1.0 Warszawa 2010

ERGODESIGN - Podręcznik użytkownika. Wersja 1.0 Warszawa 2010 ERGODESIGN - Podręcznik użytkownika Wersja 1.0 Warszawa 2010 Spis treści Wstęp...3 Organizacja menu nawigacja...3 Górne menu nawigacyjne...3 Lewe menu robocze...4 Przestrzeń robocza...5 Stopka...5 Obsługa

Bardziej szczegółowo

Plan wynikowy. Klasa III Technik pojazdów samochodowych/ Technik urządzeń i systemów energetyki odnawialnej. Kształcenie ogólne w zakresie podstawowym

Plan wynikowy. Klasa III Technik pojazdów samochodowych/ Technik urządzeń i systemów energetyki odnawialnej. Kształcenie ogólne w zakresie podstawowym Oznaczenia: wymagania konieczne, P wymagania podstawowe, R wymagania rozszerzające, D wymagania dopełniające, W wymagania wykraczające. Plan wynikowy lasa III Technik pojazdów samochodowych/ Technik urządzeń

Bardziej szczegółowo

Modułowy programowalny przekaźnik czasowy firmy Aniro.

Modułowy programowalny przekaźnik czasowy firmy Aniro. Modułowy programowalny przekaźnik czasowy firmy Aniro. Rynek sterowników programowalnych Sterowniki programowalne PLC od wielu lat są podstawowymi systemami stosowanymi w praktyce przemysłowej i stały

Bardziej szczegółowo

Edytor tekstu MS Word 2003 - podstawy

Edytor tekstu MS Word 2003 - podstawy Edytor tekstu MS Word 2003 - podstawy Cz. 4. Rysunki i tabele w dokumencie Obiekt WordArt Jeżeli chcemy zamieścić w naszym dokumencie jakiś efektowny napis, na przykład hasło reklamowe, możemy wykorzystać

Bardziej szczegółowo

wagi cyfry 7 5 8 2 pozycje 3 2 1 0

wagi cyfry 7 5 8 2 pozycje 3 2 1 0 Wartość liczby pozycyjnej System dziesiętny W rozdziale opiszemy pozycyjne systemy liczbowe. Wiedza ta znakomicie ułatwi nam zrozumienie sposobu przechowywania liczb w pamięci komputerów. Na pierwszy ogień

Bardziej szczegółowo

1. Opis. 2. Wymagania sprzętowe:

1. Opis. 2. Wymagania sprzętowe: 1. Opis Aplikacja ARSOFT-WZ2 umożliwia konfigurację, wizualizację i rejestrację danych pomiarowych urządzeń produkcji APAR wyposażonych w interfejs komunikacyjny RS232/485 oraz protokół MODBUS-RTU. Aktualny

Bardziej szczegółowo

Optymalizacja parametrów w strategiach inwestycyjnych dla event-driven tradingu - metodologia badań

Optymalizacja parametrów w strategiach inwestycyjnych dla event-driven tradingu - metodologia badań Raport 1/2015 Optymalizacja parametrów w strategiach inwestycyjnych dla event-driven tradingu - metodologia badań autor: Michał Osmoła INIME Instytut nauk informatycznych i matematycznych z zastosowaniem

Bardziej szczegółowo

Transformacja współrzędnych geodezyjnych mapy w programie GEOPLAN

Transformacja współrzędnych geodezyjnych mapy w programie GEOPLAN Transformacja współrzędnych geodezyjnych mapy w programie GEOPLAN Program GEOPLAN umożliwia zmianę układu współrzędnych geodezyjnych mapy. Można tego dokonać przy udziale oprogramowania przeliczającego

Bardziej szczegółowo

Microsoft Excel 2003 profesjonalna analiza i raportowanie oraz prezentacja danych

Microsoft Excel 2003 profesjonalna analiza i raportowanie oraz prezentacja danych Microsoft Excel 2003 profesjonalna analiza i raportowanie oraz prezentacja danych Projekt: Wdrożenie strategii szkoleniowej prowadzony przez KancelarięPrezesa Rady Ministrów Projekt współfinansowany przez

Bardziej szczegółowo

Zastosowania Robotów Mobilnych

Zastosowania Robotów Mobilnych Zastosowania Robotów Mobilnych Temat: Zapoznanie ze środowiskiem Microsoft Robotics Developer Studio na przykładzie prostych problemów nawigacji. 1) Wstęp: Microsoft Robotics Developer Studio jest popularnym

Bardziej szczegółowo

windows XP n a j l e p s z e t r i k i

windows XP n a j l e p s z e t r i k i windows XP n a j l e p s z e t r i k i windows XP n a j l e p s z e t r i k i Jak zoptymalizować pracę z systemem Windows XP?... 3 Jak szybko uruchamiać programy?... 3 W jaki sposób dostosować pulpit i

Bardziej szczegółowo