Skocz do zawartości
Forum Kopalni Wiedzy
Afordancja

Ja vs cyberSzympans

Rekomendowane odpowiedzi

Nie chcąć zaśmiecać tego http://kopalniawiedzy.pl/szympans-czlowiek-gra-teoria-gier-rownowaga-Nasha,20470 wątku.

 

Postanowiłem stworzyć mój, i moje zmagania z cyberSzympansem (którego mam zamar rozwinąć trochę bardziej).

Tak jak pisałem w poprzednim wątku przegrałem z nim 100 do 95, jednak nie poddałem się i kontynuwałem dalej walkę ;)

 

Aktualniy wynik to 200 do 182 dla cyberSzympansa. I pomimo, że znam prosty algorytm, i potrafię go okresowo wykorzystać (mam okresy kiedy szybko nadrabiam straty, nawet go wyprzedzam, to znów mnie dogania i przegania).

 

Aktualny algorytm jest tak prosty, że aż żałosny. Analizuje moje ostanie 20 ruchów i stara się przewidzieć mój następny.

Przetrzymuje statystyki osobno dla dwóch, trzech i "aż" do 20 ruchów wstecz., i to jest jego słabość którą trochę wykorzystuję.

 

Wyjeżdzam na weekend wiec dalszy rozwój cyberSzympansa w następnym tygodniu.

 

[Edit]

Ok, skończyłem walkę do 500, poległem do 394.

  • Pozytyw (+1) 1

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ciekawe. :)

Ale chyba algorytm ustawiony jest na zwycięstwo " za wszelką cenę", a nie na osiągnięcie równowagi Nasha. Cyber nie współpracuje tylko egoistycznie myśli o sobie. ;)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Tak, zdecydowanie na zwycięstwo, no bo skąd mogę wiedzieć, że taki szympans też jest nastawiony na równowagę nasha, a nie po prostu chce jak najwięcej jabłek ;) . Z artykułu źródłowego wynika, że szympansy są tak zaj..ste w konkurowaniu, że uzyskują równoage nasha. Obydwaj jednakowo bardzo chcą jabłek.

 

Z drugiej strony hm.. można też ustawić tak algorytm aby starał się utrzymać równowagę nasha, tylko wtedy cięzo stwierdzić, czy to mu się udaje, czy gra losowo i dlatego ją osiągamy, przemyśle to. No i podkładanie się w celu nie wygrywania nie jest dla mnie cechą strategów ;)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Afordancja, mógłbyś udostępnić na forum swój kod (ewentualnie PV)?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

No to prawdobodobnie, jest duża różnica w zdolnościach koognitywnych, pomiędzy cyberem, a Afordancją. ;)

Stworzyłeś mądrzejszego od siebie. :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

@Astroboy Pewnie, że bym mógł i tak zrobię jak wrócę teraz się już pakuję. NIe spodziewaj się wysokiej jakości kodu ;) pisałem to na szybko na "kolanie".

 

PS.

Zonę też bydlak pokonał :P

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ok, poczekam (nie mam absolutnie zamiaru oceniać kodu; nie o to mi chodziło. Jako młody człowiek byłem zakochany w basicu. :D Oczywiście później "wyrosłem". Poślij na PV jak wrócisz). Ale za pokonanie żony to bym bydlaka jakimś DES'em zaszyfrował bijąc jako hasło na oślep w klawiaturę... ;)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jako, że nie wiem jak przesłać inaczej kod, tak więc załączam cały.

 

Żeby nie biegać po plikach najważniejsze klasy to.

a) Srodowisko

Tam najważniejsza metoda to Walka

To jest wejscie do całości.

 

B) StrategiaSzympansa

Miała to być klasa matka dla wielu strategii

 

Jednak używa tylko klasy

c) Strategia_LR

Która na podstawie statystyk ostatnich 2,3,4..20 zapamiętanych sytuacji losuje wg. prawdopodobieństw następny ruch.

I jak na początku chciałem "starategią" Boltzmana, tak stwierdziłem, że prościej losować 17 razy a mam podobny efekt.

 

 

A tak klasa z kolei używa klasy

d) NextRuch

Która właśnie zapamiętuje statystyki L P

 

Reszta to nic.(interface itp.)

Całość jest zagmatwana jak wspomniałem bo

- pisałem to szybko

- miało w założeniach implementować różne strategie, ale została jedna

 

Może jeszcze dopiszę kolejne, albo idę krok na przód i robię to samo dla kamień, papier, nożyce ;)

cyberszympans.zip

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

No, niestety nie mogę dograć u siebie biblioteki javafx i mi to nie rusza, ale myślę, że może za bardzo tu kombinujemy. Sugerujemy się tytułem, a prawdopodobnie małpy wcale przy tym nie myślały, ani nie "odgadywały" strategii przeciwnika.

Jest bardzo prosty, małpi algorytm, który daje równowagę Nasha.

 

1. Wybieram początkowo losowy przycisk do naciśnięcia.

2. Naciskam przycisk

3. a) Jeśli wygrałem -> idź do 2 (ponownie naciskam ten sam).

b ) Jeśli przegrałem -> idź do 4 (zmieniam przycisk).

4. Zmień wybór przycisku.

5. Idź do 2.

 

Algorytm jest prymitywny, ale chyba najbardziej oczekiwany u "osobników" kierujących się tylko prostymi instynktami (bez planowania).

Jeśli naciśnięcie przycisku A dawało mi nagrodę to go przyciskam, jeśli nie, to przyciskam drugi, itd.

 

W ten sposób wygrywają naprzemiennie i mamy równowagę Nasha (sprawdzone doświadczalnie).

Chętnie bym go sprawdził z cyberszympansem, ale niestety, nie skompiluje mi się.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

@radar

"Problemem" jest to, że naukowcy przekonują, że szympansy były lepsze od ludzi bo szybciej osiągnęły równowagę dlatego, że niby szybciej rozpracowywały strategię "przeciwnika" i zawdzięczają to m.in. lepszej pamięci i szybszemu rozpoznawaniu wzorców. Osobiście podejrzewam, że człowiek by wygrał z szympansem.

 

Do kompilacji nie musisz ściągać tej biblioteki, wystarczy Java 7.

 

Dziś wieczorem sprawdzę czy Twoja strategia zadziała, w tej wersji myślę, że może i tak, ale w wersji drugiej którą jeszcze mam zamiar dodać, która zapamiętuje, czy wygrała czy nie, obstawiam tak na 78%, że przegrasz ;)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

To, do czego przekonują wynika z ich wniosków na podstawie obserwacji, a ponieważ założeniem było sprawdzenie jak sobie poradzą szympansy to autosugestia ma tu spore znaczenie.

Różnica pomiędzy człowiekiem, a szympansem polega na tym, że człowiek zdaje sobie mimo wszystko sprawę z tego, że rywalizuje z innym człowiekiem/maszyną. W ten sposób próbuje zmaksymalizować swoje zyski (względem przeciwnika). To sprawia, że kombinuje, a to z kolei, że sprytniejszy wygrywa, słabszy przegrywa i równowagi brak. Małpa być może nauczyła się, że wystarczy 2x nacisnąć przycisk i dostaje nagrodę (bez presji "na zwycięstwo" żeby dostawać więcej, a w szczególności więcej niż przeciwnik).

Warto zauważyć, że przy losowym (małpim?) naciskaniu równowaga jest statystycznie najbardziej prawdopodobna.

 

Javę mam, nawet zainstalowałem jeszcze raz jdk7u6 i dalej nic, a nie mam czasu teraz z tym walczyć.

 

Jest bardzo prawdopodobne, że nawet najprostszy "myślący" algorytm wygra z tym losowym (i wygrałby z małpą), j/w.

 

EDIT: Wydaje mi się, że naukowcy mogli tu zrobić błąd zakładając a priori, że małpy mają jakąkolwiek strategię i w ten sposób łatwo można pomylić losowość od "strategii na równowagę". Efekt ten sam, a wnioski zgoła inne.

 

Zaimplementuj jeszcze strategię "pełna losowość" i zobacz wtedy :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

@Radar

Muszę Cię "zmartwić" Twoja strategia w przypadku cyberszympansa jest nieskuteczna ;)

Owszem na początku nie było tak źle przegrana z cyberszympansem 64 do 100, było to na skutek tego, że szympans wybiera losowo wg. prawdopodobieństw (jednak wraz ze wzrostem przewagi jakiegoś wzorca, zaczyna wybierać coraz mniej losowo).

do 200 było jeszcze ok, (przegrana do 133) Jednak chyba coś w okolicach 300, Twój algorytm wpadł w oscylacje i trzeba było grać naprzemiennie, (ciągła przegrana), co cyberszympans wyłapał jako dobry wzorzec i tak trwało, trwało i trwało i przegrana coś 180 do 500 (i pewnie wzwyż)

 

[edit]

Czyli aby nie przegrać z obecną wersją cyberszympansa, strategia(oprócz losowej, ale czy człowiek potrafi losowo generować ruchy?) musi mieć cechę polegającą na tym, że przynajmniej w 20 ruchów nie wpadnie w żadne oscylacje czy po prostu nie ma żadnych przeważających wzorców.

Z kolei aby wygrać z cyberszympansem, trzeba samemu robić takie same statystyki jak on, i wtedy możemy przewidzieć z dużym prawdopodobieństwem jego posunięcie i go uprzedzić.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ok, czas na przedostatnie podsumowanie moich "zmagań" z cyberszympansem.

 

Przerobiłem trochę kod, tak, że można wybierać przeciwnika dla obecnego cyberszympansa (na końcu jeszcze dopiszę, aby jego też było można podmieniać, ale teraz trzeba powoli zacząć zbierać się spać ;) ). Teraz może walczyć, z człowiekiem, sam z sobą, bądź też z szympansem losowym.

 

Wyniki są jakich można się spodziewać. (walczyli 5000 rozgrywek).

1. cyberszympans_LR vs cyberszympans_LR pewnie równowaga Nasha, bo ciągle osiągają "na przemiennie" wyniki w okolicach 2500 ileś.

2. cyberszympans_LR vs cyberszympans_RND , dokładnie jak punkt 1, nawet przy 4 przebiegu osiągnęli dokładnie po 2500 (przesadny przypadek, później próbowałem jeszcze 30 razy to udało mi się tylko 2501 do 2499)

3. cyberszympans vs Ja który nie patrzę na wynik tylko próbuję wygenerować losowe ciągi, ale mi to poszło ekstremalnie kiepsko, bo przegrałem 337 do 663. (jeszcze jutro namówię żonę :P)

 

Innymi słowy, na razie cyberszympans jest niepokonany (no bo remisy czy blisko remisów się nie liczą).

 

Jutro jeszcze jak będę miał czas, to (jak się uda :P) napiszę pogromcę cyberszympansa_LR, i (znów chyba) takiego którego będzie jeszcze trudniej pokonać.

 

Czy coś można z tego wynieść po za stratą czasu? :P

A no, można robić test jak bardzo dany ciąg bitów jest losowy, jeżeli będzie losowy to powinien być blisko remisu z cyberszympansem_LR, w przeciwnym wypadku, cyberszympans_LR powinien go pokonać.

 

[EDIT]

No i zrobiłem anty LR (ALR), który "rozwala" cyberszympansa z palcem w ... wynik oscyluje w okolicach 3100 do 1900. "To za żonę gnido" :P.

Oczywiście jest to mega oszustwo, bo ALR analizuje tylko i wyłącznie swoje ruchy w taki sam sposób jak analizuje je LR, i robi dokładnie odwrotnie. Nie próbowałem jeszcze grać samemu przeciw ALR, ale powinien być (chyba)prosty do rozwalenia, albo przynajmniej do remisu.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...