Cel: rozwiązanie dyskretnego problemu plecakowego ( ang
Transkrypt
Cel: rozwiązanie dyskretnego problemu plecakowego ( ang
Zadanie 2 Cel: rozwiązanie dyskretnego problemu plecakowego (ang. 0/1 knapsack problem) z użyciem algorytmu genetycznego. Dane wejściowe: dany jest ciąg n elementów S = {s1, s2, …, sn}, gdzie si – para atrybutów (wi,ci), wi – waga (rozmiar) elementu, ci – wartość wi. Problem: Znaleźć podzbiór S R S taki, że suma wartości wszystkich elementów w podzbiorze S R ( c j ) jest maksymalizowana, a suma wag elementów z podzbioru S R jest mniejjS R sza lub równa C ( w j C ) ; C – pojemność plecaka. jS R 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ć, aby 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. 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: do plecaka nie można wkładać ułamkowych części elementów. Elementy mogą się w plecaku znaleźć (1) lub nie (0). Zadanie Wariant podstawowy (konieczny i wystarczający do zaliczenia) zadania obejmuje zaprojektowanie i zaimplementowanie algorytmu genetycznego zgodnego z punktami wymienionymi powyżej. Należy wybrać jedną metodę selekcji, krzyżowania i mutacji. Wariant rozszerzony to taki, gdzie zaimplementowano różne operatory genetyczne i metody selekcji, tak aby 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}. 1 Algorytm genetyczny - główne kroki projektowania 1. 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. 2. Skonstruowanie funkcji przystosowania – funkcja przystosowania (ff) ocenia jakość danego rozwiązania. Im lepsze rozwiązanie prezentuje dany osobnik, tym większa jest wartość ff. Funkcja musi uwzględniać wszystkie cele zadania. 3. Określenie operatorów genetycznych – 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. 4. Wybór metody selekcji – dopasowanie metody selekcji do sposobu kodowania w rozwiązywanym problemie. 5. Określenie warunku zatrzymania algorytmu genetycznego – generowanie nowych populacji może być zakończone po wykonaniu zadanej liczby iteracji lub po osiągnięciu określonej wartości funkcji przystosowania, lub w przypadku, kiedy po określonej liczbie iteracji następującej po ostatniej poprawie najlepszego wyniku, wynik nie został poprawiony. Pliki testowe dla pojedynczego problemu plecakowego dane należy wygenerować samodzielnie. dla problemu wielu plecaków zbiory testowe wraz z wartością optymalną dostępne są na stronie Zuse Institute Berlin;w pliku readme opisana jest składnia benchmarków (suma constraints nie przekracza knapsack capacities a weights of objects maksymalizujemy). Termin realizacji 14.01.2012 Po 14.01.2012 przyjmowane będą tylko projekty, w których należało wykonać poprawki, a które zostały przedstawione do oceny do 14.01.2012. 2