Skip to content
Łukasz Opioła edited this page Jun 5, 2015 · 6 revisions

Gra w kowboje

Koncepcja projektu

Zasady gry:

  • 3 zawodników
  • Dozwolone ruchy:
    • SHOOTX - strzel do zawodnika z numerem X)
    • DODGE - strzały w kierunku tego zawodnika nie zabijają go. Można wykonać tylko jeden unik z rzędu.
    • LOAD - zwiększa ilość nabojów w magazynku.
  • Ograniczony magazynek - do 3 nabojów. Zaczynamy z pustym magazynkiem.

**Warunki specjalne: ** Zawodnik przegrywa jeżeli nie wykonuje uniku i nie strzela w stronę atakującego go zawodnika.
Jeżeli dwóch zawodników strzela do siebie nawzajem, kule się zderzają i żaden z nich nie ginie.
Strzał z pustym magazynkiem skutkuje przegraną.
Próba ładowania przy pełnym magazynku skutkuje przegraną.
Unik dwa razy z rzędu skutkuje przegraną.

Punktacja:

Rozgrywamy N gier po max M ruchów. Na koniec każdej gry przyznajemy 1 punkt, rozdzielając go między tych zawodników, którzy nie przegrali. Jako miarę jakości gracza uznajemy jaki procent z maksymalnej puli punktów uzyskał po rozegraniu N gier.

Technologia:

python - język implementacji platformy
pyBrain - biblioteka do uczenia maszynowego

Uczenie maszynowe:

Uczenie ze wzmocnieniem -> Reinforcement learning
Agent aktywnie rozgrywa rozgrywki i się uczy, dostając nagrodę po każdym ruchu. Następnie rozgrywa odpowiednią ilość gier testowych w celu oceny jego jakości.

Uczenie ze zbiorem treningowym -> Supervised learning
Zbiór treningowy stworzony na podstawie rozgrywek randomowych graczy i stworzonej przez nas funkcji oceny ruchów. Ocena dotyczy całego stanu gry - wszystkich informacji na temat zawodników, ich stanu magazynków itd. Przykładowe ocena - strzał z pustym magazynkiem: -5, strzał do zawodnika, który nie może się bronić +3.

Przyjęto podejście, w którym system uczący nie posiada żadnej wiedzy na temat zasad gry i próbuje je wywnioskować ze zbioru uczącego lub nagród w uczeniu ze wzmocnieniem. Kolejnym stopniem wytrenownaia jest osiągnięcie wiedzy, która pozwala wygrywać rozgrywki.