Pytanie:
Jaki jest najgorszy ruch otwierający w Chess960 dla białych?
kevin jumbo
2020-01-28 09:45:32 UTC
view on stackexchange narkive permalink

Czy jest pierwsze posunięcie białych w Chess960, w którym białe mogą natychmiast zrzucić figurę lub stracić znaczną przewagę (powiedzmy -2.0)?

Ponieważ wariant 960 jest nazwany na podstawie liczby położeń początkowych, na które pozwala, trudno jest odpowiedzieć na najgorszy ruch otwierający spośród tych 960 położeń początkowych.
@djnavas: Zakładam, że ma na myśli branie pod uwagę wszystkich możliwych pozycji otwarcia, co jest najgorszym ruchem białych w nich. To trudne, ale pytania mogą być trudne.
Cztery odpowiedzi:
#1
+38
Ellie
2020-01-28 16:43:31 UTC
view on stackexchange narkive permalink

Wymaga to trochę skryptów, więc oto moja pierwsza, pospieszna próba;)

Oto szybki sposób na samodzielne wyszukanie w pythonie, używając stockfish 10 i tylko pakiet python-chess . Wszystkie programy typu open source i wolne!

Krótko, co zrobi skrypt:

  • Rozważ wszystkie 960 pozycji, pojedynczo
  • Dla każdej pozycji skanuje wszystkie legalne ruchy białych
  • Dla każdego ruchu ocenia pozycję z czasem rozważanym przez silnik podany przez użytkownika (np. 1 sekunda)
  • Jeśli ocena jest poniżej podanego progu (np. -2.0 ), to pokazuje planszę, FEN, ruch i ocenę.
  • Na koniec wszystko zostanie zapisane w pliku tekstowym, więc nie musisz logować wydruków w terminalu.

Znalezione przykłady uruchomione skrypt dla pierwszych 5 pozycji w szachach 960

Pokażmy to dla pierwszych pozycji 5 szachowych 960, gdzie:

  • Próg oceny jest ustawiony na -1,0
  • Czas rozważania wynosi 1,0 sekundy na ruch.

Oto znalezione przypadki: (poniżej są zapisane wyniki w pliku tekstowym, pierwsza kolumna to szachy 960 pozycja FEN, druga kolumna to posunięcie, którego ocena spadła poniżej progu, a trzecia kolumna to odpowiednia ocena)

  bbqnnrkr / pppppppp / 8/8/8/8 / PPPPPPPP / BBQNNRKR w KQkq - 0 1 g4 -2.19bqnbnrkr / pppppppp / 8/8/8/8 / PPPPPPPP / BQNBNRKR w KQkb - 0 1 g4-1,5 pppppppp / 8/8/8/8 / PPPPPPPP / BQNNRBKR w KQkq - 0 1 g4 -1.66qbbnnrkr / pppppppp / 8/8/8/8 / PPPPPPPP / QBBNNRKR w KQkq - 0 1 g4 -1,35  
 

1.g4 wydaje się być zwykle th Najgorszy ruch wśród pierwszych 5 setów.

Nie jest to takie zaskakujące, ponieważ we wszystkich dotychczas rozważanych szachowych pozycjach 960, a mianowicie w pierwszych 5, król stoi na zwykłej stronie królewskiej (a konkretnie na g1 ).

Zatem 1.g4 jest silnie osłabiającym posunięciem z królem na g1.

Oto pozycje ( zaktualizowane , 3 więcej przykładów znalezionych po dłuższym uruchomieniu skryptu ):

eval = -2.19 eval = -1,51 eval = -1,66 eval = -1,35 eval = -2,8 eval = -2.07 eval = -2.12


Kontynuuj wyszukiwanie samodzielnie, używając skryptu

Przejrzenie wszystkich 960 pozycji zajmuje dużo czasu i zasobów obliczeniowych. Więc pozostawiam to tobie i innym, jeśli są zainteresowani, uruchomienie skryptu przez dłuższy czas, przeskanowanie wszystkich 960 pozycji i gra z progiem oceny zainteresowania. Aby zrobić to samodzielnie, oto skrypt w języku Python, wykorzystujący Python 3.7.4 , python-chess 0.30.1 i Stockfish 10 ( umieść plik silnika w tym samym folderze co skrypt):

  import chessimport chess.engineimport osimport sysarguments = sys.argvpondertime = float (arguments [1]) evalthreshold = float (argumenty [2]) # tutaj zakładamy, że plik silnika znajduje się w tym samym folderze co nasz skrypt pythona scriptpath = os.getcwd () # Teraz upewnij się, że podajesz poprawną lokalizację pliku silnika sztokfisza # ... w następnym wierszu, poprawnie definiując pathengine = chess .engine.SimpleEngine.popen_uci (ścieżka + '/' + 'sztokfisz-10-64') lsfens = [] lsmoves = [] lsevals = [] numberofpos = 960 for i in range (numberofpos): board = chess.Board.from_chess960_pos ( i) print ('Trwa analizowanie pozycji poniżej') print (board) print ('--------') for el in board.legal_moves: info = engine.analyse (board, chess.engine.Limit ( time = pondertime), root_moves = [el]) t = str (info ["sc ore "]) if t.startswith ('#'): print (str (board.san (el))," eval = mate in ", t) else: if round (int (t) /100.,2) Próg wartości <:
print ('Indeks pozycji początkowej 960:', board.chess960_pos ()) print ('Pozycja FEN:', board.fen ()) print (str (board.san (el)), "eval =", round (int (t) /100.,2)) lsfens.append (board.fen ()) lsmoves.append (str (board.san (el))) lsevals.append (str (round (int (t) / 100., 2))) print ('--------------------------------------') engine.quit () with open ('FoundPositions_Pondertime _' + str (pondertime) + '_ threshold _' + str (evalthreshold) + '. txt', 'w') as file: for i in range (len (lsfens)): file.write ( lsfens [i] + '\ t' + lsmoves [i] + '\ t' + lsevals [i] + '\ n')  

Jak uruchomić skrypt:

  1. Kopiuj wklej kod do pliku tekstowego i zapisz go pod nazwą taką jak 960evaluator.py
  2. Upewnij się, że masz zainstalowany python3, podobnie dla moduł python-chess (zobacz tutaj informacje o instalacji) i pobrałeś plik binarny stockfish dla swojego systemu operacyjnego.
  3. Umieść plik silnika i scenariusz w tym samym filmie der i otwórz terminal w tym folderze
  4. Uruchom skrypt za pomocą polecenia python 960evaluator.py 1.0-2.0
  5. Zwróć uwagę na pierwszy argument podajesz po nazwie skryptu czas rozważania na ruch w sekundach. Im wyższa wartość czasu, tym dokładniejsza ocena.
  6. Drugi argument to próg oceny : to znaczy wszystkie pozycje z pierwszym ruchem oceny poniżej podanej wartości (w tym przykładzie -2.0 ) zostaną wydrukowane w terminalu i zapisane na końcu (możesz zapisać podczas pracy, abyś mógł zawiesić skrypt bez utraty dotychczas znalezionych przypadków ).
  7. Ponownie, znalezione przypadki zostaną wydrukowane w terminalu w miarę ich znalezienia, ale także zapisane w pliku tekstowym umieszczonym w tym samym folderze co skrypt.

Wydruki z terminala będą wyglądać następująco:

  Aktualnie analizujemy pozycję poniżej b bqnnrk rp pppppp p. . . . . . . .
. . . . . . . ... . . . . . ... . . . . . .PPPPPPP PB BQNNRK R -------- Indeks pozycji początkowej 960: 0 Pozycja FEN: bbqnnrkr / pppppppp / 8/8/8/8 / PPPPPPPP / BBQNNRKR w KQkq - 0 1g4 eval = -2,19  

Miłego skanowania, ale rób to ostrożnie: uruchamianie silników szachowych przez długi czas na komputerach osobistych jest trochę ryzykowne, ponieważ szybko się nagrzewa!

Czy Stockfish 10 wie o zasadach roszady w szachach 960 i czy nazywasz to w taki sposób, że wie, że to jest 960?
@RemcoGerlich Dobre pytanie! Myślę, że ocena dotyczy tylko samej pozycji, a więc bez znajomości zasad roszady w szachach960. Niemniej jednak, dla celów wszystkich prezentowanych pozycji, roszada robi znikomą różnicę, biorąc pod uwagę, że krótkie zamki trzymają króla na skrzydle królewskim (więc nadal cierpi z powodu osłabienia jasnych kwadratów wywołanych przez `g4 '), podczas gdy długie zamki są o wiele za długie, aby być istotnym. Ale dla pozostałych szachowych 960 pozycji może to mieć wpływ na wynik. Powinna być łatwa do ręcznej oceny tych przypadków po zakończeniu wyszukiwania.
„Długie uruchamianie silników szachowych na komputerach osobistych jest nieco ryzykowne, ponieważ szybko się nagrzewa!” - nie powinno to być ryzykowne dla maszyny, chyba że jest zatkane kurzem. Na laptopie można * przypuszczalnie * poparzyć sobie ręce. Na komputerze stacjonarnym nie ma żadnego problemu.
@user253751 to tylko słowo ostrzeżenia, ponieważ (niedoświadczony) użytkownik może spędzić dużo czasu na zastanawianiu się i pozostawić wyszukiwanie włączone (co może zająć godziny) z laptopem leżącym na powierzchni (takiej jak dywan), która powoduje niewystarczającą wentylację.
„Czas zastanowienia się nad silnikiem podany przez użytkownika (np. 1 sekunda)”, „Przejrzenie wszystkich 960 pozycji zajmuje dużo czasu i zasobów obliczeniowych”. ;)
@JollyJoker i na pozycję musi przeskanować około 20 rozgałęzień (łącznie legalne ruchy na pozycję), więc jest to 1 sekunda na * ruch *, a liczba ruchów początkowych różni się w zależności od 960 pozycji. Powiedzmy 20 ruchów początkowych na pozycję, a następnie mamy 20 sekund na pozycję, więc około 6 godzin pracy dla wszystkich 960 przy 1 sekundzie czasu rozmyślania (który jest już dość niski na ruch, obniżając niezawodność oceny drastycznie cierpi).
@Phonon Ach, brakowało współczynnika 20. Cóż, zawsze możesz skrócić czas rozważania poniżej 1s.
Jaka jest uzyskana głębokość po 1 sekundzie?
@Mast Około 20 warstw. Wszystkie te dodatkowe szczegóły są przechowywane w „info” (patrz kod). Na przykład, aby zobaczyć osiągniętą głębokość i liczbę przeszukiwanych węzłów: `print (" głębokość i węzły ", info [" głębokość "], info [" węzły "])`
Zmodyfikowałem nieco moją kopię skryptu, aby wypisał najgorszy ruch znaleziony pod koniec wyszukiwania i uruchomiłem go. Do zobaczenia za sześć godzin…
Obawiam się, że ten eksperyment mówi nam tylko, że funkcja oceny Sztokfisza mocno karze dziurę przed królem.
@FedericoPoloni np. w `BBQRNNKR`:` g4` otwiera przekątną dla gońca `a8`, goniec` b8` spoglądający na skrzydło królewskie staje się silniejszy, ponieważ twierdza z `g3` nie może już zostać założona, hetman na` c8` może wycelować w niezabezpieczony pionek „g4” w jednym ruchu, będąc jednocześnie w stanie stworzyć śmiertelnie parującą baterię za pomocą „b5-Qb7”. Skoczkowie są umieszczeni centralnie, co oznacza, że ​​pomimo ich powolności, mogą dotrzeć do białego królestwa w 2 ruchach, zaczynając od `Sf6-Sg6, wykorzystując dołki` f4-h4`. Wreszcie, `g4` działa jak hak, który może być wykorzystany do otwarcia plików (np. Z` h5`) dla wież.
@Phonon Zakładam, że sztokfisz działa wielowątkowo, gdy zostanie wywołany w ten sposób? W przeciwnym razie istnieje oczywista optymalizacja, która powinna znacznie skrócić czas. Jeśli tak, to czas powinien być różny o mniej więcej liczbę procesorów, z wyjątkiem sytuacji, gdy jesteśmy związani z pamięcią.
@Voo Na moim komputerze z systemem Linux działa jednowątkowo. Ale nawet jeśli byłby wielowątkowy, zmieniłoby to efektywną głębokość wyszukiwania, ale nie czas wyszukiwania.
@Chromatix Pomysł polegałby na wykorzystaniu wielu procesów do równoległej analizy początkowych stanów płyty. Nadal spędzałbyś ten sam czas na jednym z 960 stanów tablicy, ale mógłbyś analizować kilka na raz. Zależy, w jakich zasobach jesteśmy ograniczeni, ale spodziewałbym się po tym niezłego przyspieszenia.
@Voo Można to zrobić w ten sposób, ale nie za pomocą tego skryptu. Musisz uruchomić wiele wystąpień wątków implementujących reklamy w wyszukiwarce; skrypt uruchamia tylko jeden.
@Chromatix Tak, jasne, dlatego mówię: „jeśli jest jednowątkowy, nastąpiłaby oczywista optymalizacja”. Nie chciałbyś jednak używać wątków w Pythonie, zdecydowanie chciałbyś mieć tutaj moduł wieloprocesorowy.
Stockfish jest zdecydowanie zdolny do gry w FRC, ale może być konieczne włączenie ustawienia FRC. Ponadto Stockfish 11 jest już dostępny, jeśli nie masz jeszcze aktualizacji, możesz chcieć (jest bezpłatny).
#2
+15
Chromatix
2020-01-29 10:38:42 UTC
view on stackexchange narkive permalink

Używając skryptu Python @ Phonon, byłem w stanie określić, że najgorszym ruchem jest 1. g4 ?? z początkowej konfiguracji BBQRNNKR lub 1. b4 ?? z jego lustrzanego odbicia.

Wynik daje -2,5 w ciągu jednej sekundy wyszukiwania Stockfish. Niezbyt drobna figura, ale nadal znaczny handicap, z którego można wyleczyć.

Dlaczego ta pozycja jest tak potężna dla przeciwnika? Czarna hetman jest w stanie zagrozić wysuniętemu pionowi, gdy tylko jego droga zostanie odblokowana przez 1. … D5 ; tam, białe są w szachu po ruchu 2! Następnie po 3. … Hxf2 Czarne są w stanie rozwidlić kilka bierek białych na tylnym szeregu, prawdopodobnie włączając w to inną wieżę.

Dodatkowo czarne gońce mają podobnie bezpośrednie linie do białej wieży królewskiej i jej pionka. Białe mogą się bronić, ale w ten sposób unieruchamiają kilka figur i przez to tracą dużo tempa rozwoju. Nie ma już też odpowiedniej struktury pionka przed swoim królem.

Powyższe nie jest nawet preferowaną linią Sztokfisza dla czarnych:

  1. … H52. gxh5 b63. Ng3 Ne64. Sg2 c5  

… po czym czarne mają wieżę na półotwartej linii, dwóch gońców wskazujących na króla białych i kilka bierków (które, zgodnie z przewidywaniami, są przyszpilone na pozycjach obronnych), oraz całkiem akceptowalną strukturę pionka i kontrolę nad środkiem. White nie ma żadnej z tych rzeczy.

Wydłużenie czasu analizy do 5 sekund, ocena tej pozycji i jej lustrzanego odbicia pogłębiają się do -2,79 i -2,81 kod> odpowiednio. Ich najbliżsi rywale mają na tym poziomie około -2,54 .

Świetna robota! `BBQRNNKR` to prawdopodobnie najbardziej harmonijny układ pionków do ataku na królestwie, a` g4` białych jeszcze * dalej * zachęca do bitwy królewskiej, katastrofy pozycyjnej!
Nie jest dla mnie jasne, jaka ma być wariacja po 1.g4 d5, która prowadzi do 3 ... Hxf2.
@Evargalo To moja amatorska analiza, która zakłada `` 2. … Hxg4` lub coś bardzo podobnego. Oczywiście sztokfisz radzi sobie lepiej.
#3
+6
PhishMaster
2020-01-28 17:02:12 UTC
view on stackexchange narkive permalink

Powiedziałeś „pomylisz figurę” lub „stracisz znaczącą przewagę”, więc co powiesz na mate, skoro to jest jeszcze gorsze? Mogłem znaleźć tylko kilka, ale oto one.

Ponieważ interakcja między figurami wymaga co najmniej dwóch ruchów, zamierzam zacząć od tego i użyć logiki, ale mógłbym wciąż znajduje się tylko kilka.

Po pierwsze, musisz pamiętać, że tradycyjne szachy mogą i były jedną z pozycji wyjściowych w rzeczywistych rozgrywkach, więc ten okropny początek przychodzi na myśl jako pierwszy logiczne miejsce startu.

  [FEN ""] 1. g4 e6 2. f4 Hh4 #  

Stąd wiemy, że NAJGORSZE otwarcia muszą być matem białych w dwóch ruchach (nadal potrzeba trzech ruchów, aby białe matowały czarne). Oczywiście możesz mieć słynnego mata z dwoma ruchami, który również znajduje się po drugiej stronie.

Odtąd użyję tylko zdjęć, ponieważ nie jestem pewien, jak działa PGN / FEN w Chess 960.

enter image description here

Oto kolejny mat z królową.

enter image description here

Oto kolejny podobny. Mógłbym po prostu przenieść to na plik, ale nie będę już więcej dodawać tego typu z królem otoczonym wieżami, odkąd wpadłeś na pomysł.

enter image description here

Pytanie * tytuł * mówi „najgorszy ruch otwierający”, chociaż samo pytanie można zinterpretować nieco bardziej ogólnie. Niezależnie od jakości ruchu otwierającego, w tych przykładach * drugi * ruch wydaje się być błędem, ponieważ istnieją oczywiste drugie posunięcia białych, które zbiliby czarnego hetmana, gdyby czarne zagrały check.
@alephzero, Zdaję sobie sprawę, ale kiedy dodał do pytania „biały może natychmiast popełnić błąd” i jest jasne, że jest to niemożliwe w „ruchu otwierającym”, pomyślałem, że otworzył on drzwi do wyrażenia „ruchy otwarcia”, a nie tylko „ruch otwierający”. W czasie, gdy kompilowałem swoją odpowiedź, Phonon jeszcze nie opublikował, a ja nie chciałem tracić ponad 20 minut pracy. Pomyślałem też, że w tym czasie może nie być żadnych dodatkowych odpowiedzi, więc że moje może być lepsze niż nic. Głosowałem za jego odpowiedzią.
#4
-5
edwina oliver
2020-01-28 22:12:08 UTC
view on stackexchange narkive permalink

NIE.

Pionki wciąż znajdują się przed figurami. Zmieniono tylko ich rozmieszczenie. Żaden ruch pionka nie będzie tak zły, jak prosiłeś.

Istnieją aspekty pozycyjne, bardzo ważne podczas otwierania, które wymagają więcej niż 1-warstwowej analizy materiału.


To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 4.0, w ramach której jest rozpowszechniana.
Loading...