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