„Program grający w szachy”

12
„Program grający w szachy” Promotor : Dr Maciej Szmit Praca inżynierska Autor : Mariusz Rostek

description

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 - PowerPoint PPT Presentation

Transcript of „Program grający w szachy”

Page 1: „Program grający w szachy”

„Program grający w szachy”

Promotor : Dr Maciej Szmit

Praca inżynierska

Autor : Mariusz Rostek

Page 2: „Program grający w szachy”

Algorytm mini - max

Białe

max

Czarne

mini

-10

15

30

30

40

-200

100

25

-10

-200

-15

Horyzont zdarzeń

? wartość mini - max =

-10

Horyzont zdarzeń :

Przerwane drastycznie obliczenia w trakcie np.:

wymiany bić, czy szachów co wypacza wynik przeszukiwania

-15

korzeń drzewa

liście drzewa

węzły drzewa

Page 3: „Program grający w szachy”

Białe

max

-10

30

30

40

-200

-10

-200

-15

-15

Algorytm alfa – betaczarne

min

Alfa = -10

Alfa = -10

-10

Porównanie algorytmów

Mini – max :

Ilość węzłów około : d h

d - średnia ilość ruchówh - głębokość

Alfa – beta :

Ilość węzłów około : d h/2

Przy posortowanym drzewie

-15

100

25

Nieposortowane ruchy

-15

Alfa = - ∞

Aby zwiększyć liczbę odcięć najlepszy ruch powinien być pierwszy

beta = ∞

beta = 30

beta = -10

beta = 30

alfa = - ∞

beta = 30

- 200beta =

beta = -15

Page 4: „Program grający w szachy”

Zawężenie obszaru przeszukiwania

Ilość węzłów

V- spodziewana wartość mini – max drzewa

m – okno przeszukiwania

alfa = - m

beta= +m

obszar przeszukiwania

Obszar odcięty

Page 5: „Program grający w szachy”

Kolejność wykonywania ruchówAby 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.

Page 6: „Program grający w szachy”

Ruch A = 10

Ruch B = 20

Ruch C = 30

4. Najlepszy ruch ze spłyconego przeszukiwania

przeszukanie małego drzewa służy do

posortowania ruchów w większym drzewie

5. „Ruchy morderców”

najlepszy ruch z jednego poddrzewa

może okazać się tez najlepszym w

sąsiednim poddrzewie

C

B

A

Kolejność wykonywania ruchów

Page 7: „Program grający w szachy”

Sortowanie ruchów na korzeniuIteracyjne pogłębianie służy do posortowania ruchów na korzeniu drzewa

Page 8: „Program grający w szachy”

Model drzewa gry w programie Sierżant

Horyzont zdarzeń

poziom : 2

korzeń

poziom : 1

poziom : 0

poziom : 1poziom : 0

poziom : 1

poziom : -1 poziom : -2

Szach lub wymiana figur lub marsz piona na promocje pogłębienie o 1 poziom

Obszar przeszukiwania pełnego :

wszystkie ruchy

poziom : 0

Słaby ruch

redukcja o 1

poziom

Obszar przeszukiwania selektywnego :

szachy, bicia, promocje

f.o. – funkcja oceniająca

= materiał

+ wynik przeszukiwania selektywnego

+ ocena pozycji bierek

f.o.

f.o.

f.o.

f.o.

f.o.

f.o.

Page 9: „Program grający w szachy”

Funkcja oceniająca

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

Funkcja oceniająca = materiał + ocena pozycyjna bierek

Page 10: „Program grający w szachy”

Ocena pozycyjna bierek

-60 -60 -60 -60 -60 -60 -60 -60

-50 -50 -50 -50 -50 -50 -50 -50

-40 -40 -40 -40 -40 -40 -40 -40

-30 -30 -30 -30 -30 -30 -30 -30

-20 -20 -20 -25 -25 -20 -20 -20

-8 -15 -15 -20 -20 -15 -15 -8

-3 -4 -3 -10 -10 -3 -4 -3

2 3 3 -5 0 -5 4 2

element pozycji: debiut środek końcówka

zdwojenie pionków

-15 -15 -15

samotny pion -20 -20 -20

krycie się pionków

3 3 3

wolny pion: na 2 linii

15 20 30

3 linii 18 23 34

4 linii 22 27 39

5 linii 27 32 45

6 linii 33 38 52

7 linii 40 45 60

blokada swojego pionka

-3 -4 -8

blokada obcego pionka

5 6 12

wieża na wolnej linii

5 10 12

zdwojenie wież 10 10 5

Para gońców 5 10 15

Przykładowe parametry w zależności od fazy gryTablica wartości w zależności od zajmowanego przez bierkę pola

dla króla w debiucie

-8 -6 -4 -3 -3 -4 -6 -8

-5 -1 0 0 0 0 -1 -5

-3 0 8 10 10 8 0 -3

-3 0 10 14 14 10 0 -3

-3 0 10 14 14 10 0 -3

-3 0 8 10 10 8 0 -3

-5 -1 0 0 0 0 -1 -5

-8 -6 -4 -3 -3 -4 -6 -8

dla króla w końcówce

Page 11: „Program grający w szachy”

Tablice transpozycyjne

tablica bierek

Funkcja haszująca na liczbę z zakresu :

od:0 do:rozmiar tablicy haszowej

rekord Głębokość

Najlepszy ruch

Wartość

alfa

…. …. …. ….

8768684 10 e2-e4 82

8768685 8 g1-f3 50

8768686 12 d2-d4 -20

…. …. …. ….

8768686

fragment tablicy haszowej

Page 12: „Program grający w szachy”

Dziękuje bardzo i zapraszam na coroczne

Mistrzostwa Polski Programów Szachowych organizowanych pod patronatem

Katedry Informatyki Stosowanej przez dr Macieja Szmita.