@#!$%@?: kilka lat temu jako student dorwałem prace przy sprzątaniu świeżo wyhodowanego hotelu ze SPA w Czechach. Kierownik bardzo chwalił się czujką ruchu w kiblu i że to takie inteligentne. Wszedłem z nim w polemikę na ten temat i poprosiłem żeby wyobraził sobie sytuację, gdzie ktoś sra dłużej jak minutę, gaśnie mu światło i musi zacząć tańczyć na kiblu... Rozwiązaniem jest np. zastosowanie blokady wyłączenia światła poprzez mikrokontroler po zamknięciu drzwi od
  • Odpowiedz
Chcę napisać AI do gry planszowej typu Azul, Splendor wykorzystując sieci neuronowe. Z tego co wyczytałem to najlepiej użyć do tego Q-learning. To ma być self-learning.

Problem jest taki, że nie znalazłem libki do tego - jest ten Tensorflow.NET ale on tego nie obsługuje, ML.NET tak samo albo o czymś nie wiem (nie robiłem nic wcześniej z NN).

A może jakieś algorytmy genetyczne? Weźcie coś doradźcie, żeby się nie narobić, a zrobić.
@harakiri888: ile masz na to czasu? Generalnie używanie RLa do grania w gry planszowe to nie jest coś co można ogarnąć w godzinę i raczej potrzeba trochę intuicji żeby wiedzieć co się tam dzieje i mieć na to jakiś wpływ, może wybierz jakiś łatwiejszy sposób np jakiś minmax + może Monte Carlo tree search
  • Odpowiedz
@zibizz1: min-max nie będzie zbyt "trywialny", mimo wszystko jest parę zasad do ogarnięcia i się może to drzewko zbyt duże zrobić.

@ZdeformowanyKreciRyj: nie mam ram czasowych na to, side project, for fun. MCTS to chyba też łatwe nie jest.

Rozważę tego minmaxa, poczytam o nim jutro czy da radę go zaaplikować do tego problemu.

@mrocznapszczola: zerknę.
  • Odpowiedz
No, to ten.

tl:dr


Tutaj pisałem o tym, że zaczynam przygodę z algorytmem genetycznym:
http://www.wykop.pl/wpis/15765773/mirki-pisal-ktos-ai-sztucznainteligencja-czy-co-ta/
Trochę poczytałem, trochę podziabałem. Najpierw żebym ogarnął co z czym i dlaczego jak działa napisałem algorytm, którego zadaniem było stworzenie binarnego ciągu znaków który najbardziej odpowiadałby moim kryteriom. Akurat chciałem, żeby naprzemiennie występowały 1 i 0. Fajna sprawa, szybko działało no bo nie jest to jakieś super skomplikowane i można cieszyć oko.
Pomocna przydała się tutaj publikacja,
Wyrewolwerowanyrewolwer - No, to ten.

tl:dr

SPOILER

Tutaj pisałem o tym, że ...
zwykłym algorytmem z funkcją celu?


@rotflolmaomgeez: Nie bardzo rozumiem co masz na myśli mówiąc zwykły algorytm z funkcją celu. Chodzi o algorytm wyszukiwania ścieżki/drogi do punktu?
Jeżeli tak to gdybym dołączył taki do rozgrywki - efekty byłyby jeszcze lepsze. Teraz bot gra w taki sposób, że ustawia sobie klocek w osi x, odpowiednio obraca i opuszcza. Nie dokonuje poprawek w trakcie lotu klocka. Gdyby wyszukiwał drogę do najlepszego punktu/położenia dla klocka
  • Odpowiedz
Hejżehej. Znajdzie się jakiś nocny marek co to ma chwilę żeby rzucić na mój kod?
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
@Wyrewolwerowanyrewolwer: Nie zajmowałem się za bardzo algorytmami genetycznymi, więc na szybko opieram się na wiki, co może nie być idealnym źródłem, ale mogę napisać parę uwag.

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
  • Odpowiedz
@Wyrewolwerowanyrewolwer: po pierwsze, błąd za który karają biciem mydłem w zwiniętym ręczniku:
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
  • Odpowiedz
Mirki powoli zaczynam ogarniać to całe #ai i #algorytmygenetyczne (samotniku obserwujący to, ujawnij się) i z każdym zdaniem coraz bardziej mi się to podoba. Ogarniam całą tę mechanikę jak działać na pojedynczych chromosomach, ale co jeżeli w genotypie mam więcej niż 1? Powiedzmy - 4 chromosomy.
Jak dochodzi do mutacji i krzyżowań to udział w działaniu biorą tylko odpowiadające sobie chromosomy?


Jeszcze gdyby ktoś miał jakieś ciekawe źródło które dość prosto i
Mamy tu jakiegoś szpeca od sztucznej inteligencji? Tworzę sobie algorytm genetyczny i po iluś tam epokach praktycznie wszystkie osobniki mają zbliżony genom ;_; ktoś wie w czym może być rzecz? Nawet duża liczba mutacji nie pomaga, po parunastu epokach wszystkie osobniki wyglądają praktycznie tak samo, nie wiem dlaczego tak się dzieje :S #sztucznainteligencja #algorytmygenetyczne