Ostatnio zrobiłem tak dla zabawy program mający na celu nauczenie sieci neuronowych do spełniania pewnego zadania, a mianowicie do gry w Snake'a(taka pixelowa gierka z rosnącym wężem jak zje jabłko) sam program działa...połowicznie. Program nie daje żadnego błędu, lecz rezultaty tego(~30-minutowego) uczenia są dosyć mierne. Najlepszy zawodnik miał długość 6 albo 7, co mnie niezbyt satysfakcjonuje, zważywszy na to, że na sam kod poświęciłem wiele czasu i mi się laptop zgrzał. Tak więc poszukuje licznych porad, stanowiących o daniu najlepszych rezultatów w dziedzinie algorytmów genetycznych, nawet w formie podania linka, lecz źródło nie może być zbytnio skomplikowane, ponieważ jeszcze za bardzo matmy nie ogarniam, bo chodzę do 1 LO Oto krótki opis algorytmu:
Najpierw biorę sobie 20 losowych sieci neuronowych, a potem każda gra po 30 razy i zdobywa punkty, czyli jabłka. To rozumiem jako taki mini konkurs. Wygrywa ta ze wszystkich sieci, która zje najwięcej jabłek, ona właśnie kopiuje się na miejsce pozostałych, tyle że zmienia nieco swoje wagi o 0.01 lub -0.01 a maksymalne wartości wagi to 1 a minimalna to -1, zmienia je tak że na początku prawie każda waga jest zmieniona, po 2000 takich mini konkursów jak opisałem wyżej prawdopodobieństwo zmiany pojedynczej wagi wynosi 80% a po 5000 rund wynosi około 15%. zrobiłem funkcje która stopniowo z ilością takich mini konkursów spada wartością wykładniczo. Proces się powtarza 5000 razy. Na końcu powinienem otrzymać jakąś ultra sieć neuronową. Bardzo proszę nawet o jakiekolwiek skojarzenia związane z tematem, czyli o porady odnośnie optymalnego algorytmu genetycznego. Sam kod dobrze działa, tyle że jest bardzo niewydajny.
Pozdrawiam i przepraszam za orto!
Ps. Wysłanie kodu wydaje mi się niesensowne, ze względu że nie chodzi o kod lecz o koncept algorytmu genetycznego, jeśli są jakieś wątpliwości, to proszę zgłaszać, będę odpisywać najszybciej jak będe mógł.