|
|
||
|---|---|---|
| .. | ||
| Diophantine.ipynb | ||
| Genetic.ipynb | ||
| README.md | ||
README.md
Algorytmy Genetyczne
Quiz przed wykładem
Algorytmy Genetyczne (GA) opierają się na ewolucyjnym podejściu do sztucznej inteligencji, w którym metody ewolucji populacji są wykorzystywane do uzyskania optymalnego rozwiązania dla danego problemu. Zostały zaproponowane w 1975 roku przez Johna Henry'ego Hollanda.
Algorytmy Genetyczne bazują na następujących ideach:
- Poprawne rozwiązania problemu można reprezentować jako geny
- Krzyżowanie pozwala na połączenie dwóch rozwiązań w celu uzyskania nowego poprawnego rozwiązania
- Selekcja służy do wyboru bardziej optymalnych rozwiązań za pomocą funkcji dopasowania
- Mutacje są wprowadzane, aby destabilizować optymalizację i wyprowadzić nas z lokalnego minimum
Aby zaimplementować Algorytm Genetyczny, potrzebujesz:
- Metody kodowania rozwiązań problemu za pomocą genów g∈Γ
- Na zbiorze genów Γ należy zdefiniować funkcję dopasowania fit: Γ→R. Mniejsze wartości funkcji odpowiadają lepszym rozwiązaniom.
- Mechanizmu krzyżowania, który pozwala na połączenie dwóch genów w celu uzyskania nowego poprawnego rozwiązania crossover: Γ2→Γ.
- Mechanizmu mutacji mutate: Γ→Γ.
W wielu przypadkach krzyżowanie i mutacja są dość prostymi algorytmami manipulującymi genami jako sekwencjami liczbowymi lub wektorami bitowymi.
Konkretna implementacja algorytmu genetycznego może się różnić w zależności od przypadku, ale ogólna struktura wygląda następująco:
- Wybierz początkową populację G⊂Γ
- Losowo wybierz jedną z operacji, która zostanie wykonana na tym etapie: krzyżowanie lub mutacja
- Krzyżowanie:
- Losowo wybierz dwa geny g1, g2 ∈ G
- Oblicz krzyżowanie g=crossover(g1,g2)
- Jeśli fit(g)<fit(g1) lub fit(g)<fit(g2) - zastąp odpowiedni gen w populacji przez g.
- Mutacja - wybierz losowy gen g∈G i zastąp go przez mutate(g)
- Powtarzaj od kroku 2, aż uzyskasz wystarczająco małą wartość fit lub do osiągnięcia limitu liczby kroków.
Typowe Zadania
Zadania typowo rozwiązywane za pomocą Algorytmów Genetycznych obejmują:
- Optymalizację harmonogramów
- Optymalne pakowanie
- Optymalne cięcie
- Przyspieszenie wyczerpującego przeszukiwania
✍️ Ćwiczenia: Algorytmy Genetyczne
Kontynuuj naukę w poniższych notatnikach:
Przejdź do tego notatnika, aby zobaczyć dwa przykłady użycia Algorytmów Genetycznych:
- Sprawiedliwy podział skarbu
- Problem 8 Hetmanów
Podsumowanie
Algorytmy Genetyczne są wykorzystywane do rozwiązywania wielu problemów, w tym problemów logistycznych i wyszukiwania. Dziedzina ta jest inspirowana badaniami łączącymi tematy z psychologii i informatyki.
🚀 Wyzwanie
"Algorytmy genetyczne są proste w implementacji, ale ich zachowanie jest trudne do zrozumienia." źródło Przeprowadź badania, aby znaleźć implementację algorytmu genetycznego, na przykład rozwiązującego łamigłówkę Sudoku, i wyjaśnij, jak działa w formie szkicu lub diagramu przepływu.
Quiz po wykładzie
Przegląd i Samodzielna Nauka
Obejrzyj ten świetny film opowiadający o tym, jak komputer może nauczyć się grać w Super Mario za pomocą sieci neuronowych trenowanych przez algorytmy genetyczne. Dowiemy się więcej o nauce komputerów grających w takie gry w następnej sekcji.
Zadanie: Równanie Diofantyczne
Twoim celem jest rozwiązanie tzw. równania Diofantycznego - równania z całkowitymi pierwiastkami. Na przykład, rozważ równanie a+2b+3c+4d=30. Musisz znaleźć całkowite pierwiastki, które spełniają to równanie.
To zadanie jest inspirowane tym postem.
Wskazówki:
- Możesz rozważyć pierwiastki w przedziale [0;30]
- Jako gen, rozważ użycie listy wartości pierwiastków
Użyj Diophantine.ipynb jako punktu wyjścia.