Autor Wątek: Warcaby - baza debiutów  (Przeczytany 3005 razy)

Offline mukai

  • Użytkownik

# Lipiec 26, 2010, 01:01:33
Witam. Napisałem program grający w warcaby i chciałbym go usprawnić dodając bazę debiutów ponieważ z tego co zauważyłem to program najgorzej sobie radzi na początku gry. Jednak nie mam pojęcia jak się do tego zabrać. Proszę o jakiekolwiek wskazówki ponieważ stanąłem w miejscu i nie wiem co dalej.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Liosan

  • Moderator

# Lipiec 26, 2010, 01:13:11
Ale z czym w zasadzie masz problem? Baza debiutów to tylko zestaw zapamiętanych drzew gry... Czego użyłeś do SI? Alpha-beta?

Liosan

Offline mukai

  • Użytkownik

# Lipiec 26, 2010, 01:23:35
Tak, użyłem alpha-beta. Chodzi o to, ze nie wiem skąd wziąć te zapamiętane drzewa. Zastanawiam się czy istnieją jakieś gotowe bazy albo jakaś metoda na jej wygenerowanie.

Offline Liosan

  • Moderator

# Lipiec 26, 2010, 01:37:58
Ja bym wytworzył wszystkie możliwe otwarcia do któregoś-tam poziomu drzewa (wszystkie sytuacje, nie ścieżki w drzewie; użyj haszowania), a następnie spróbował oszacować, dla kogo ta sytuacja jest korzystna; możesz spróbować napisać jakąś funkcję oceniającą. Ja bym użył Monte Carlo - najzwyczajniej w świecie rozegraj każdą sytuację 5000 razy, prawie do samego końca, robiąc każdym graczem losowe ruchy - da Ci to statystyczne oszacowanie taktycznej wartości danej sytuacji - coś, co jest trudno algorytmicznie ocenić.

Liosan

Offline mukai

  • Użytkownik

# Sierpień 17, 2010, 19:59:59
Dzięki z odpowiedź. Mam jeszcze jedno pytanie, ostatnio zauważyłem coś dziwnego. Testując różne funkcje oceniające ustawiałem aby ai grało przeciwko ai i zauważyłem, że partie są różnie rozgrywane. Czasami się powtarzają a czasami ai rozgrywają partie zupełnie inaczej, dlatego chciałbym zapytać czy tak powinno być bo według mnie partie powinny być rozgrywane identycznie za każdym razem. Podkreślam, że chodzi o taką sytuację gdzie nie zmieniam nic w kodzie tylko uruchamiam aplikacje raz a potem następny bez żadnych zmian i ai rozgrywają partie inaczej. Algorytm nie jest uzależniony od czasu tylko ma ustawianą stała głębokość przeszukiwania i nie jest w żaden sposób losowo modyfikowany. Poradźcie bo sam nie wiem czy mam szukać błędu  w kodzie czy może tak powinno być.

Offline lethern

  • Użytkownik

# Sierpień 17, 2010, 23:05:07
Jeśli nie używasz nigdzie w programie random, to... jedyne co przychodzi mi na myśl, to jakis błąd, który w jakiś dziwny sposób korzysta z niedozwolonej pamięci. Deterministyczny program nie może zachować się losowo

Fn

  • Gość
# Sierpień 17, 2010, 23:10:29
Jest jeszcze inna możliwość: "It's Alive!!!" :D