Algorytmy genetyczne - problem optymalizacji na
Transkrypt
Algorytmy genetyczne - problem optymalizacji na
Algorytmy genetyczne - problem optymalizacji na przykładzie dyskretnego problemu plecakowego Marcin Pietrzykowski 13 czerwca 2015 1 Wprowadzenie Problem plecakowy (ang. discrete knapsack problem) często przedstawia się jako problem złodzieja rabującego sklep – znalazł on N towarów; j–ty przedmiot jest wart cj oraz waży wj . Złodziej dąży do zabrania ze sobą jak najwartościowszego łupu, przy czym nie może zabrać więcej niż B kilogramów. Nie może też zabierać ułamkowej części przedmiotów (byłoby to możliwe w ciągłym problemie plecakowym). 1.1 Definicja Definicja formalna: mamy do dyspozycji plecak o maksymalnej pojemności B oraz zbiór N elementów {x1 , xj , ..., xN }, przy czym każdy element ma określoną wartość cj oraz wielkość wj . Element xj interpretujemy jako informacje czy dany przedmiote znajduje się w plecaku czy nie. Problem może być zdefiniowany: • zmaksymalizuj: PN • przy założeniach: j=1 cj xj . PN j=1 wj xj ¬ B, xj = 0 lub 1, j = 1, . . . , n. Co należy rozumieć, że złodziej może zmieścić w swoim plecaku przedmioty o łącznej wielkości np.: 10 dm3 . W sklepie znajduje się 5 przedmiotów każdy z nich posiada określoną wartość i określoną wielkość np.: przedmiot nr 1 ma 2 dm3 i jest wart 100 zł, przemiot nr 2 ma 5 dm3 i jest wart 110 zł itd. Wybieramy taką konfigurację przedmiotów aby pojemność plecaka nie została przekroczona a zysk był maksymalny. 1 2 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 zatrzyma (a) Przeprowadź selekcję (wybór osobników do reprodukcji) (b) Utwórz nową populację o liczności N przez wykonanie krzyżowania, mutacji i ewentualnie inwersji (c) Oceń nowe osobniki obliczając ich funkcję przystosowan Podczas projektowania algorytmu genetycznego należy rozważyć następujące kroki: 1. Kodowanie rozwiązań w chromosomie – należy przedstawić rozwiązanie rozpatrywanego problemu w postaci ciągu liczb: np. binarnych, naturalnych, rzeczywistych. W rozpatrywanym zadaniu należy użyć chromosomu binarnego, gdzie każdy z genów w chromosomie będzie informował o tym czy dany przedmiot znalazł się w plecaku. Gen może przyjmować dwie wartości 1 - przedmiot jest w plecaku, 0 - przedmiotu nie ma. Dla 5 przedmiotów przykładowy chromosom może mieć postać [11001], oznacza on że w plecaku znalazły się przedmioty nr. 1, 2, 5; 2. Określenie funkcji przystosowania - funkcja przystosowania ocenia przystosowanie danego chromosomu (jakość danego rozwiązania). W niniejszym zadaniu (zadaniu maksymalizacji) im lepsze rozwiązanie prezentuje dany osobnik, tym większa jest wartość funkcji przystosowania. Najprostsza funkcja przystosowania ma postać: P N f (chi ) = 0 j=1 cj xj if N j=1 wj xj ¬ B PN if j=1 wj xj > B P (1) W pierwszym przypadku dany chromosom otrzymuje wartość funkcji P przystosowania równą wartość przedmiotów w plecaku N j=1 cj xj jeżeli rozmiar plecaka nie został przekroczony. Jeżeli rozmiar plecaka został P przekroczony N j=1 wj xj > B czyli jest większy od maksymlanej pojemności plecaka B to wtedy wartość funkcji przystosowania wynosi 0. Ze 2 względu na wybór funkcji przystosowania, populacja w pierwszej generacji powinna posiadać “luźno upakowane” plecaki. W plecaku powinna znajdować się mała liczba przedmiotów np.: prawdopodobieństwo pojawienia się przedmiotu powinno wynosić 10%. W przypadku w którym prawdopobieństwo pojawienai się przedmiotu wynoosi 50% algorytm przez długi czas może poszukiwać rozwiązań, które w ogóle dadzą radę zmieścić się w plecaku. Można zastosować pewną modyfikację powyższej funkji przystowania taką, która na początek stara się znaleźć chromosomy, w których rozmiar plecaka nie został przekroczony: P N j=1 cj xj f (chi ) = P 1 N c x j=1 j j if N j=1 wj xj ¬ B PN if j=1 wj xj > B P (2) W tym przypadku w pierwszej populacji pradopodobieństwo pojawienia się przedmiotu w plecaku może wynosić 50%. 3. Wybór operatorów genetycznych - wybór typu krzyżowania i mutacji odpowiednio do wybranego kodowania chromosomów. W powyższym zadaniu należało by zaimplementować krzyżowanie jedno- i dwupunktowe. 4. Wybór metody selekcji – dopasowanie metody selekcji do sposobu kodowania w rozwiązywanym problemie. Tutaj wymagana jest implementację selekcji turniejowej lub koła ruletki. 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. W zadaniu zaleca się zastosowanie ograniczenia na liczbę iteracji. 3 Implemetacja Jako zadanie należy zaimplemntować algorytm genetyczny rozwiązujący dyskretny problem plecakowy. Na koniec zadania należało by narysować wykres przedstawiający: • średnie przystosowania osobników w kolejnych iteracjach, • przystosowania najlepszego osobnika w kolejnych iteracjach. 3 Należałoby przebadać jak na szybkość znalezienie rozwiązania wpływa prawdopodobieństwo wystąpienia poszczególnych operatorów genetycznych, wybór metody selekcji oraz jej parametrów. Uwaga!!! algorytm genetyczny odnajduje rozwiązanie po pewnej liczbie iteracji, nie następuje ona zaraz po pierwszej. Aby uniknąć tego typu sytacji rozmiar plecaka musi być “dużo mniejszy” od sumarycznej wielkości przedmiotów. Sugerowane ustawienia są nastepujące: przy 100 przedmiotach o losowej wartości z zakresu (0, 10] oraz wielkości (0, 10], maksymalny rozmiar plecaka B powinien wynosić np.: 200. Liczbę N osobników (chormosomów) w populacji można ustawić np. na 100. 4