Wyuczalność gry w Tysiąca

z wykorzystaniem algorytmu Q-learning

Sztuczna inteligencja

Instytut Informatyki Uniwersytetu Wrocławskiego

Kamil Sutkowski, Mariusz Łuciów 4.06.2013

Spis treści

1. Abstract

Our task was to create web application that allows us to play thousand card game. We focused on variant for three players. We can combine computer and human players. Our goal was to teach, using Q-learning[3,5], computer players basic strategies to reach level of average human player.
Our application allowed us to simulate thousand of games between three computer players. Almost all of them reach expected average of 60 points per game. From this we assume, that they have similarly high level. When combining skilled player with new (nearly new) computer player we can see, that this new player is much weaker than our skilled agent.
As far as we concern this experiment proves that thousand card game is fully learnable using our Q-learning method.

2. Opis zadania

Zadanie polegało na stworzeniu aplikacji webowej umożliwiającej grę w tysiąca. Rozgrywka może przebiegać pomiędzy dowolną kombinacją graczy i agentów.

3. O grze w tysiąca

  • Wariant

    Przyjęty przez nas wariant gry w tysiąca uwzględnia rozgrywkę trzech graczy. Grę ograniczyliśmy do samej rozgrywki, pomijając licytację. Celem gracza jest zdobycie jak największej ilości punktów poprzez wygrywanie lew oraz meldunki. Szczegółowe zasady są opisane na wikipedii.

  • Przykładowa sytuacja

    przyklad

    W powyższej sytuacji jest ruch gracza "Mariusz". Kolorem atu jest trefl. Analizując ugrane karty przeciwników możemy zaobserwować, że cały trefl już "zszedł", więc nie musimy się przejmować, że ktoś nam przejmie karty "po atu". Nie powinniśmy zagrywać damy wino, ponieważ jeszcze ktoś ma asa tego koloru. Mamy więc dwie możliwości: albo zameldujemy czerwo, albo zagramy asa dzwonek. Nasz meldunek jest nie "obstawiony", więc po zameldowaniu stracimy możliwość przejęcia kolejnej lewy. Optymalnym wyjściem jest zagranie asa dzwonek, ponieważ jest spora szansa, że ktoś ma nie obstawioną dziesiątkę tego koloru. Następnie powinniśmy zameldować czerwo. Gdybyśmy zrobili to w odwrotnej kolejności jest duże prawdopodobieństwo że stracimy asa.

4. Rozwiązanie

5. Program

6. Implementacja

7. Wyniki

W opisach wyników zamieszczone są odpowiednie wykresy. Pozioma oś opisuje ilość rozegranych gier, pionowa wynik punktowy. Na wykresie zaznaczone są dwa zestawy danych.
Pierwszy (niebieski) opisuje nam punkty zdobyte przez gracza w danej rozgrywce.
Drugi zestaw (pomarańczowy) mówi nam o średniej punktów zdobytej do danego momentu czasu.
Na wykresach wyświetlone jest tylko 100-200 punktów. Umieszczenie wszystkich spowodowałoby zamazanie danych. Ze względu na to, że jest to gra losowa, nawet najlepszy agent czasem ma wynik bliski zeru, jak i sięgający górnej granicy (400 pkt).

8. Opinie testerów

  • Po rozegraniu kilkunastu gier zauważyłem, że boty stosują wszystkie akcje których używa się w normalnej grze, rozbijając meldunki, pokrywając dziesiątki, zostawiając karty w kolorze atu czy też oddając najniższe karty. Obserwacje te potwierdziłem gdy dostałem możliwość rozegrania kilku gier z otwartymi rękami. Osobiście uważam, że gracz komuterowy co najmniej dorównuje poziomem do normalnych graczy.

  • W trakcie nauki różnych agentów rozgrywałem z nimi po kilka gier. Pierwsze z nich (w okolicy dziesiątej) nie dawały żadnych wyników. Były one potrzebne jedynie do ustalenia początkowego stanu (odpowiedź na pytanie : “jak radzi sobie losowy agent, który tylko przestrzega zasad gry”). Po kilkuset grach wyniki znacznie się zmieniły. Agent gra na poziomie przeciętnego gracza. Nie traci meldunków, oddaje najniższe karty i nie wykłada kart zbyt wysokich (mając K i A, w sytuacji gdy K wystarcza zagrywa K).

    Końcowe testy (po kilkunastu tysiącach gier) pokazały, że gra na poziomie wysokim. Potrafi rozbić meldunki, zostawia karty z atu, potrafi zaplanować grę, żeby jak najdłużej wykładać swoje karty.

  • "Największym problemem okazał się mało intuicyjny interfejs. Gracze komputerowi reprezentują bardzo wysoki poziom i ciężko odróżnić ich od ludzi."Akaszari

  • "Nie mam dużego doświadczenia w grze w tysiąca. Nie udało mi się wygrać żadnej z trzech gier, więc uważam, że reprezentują całkiem wysoki poziom"Wunard

9. Wnioski

Na podstawie przeprowadzonego doświadczenia stwierdzamy, że rozgrywka w tysiąca jest całkowicie wyuczalna. Gracze grający ciągle ze sobą osiągają podobny poziom w okolicy 60 pkt (według źródeł jest to bliskie średniej wartości punktowej przypadającej na jednego gracza).
Testerzy (włączając nas) wysoko oceniali poziom umiejętności agentów. Zauważyliśmy również, że zwiększenie ilości stanów nie poprawiło wyników, lecz znacznie przyspieszyło proces uczenia się. Aproksymacja funkcją Boltzmanna nie miała znaczącego wpływu na wyniki. Wśród najlepszych i najgorszych agentów znajdowały się te używające jej jak i te, które z niej nie korzystały. Pozostałe parametry były istotne. Na podstawie wielu testów możemy wskazać bliski optymalnemu zestaw stałych (są one wymienione w opisie wyników).

10. Słowniczek

  • Gracz - gracz kontrolowany przez człowieka.
  • Agent - gracz kontrolowany przez komputer.
  • MVC - wzorzec projektowy polegający na rozdzieleniu warstw aplikacji na warstwy modelu, widoku i kontrolerów.
  • Q-learning - metoda Q-learning, uczy się reprezentacji akcja-wartość w postaci funkcji Q(s, a).
  • Funkcja aproksymacji stanów Boltzmana - funkcja do aproksymacji dużych środowisk fizycznych zachowujących się w sposób regularny.

11. Literatura