Yixin od A do Z

Yixin od A do Z

Povinná četba pro všechny milovníky piškvorkových analýz! Brněnský talentovaný hráč a vývojář piškvorkového brainu XOXO Jakub "3ifndef" Horák pro Vás sepsal neuvěřitelně podrobný návod k Yixinovi včetně popisu funkcí, o jejichž existenci většina z Vás dosud pravděpodobně vůbec nevěděla. Věříme, že díky lepšímu porozumění fungování Yixina a následnému osvojení si řady užitečných příkazů se Vaše piškvorkové analyzování stane nejen kvalitnější, ale i zábavnější. Enjoy! ;-)

Úvod

V tomto článku bych chtěl rozebrat nejen základní funkce programu Yixin, ale i některé pokročilejší, které jsou velmi užitečné, ale většina uživatelů je nezná. Na začátku bych chtěl podotknout, že ne vždy vám vše musí fungovat tak, jak je popsáno zde, jelikož program Yixin se občas chová velmi zvláštně. V takovém případě často pomůže restart Yixinu, v horším případě pak reinstalace. Všechny zde uvedené informace jsou založené pouze na pozorování chování Yixinu, ne na tom, jak Yixin doopravdy funguje (což samozřejmě nikdo kromě autora neví). Proto se může stát, že se v článku objeví chyba.

O Yixinu

Yixin je počítačový program pro hraní nebo analyzování piškvorek a renju. Již od roku 2011 se účastní soutěže počítačových programů v piškvorkách – Gomocupu. Od roku 2012 až do současnosti tuto soutěž suverénně vyhrává. Pouze v posledním ročníku (2018) ho nečekaně porazil český program Embryo, ale zatím pouze v kategorii rychlých her, což není pro analyzování až tak podstatné, nicméně věříme, že v následujícím ročníku se podaří Yixin porazit i v ostatních kategoriích. Autorem Yixina je čínský student Kai Sun.

Instalace Yixinu

Yixin můžete stáhnout z jeho oficiálních stránek ve dvou podobách. Buď jako tzv. brain, který se účastní soutěže Gomocup, nebo jako GUI verzi. Brain je konzolová aplikace, a proto k jeho spuštění budete potřebovat tzv. manažer, který můžete stáhnout z oficiálních stránek Gomocupu (www.gomocup.org). Manažer s brainem mezi sebou komunikují pomocí příkazů. Seznam oficiálních příkazů a jejich význam lze najít na stránkách Gomocupu, budeme se jim částečně věnovat později. Výhodou brainu je, že k jeho instalaci nepotřebujete administrátorská práva. Ovšem tento brain neumí nic jiného než hrát tahy, a proto je k účelům analýzy lepší použít GUI verzi. GUI verze obsahuje dva spustitelné soubory – Yixin.exe (GUI) a engine.exe (brain). Samotné GUI je vlastně také vylepšený manažer, který komunikuje s brainem, ale tento brain není ten, který se účastní Gomocupu, ale speciálně upravený pro účely analýzy (umí i jiné příkazy než oficiální z Gomocupu). V tomto článku se budu nadále věnovat pouze GUI verzi. Pokud neurčíte jinak, Yixin by se vám měl nainstalovat do C:\Yixin. Souborům v této složce se budeme později také věnovat. Pokud byste chtěli Yixin odinstalovat, stačí spustit soubor unins000.exe a poté celou složku Yixin smazat.

Prohledávání Yixinu

V této části si ukážeme způsoby prohledávání tahů v Yixinu. Spuštění jednotlivých způsobů je poté popsáno níže.

Při prohledávání můžeme v Yixinu nastavit dvě věci:

  • Metoda – udává cíl prohledávání, každá metoda vrací vždy nejlepší tah k dosažení onoho cíle a ohodnocení tohoto tahu (jak blízko k cíli jsme, v rozsahu od -10 000 – cíl je nedosažitelný, pokud soupeř neudělá chybu – do 10 000 – nalezen postup k dosažení cíle), Yixin umí tři:
    • Global Search – standardní způsob, hledá nejlepší tah a ohodnocení, jak je pozice pro daného hráče dobrá (-10 000 = proherní, 10 000 = výherní)
    • VCT Search – hledá pouze výhru přes VCT, ohodnocení zde neudává, jak je pozice pro daného hráče dobrá, ale jak je pravděpodobné, že bude mít výhru přes VCT (-10 000 = žádné VCT zde není, 10 000 = VCT nalezeno), pokud je ohodnocení -10 000, neznamená to, že je pozice prohraná, pouze hráč nemá VCT (pozice může být klidně pro daného hráče lepší)
    • VC2 Search – hledá pouze výhru přes VC2 (VC2 je výhra složitější než VCT, obsahuje poziční tahy, ale nemůže obsahovat pauzu, tzn. pokud má soupeř možnost si po mém pozičním tahu vytvořit trojku, žádné VC2 zde není ani kdyby tato trojka byla úplně zbytečná a soupeř žádnou další možnost útoku po jejím zabránění neměl), ohodnocení je podobné jako u VCT (-10 000 = žádné VC2, 10 000 = VC2 nalezeno)
  • Styl
    • Běžný – hledá nejlepší tah, přímo se použije daná metoda a zahraje se tah, který vrátí
    • Searchdefend – postupně se projdou všechny možné tahy, které lze v dané pozici zahrát, tento tah se zkusí zahrát, vzniklá pozice se prohledá danou metodou a pokud je ohodnocení 10 000 (z pohledu soupeře, tj. -10 000 z pohledu hráče pro kterého se dělá Searchdefend), označí se tento tah na ploše po ukončení prohledávání (během prohledávání se plocha neaktualizuje) písmenem L (tzn. ve výsledku se písmenem L označí všechny tahy, po kterých následuje soupeřova výhra danou metodou, výsledkem není jeden nejlepší tah!)

Standardní cestou jsou dostupné pouze možnosti běžného stylu a u Searchdefend pouze metoda Global Search. My se ale dále v článku podíváme i na to, jak spustit zbylé dvě možnosti (tj. jak zobrazit všechny tahy, po kterých soupeř vyhraje přes VCT nebo VC2).

Popis jednotlivých částí Yixinu

V této části si popíšeme jednotlivé části Yixinu. Na obrázku níže můžete vidět rozložení po instalaci Yixinu. Toto rozložení se dá změnit přepsáním některých souborů, viz dále.

Yixin

Menu

Nyní se podíváme, co znamenají jednotlivé položky v menu.

Game

  • New – vyčistí hrací plochu (databáze zůstane, odpovídá příkazu clear)
  • Load – načte uloženou pozici (NE databázi), soubor .sav
  • Save – uloží pozici (NE databázi), soubor .sav
  • Rule – umožňuje nastavit pravidlo, se kterým se bude hrát
    • Standard Gomoku – přesah nevyhrává (doporučuji použít)
    • Freestyle Gomoku – přesah vyhrává
    • Swap2 – umožňuje hrát pravidlem Swap2, nicméně nedoporučuji ho používat, jelikož swapy Yixinu jsou velmi špatné (sám hned v dalším tahu zjistí, že prohrál)
  • Board Size – umožňuje nastavit velikost plochy, podporuje i obdélník
  • Use Openbook – pokud je zaškrtnuté, Yixin bude prvních několik tahů hrát z knihovny
  • Use Database – pokud je zaškrtnuté, Yixin bude ukládat tahy do databáze, pro analyzování by mělo být zaškrtnuté
  • Quit – ukončí Yixin

Players

  • Computer Plays Black – pokud je zaškrtnuté, Yixin bude hrát za černé
  • Computer Plays White – pokud je zaškrtnuté, Yixin bude hrát za bílé (způsob prohledání, který se použije je možné nastavit, viz dále)
  • Check Timeout – pokud je zaškrtnuté, Yixin kontroluje čas pro člověka (funguje pouze někdy)
  • Settings – nastavení hráčů je rozděleno do tří záložek:
    • Level – síla hráče (1 dan = nejslabší, 9 dan = nejsilnější), při analyzování doporučuji použít Unlimited Time a prohledávání zastavit až uznáte za vhodné, při použití vlastního nastavení se prohledávání zastaví, pokud je alespoň jedna z položek překročena
      • Turn time – maximální čas na tah
      • Match time – maximální čas na partii
      • Increment – přidaný čas za tah
      • Max node number – maximální počet prohledaných pozic (v miliónech)
      • Max depth – maximální hloubka (na kolik tahů dopředu Yixin prohledává)
    • Style – styl hry
      • První polovina určuje metodu prohledávání, která se použije, pokud je na tahu barva, u které je zaškrtnuto Computer Plays + barva (viz výše)
      • Druhá polovina určuje opatrnost (Rash = riskantní, Cautious = opatrný, doporučená hodnota je 1)
    • Resource – vybavení vašeho počítače
      • Number of Threads = počet vláken – vhodné nastavit na o jedna méně než počet vláken vašeho počítače (maximálně však 8), aby jedno vlákno zbylo na ostatní aplikace běžící na vašem počítači a nedošlo tak k vzájemnému rušení
      • Split Depth = minimální hloubka, při které se práce rozdělí mezi dvě vlákna – je nutno vyladit na vašem počítači (pokud je nastaveno na málo, hodně času se spotřebuje na přerozdělování práce mezi vlákna, naopak pokud je nastaveno na hodně, může se stát, že některé vlákno nebude nic dělat)
      • Hash Size = velikost tabulky, do které se ukládají již prohledané pozice, aby se nemusely prohledávat vícekrát – dobré nastavit na co nejvíce, ale tak, aby vám zbylo alespoň 20 % paměti RAM volné

View

  • Numeration, Log, Analysis – pokud je zaškrtnuté daná část se zobrazí (viz obrázek)
  • Forbidden Move – pokud je zaškrtnuté, zobrazí se zakázané tahy (pouze pro Renju)
  • Language – nastavuje jazyk Yixinu (anglicky nebo čínsky, lze vytvořit i vlastní jazyk, viz dále)

Toolbar

Dále se podíváme, co znamenají položky v toolbaru (liště vlevo). Do tohoto toolbaru můžete přidávat i svoje vlastní položky, viz sekce příkazy.

  • Undo All – vrátí všechny tahy zpět
  • Undo – vrátí jeden tah zpět
  • Redo – znovu zobrazí jeden tah
  • Redo All – znovu zobrazí všechny tahy
  • Stop – zastaví přemýšlení
  • Play – zahájí běžné prohledávání metodou Global Search
  • VCT – zahájí běžné prohledávání metodou VCT Search
  • VC2 – zahájí běžné prohledávání metodou VC2 Search
  • Defend – zahájí Searchdefend metodou Global Search
  • Save – uloží databázi
  • Load – načte databázi

Značky na ploše

Během prohledávání se na ploše zobrazují puntíky různých barev, zde je jejich význam:

  • Červený – aktuálně nejlepší tah
  • Oranžový – právě prohledávaný tah
  • Žlutý – již prohledaný tah v aktuální hloubce
  • Bílý – tah s ohodnocením -10 000 (u Global Search to znamená proherní, u VCT Search nebo VC2 Search to znamená, že tento tah nevede k výhře přes VCT, resp. VC2)
  • Světle modrý – zablokovaný tah (viz příkaz block)

Dále po ukončení prohledávání (ne v průběhu) se výherní tahy označí písmenem W a proherní tahy písmenem L. Toto někdy nemusí fungovat úplně správně, viz ke konci článku.

Logovací okno

Během prohledávání se vypisují do logovacího okna dodatečné informace. (Notace {písmeno} značí hodnotu, kterou Yixin vypisuje.)

  • DEPTH:{A}-{B} VAL:{C} TIME:{D}MS NODE:{E}M [{F}]
    • Vypisuje se po každé dokončené hloubce
    • A – minimální hloubka (každý tah je prohledaný alespoň do této hloubky)
    • B – maximální hloubka (alespoň jeden tah je prohledaný do této hloubky)
    • C – ohodnocení pozice (z pohledu hráče, který je na tahu)
    • D – čas spotřebovaný k prohledání v milisekundách
    • E – počet prohledaných uzlů (pozic) v milionech
    • F – souřadnice nejlepšího tahu
  • SPEED: {A} | EVALUATION: {B}
    • Vypisuje se po ukončení prohledávání
    • A – rychlost v tisících uzlech za sekundu
    • B – ohodnocení pozice (z pohledu hráče, který je na tahu)
  • BESTLINE: [...][...][...]…
    • Vypisuje se po ukončení prohledávání
    • Posloupnost nejlepších tahů

Příkazy

Nyní přijde to nejzajímavější. Příkazy se zadávají do řádku v pravé dolní části okna (viz obrázek). Tyto příkazy nejsou ty, které si mezi sebou posílají manažer s brainem! Tyto příkazy zpracovává GUI, které posílá odpovídající příkazy do brainu. Komunikovat přímo s brainem lze pomocí příkazu command, ke kterému se také dostaneme.

  • Help – zobrazí seznam všech dostupných příkazů
  • Clear – smaže plochu (ale v databázi všechno zůstane, nevidím rozdíl mezi undo all)
  • Rotate [90, 180, 270] – otočí plochu o požadovaný počet stupňů
  • Flip [/, \, -, |] – překlopí plochu podle specifikované osy (zpětné lomeno se na české klávesnice píše pomocí altgr(pravý alt)+q, ta svislá čára pomocí altgr+w)
  • Move [^, v, <, >] – posune plochu požadovaným směrem (na české klávesnici stříška altgr+š, menší než altgr+<, větší než altgr+>)
  • Getpos – vrátí řetězec popisující plochu (řetězec se skládá ze souřadnic kamenů, které tvoří danou pozici, v pořadí, v jakém byly zahrány, např. h8g8g9)
  • Putpos – umožňuje vytvořit pozici na ploše podle řetězce popsaného u getpos
  • Block – blokuje zadané souřadnice (při prohledávání budou vynechány a označeny světle modrým puntíkem)
  • Block undo – odblokuje zadané zablokované souřadnice
  • Block reset – odblokuje všechny zablokované souřadnice
  • Block compare – zablokuje všechny souřadnice kromě zadaných (slouží pro porovnání zadaných tahů, proto compare)
  • Block autoreset [on, off] – pokud je nastaveno na on, zablokované souřadnice se automaticky odblokují po ukončení prohledávání
  • Blockpath xxx – všechny příkazy začínající na blockpath se chovají velmi zvláštně, proto je nedoporučuji používat
  • Hash clear – smaže hash tabulku
  • Hash autoclear [on, off] – pokud je on, hash tabulka se automaticky smaže na začátku prohledávání
  • Hash dump – uloží hash tabulku do zadaného souboru (což po opětovném načtení umožní lepší pokračování v prohledávání)
  • Hash load – načte uloženou hash tabulku ze zadaného souboru
  • Bestline – opět nechápu využití tohoto příkazu
  • Balance1 – hledá tah, který ohodnocení pozice pomocí Global Search co nejvíce přiblíží zadané hodnotě (pokud nezadáte žádnou hodnotu, bere se hodnota 0) – vhodné pro vytváření vyrovnaných swapů
  • Balance2 – podobné jako balance1 s tím rozdílem, že nehledá jeden tah, ale posloupnost dvou tahů (jednoho černého a jednoho bílého)
  • Nbest – hledá zadaný počet nejlepších tahů (ne posloupnost tahů, z těchto tahů lze zahrát jen jeden), tyto tahy vypisuje do logovacího okna
  • Search from – nastaví od jaké hloubky se má prohledávat (nezahájí prohledávání, slouží pouze jako nastavení, platí až do změnění)
  • Toolbar add – přidá na toolbar nové tlačítko, po odenterování příkazu vyskočí okénko, které obsahuje následující části
    • Icon – ikona tlačítka
    • Text – index textu tlačítka (samotný text se pak doplní podle zvoleného jazyka, pro napsání vlastního textu je nutné zvolit index, který ještě neexistuje, a pak tento index přidat do jazykového souboru, viz dále)
    • Command – příkazy, které se mají vykonat
  • Toolbar edit – umožňuje změnit funkci číslem zadaného tlačítka na toolbaru (tlačítka jsou číslována od shora dolů od jedné), vyskočí stejné okénko jako u toolbar add
  • Toolbar remove – odebere poslední přidané tlačítko (bohužel pro odebrání jiného než posledního tlačítka je nutné napřed odebrat všechna tlačítka za ním)
  • Key add – nastaví funkci určité kombinaci stisknutých kláves
    • Hotkey – klávesy, kterých se funkce týká
    • Command – příkazy, které se mají vykonat
  • Key list – zobrazí použité klávesové zkratky s jejich číslem (toto číslo je pak potřebné u key edit)v
  • Key edit – změní funkci číslem zadané klávesové zkratce (toto číslo získáte pomocí key list)
  • Thinking start – zahajuje přemýšlení nastavenou metodou (Global Search/VCT Search/VC2 Search, nastavení metody popsáno dále)
  • Thinking stop – zastavuje přemýšlení, pokud byl použit běžný styl, zahraje se nejlepší tah
  • Draw – navrhuje remízu, Yixin odpoví, jestli remízu přijímá či ne
  • Resign – vzdává partii (ve výsledku se nic nestane)
  • Undo one, undo all, redo one, redo all – odpovídá tlačítkům na toolbaru (viz výše)
  • Searchdefend – zahajuje Searchdefend prohledávání nastavenou metodou (podobně jako u thinking start)
  • Dbval – zobrazí informace o aktuální pozici uložené v databázi
    • Tag – značka posledního tahu na ploše (pokud je hodnota (null), na ploše se bude zobrazovat klasicky kolečko)
    • Val – ohodnocení pozice
    • Depth – hloubka prohledání pozice (na kolik tahů dopředu)
  • Dbdel one – vymaže aktuální tah z databáze (po vrácení jednoho tahu na ploše v místě tohoto tahu již nebude značka, ale jeho podvětve zůstanou uloženy, po jeho opětovném zahrání se větve zobrazí)
  • Dbdel all – smaže všechny podvětve (i všechny následující tahy v nich) v aktuální pozici (všechny značky zmizí), ovšem aktuální tah zůstane (přesný opak dbdel one)
  • Dbset – nastaví používanou databázi na zadaný soubor, odpovídá tlačítku Load na toolbaru
  • Hash usage – napíše, kolik procent z hash tabulky je použito
  • Command [on, off] – umožňuje komunikovat přímo s brainem
    • Off – standardní režim, zadané příkazy i příkazy, které posílá brain, zpracovává GUI
    • On – zadané příkazy jsou přímo posílány brainu (žádný z těchto příkazů nebude fungovat, kromě příkazu command off, kterým se vrátíte zpět do normálního režimu, naopak zde budou fungovat všechny příkazy popsané v odkazu v odstavci Instalace Yixinu i ty, které má Yixin navíc) a příkazy, které posílá brain do GUI, nejsou zpracovávány, ale přímo vypisovány do logu (tzn. např. během prohledávání neuvidíte na ploše barevné tečky, ale místo nich zprávy v logu)
      • Info checkmate – tímto příkazem můžete nastavit metodu prohledávání (které potom odstartujete příkazem thinking start nebo searchdefend, viz výše, 0 = Global Search, 1 = VCT Search, 2 = VC2 Search), např. pro zahájení běžného prohledávání metodou VC2 je nutné zadat tyto příkazy: command on, info checkmate 2, command off, thinking start – a přesně to dělá tlačítko VC2 na toolbaru
  • Dbedittag – změní značku na ploše pro aktuální tah na zadanou, užitečné, pokud si potřebujete tento tah nějak označit, umožňuje pouze jednopísmenné značky
  • Dbeditrawmsg – totéž co dbedittag, ale umožňuje i dvoupísmenné značky
  • Dbeditval – změní ohodnocení aktuální pozice uložené v databázi
  • Dbeditdep – změní hloubku prohledávání uloženou v databázi
  • Dbtotxt – převede zadaný databázový soubor na textový soubor
  • Forbid – další příkaz, kterému nerozumím, po jeho vykonání se alespoň na mém počítači nic nestane

Soubory

Teď se podíváme, co zajímavého se nachází v souborech Yixina. Pokud během instalace neurčíte jinak, Yixin se vám nainstaluje do C:\Yixin.

  • Složka language – tato složka obsahuje jazykové soubory, pokud jeden ze souborů otevřete v textovém editoru, uvidíte, že soubor má strukturu vždy N=ABC, kde N je index a ABC je samotný text
    • pokud byste chtěli přidat vlastní text (např. na nové tlačítko na toolbaru), přidejte řádek na konec souboru (jako N použijte index, který se v souboru ještě nenachází) a pak použijte příkaz toolbar add (viz výše)
    • pokud byste chtěli mít Yixin v jiném jazyce než v angličtině nebo čínštině, přidejte do složky další soubor (pojmenovaný 2.lng, 3.lng atd.) a texty v něm přeložte do tohoto jazyka, poté zvolte nový jazyk v menu View->Language
  • Settings.txt – do tohoto souboru se ukládá nastavení Yixina, ale jsou zde i některé položky, které normálně nastavit nemůžete, např.:
    • Toolbar style – pokud nastavíte na 0, na toolbaru se budou zobrazovat pouze ikony bez nápisů
    • Toolbar position – pokud nastavíte na 1, místo klasického svislého toolbaru vlevo budete mít vodorovný toolbar nad logovacím oknem
  • Piece.bmp – v tomto souboru je uložen vzhled plochy, pokud tedy chcete, aby váš Yixin vypadal jinak, stačí tento soubor otevřít třeba v malování a upravit ho

Časté problémy a otázky

  • Neukládá se mi databáze nebo nastavení – může se stát (mně se to zrovna stalo), že si v Yixinu všechno nastavíte tak, jak chcete, uložíte si to a pak, když Yixin znovu spustíte, nastavení se vrátí do původního; v takovém případě je potřeba otevřít Yixin jako správce
  • Dokázal jsem, že všechny následující tahy jsou proherní, ale aktuální tah se neoznačil jako výherní – je nutné v proherní pozici zmáčknout Play, Yixin by měl ihned zahrát jeden z tahů, protože jsou všechny proherní, a také označit předchozí tah jako výherní
  • Dokázal jsem, že pozice je výherní (existuje alespoň jeden výherní tah), ale aktuální tah se neoznačil jako proherní – stačí jít do výherní pozice a zmáčknout Play, Yixin ihned zahraje ten výherní tah a zároveň označí předchozí tah jako proherní

Doporučené nastavení

I když se to v článku již vyskytuje, chtěl bych na závěr ještě shrnout nejdůležitější nastavení Yixinu.

  • Game->RuleStandard Gomoku (přesah nevyhrává)
  • Game->Board Size – 15, mělo by být nastaveno automaticky
  • Game->Use Database – zaškrtnuté
  • Players->Computer Plays Black/White – běžně nezaškrtnuté, vhodné zaškrtnout například pokud chcete nechat analyzovat váš počítač přes noc (v kombinaci s úrovní 9 dan)
  • Players->Settings
    • LevelUnlimited Time, popř. 9 dan
    • StyleGlobal Search, 1
    • Resource
      • Number of Threads – o 1 méně než je počet vláken vašeho procesoru (pro zjištění stiskněte ctrl+alt+delete, vyberte správce úloh, poté vyberte záložku výkon (pokud se vám záložky nezobrazují, je nutné kliknout na tlačítko “Více informací” v dolní části), poté v levém menu možnost procesor)
      • Split Depth – nutné vyladit na vašem počítači, pravděpodobně nízké
      • Hash Size – co nejvíce, ale tak, aby vám zbylo alespoň 20 % paměti RAM volné (využití paměti RAM lze vidět opět ve správci úloh, v záložce výkon, vlevo možnost paměť)
  • View->Numeration, Log, Analysis – zaškrtnuté, mělo by být nastaveno automaticky
  • Tlačítko na smazání tahu – vzhledem k tomu, že ve výchozím nastavení se žádné tlačítko na smazání tahu nenachází, doporučuji si vytvořit vlastní pomocí příkazu toolbar add (vykonávané příkazy budou dbdel one, dbdel all a undo one)

—Jakub "3ifndef" Horák, Brno



Diskuze k článku

 
1