//
STYL GRY

Ponieważ ludzie grają w szachy różnymi stylami również programy ,które są wszak dziełami ludzkich umysłów posiadają taką zdolność. Programista ustala w jaki sposób będzie grał silnik choć w niektórych przypadkach możemy to zrobić sami. Takie programy jak Fritz czy Chessmaster oprócz tego ,że udostępniają własny interfejs użytkownika to mają jeszcze możliwość zdefiniowania stylu i siły gry samego silnika.  W przypadku Rybki wydano dwie dodatkowe wersje Human i  Dynamic. Rybka Human jak nazwa wskazuje ma naśladować styl gry człowieka i ma  o 20 % większą zgodność posunięć z silnym arcymistrzem niż wersja podstawowa. Wersja Dynamic natomiast dobrze czuje się w pozycjach niejasnych ,skomplikowanych przy obustronnym ataku i dynamicznej grze, program nie waha się ofiarować materiał w zamian za inicjatywę nawet jeśli rekompensata nie jest widoczna w jego głębokości obliczeń.
Część silników jak już wspomniałem ma możliwość ustawienia niektórych zmiennych, poniższe okno przedstawia konfigurację parametrów wyjściowych silnika Stockfish 1.91, w programie Arena. Autorzy niestety nie podali dokładnego wyjaśnienia ustawień funkcji oceniającej,  aby je poznać należałoby się  sięgnąć do kodu źródłowego programu ,który jest co prawda ogólnodostępny ale wymaga on znajomości języka C++ w którym program został napisany, oraz specyficznych mechanizmów konstruowania funkcji oceniającej.

Jak widać mamy wiele możliwości konfiguracyjnych, oczywiście autorzy z reguły zalecają pozostawić wszystkie parametry tak jak zostało to przez nich ustalone czyli default,, wówczas silnik będzie grał prawdopodobnie z największą siłą, ale można sobie też trochę pokombinować i nawet zapisać silnik ze zmienionymi parametrami jako zupełnie nowy.

OBJAŚNIENIA NIEKTÓRYCH FUNKCJI:

Use serach log – zapisuje, główne warianty rozpatrywane przez silnik w odpowiednim pliku, jego lokalizację można podać w okienku poniżej

Book File –  wskazuje na lokalizację książki debiutów z której silnik ma korzystać

Best Book Move – ta opcja decyduje o tym czy ma być wybrany najlepszy wariant polecany przezksiążkę czy też silnik ma zadecydować o tym który wariant z książki będzie wybrany

Clear Hash – usuwa wcześniejsze tablice transpozycji aby zrobić miejsce dla nowych

Threads – liczba rdzeni używanych do obliczeń, w zależności od rodzaju procesora

Minimum split depth – minimalna głębokość drzewa przy której nastąpi rozdzielnie obliczeń pomiędzy następne rdzenie

Ponder – silnik wykonuje obliczenia również na czasie przeciwnika

Emergency move time– minimalny czas w sekundach który silnik sobie zostawia na posunięcie

Chess 960 – opcja gry w szachy Fishera inaczej zwanymi szachami 960 (losowo dobierany rząd figur na pierwszej i ostatniej linii jako pozycja wyjściowa)

Pozostałe ustawienia są charakterystyczne już dla funkcji oceny pozycji, obejmują one takie elementy gry jak: agresja, gra pozycyjna, mobilność figur, struktura pionów w różnych fazach gry, groźby matowe itd.
Przy optymalizacji poziomu gry silnika szachowego stosuje się często turnieje w których grają te same wersje programu tyle ,że z innymi ustawieniami, pozwala to na testowanie silnika oraz wybór najlepszych pod względem siły gry i stylu parametrów głównie dotyczących funkcji oceniającej ,choć ważne jest również dostosowanie trybu pracy silnika do sprzętu na którym on pracuje kluczowe są tu takie informacje jak wielkość pamięci operacyjnej, liczba procesorów, liczba rdzeni czy wersje systemu operacyjnego 32 lub 64 bitowe.
Programista lub niekiedy użytkownik o ile ten pierwszy udostępni taką opcję, może więc zoptymalizować program do gry z ludźmi lub innymi programami a nawet do gry z konkretnym przeciwnikiem czy to będzie maszyna czy człowiek (patrz podrozdział „Historia meczów człowiek komputer”)

Wieloletnia obserwacja gry  różnych mocnych silników ze ścisłej czołówki na ustawieniach default bez książki debiutów i tabeli końcówek pozwoliła mi na wyodrębnienie podstawowych cech charakteryzujących ich styl gry, oto one:

  • Program nie popełnia podstawowych błędów typu podstawienie figury, mata, bezpodstawne osłabienie pozycji króla itp. przynajmniej w dostępnej głębi obliczeń
  • Silnik nie będzie ofiarował czegokolwiek jeśli nie „zobaczy” wynikającej z tego korzyści, nie będzie wiec grał w stylu byłego Mistrza Świata  Michaiła Tala, który intuicyjnie poświęcał grubszy materiał licząc na inicjatywę oraz to ,że w perspektywie niewidocznego póki co horyzontu zada decydujący cios lub osiągnie przewagę dającą wygraną. Oczywiście program poświeci pionka za inicjatywę ale musi to przeliczyć gdyż nie posiada wrodzonej intuicji
  • Pozycje grane przez silniki zadziwiająco trzymają się kupy, figury doskonale współpracują ze sobą, słabości są bronione a newralgiczne pola są pod stałą kontrolą
  • Silniki grają w większości pozycyjne szachy, unikają awantur, pozycji dynamicznych, skomplikowanych i trudnych do oceny
  • Gdy program już zdecyduje się na ostrzejszą i bardziej aktywną grę musi liczyć się z murem obronnym ,który ciężko będzie przebić, programy potrafią się doskonale bronić,  jeśli ktoś nie wierzy niech spróbuje wygrać z np. Houdinim z gońcem for w partii błyskawicznej
  • Większość partii granych przez programy rozstrzyga się w ostatniej fazie gry środkowej lub w końcówce, w przeciwieństwie do ludzi, u których niekiedy już w debiucie dochodzi do decydującej przewagi którejś ze stron
  • W partiach silników rzadko spotyka się wielokrotne, dynamiczne zwroty w pozycji typu raz wygraną mają czarne innym razem białe(w tej samej partii)  mocniejszy silnik stopniowo buduje swoją przewagę zamieniając ją przeważnie w końcówce na punkt lub jeśli nie zdoła obalić obrony przeciwnika na połówkę
  • Programy nie mają w przeciwieństwie do szachistów większych problemów technicznych z realizacją przewagi materialnej lub pozycyjnej jeśli pozycja kwalifikuje się na wygraną
  • Jeśli w danej pozycji wystąpi motyw kombinacyjny jest bardzo duże prawdopodobieństwo, że silnik go dostrzeże jeśli znajduje się w horyzoncie jego obliczeń, dlatego też często niektóre posunięcia programów są niezrozumiałe dla ludzi, gdyż szachiści wielokrotnie nie używają żelaznej logiki w grze, opierając się często  na intuicji, doświadczeniu, znajomości psychologii i  cech charakteru przeciwnika.

Pamiętajmy jednak, że jak już pisałem są szerokie możliwości ingerencji w styl gry programu i łagodną z pozoru Rybkę można spokojnie podmienić na żarłoczną piranie.

Spróbujmy więc przeanalizować jedną z partii rozgrywanych przez dwa obecnie najlepsze silniki na świecie, dodam ,ze laptop na którym rozgrywano partie był wyposażony w procesor Intel Dual Core 32-bitowy system operacyjny Vista, procesor 2,2 Ghz oraz 3 Gb pamięci operacyjnej. Tempo gry 30 min. dla każdej ze stron. Analiza jest poświęcona opisowi stylu gry programów i wybacz szanowny czytelniku ,ale autor nie czuję się kompetentny do oceniania poszczególnych posunięć i wariantów gdyż obaj Goliaci grają na poziomie ok. 3100 elo.

Białe:   Houdini 1.5a
Czarne:   Rybka 4

1.e4  e5
2.Sf3  Sc6
3.Gb5 a6
4.Gxc6   dxc6
5.O-O  f6


Faza debiutu już za nami figury rozwinięte, materiał zredukowany, przechodzimy do gry środkowej, jak dotąd pozycja oceniana jest przez silniki jako wyrównana. Choć na oko widać ,że białe mają ciut większe szanse ze względu na zdublowane piony czarnych na linii c, słabość na c5, nacisk wież na linię d oraz nieco więcej przestrzeni. Pamiętajmy jednak ,że chwilowa ocena pozycji przez program może się zdecydowanie różnić od oceny człowieka choć program i tak będzie grał lepiej.
16.f3 f5
17.Sfd5 b6
18.Se3 f4
19.Sed5 g5
20.h4 h6
21.Kf2 Ge6
22.b3 Kb7
23.Wh1 Se5
24.hxg5 hxg5
25.Wh6 Gf7
26.Wd1 Gg6
27.Whh1 Wf7
28.Sa4 Wfd7
29.Ke2 Ge7
30.c4 Wd6
31.Wh7 c6
32.Sdc3 Wxd1
33.Sxd1 Wd7
34.Wh6 Sd3
35.Sf2 Sc1+
36.Ke2 Sxa2
37.e5 Gg8
38.Se4

Od tego posunięcia programy zaczynają oceniać pozycję jako nieznacznie lepszą dla białych. Houdini choć ma pionka mniej korzysta z przewagi przestrzeni, wolnego piona oraz lepszej koordynacji figur i precyzyjnymi manewrami punktuje słabości czarnych. Proszę zwrócić uwagę na kolejne forsowne posunięcia które doprowadzą do pozycji w której to właśnie słaba struktura pionów czarnych zadecyduje o ich klęsce.

38….. We7
39.Kd2 Sb4
40.Wg6 Gh7
41.Sd6+ Kc7
42.Wxg5 Sd3
43.Sxb6 Wxe5
44.Wg7+ Kxd6
45.Wd7+ Ke6
46.Wxh7 Sb4

Kluczowa pozycja partii, pomimo równowagi materialnej i mocno zredukowanego materiału, białe wykorzystują słabości w obozie czarnych i stopniowo zwiększają przewagę

47.Sa4  Wg5
48.Wh2  Sa2
49.Kd3  We5
50.Wh4  Sc1+
51.Kce  Se2
52.Kd2  Kd4
53.Wxf4  Sxb3+
54.Kc2  Sd4+
55.Kd3  Kd6
56.Sc3  We1
57.Wf7  Wa1
58.Se4+  Ke6
59.Wh7  Wa3+
60.Kd2  Sb3+
61.Ke3  Sc1+
62.Kf4  Sd3+
63.Kg5  Ke5
64.We7+  Kd4
65.f4  Wa2
66.g4  Wg2
67.Kf5  Wg1
68.g5  Kxc4
69.We6 Kb5

Od tego posunięcia ocena pozycji wzrasta coraz szybciej wraz z kolejnymi posunięciami na korzyść białych ,widocznie Houdini dostrzegł w swojej głębi obliczeń ,że białe piony są groźniejsze od czarnych i aby je zatrzymać konieczne będą ofiary materialne ze strony czarnych. Pionki czarnych są zdublowane i izolowane a więc funkcja oceniająca przypisuje im znacznie mniejszą wartość, pionki białych z kolei są bardziej zaawansowane i stanowią zwarta strukturę. W marszu do przodu jeden wspiera drugiego, stąd zapewne funkcja oceniająca bardziej je wartościuje. Król białych jest bliżej centrum kontrolując je co też ma niebagatelne znaczenie w tego typu końcówkach.

70.g6 c4
71.Sg5 c3
72.We2 Wf1
73.Sh3 Sxf4
74.Sxf4 Wd1
75.Se6 Wf1+
76.Ke5 Wg1
77.g7 Kc4
78.Kf6 Wxg7
79.Kxg7 Kb5
80.Kf6 Kb4
81.Ke5 Kc4
82.Wa2 c5
83.Ke4 Kb4
84.Kd3 Kb3
85.Wxa6 c4+
86.Ke2

Czarne poddały, gdyż nie są w stanie promować żadnego ze swych pionów.

Oto jak przedstawia się wykres oceny pozycji dla tej partii, pochodzi on z programu Arena, który służył jako interfejs graficzny dla silników

Kreski żółte oznaczają ocenę białych ,zaś niebieskie-czarnych widzimy ,że niekiedy ocena nieznacznie się różni. W osi poziomej mamy kolejne posunięcia a w pionowej wartość oceny, przy 75 posunięciu przewaga białych jest już tak duża, że skala diagramu się kończy od 75 ruchu do końca partii zawiera się ona w przedziale +4.86 do +10.4. Pamiętajmy ,że +1 oznacza przewagę białych odpowiadającą jednemu pionków ,a ze znaczkiem przeciwnym analogicznie przewagą czarnych. Oprócz tego interfejs pokazuje nam takie informacje jak :

  • czas pozostający do namysłu
  • czas wykorzystany na konkretne posuniecie,
  • głębokość (w półruchach), np.19/32 oznacza ,że silnik osiągnął podstawową głębię 19 półruchów przy czym niektóre warianty przeliczył nawet do 32 czyli 16 pełnych posunięć
  •   liczba przeszukiwanych pozycji na sekundę w tysiącach np. 120 kW/sec lub po angielsku   120 kN/sec, oznacza 120 00 węzłów (z ang. nodes) na sekundę
  • całkowita liczba przeliczonych pozycji
  • posunięcie nad którym program aktualnie pracuje

Dyskusja

Brak komentarzy.

Dodaj komentarz

Kategorie