Próbuję opracować sztuczną inteligencję do gry karcianej i trochę utkwiłem w technice / algorytmie, którego powinienem użyć. Oto kilka założeń dotyczących gry:
- Po rozdaniu kart graczom nie ma losowości. Mam tu na myśli to, że każdy gracz może wybrać, które karty zagrywa, ale nie następuje losowy proces, jak w przypadku rozdawania kart na początku gry.
- Istnieją ograniczenia dotyczące kart, które można zagrać, gdy karta została już zagrana.
- Gracz, który wygrywa lewę, gra najpierw. Np. Gracz 1 zagrywa kartę, Gracz 2 zagrywa kartę i wygrywa. Następnie Gracz 2 zagrywa kartę, a następnie Gracz 1 gra.
Znam wiele wskazówek / zasad (np. Jeśli wiem, że gracz ma karty A, B, C, powinienem zagrać w D), co pomaga mi wygrać w grze. Dlatego najpierw chciałem użyć sieci bayesowskiej do opisania tych zasad. Problem polega na tym, że nie znam żadnych prawdopodobieństw do przypisania, ale mógłbym obliczyć heurystykę na podstawie historii gier (przeciwko człowiekowi). Po drugie, bardzo prawdopodobne jest, że nie znam wszystkich zasad i że istnieją pewne ukryte reguły, które są potrzebne AI do znalezienia optymalnej gry.
Nie jestem pewien, czy byłby to dobry sposób na opracowanie sztucznej inteligencji dla takiej gry karcianej?
Zastanawiam się także, czy istnieją inne techniki, które najlepiej pasowałyby do problemu. Na przykład rzuciłem okiem na minimax (może z algorytmem przycinania), ale czy byłby dobrą opcją dla tego problemu? Nie jestem pewien, ponieważ najważniejsze gry są na początku gry, gdy występują najwyższe nieznane parametry (większość kart nie jest jeszcze zagrana).
Odpowiedzi:
Twój przykład brzmi podobnie do Bridge . Najlepsze systemy gry brydżowej wykorzystują metody Monte Carlo do wybierania ruchów. Na wysokim poziomie:
Gdy już coś zaczniesz działać, możesz dodać wiele rodzajów wzbogaconych strategii. Na przykład, zmieniaj swoje prawdopodobieństwa w oparciu o historyczne gry gracza, zmieniaj prawdopodobieństwo w zależności od stylu gracza (pasywny, ostrożny, agresywny), a nawet weź pod uwagę wpływ konkretnych graczy grających razem.
Edytuj według komentarza LaurentG:
Ostatecznie możesz zrzucić ideę idealnej gry dla wszystkich graczy i zastąpić coś bardziej realistycznego. Pod względem koncepcyjnym oddziel prawdopodobieństwo karty znajdującej się w czyjejś ręce (rozkład karty) od prawdopodobieństwa, że gracz zagra daną kartę prawną podczas rozdania (wybór karty).
Wybór karty jest gotowy do nauki. Jeśli śledzisz grę w różnych grach, możesz dowiedzieć się, w jaki sposób dany gracz lub ogólnie gracze mają tendencję do gry na podstawie kart w ręce i kart, które zostały zagrane. Możesz nawet fantazjować i modelować ich założenia dotyczące ukrytych przed nimi kart.
Istnieją również możliwości uczenia się w zakresie dystrybucji kart. Przeszłe oferty gracza i wybór karty podczas rozdania mogą ujawnić „powiedzieć” o tym, co jest ukryte w jego ręce. Możesz użyć danych historycznych, aby dostosować prawdopodobieństwo podczas tworzenia każdej gry wirtualnej.
źródło
Przypadek ostatniego osobistego doświadczenia:
Sam pracuję nad grą karcianą (Bisca, portugalska gra dla dwóch graczy) i osiągam dobre wyniki, stosując metody Monte Carlo, szczególnie używając najnowszego algorytmu wyszukiwania drzewa Monte Carlo informacji (ISMCTS, opisanego przykładowy kod źródłowy w Pythonie na http://www.aifactory.co.uk/newsletter/2013_01_reduce_burden.htm ).
Gra dość dobrze, od czasu do czasu niepoprawny ruch, tylko ze znajomością zasad gry. Obecnie staram się go poprawić, aby móc go ulepszyć, ponieważ zgodnie z informacjami, które o nim przeczytałem (i jego „macierzystym” MCTS), można ulepszyć grę dzięki heurystyce ( http: // www .orangehelicopter.com / ed / papers / aiide13.pdf ) i wnioskowanie o karcie przeciwnika.
źródło
Myślę, że to zależy od zasad gry.
Oto, co rozumiem z twojego pytania:
Założenia:
Przykładowa gra, która spełnia następujące zasady:
Teraz o tej grze decyduje szczęście losowania i umiejętność zapamiętania kart, które zostały zagrane, aby poznać układ przeciwnika.
W tej sytuacji sprawiłbym, że AI tylko częściowo pamiętała, które karty zostały zagrane, tj. Losowo usunąłem z zapamiętanej listy pewien procent zagranych kart (mniejsza liczba = AI o wyższym stopniu trudności), ale nie tak ważne jak asy lub królowie. W ten sposób na przykład AI będzie wiedziała, że bezpiecznie jest zagrać Królową Kier, ponieważ pamięta, że przeciwnik nie ma Asa ani Króla, ale będzie musiał obliczyć prawdopodobieństwo, jeśli chce zagrać 10, ponieważ może nie pamiętać, czy walet wciąż jest w grze.
To naśladuje ludzką uwagę.
TL; DR
Ogranicz ilość wiedzy AI, aby jej decyzje nie były idealne, wystarczy.
źródło