2012-09-26 12 views
5

Jestem początkującym uczniem maszynowym. Chciałbym nauczyć się podstaw, ucząc komputerów grać w warcaby. W rzeczywistości gry, które chcę poznać, to: Domineering i Hex. Moim ulubionym językiem jest Pythonuczenie maszynowe w Pythonie, aby grać w warcaby?

Te gry są dość łatwe do przechowywania, a zasady są znacznie prostsze niż szachy, ale nie ma zbyt wielu osób, które grają. Jeśli uda mi się uzyskać ten pomysł z gruntu, świetnie byłoby eksperymentować z Combinatorial Game Theory, aby sprawdzić, czy komputer znajduje optymalny ruch.

Znalazłem ten stary dokument na warcaby z 1960's przez faceta z IBM. Pierwotnie zapytałem o neural networks, ale mówią, że to niewłaściwe narzędzie.

EDIT: Możliwe, że uczenie maszynowe nie jest właściwą strategią. W takim razie, co idzie źle? a jaki jest lepszy sposób?

+0

Dlaczego uważasz, że uczenie maszynowe jest dobrym podejściem do tego problemu? – Bitwise

+0

Chciałem napisać coś, co "uczy się", jak grać. Jeśli plansza jest wystarczająco mała, możliwe jest wyczerpujące przeszukiwanie przestrzeni ruchów. Co to jest mądrzejszy sposób? –

+0

W przypadku klasycznych warcabów i wielu innych gier bardzo trudno jest obliczyć wszystkie możliwe ruchy. Ewentualną alternatywną strategią jest zdefiniowanie cech silnych pozycji lub dobrych ruchów, a następnie spróbuj znaleźć ścieżki do tych pozycji. Na przykład silna pozycja to miejsce, w którym znacznie przewyższasz przeciwnika, a dobrym posunięciem jest ukoronowanie żołnierza. – Bitwise

Odpowiedz

1

Zdobądź książkę "Machine learning" autorstwa McGraw Hill i przeczytaj pierwszy rozdział. Jest bardzo dobrze napisany, a pierwszy rozdział nauczy cię wystarczająco dużo, by stworzyć program grający w warcaby. Osobiście stworzyłem program grający 5 w rzędzie na stronie miniclip.com, również w pythonie.

http://www.amazon.com/Learning-McGraw-Hill-International-Editions-Computer/dp/0071154671

+0

Musi być być kilkoma książkami o nazwie "Uczenie maszynowe". Kto jest autorem? –

+0

Ten komentarz jest nadal aktualny, część rozdziału 1 jest dostępna online i może dać ci kilka wskazówek. W szczególności używa on sprawdzania jako przykładu. – Bitwise

0

Podczas gry w warcaby, należy dążyć do uzyskania przewagi nad przeciwnikiem poprzez swoje kawałki i wieńczący własną rękę. Utrata części i pozwolenie przeciwnikowi na ukoronowanie swoich elementów nie jest pożądane, więc unikasz tego.

Silniki do gier planszowych zwykle obracają się wokół funkcji oceny pozycji. Dla warcaby, moje pierwsze przypuszczenie byłoby coś takiego:

score =  number of allies   -  number of opponents 
     + 3 * number of crowned allies - 3 * number of crowned opponents 

Biorąc tablica, funkcja ta zwróci wynik planszy. Im wyższy wynik, tym lepsza pozycja. Im niższy wynik, tym gorsza pozycja.

Aby stworzyć naiwny "silnik" w warcaby, wystarczy znaleźć najlepszy ruch, biorąc pod uwagę pozycję planszy, która po prostu przeszukuje wszystkie natychmiastowe ruchy prawne i znajduje ten, który maksymalizuje wynik.

Twój silnik nie będzie myśleć o więcej niż jednym ruchu, ale będzie mógł grać przeciwko tobie nieco.

Następnym krokiem jest zapewnienie Twojemu silnikowi możliwości planowania z wyprzedzeniem, co w zasadzie przewiduje reakcje przeciwnika. Aby to zrobić, po prostu znajdź najlepszy ruch przeciwnika (tutaj jest rekursja) i odejmij go od wyniku.

+0

tak, to w zasadzie początek alfa beta ... nakrętka, możesz spojrzeć na więcej niż jeden ruch do przodu ... to zajmuje trochę czasu ... –

3

Być może zechcesz rzucić okiem na następujące rzeczy: Chinook, drzewa zaufania górnego, nauka zbrojenia i przycinanie alfa-beta. Osobiście chciałbym połączyć Alpha-Beta Pruning i Upper Confidence Trees (UCT), aby uzyskać doskonałe gry informacyjne, w których każdy gracz ma mniej niż 10 rozsądnych ruchów. Możesz użyć Temporal Difference Learning, aby utworzyć funkcję oceny pozycji. Gra AI jest prawdopodobnie najfajniejszym sposobem uczenia się uczenia maszynowego.

Dla linki do wszystkich tych zagadnień, kliknij

http://artent.net/blog/2012/09/26/checkers-and-machine-learning/

(I nie był w stanie zawierać więcej linków, ponieważ oprogramowanie przepełnienie stosu uważa mnie początkujących!)

Powiązane problemy