Mam na studiach zajęcia z projektu zespołowego (mamy coś zrobić w grupie 4 studentów).
Prowadzący nam podsunął żeby zrobić coś z algorytmami genetycznymi.
Umówiliśmy sie ze ekipą że przez tydzień poprzeglądamy literature na ten temat, i sprawdzimy czy jest to coś co damy radę ogarnąć.
Temat wydaje sie w miare łatwy, i nawet zrobiłem prosty program który wykorzystuje algorytm genetyczny (narazie tylko do szukania ekstremów funkcji 1 i 2 zmiennych, i faktycznie umie je dobrze przybliżać nie wiedząc jaki wzór ma funkcja), i tu pojawia się pytanie:
znacie jakiś praktyczny projekt który by wykorzystywał taki algorytm?
Nie musi być skomplikowany, ale zwykłe szukanie ekstremum funkcji zadanej znanym wzorem jest dosyć nudne.
Chce zrobić coś, co nie będzie nudne przy pracy, tylko faktycznie będzie można poobserwać jakieś ciekawe rezultaty
EDIT: Pytam sie o coś na czym można fajnie zaprezentować taki algorytm
@redve ale to jak on działa? Ja np mogę mieć funkcję z 5 zmiennymi, prosty wielomian, gdzie znalezienie maksimum jest dość łatwe analitycznie.
Chyba se podasz przykład z jakim ten algorytm sobie ładnie radzi to się coś wymyśli:] a na screenie gowno widać.
@plemnik_w_piwie poradzi sobie i z 50 zmiennymi, ale testowałem na mniejszych danych.
Działa tak, że na wstępie ma ileś osobników gdzie każdy osobnik jest losowym ciągiem 0 i 1 (dla algorytmu to nieistotne co one oznaczają. To my jako programista nadajemy mu znaczenie), oraz funkcje która ocenia jak dobrze sobie radzi dany osobnik (na przykład, mamy ciąg 0 i 1 o długości 32 znaków. Ustalamy że pierwsze 16 bitów odpowiada zapisowi binarnemu zmiennej X, a drugie 16 znaków zmiennej Y. Oceniamy każdego osobnika na podstawie funkcji f(x,y) faworyzując przy rozmnażaniu te osobniki, których wynik jest największy)
Algorytm jedyne co robi, to tak przetasowuje między sobą osobniki, żeby dostać taki ciąg 0 i 1 który na wyjściu da największy wynik, i to wszystko.
W obecnej formie ten algorytm prędzej czy później znajdzie ekstremum funkcji 1, 2, czy 50 zmiennych, a główne ograniczenia to pamięć i czas. Algorytm widzi tylko i wyłącznie string który ma 32 znaki, i ile wynosi funkcja przystosowania która jako argument przyjmie dany string. Tylko tyle go obchodzi
Pytam o jakiś przykład gdzie ten algorytm zrobi coś jakkolwiek widowiskowego, namacalnego. Na screenie widać wynik funkcji f(x,y) dla najlepszego osobnika z populacji na początku, i po 500 generacjach. Na początku najlepszy osobnik miał wynik 0.64, a na końcu 0.98, więc ewidentna poprawa
@plemnik_w_piwie a znalezienie ekstremum dla dowolnego wielomianu nie jest takie proste, bo może go po prostu nie być. Znalezienie go analitycznie to też wyższa szkoła jazdy (już dla 2 zmiennych jest ciekawie, bo dostajemy tylko punkty "podejrzane" o to że jest w nich ekstremum, ale każdy z nich trzeba badać z osobna czy faktycznie nim jest)
@redve no to powiedzmy że mam model statystyczny z eksperymentów z DoE, czyli znalezione istotne parametry, dopasowany model z wysokim R2 itp no i oczywiscie współczynnik regresji dla niego. Jest w nim ok 6 zmiennych, w tym jedna kwadratowa i dwie skorelowane. Znajdzie mi maxa?:>
@plemnik_w_piwie jeżeli ten max istnieje, to prędzej czy później dzięki losowej mutacji go znajdzie. Wnioskując po opisie, zakładam znajdzie go zdecydowanie później niż prędzej ( ͡° ͜ʖ ͡°)
@redve model jest tylko modelem, może nie mieć teoretycznego maxa, bo wybiją np w kosmos w jakimś zakresie. Ale można mu ograniczyć granice w szukaniu? Bo wiesz, to model fizycznego procesu i są w nim ograniczenia, jak np x, odpowiadający za temperaturę, nigdy nie będzie niższy niż -273
@plemnik_w_piwie jedyne co musze w nim ustawic przed uruchomieniem, to sposób interpretacji ciągu 0 i 1, oraz jak ma ocenić każdy ciąg. Bez problemu powinno sie dać zrobic to o czym mówisz
@redve Metoda Newtona łapie się jako algorytm genetyczny? Ewentualnie gradient descent / stochastic gradient descent.
@groman43 nie to miałem na myśli. Zobacz edycje wpisu
Źle mnie rozumiecie. Ja sie pytam o to, na czym można pokazać że algorytm robi coś więcej, a nie o to jaki algorytm wybrać XD
@redve no ja pytam czy jak ci dam funkcję kilku zmiennych, to czy znajdziesz mi maximum, od którego mój księgowy dostanie erekcji? XD
@plemnik_w_piwie do tego potrzebujesz AI które ci wygeneruje obrazek z gołą babą
@redve może coś z https://www.codingame.com/start/
Tam są m.in. gry w których gra się pisząc kod.
@redve znajdowanie drogi w labiryncie
@inskpektor o, moze byc fajne
@redve @inskpektor generalnie problem komiwojażera. I myślę też czy procesy chemiczne by nie dało rady tym modelować.. też ciekawa działka. Np warzenie piwa jest takim procesem, chociaz bardziej biologiczno-chemicznym
Na studiach rozwiązywaliśmy problem n-queens za pomocą genetycznego ale to chyba trochę mało jak na projekt zespołowy.
U mnie na studiach był problem optymalnego użycia elektrowni różnych rodzajów (węglowe, szczytowo-pompowe itd.) na podstawie dobowego wykresu zapotrzebowania i parametrów poszczególnych elektrowni. Zadanie na 6: dokładamy el. wiatrowe losowo generujące prąd.
Zaloguj się aby komentować