Java Genetic algorithms
$10-30 USD
Betalades vid leverans
Projekt nr 1: Prosty algorytm genetyczny
Prosty AG maksymalizujący funkcję kwadratową
?(?) = 〖ax〗^2 + ?? + ?
dla ? ∈ {0, 1, 2,⋯, 255}.
Wejście:
Parametry:
a, b, c – współczynniki równania kwadratowego
liczba populacji,
liczność populacji
(150 - osobników = lb.pop. x [login to view URL])
liczba uruchomień programu
prawdopodobieństwo krzyżowania
prawdopodobieństwo mutacji
Wyjście:
Wypisanie wartości funkcji przystosowania najlepszego osobnika w ostatniej populacji.
Wypisanie osobnika (odkodowany)
- do pliku.
1. Kodowanie:
osobnik ciąg długości mogący zapisać 256 informacji 256 = 2^8 - ciąg długości 8; np.
0 --> 00000000
56 --> 00111000
255 --> 11111111
2. krzyżowanie: 2 + 2 (dwoje rodziców, dwóch potomków)
a) losujemy osobniki w pary
b) losujemy czy krzyżują (zgodnie z prawdopodobieństwem krzyżowania)
(zwykle duże np. 0,8)
wyl.lb.psl. > [login to view URL]ż – nie krzyżują, przechodzą bez zmian
wyl.lb.psl. <= [login to view URL]ż –krzyżują:
c) losuje punk cięcia (punk cięcia – ?? ? {1,2,⋯,7})
Załóżmy, że pc = 3
?1, ?2 ⟶ ?1, ?2
?1 = [?11, ?12, ?13, ?24, ?25, ?26, ?27, ?28]
?2 = [?21, ?22, ?23, ?24, ?15, ?16, ?17, ?18]
3. mutacja (jednoosobnicza 1 - 1)
prawdopodobieństwo mutacji (zwykle małe 0,1)
Dla każdego osobnika
dla każdego genu
wyl.lb.psl. > pr.mut. – gen nie mutuje
wyl.lb.psl. <= pr.mut. – gen mutuje (0-1 lub 1-0)
4. selekcja
metoda selekcji - koło ruletki
a) Liczymy sum wartości funkcji celu: fsuma = f(x1) +...+ f(xN).
b) Liczymy wkład każdego osobnika w sumę : p(xi) = f(xi) / fsuma.
c) Dokonujemy N–krotnego losowania (ze zwracaniem) osobników zgodnie z rozkładem p(xi).
Co robić gdy f(x)<0?
Rozwiązanie: dodać stałą do f(x) tak aby f(x)>0 dla każdego osobnika w populacji.
Projekt-id: #25786906
About the project
Tilldelades:
Ogólnie wszystko jest jasne, będzie się jedno lub dwa pytania. Proponuję wyjaśnić wszystko na czacie, jeśli projekt jest nadal aktualny. Dziękuję za uwagę.