Zadanie

Zadaniem będzie napisanie funkcji heurystycznej do gry w warcaby. Funkcja musi być napisana w Javie zgodnie z zadanym API do pracy z dostarczonym programem

Celem ćwiczenia jest zapoznanie się ze sterowaniem procesu przeszukiwania dla gier dwuosobowych za pomocą funkcji heurystycznej.

Program wykorzystywany do gry implementuje warcaby angielskie, zwane również amerykańskimi lub tradycyjnymi. Reguły gry w tej wersji obejmują przymusowe bicia, i wszystkie możliwości bicia muszą być wykorzystane do końca. Jednak jeśli istnieją różne możliwości ruchów z biciem to gracz nie ma obowiązku wykonania ruchu maksymalizującego liczbę bić. Pionki mogą bić wyłącznie do przodu. Po awansie pionka na damkę może ona wykonywać ruchy i bicia w dowolnym kierunku, ale za każdym razem tylko o jeden krok.

Ocena wykonanego zadania

Ocena będzie miała składową stała, przyznawaną za samodzielne napisanie działającej funkcji heurystycznej, oraz składową zmienną, odpowiadającą ocenie jakości napisanej funkcji. Funkcja będzie oceniana na dwa sposoby: ocena względna w obecnej grupie studentów, oraz ocena bezwzględna wynikająca z gry przeciwko pewnym graczom standardowym.

Dokumentacja

http://www.kcir.pwr.edu.pl/~witold/ai/Checkers_manual/index.html - instrukcja do programu

http://www.kcir.pwr.edu.pl/~witold/ai/Checkers_manual/api.html - API funkcji heurystycznej

https://pl.wikipedia.org/wiki/Warcaby_angielskie

Przydatne materiały

https://cs.huji.ac.il/~ai/projects/old/English-Draughts.pdf - wprowadzenie do tworzenia heurystyk dla warcab i kilka podstawowych funkcji heursytycznych

https://onlinelibrary.wiley.com/doi/abs/10.1111/j.1468-0394.2007.00429.x - wszechstronna analiza metod budowy heurystyk dla warcab (wstępna wersja tego artykułu jest dostępna tutaj: https://www.mini.pw.edu.pl/~mandziuk/PRACE/es_init.pdf)