AI-For-Beginners/translations/pl/lessons/6-Other/21-GeneticAlgorithms
localizeflow[bot] 33ce0e5757 chore(i18n): sync translations with latest source changes (chunk 1/1, 203 changes) 2026-01-30 01:54:20 +00:00
..
Diophantine.ipynb 🌐 Update translations via Co-op Translator 2025-08-31 14:13:46 +00:00
Genetic.ipynb 🌐 Update translations via Co-op Translator 2025-08-31 14:13:46 +00:00
README.md chore(i18n): sync translations with latest source changes (chunk 1/1, 203 changes) 2026-01-30 01:54:20 +00:00

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:

  1. Wybierz początkową populację G⊂Γ
  2. Losowo wybierz jedną z operacji, która zostanie wykonana na tym etapie: krzyżowanie lub mutacja
  3. 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.
  1. Mutacja - wybierz losowy gen g∈G i zastąp go przez mutate(g)
  2. 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ą:

  1. Optymalizację harmonogramów
  2. Optymalne pakowanie
  3. Optymalne cięcie
  4. 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:

  1. Sprawiedliwy podział skarbu
  2. 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:

  1. Możesz rozważyć pierwiastki w przedziale [0;30]
  2. Jako gen, rozważ użycie listy wartości pierwiastków

Użyj Diophantine.ipynb jako punktu wyjścia.