Aktywne Wpisy
PodniebnyMurzyn +400
Wykopki: BETONOZAA!! WSZYSTKO ZABUDOWANE!! PATODEWELOPERKA WSZEDZIE!11 BLOK PRZY BLOKU!!
Też wykopki: DLACZEGO NIKT NIC NIE ROBI Z RODZINNYMI OGRODKAMI DZIALKOWYMI? ZABUDOWAC W 50% BUDYNKAMI
https://wykop.pl/wpis/75064595/nieruchomosci-warszawa-przemysleniazdupy-czemu-nik
#wykopfejs #bekazpodludzi #nieruchomosci
Też wykopki: DLACZEGO NIKT NIC NIE ROBI Z RODZINNYMI OGRODKAMI DZIALKOWYMI? ZABUDOWAC W 50% BUDYNKAMI
https://wykop.pl/wpis/75064595/nieruchomosci-warszawa-przemysleniazdupy-czemu-nik
#wykopfejs #bekazpodludzi #nieruchomosci
Metodzik +240
=====================[DARMOWA GRA NA GOG]===================
FlatOut za D̲A̲R̲M̲O̲ w GOG
OCENA
METASCORE: 71 / USER SCORE 7.7
STEAM: Bardzo pozytywne (4,033 ocen)
DATA WYDANIA: 7 grudnia 2005
AKTUALNE❗ do 17.02 godzina 15:00
Jeżeli chcesz chcesz być dodany/a do listy osób wołanych z tagu #metodzikpoleca epic zapraszam do plusowania TEGO WPISU oraz obserwowania. Znalezione informację dotyczące nowych darmowych ofert będą na bieżąco dodawane. Jest też tam informacja jak się usunąć z listy
FlatOut za D̲A̲R̲M̲O̲ w GOG
OCENA
METASCORE: 71 / USER SCORE 7.7
STEAM: Bardzo pozytywne (4,033 ocen)
DATA WYDANIA: 7 grudnia 2005
AKTUALNE❗ do 17.02 godzina 15:00
Jeżeli chcesz chcesz być dodany/a do listy osób wołanych z tagu #metodzikpoleca epic zapraszam do plusowania TEGO WPISU oraz obserwowania. Znalezione informację dotyczące nowych darmowych ofert będą na bieżąco dodawane. Jest też tam informacja jak się usunąć z listy
Głównie chodzi o to, że nie działa ( ͡° ͜ʖ ͡°)
Możliwe, że błąd jest trywialny, albo wszystko jest źle i muszę zacząć od nowa.
Kod jest implementacją algorytmu genetycznego który ma dojść do momentu rozwiązania. Rozwiązaniem jest string: "10101010...101010";
W najlepszym wypadku najlepszym po kilku tysiącach generacji na końcu okazuje się string o takim samym wskaźniku "fitowania do rozwiązania" co losowo wygenerowany najlepszy z pierwszej generacji.
A i tak zazwyczaj dzieje się tak, że po operacjach najlepszy jest gorszy niż najlepszy z pierwszej generacji.
Ktoś/coś podpowie?
Linkuję do gita:
https://bitbucket.org/grzegorz_molicki/geneticalgorithm/src/d8b44a0145a315f9c2cf607bb1ed083f7062a315?at=master
Dzięki!
#programowanie #ai chyba trochę #algorytmygenetyczne #algorytmy #java
Podniosłem prawdopodobieństwo krzyżowania par do 100% (super prawdopodobieństwo bulwo xd), mutacji do 50% i jako tako działa. Tragicznie wolne na jednym wątku, ale działa.
Spróbuję jeszcze dodać żeby brało do nowego zawsze jeden najlepszy z poprzedniego pokolenia, to może trochę przyspieszy proces. Ale to już z rana jak wstanę.
Jakby ktoś to czytał: dobry człowieku rzućże okiem na ten kod.
Z tego co rozumiem, to krzyżowanie następuje zawsze (tyle razy, żeby liczebność w kolejnym pokoleniu została zachowana, więc liczba krzyżowań może być różna, np. w zależności od tego, czy i ile najlepszych osobników przenosisz bezpośrednio do następnego pokolenia), a nie tylko z pewnym prawdopodobieństwem, więc
STMy to tylko hobby, a tutaj mam projekt na uczelnię. No tak nie do końca, ale mam.
http://kolos.math.uni.lodz.pl/~archive/Sztuczna%20inteligencja/6%20Klasyczny%20algorytm%20genetyczny%20cz1.pdf
Rzeczywiście przy krzyżowaniu nie robiłem tego jak powinienem (przeoczenie przy zmianie kodu, bo jestem pewien że we wcześniejszej wersji miałem poprawnie).
Co do prawdopodobieństw mutacji to było ustalone na początku na 0.1, ale że nie bardzo mi działało jak powinno to kombinowałem z różnymi wartościami.
Faktycznie skopałem sprawę z oceną. Poprawię, pobawię się i zobaczę czy daje dobre wyniki. Dzięki!
Nie. Rób. Metod. Statycznych
Metody static są powinny być używane jako helpery, nie jako trzon aplikacji.
Druga sprawa - strasznie to komplikujesz, niepotrzebnie.
Wystarczy że zrobisz interfejs Chromosome z metodami mutate(), crossover() i getAdaptationValue(). To wszystko.
Jeżeli chcesz aby dana klasa była chromosomem, po prostu implementujesz ten interfejs.
Robiłem kiedyś jedną z możliwych implementacji AG, zaraz ci pokażę mój
https://gist.github.com/anonymous/ad1145a530071a621459 - taki mam interfejs Chromosome.
A tu masz mój kod głównej klasy algorytmu.
https://gist.github.com/anonymous/46120b64d184986e9d3c
Zauważ kilka rzeczy.
1. Obiekty Random są drogie i ciężkie, nie twórz ich co 10 linijek.
2. Implementuję interfejs Callable co daje ci:
- możliwość asynchronicznego wykonania całego procesu algorytmu
- możliwość wrzucenia wielu tasków do puli wątków.
a następnie użycia wyniku.
3. Moja implementacja wybiera najlepiej przystosowany chromosom i go zwraca.
4. Klasa GeneticTask
crossover
. Zakładając nawet prosty problem, jak u @Wyrewolwerowanyrewolwer, czyni to bardziej skomplikowanym implementacjęChromosome
- locus jest losowy, ale trzeba skontrolować, żeby w obu przypadkach wybrać tę samą wartość. Podobnie, w jego zagadnieniu, prawdopodobieństwo mutacji ma dotyczyć każdego z genów z osobna, a nie całego chromosomu.Pobawiłem się trochę generykami, by osiągnąć coś, co będzie na tyle ogólne, by ładnie