Rozwiązanie problemu plecakowego z użyciem AG
Transkrypt
Rozwiązanie problemu plecakowego z użyciem AG
Rozwiązanie problemu plecakowego z użyciem AG 1 Cel laboratorium W ramach laboratorium należy napisać program rozwiązujący dyskretny problem plecakowy (ang. 0/1 knapsack problem) z użyciem algorytmu genetycznego. 2 Dyskretny problem plecakowy Dane wejściowe: Dany jest ciąg n elementów S = {s1 , s2 , ..., sn } gdzie si to para atrybutów (wi , ci ). Atrybut wi oznacza wagę (rozmiar) elementu, a ci jego wartość. Przez C oznaczamy pojemność plecaka. Problem: Znaleźć podzbiór S R ⊂ S taki, że suma wartości wszystkich elementów w podzbiorze S R P ( j∈S R cj ) jest maksymalizowana, a suma wag elementów z podzbioru S R jest mniejsza lub P równa C co zapisujemy ( j∈S R wj ≤ C). Interpretacja: Problem plecakowy pojawia się w każdej sytuacji, gdzie mamy do czynienia z wyborem elementów z ograniczeniem budżetu. Należy wówczas odpowiedzieć na pytanie: jakie produkty należy kupić, by nie przekroczyć wyznaczonego budżetu? Każdy przedmiot ma swój koszt i wartość, zatem będziemy poszukiwać najbardziej wartościowego przedmiotu o najniższym koszcie(wadze). Najczęściej problem plecakowy wyjaśnia się na przykładzie złodzieja, który może wynieść w swoim plecaku tylko ograniczoną wagą ilość przedmiotów, a jednak chciałby mieć z rabunku jak największy zysk. Wariant dyskretny problemu: Jest to takie zagadnienie plecakowe, gdzie do plecaka nie można wkładać ułamkowych części elementów. Elementy mogą się w plecaku znaleźć (1) lub nie (0). 3 Algorytm genetyczny Algorytm genetyczny (ang. genetic algorithm) działa według schematu: 1 Wygeneruj losowo populację początkową o liczności N 2 Oblicz funkcję przystosowania dla każdego osobnika 3 Powtarzaj tworzenie nowych generacji dopóki nie spełniony jest warunek zatrzymania: 1 3.1 Przeprowadź selekcję (wybór osobników do reprodukcji) 3.2 Utwórz nową populację o liczności N przez wykonanie krzyżowania i mutacji 3.3 Oceń nowe osobniki obliczając ich funkcję przystosowania Zanim zastosuje się algorytm genetyczny do rozwiązania dowolnego problemu należy określić: • Kodowanie rozwiązań w ciąg chromosomowy — należy rozważyć jak przedstawić potencjalne rozwiązanie rozpatrywanego problemu w postaci ciągu (liczb: np. binarnych, naturalnych, rzeczywistych; znaków), tak by proces odwrotny (dekodowanie) tworzył elementy z dozwolonej dziedziny. • Funkcję przystosowania — która wycenia jakość danego rozwiązania. Im lepsze rozwiązanie prezentuje dany osobnik, tym większa jest jej wartość. Funkcja musi uwzględniać wszystkie cele zadania. • Operatory genetyczne — wybór typu krzyżowania i mutacji odpowiednio do wybranego kodowania chromosomów. Niekiedy zmiany (krzyżowanie, mutacja) w ciągach kodowych (chromosomach) mogą prowadzić do powstawiania rozwiązań spoza dziedziny (dobrze jest się wówczas zastanowić, czy nie da się zmienić kodowania). Należy wówczas dokonać modyfikacji operatorów genetycznych, bądź korekty ciągów chromosomowych, by znajdowały się w obrębie dziedziny. • Wybrać metody selekcji — dopasowanie metody selekcji w zależności od kodowania i rozwiązywanego problemu. • Określić warunki zatrzymania algorytmu — generowanie nowych populacji może być zakończone po wykonaniu zadanej liczby iteracji lub po osiągnięciu np. zadanej wartości funkcji przystosowania. Pomocny link: klasyka.htm. 4 http://aragorn.pb.bialystok.pl/~radev/ai/alggen/files/ Zadanie Wariant podstawowy zadania obejmuje zaprojektowanie i zaimplementowanie algorytmu genetycznego zgodnie z punktami wymienionymi powyżej. Należy wybrać i zaimplementować jedną dowolną metodę selekcji, krzyżowania i mutacji. Proszę zapewnić, by dane wejściowe do algorytmu można podać jako dowolny ciąg par {wi , ci }. Przykład testowy: {(100, 40), (50, 35), (45, 18), (20, 4), (10, 10), (5, 2)}, gdzie C = 100. Najlepsze rozwiązanie dla przykładu, to C = 100, gdzie zysk całkowity równy jest 55, przy wybranym elemencie 2, 3, 6. Wariant rozszerzony to taki, gdzie zaimplementowano różne operatory genetyczne i metody selekcji, tak by porównać ich efektywność. Dodatkowo można rozwinąć problem na dyskretny problem wielu plecaków, gdzie zamiast jednego plecaka o pojemności C dane jest m plecaków o pojemnościach {C1 , C2 , ..., Cm }. 2 5 Pytania na wejściówkę 1. Jak działa algorytm genetyczny? 2. Jakie może być kodowanie chromosomu? (binarne, rzeczywiste, całkowitoliczbowe) 3. Co to jest funkcja przystosowania? 4. Co to jest selekcja? 5. Jakie metody selekcji można stosować w AG? 6. Jakie znaczenie ma stosowanie elitaryzmu? 7. Po co w AG stosuje się krzyżowanie i jakie są typy krzyżowań? 8. Po co w AG stosuje się mutację i jakie są typy krzyżowań? 3