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