2009-03-29 12 views
8

Znalazłem to very cool C++ sample, dosłownie "Hello World!" algorytmów genetycznych.Co to jest "Hello World!" dobrych algorytmów genetycznych?

Tak więc postanowiłem ponownie zakodować całą rzecz w języku C#, a wynikiem jest this.

Teraz zadaję sobie pytanie: Czy istnieje jakieś praktyczne zastosowanie na linii generowania ciągu docelowego zaczynającego się od populacji losowych ciągów znaków?

EDIT: mój kumpel na twitterze tylko wpisów że „jest przydatna dla transkrypcji typu rzeczy, takich jak tłumaczeniu nie muszą być Monkey”.. Chciałbym mieć jakąś wskazówkę.

+1

sheesh, muszę użyć GIT tylko po to, aby sprawdzić twój projekt? Do czego jesteśmy zmuszeni niskobudżetowych użytkowników? –

+2

nie może sprawić, by wszyscy byli zadowoleni (GIT jest całkiem fajny BTW) :) – JohnIdol

Odpowiedz

13

Czy istnieje praktyczne zastosowanie wzdłuż generowania ciągu docelowego zaczynającego się od populacji losowych ciągów znaków?

Pewnie. Wyobrazić sobie scenariusz, w którym wiesz, jak ocenić przydatność danego łańcucha, w którym wybory są dyskretne i ogranicza w pewien sposób:

  • Picking nazwy wymówienia („Xhjkxc” ma niską sprawność; „Artekzo” ma wysoki fitness)
  • Próbując serię szachy porusza
  • odgadywanie połączenie do bezpiecznego, zakładając, że można powiedzieć, jak blisko jest do odblokowania każdej zastawki
  • Zbieranie numerów telefonów, które oceniają słów (na przykład „843 -2378 "ma wysoką sprawność fizyczną, ponieważ zaklęcie" NAJLEPSZE ")
+0

Nie jestem pewien, czy dostaję "wymawiany" przykład – JohnIdol

+0

Powiedz, że chcesz znaleźć możliwą do wymówienia nazwę, zaczynając od kilku losowych ciągów znaków, i masz sposób na ocenę jak wymawia się każde imię. Czy widzisz, w jaki sposób losowe permutowanie łańcuchów, aż dojdziesz do czegoś o wysokiej "wymowalności" (fitness), byłoby zrobione z GA? –

+0

Tak, rozumiem - wszystko sprowadza się do poznania właściwej funkcji fitness. Więc w przypadku wymowy, musi to być spokrewnione ze spółgłoskami i wokalem parowania lub podobne. – JohnIdol

2

Nie. Za każdym razem, gdy uruchamiasz GA, dajesz mu ostateczną odpowiedź. To jest świetne, jeśli chodzi o pokazywanie działania GA i pokazanie, jak potężne może być, ale nie ma żadnego celu poza tym.

+2

Nie zgadzam się z tym w ogóle; nie musisz wiedzieć, jaka "odpowiedź" ma prowadzić GA. W rzeczywistości czasami nie ma odpowiedzi - jak w moim przykładzie "wybierz możliwą do wymówienia". GA są szczególnie dobre w tego rodzaju sprawach. –

+0

Musisz wiedzieć, jak dobra jest konkretna odpowiedź (do czego służy funkcja fitness). Ale poza tym to jest sos. –

+0

Tak, nie zawsze musisz znać odpowiedź, aby uruchomić GA. Jednak robisz to w tej konkretnej implementacji. Jego pytanie nie dotyczy ogólnie GA, chodzi o tę konkretną implementację. –

0

Użyłem GA w 2 prawdziwych problemach badawczych.

Jednym z nich był problem optymalizacji mocy (zmaksymalizować liczbę urządzeń włączona, spełniająca dostępny ograniczenie mocy i serwis gwarancyjny dla każdego urządzenia)

Inny był dla optymalizacji sieci radiowej, maksymalizując zasięg podany stały budżet sprzęt

1

Można napisać EA, który pisze kod w dynamicznym języku, takim jak IronPython, w celu utworzenia kodu, który a) jest wykonywany bez awarii i b) analizuje giełdę i inteligentnie kupuje i sprzedaje akcje.

To bardzo uproszczone podejście do tego, co byłoby konieczne, ale jest to możliwe. Potrzebowałbyś hosta, który zapewnia wiele metod na kod IronPythona (wskaźniki techniczne itp.) Oraz bazę danych kleszczy.

Rozsądnie byłoby nie tylko wygenerować stary losowy kod, aby nie sformatować własnego dysku twardego. Potrzebujesz piaskownicy i musisz ograniczyć przestrzenie nazw, które są dostępne, i musisz podać limit czasu, aby uniknąć nieskończonych pętli. Możesz także dostarczyć symantyczne wskazówki, które pozwolą mu wybrać odpowiednie zatwierdzone słowa kluczowe, zamiast tylko ciągnąć losowo litery - to znacznie przyspieszy ewolucję.

Tak więc byłem zaangażowany w projekt, który zrobił wszystko, ale nie EA. Mieliśmy antenę satelitarną, która otrzymywała od NASDAQ "tickety giełdowe w czasie rzeczywistym", usługę handlu z interfejsem API oraz prymitywny proces decyzyjny "mózg", który podejmował decyzje w momencie pojawienia się tyknięć.

Niestety jeden z partnerzy odwrócili się, zrezygnowali z pracy, rozwidli projekt (dostali własne danie, itp.) i zaczęli handlować z logiką, która nie była gotowa. Stracił sporo pieniędzy. Okazuje się, że dla niektórych osób ten typ projektu jest tylko o krok od wspólnego hazardu. Ale zresztą projekt po tym zgasł. Ewoluująca część logiczna jest jednak brakującym ogniwem. I wiem, że są ludzie, którzy robią tego typu rzeczy.

+0

dziękuję za wkład w ten - zdecydowanie ciekawy i bardzo potężny jak na możliwą aplikację, także miła anegdota :) - jakieś ciekawe powiązane zasoby? – JohnIdol

+0

Oto coś ciekawego: http://stackoverflow.com/questions/131165/evolutionary-algorithms-optimal-repopulation-breakdowns –

+0

To tylko niektóre z pomocy EA. Większość artykułów na temat EA jest naprawdę pretensjonalna (czytaj: akademicka), biorąc pod uwagę, jak łatwo jest zacząć z nimi. –

0

GA ma jedną główną wadę, zwykle działa z prędkością genetyczną, więc używanie go w poważnych projektach zależnych od czasu jest dość ryzykowne.