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 mniejjS R
sza lub równa C (  w j  C ) ; C – pojemność plecaka.
jS 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