środa, 23 maja 2012

Szachy i komputery (7) - autor Wojtek Żuchowski


Maszyna szachowa (foto: google)


W praktyce

Gracz (program lub człowiek) musi ocenić pozycję, wybrać ruchy-kandydatów, uszeregować je, obliczyć warianty i ocenić nowo powstające pozycje. A po każdym posunięciu tworzą się nowe ruchy-kandydaci i znów trzeba wybierać. Coś takiego nazywamy drzewem wariantów.
Silnik szachowy zaczyna od wstępnej, bardzo płytkiej oceny dozwolonych posunięć i uszeregowuje je według tej wstępnej oceny. Następnie po kolei oblicza i ocenia następujące po nich warianty, przyporządkowując im różną ilość czasu zależnie od pozycji na liście. Jeśli ocena jakiegoś wariantu w tym drugim przebiegu zmieni się, wariant przesunie się na liście w górę lub w dół. W następnym przebiegu wszystko się powtarza, z tym że ilość czasu przeznaczona na warianty powstające po każdym posunięciu proporcjonalnie rośnie.
Procedurom liczenia wariantów musi jednak towarzyszyć odpowiednia wiedza: zdolność oceny elementów pozycyjnych, jak: struktura, tempa, bezpieczeństwo króla, mobilność bierek, przewaga przestrzeni, oraz zależności między nimi, a także zdolność oceny materiału zależnie od pozycji, a nie na zasadzie: goniec – 3 punkty, wieża – 5 punktów.
Ocenę pozycji silniki podają jako wielokrotność liczby jeden (wartość piona) ze znakiem plusa (przewaga białych) lub minusa (przewaga czarnych). Ocena pierwszego wariantu na liście, która jest jednocześnie oceną pozycji, określa nie tyle obecną pozycję na szachownicy, co najlepszą końcową pozycję we wszystkich obliczonych wariantach. Gdy białe mają dwa piony więcej lub program doszedł do takiej pozycji w swoich obliczeniach (i nie widzi nigdzie pozycji z większą przewagą), to bez uwzględnienia czynników pozycyjnych ich przewaga wynosi +2,0. Gdy czarne mają lub mogą mieć (przy najlepszej grze przeciwnika) wieżę za skoczka, a białe nie mają nic w zamian (np. lepszej struktury, możliwości ataku), ich przewaga z punktu widzenia programu jest podobna, tyle że przed liczbą widać znak minusa. Gdy żadna ze stron nie ma przewagi materialnej ani możliwości jej zdobycia przy najlepszej grze przeciwnika, ale jedna z nich ma inicjatywę, solidniejszą strukturę lub lepiej zabezpieczonego króla, ocena najpewniej będzie gdzieś pomiędzy zerem a jedynką, ze znakiem plusa lub minusa.
Ważnym elementem oceny jest głębia, wyrażona w liczbie półruchów (ang. ply). Głębię wyraża jedna lub dwie liczby. Na przykład głębia 16 oznacza, że silnik ocenił wszystkie pozycje w branych pod uwagę wariantach następujące po ośmiu posunięciach każdej ze stron. Głębia 16/44 oznacza, że silnik ocenił wszystkie pozycje w branych pod uwagę wariantach następujące po ośmiu posunięciach każdej ze stron, ale w przynajmniej jednym wariancie, najpewniej wymuszonym, doszedł do 22 pełnych ruchów. Ze względu na selektywny charakter analizy ten parametr nie jest porównywalny między silnikami, a nawet różnymi wersjami tego samego silnika.
Mniej ważna, bo niewiele mówiąca o głębi, jest liczba sprawdzonych pozycji, bez znaczenia jest, jako wartość względna, czas użyty do namysłu. W oderwaniu od czasu do namysłu niewiele mówi też szybkość liczenia wariantów, wyrażona w pozycjach na sekundę (ang. nodes per second). Z tym ostatnim parametrem jest też związany następujący problem: na procesorach wielordzeniowych lub w konfiguracjach wieloprocesorowych, gdy zamiast wątków działają oddzielne procesy, wskazania programu mogą być po prostu błędne.

Panel silnika
Na obrazku 10... Qh4 to analizowane posunięcie. 3/46 oznacza, że jest to trzecie według bieżącej oceny posunięcie z 46 dostępnych. 0.11 to bieżąca ocena najlepszego znalezionego ruchu. Depth=14/35oznacza, że silnik w branych pod uwagę posunięciach osiągnął głębię 14 półruchów, przy czym w przynajmniej jednym wariancie doszedł do 35 półruchów. 1638 kN/s to szybkość liczenia pozycji w tysiącach na sekundę. 
Zanim przejdę do przykładów tego, jak silnik błędnie ocenia pozycję lub nie umie jej poprawnie rozegrać, przykład oceny nie tyle błędnej, co zupełnie różnej zależnie od silnika. To odpowiedź na pytanie, czy istnieje coś takiego jak obiektywna ocena i czy komputer jest do niej zdolny.

Topałow - Kramnik, turniej Corus 2008 w Wijk aan Zee

(ruch czarnych)
6rr/p1kn1Q2/2pNp2p/3nP1p1/P1P3q1/1p4B1/5PPP/2R2RK1 b - - 0 1 

Po kilku minutach liczenia tej niezwykle „dzikiej” pozycji na procesorze Core 2 Duo Fritz 10 podaje wynik 2,59 dla białych, a Rybka 2.3.2.a – 0,98. Oba silniki liczyły ten sam pierwszy wariant, w którym białe uzyskują przewagę materialną, z taką samą głębią 17 półruchów. Ta wyjątkowo duża, jak na grę środkową, różnica wynikła zapewne zarówno z ogólnie bardziej ostrożnego podejścia Rybki, jak i różnej oceny czynników pozycyjnych (inicjatywa, bezpieczeństwo króla, zagrożenie ze strony wolnego piona itp.).
Tak więc dwa statystycznie równie mocne silniki na takim samym (lub tym samym) sprzęcie wcale nie muszą osiągać remisu za remisem, program może nawet przegrać sam z sobą. Do różnic w ocenie pozycji i w stylu gry dochodzą ustawienia parametrów silnika i wpływ książek debiutowych, zwłaszcza że w takiej książce z reguły przez większą część debiutu po każdym posunięciu jest kilka odpowiedzi, które silnik może zagrać, różniących się jedynie szansą (wyrażoną w procentach) na wylosowanie.

Dające się zmienić parametry Fritza

Brak komentarzy:

Prześlij komentarz