|
|
||
|---|---|---|
| .. | ||
| Diophantine.ipynb | ||
| Genetic.ipynb | ||
| README.md | ||
README.md
Algoritmi Genetici
Chestionar înainte de curs
Algoritmii Genetici (GA) se bazează pe o abordare evolutivă a inteligenței artificiale, în care metodele de evoluție ale unei populații sunt utilizate pentru a obține o soluție optimă pentru o problemă dată. Aceștia au fost propuși în 1975 de John Henry Holland.
Algoritmii Genetici se bazează pe următoarele idei:
- Soluțiile valide ale problemei pot fi reprezentate ca gene
- Recombinarea permite combinarea a două soluții pentru a obține o nouă soluție validă
- Selecția este utilizată pentru a alege soluții mai optime folosind o funcție de fitness
- Mutările sunt introduse pentru a destabiliza optimizarea și a ieși din minimul local
Dacă dorești să implementezi un Algoritm Genetic, ai nevoie de următoarele:
- Să găsești o metodă de codificare a soluțiilor problemei folosind gene g∈Γ
- Pe setul de gene Γ trebuie să definești o funcție de fitness fit: Γ→R. Valorile mai mici ale funcției corespund soluțiilor mai bune.
- Să definești un mecanism de recombinare pentru a combina două gene și a obține o nouă soluție validă crossover: Γ2→Γ.
- Să definești un mecanism de mutare mutate: Γ→Γ.
În multe cazuri, recombinarea și mutarea sunt algoritmi destul de simpli pentru manipularea genelor ca secvențe numerice sau vectori de biți.
Implementarea specifică a unui algoritm genetic poate varia de la caz la caz, dar structura generală este următoarea:
- Selectează o populație inițială G⊂Γ
- Selectează aleatoriu una dintre operațiile care vor fi efectuate în acest pas: recombinare sau mutare
- Recombinare:
- Selectează aleatoriu două gene g1, g2 ∈ G
- Calculează recombinarea g=crossover(g1,g2)
- Dacă fit(g)<fit(g1) sau fit(g)<fit(g2) - înlocuiește gena corespunzătoare din populație cu g.
- Mutare - selectează o genă aleatorie g∈G și înlocuiește-o cu mutate(g)
- Repetă de la pasul 2, până obții o valoare suficient de mică a funcției fit sau până se atinge limita numărului de pași.
Sarcini Tipice
Sarcinile rezolvate de obicei prin Algoritmi Genetici includ:
- Optimizarea programării
- Împachetarea optimă
- Tăierea optimă
- Accelerarea căutării exhaustive
✍️ Exerciții: Algoritmi Genetici
Continuă învățarea în următoarele notebook-uri:
Accesează acest notebook pentru a vedea două exemple de utilizare a Algoritmilor Genetici:
- Împărțirea echitabilă a comorii
- Problema celor 8 regine
Concluzie
Algoritmii Genetici sunt utilizați pentru a rezolva multe probleme, inclusiv probleme de logistică și căutare. Domeniul este inspirat de cercetări care au îmbinat subiecte din Psihologie și Informatică.
🚀 Provocare
"Algoritmii genetici sunt ușor de implementat, dar comportamentul lor este dificil de înțeles." sursa Fă cercetări pentru a găsi o implementare a unui algoritm genetic, cum ar fi rezolvarea unui puzzle Sudoku, și explică cum funcționează sub formă de schiță sau diagramă de flux.
Chestionar după curs
Recapitulare & Studiu Individual
Urmărește acest video excelent despre cum un computer poate învăța să joace Super Mario folosind rețele neuronale antrenate prin algoritmi genetici. Vom învăța mai multe despre cum computerele învață să joace astfel de jocuri în secțiunea următoare.
Temă: Ecuația Diofantină
Scopul tău este să rezolvi așa-numita ecuație Diofantină - o ecuație cu rădăcini întregi. De exemplu, consideră ecuația a+2b+3c+4d=30. Trebuie să găsești rădăcinile întregi care satisfac această ecuație.
Această temă este inspirată de acest articol.
Sugestii:
- Poți considera rădăcinile în intervalul [0;30]
- Ca genă, ia în considerare utilizarea listei de valori ale rădăcinilor
Folosește Diophantine.ipynb ca punct de plecare.