Samouczace sie gry...
Widzisz wersję archiwalną tematu "Samouczace sie gry..." z forum pl.comp.programming
pawel - 22 Gru 2005, 08:20
Mam taki problem:
takcie gry z czlowiekiem... Czyli na poczatku zaczynamy od stanu gdzie program nie wie nic.. Algorytm ma polegac na tym ze sprawdzamy mozliwosci ruchow przy kazdym podejsciu komputera... Po wygenerowaniu tych ruchow komputer losuje sobie ruch no i go wykonuje... Tak robi az do czasu gdy jest ostatni ruch.. Po ost ruchu jesli przegra ma ze zbioru tak jakby wygenerowanych ruchow usunac ten ruch ktory doprowadzil go do przegranej... A nastepnie w kolejnych grach, gdy sytuacja sie powtorzy to juz nie wykonuje tego ruchu bo nie ma go w puli.. No mam nadzieje ze wystarczajaco jasno to wytlumaczylem... No i moje pytanie: gdzie moge znalezc podobne rozwiazania tego typu problemow.. bo nie bardzo wiem jak sie za to zabrac i mam wiele watpliwosci ( a w programowaniu jestem poczatkujacy... )
Z gry dzieki za odp.. Aha pisze to w pascalu... chociaz to i tak zadna roznica...
Pozdrawiam
badzio - 22 Gru 2005, 08:40
Patrze, patrze a tu pawel porozsypywal nastepujace haczki:
No i moje pytanie: gdzie moge znalezc podobne rozwiazania tego typu problemow.. bo nie bardzo wiem jak sie za to zabrac i mam wiele watpliwosci ( a w programowaniu jestem poczatkujacy... )
No jesli chodzi o samouczenie sie programu to proponuje poszukac informacji o sztucznej inteligencji i sieciach neuronowych
Wiktor Zychla - 22 Gru 2005, 10:12
Mam taki problem:
takcie gry z czlowiekiem... Czyli na poczatku zaczynamy od stanu gdzie program nie wie nic.. Algorytm ma polegac na tym ze sprawdzamy mozliwosci ruchow przy kazdym podejsciu komputera... Po wygenerowaniu tych ruchow komputer losuje sobie ruch no i go wykonuje... Tak robi az do czasu gdy jest ostatni ruch.. Po ost ruchu jesli przegra ma ze zbioru tak jakby wygenerowanych ruchow usunac ten ruch ktory doprowadzil go do przegranej...
skad wiadomo, który ruch doprowadzil do przegranej? mógl to byc którykolwiek z nich, pierwszy, drugi, ... ostatni.
usuniecie wszystkich takich ruchów z puli potencjalnych ruchów nie ma sensu, bo po kilku partiach program przegrawszy kilka partii nie móglby nawet zaczac gry - wszystkie ruchy poczatkowe usunalby jeden za drugim w kolejnych przegrywanych partiach.
usuniecie tylko jednego tez nie ma sensu, bo jesli to byl jedyny mozliwy ruch w danej sytuacji, to w kolejnej identycznej partii program w ogóle odmówilby wykonania jakiegokolwiek ruchu.
sadze, ze w grach z duza liczba mozliwych pozycji takie podejscie ma niewielki sens jeszcze z innego powodu: dla 10^40 mozliwych pozycji warcabowych, zapamietanie nawet kilkudziesieciu tysiecy "zlych" ruchów niewiele pomoze biorac pod uwage liczbe wszystkich mozliwosci, z drugiej strony wymaga rozegrania tych kilkudziesieciu tysiecy partii.
"samouczenie sie" rozwiazalbym troche inaczej: uzywajac standardowego min-max (czy alpha-beta) po kilku partiach próbuje losowo modyfikowac parametry funkcji oceniajacej. jesli ta modyfikacja jest "pozytywna", tzn. program czesciej wygrywa, to ja akceptuje, jesli nie - odrzucam. takie podejscie nadawaloby sie do przeksztalcenia w algorytm genetyczny i "hodowania" coraz lepiej grajacych osobników.
Wiktor Zychla
pawel - 22 Gru 2005, 10:36
usuniecie wszystkich takich ruchów z puli potencjalnych ruchów nie ma sensu, bo po kilku partiach program przegrawszy kilka partii nie móglby nawet zaczac gry - wszystkie ruchy poczatkowe usunalby jeden za drugim w kolejnych przegrywanych partiach.
Nie wiem byc moze ja cos nie rozumiem w tym podejsciu... Chodzi o to
a ze ma to byc proste rozwiazanie to ma dzialac w sposob jaki przedstawilem...
ale nie ja to wymyslilem albo po prostu tego nie rozumiem...
usuniecie tylko jednego tez nie ma sensu, bo jesli to byl jedyny mozliwy ruch w danej sytuacji, to w kolejnej identycznej partii program w ogóle odmówilby wykonania jakiegokolwiek ruchu.
No wiec moze napisze to tak jak wyjasniono mi to...na przykladzie gry w kulki czy cos takiego ... Wiec mamy najpierw 7 kulek i komputer zaczyna pierwszy (7) -------------------- Komp. | mozemy wziac od 1-4 kulek (5) komp. wylosowal ze bierze 2 kulki ------------------------- Czlow. | my bierzemy np 3 (2)
Komp. bierze teraz 2 i przegrywa wiec jesli kiedys zajdzie taka sytuacja ze zostana 2 kulki to ma nie wziac dwoch tylko 1 aby nie przegrac... No wiec teraz wykasowuje ruch gdzie bierze 2 kulki Jesli wiec przejdziemy cale drzewo w takich samych ruchach to komputer nie przegra... No i wlasnie tu moment gdzie nie jestem piewien, bo wychodzi na to ze trzeba tak jakby zapisywac cala sciezke a do warcab to troche trudne rozwiazanie bynajmniej duzo mozliwosc.. no wiec nie wiem za bardzo...
"samouczenie sie" rozwiazalbym troche inaczej: uzywajac standardowego min-max (czy alpha-beta) po kilku partiach próbuje losowo modyfikowac
No myslalem o mini-maxie...ale nie wiem czy po 1. dam rade to zrobic a po 2. ten algorytm co opisuje go powyzej ma byc ponoc podobny do mini-maxa ale prostszy.. Ale sam juz nie wiem...
W kazdym razie dziekuje za odzew aha i jeszcze gdyby ktos mial jakies linki do mini-maxa ktore doglebnie to wyjasniaja bylbym wdzieczny.. szukalem ich i mam wiele ale moze ktos zna cos ciekawego...
Z gory dzieki...
Grzegorz Głowaty - 22 Gru 2005, 14:27
sadze, ze w grach z duza liczba mozliwych pozycji takie podejscie ma niewielki sens jeszcze z innego powodu: dla 10^40 mozliwych pozycji warcabowych, zapamietanie nawet kilkudziesieciu tysiecy "zlych" ruchów niewiele pomoze biorac pod uwage liczbe wszystkich mozliwosci, z drugiej strony wymaga rozegrania tych kilkudziesieciu tysiecy partii.
To co opisal poprzednik to bardzo naiwna proba wykonania uczenia ze wzmocnieniem. Co nie zmienia faktu, iz programy grajace z uzyciem algorytmow TD istnieja i graja niekiedy na poziomie arcymistrzowskim (slynny TD-gammon).
Oczywiscie algorytmy uczenia ze wzmocnieniem sa dalece bardziej skomplikowane. Jednak duza ilosc stanow nie jest tu przeszkoda, TD-gammon przechowywal funkcje jakosci w aproksymatorze (konkretnie sieci neuronowej).
pozdrawiam, greg
pawel - 22 Gru 2005, 15:27
To co opisal poprzednik to bardzo naiwna proba wykonania uczenia ze wzmocnieniem.
No wlasnie wg mnie to ma byc cos takiego tylko moglbys mnie naprowadzic gdzie tego szukac, jak to mniej wiecej wyglada w implementacji, chce po prostu to dobrze zrozumiec bo bez tego nie ma szans na zadne ruszenie problemu...
Z gory dzieki za wszeka pomoc... Pozdrawiam
Grzegorz Głowaty - 22 Gru 2005, 15:37
| To co opisal poprzednik to bardzo naiwna proba wykonania uczenia ze | wzmocnieniem.
No wlasnie wg mnie to ma byc cos takiego tylko moglbys mnie naprowadzic gdzie tego szukac, jak to mniej wiecej wyglada w implementacji, chce po prostu to dobrze zrozumiec bo bez tego nie ma szans na zadne ruszenie problemu...
http://www.cs.ualberta.ca/%7Esutton/book/ebook/the-book.html Nie sadze, aby to bylo tematem twojego zaliczenia. Jesli jednak kiedys chcialbys zajac sie tematem doglebnie, to bedzie dobre miejsce, aby zaczac.
pozdrawiam, greg
Piotr Dembiński - 22 Gru 2005, 16:32
[...]
TD-gammon przechowywal funkcje jakosci w aproksymatorze (konkretnie sieci neuronowej).
...dzięki czemu do tej pory nikt nie wie, w jaki sposób ten program wszystkich ogrywa ;)
Grzegorz Głowaty - 22 Gru 2005, 16:33
[...]
| TD-gammon przechowywal funkcje jakosci w aproksymatorze | (konkretnie sieci neuronowej).
...dzięki czemu do tej pory nikt nie wie, w jaki sposób ten program wszystkich ogrywa ;)
racja - jesli chodzi o to jak wyglada f-kcja jakosci - jest zaszyta w wagach neuronow nieprawda natomiast jesli chodzi o metode uzyskania tej fukcji - tu jest wszystko jasne, polecam ksiazke z odpowiedzi powyzej
greg
Piotr Dembiński - 22 Gru 2005, 16:59
| [...]
| TD-gammon przechowywal funkcje jakosci w aproksymatorze | (konkretnie sieci neuronowej).
| ...dzięki czemu do tej pory nikt nie wie, w jaki sposób ten program | wszystkich ogrywa ;)
racja - jesli chodzi o to jak wyglada f-kcja jakosci - jest zaszyta w wagach neuronow nieprawda natomiast jesli chodzi o metode uzyskania tej fukcji - tu jest wszystko jasne,
Chodziło o to pierwsze.
pawel - 22 Gru 2005, 19:13
Nie sadze, aby to bylo tematem twojego zaliczenia. Jesli jednak kiedys chcialbys zajac sie tematem doglebnie, to bedzie dobre miejsce, aby zaczac.
cos w tym stylu tylko bardzo bardzo proste ( choc dla mnie proste to nie jest.. ; ) poki co ;] ) w kazdym razie dzieki cos poczytam popatrze i moze jakos rozkminie..
Pozdrawiam..
Maciej Pilichowski - 23 Gru 2005, 02:11
takcie gry z czlowiekiem...
NTG -pl.sci.ai
poszukiwany algorytm gry w "kolko i krzyzk"
Jakie narzędzia do stworzenia silnika gry?
Algorytm gry "kolko i krzyzyk"
poziom trudnosci gry
jak ustawic zespol w fm07
stm raijas 30
hasla;windows;2000
meble kredens kuchenny cena antyki
tapetki do B6ciB1gania
jakie dzwieki wydaja zwierzeta
ceny kampingow europa
szimirk13 wait i m sorry demo
214 si 1 4 16v 98 r rozrusznik
Katalog wypowiedzi z for internetowych ^^ Strona Główna
|
|