120 likes | 281 Views
Praca inżynierska. „Program grający w szachy”. Autor : Mariusz Rostek. Promotor : Dr Maciej Szmit. Algorytm mini - max. Czarne mini. Horyzont zdarzeń. Horyzont zdarzeń : Przerwane drastycznie obliczenia w trakcie np.: wymiany bić, czy szachów co wypacza wynik przeszukiwania. Białe
E N D
Praca inżynierska „Program grający w szachy” Autor : Mariusz Rostek Promotor : Dr Maciej Szmit
Algorytm mini - max Czarne mini Horyzont zdarzeń Horyzont zdarzeń : Przerwane drastycznie obliczenia w trakcie np.: wymiany bić, czy szachów co wypacza wynik przeszukiwania Białe max 30 40 -10 -10 wartość mini - max = -10 30 ? -200 -200 15 -15 -15 korzeń drzewa 100 25 liście drzewa węzły drzewa
Algorytm alfa – beta ∞ alfa = - ∞ beta = czarne min Białe max Porównanie algorytmów Mini – max : Ilość węzłów około : d h d - średnia ilość ruchów h - głębokość Alfa – beta : Ilość węzłów około : d h/2 Przy posortowanym drzewie 30 beta = 30 beta = 40 30 -10 beta = -10 -10 ∞ Alfa = - beta = 30 30 -10 -200 Alfa = -10 beta = - 200 -200 -15 beta = -15 Nieposortowane ruchy Alfa = -10 -15 -15 25 100 -15 Aby zwiększyć liczbę odcięć najlepszy ruch powinien być pierwszy
Zawężenie obszaru przeszukiwania Ilość węzłów obszar przeszukiwania Obszar odcięty V- spodziewana wartość mini – max drzewa m – okno przeszukiwania alfa = - m beta= +m
Kolejność wykonywania ruchów Aby algorytm alfa – beta miał jak najwięcej odcięć należy posortować ruchy w kolejności od najlepszego do najgorszego. Kolejność przeszukiwania ruchów w programie Sierżant : 1. Ruch z tablicy transpozycyjnej 2. Pusty ruch – wykonanie pod rząd 2 ruchów tej samej strony. Wykonany na spłyconą głębokość mało kosztuje, a może odciąć całą gałąź drzewa. 3. Bicia i promocje – jest duże prawdopodobieństwo że wśród i promocji bić znajdzie się najlepszy ruch, bicia i promocje zmieniają drastycznie wartość minimaksową drzewa po za tym drzewo gry w którym nastąpiły bicia jest zazwyczaj mniejsze i analiza przebiega szybciej.
Kolejność wykonywania ruchów • Najlepszy ruch ze spłyconego przeszukiwania • przeszukanie małego drzewa służy do • posortowania ruchów w większym drzewie C Ruch A = 10 B Ruch B = 20 A Ruch C = 30 • „Ruchy morderców” • najlepszy ruch z jednego poddrzewa • może okazać się tez najlepszym w • sąsiednim poddrzewie
Sortowanie ruchów na korzeniu Iteracyjne pogłębianie służy do posortowania ruchów na korzeniu drzewa
Model drzewa gry w programie Sierżant Obszar przeszukiwania pełnego : wszystkie ruchy Horyzont zdarzeń Obszar przeszukiwania selektywnego : szachy, bicia, promocje poziom : 0 f.o. f.o. – funkcja oceniająca = materiał + wynik przeszukiwania selektywnego + ocena pozycji bierek poziom : 1 f.o. poziom : 2 korzeń poziom : 0 f.o. poziom : 1 Słaby ruch redukcja o 1 poziom f.o. f.o. poziom : 1 Szach lub wymiana figur lub marsz piona na promocje pogłębienie o 1 poziom poziom : 0 poziom : -1 poziom : -2 f.o.
Funkcja oceniająca Funkcja oceniająca = materiał + ocena pozycyjna bierek materiał = suma wartości bierek Wartość poszczególnych bierek jest zmienna, zależy od fazy gry. Bierka białe czarne Król 10.000 -10.000 Hetman 950 -950 Wieża 500 -500 Goniec 330 -330 Skoczek od 300 (debiut) -30 do 260 (końcówka) -260 Pion od 80(debiut) -80 do 120(końcówka) -120
Ocena pozycyjna bierek Tablica wartości w zależności od zajmowanego przez bierkę pola Przykładowe parametry w zależności od fazy gry dla króla w debiucie dla króla w końcówce
Tablice transpozycyjne fragment tablicy haszowej tablica bierek Funkcja haszująca na liczbę z zakresu : od:0 do:rozmiar tablicy haszowej 8768686
Dziękuje bardzo i zapraszam na coroczne Mistrzostwa Polski Programów Szachowych organizowanych pod patronatem Katedry Informatyki Stosowanej przez dr Macieja Szmita.