Tvorba knihoven   ---------------   Lze kompilovat PGN soubor do binární knihovny pomocí spuštěním Polyglota z příkazové řádky. V současnosti lze jen generovat knihovnu a není možné měnit hodnoty ručně. Ale pracuji na tom. Použití: "polyglot make-book ". "make-book" volby jsou: - "-pgn" Název vstupního PGN Souboru. Polyglot by měl zvládat obvyklé formáty PGN. Dejte mi vědět, jestliže narazíte na problém. - "-bin" Jméno výstupního binárního souboru. Navrhl jsem "*.bin" jako koncovku, ale ve skutečnosti je to lhostejné. - "-max-ply" (standardně: nekonečné) Hloubka, do jaké bude knihovna vytvářena, ovšem v půltazích. Tedy zadáte-li dvacet, bude importováno jen prvních deset tahů. - "-min-game" (standardně: 3) Kolikrát musí být tah zahrán, aby se dostal do knihovny. Jinými slovy, tahy, které byly hrány méněkrát, budou vynechány. Jestliže k vytváření používáte jen vybrané partie, "2" jsou zřejmě minimum. Ale pokud jste si varianty zadali ručně, lze klidně použít i "1". - "-only-white" *** novinka *** Ukládat pouze tahy bílého. Smyslem je možnost použití různých parametrů pro knihovny za bílé i černé. Později lze knihovny sloučit do jediné pomocí příkazu "merge-book", viz. dále. - "-only-black" *** novinka *** To samé pro černé. - "-uniform" *** novinka *** Standartně je pravděpodobnost pro tah vypočítána Polyglotem, v závislosti, jak často byl tah hrán a jaké byly jeho celkové výsledky. Tato volba obejde standardní mechanismus a všechny tahy pak mají stejnou pravděpodobnost použití. Výsledkem je variabilnější hra. Tato volba je využívána především pro ručně zadané varianty. ------------------------------------------------------------------------------------------------- Příklad: "polyglot make-book -pgn games.pgn -bin book.bin -max-ply 30". Tvorba knihovny je obvykle velmi rychlá (většinou jen několik minut). Dodávám ovšem, že paměťové nároky jsou značné, můžete je redukovat zadáním limitu počtu půltahů (volba "max-ply"). (P.Háse - Hmm, já dodávám, že je to celé poněkud nepohodlné, občas se programu nechce kompilovat nic, bez toho, že by byla k dispozici jakákoliv chybová hláška, třeba málo paměti, nebo vadný soubor, apod. I po přesměrování výstupu pomocí ">log.txt" na konci řádku se obvykle nezjistí, proč se program ukončil a žádná knihovna není vytvořena. Dříve jsem psal, že počet partií je omezen, není to tak, jedná se jen o neschopnost Polyglota přeskočit z jeho pohledu chyby v *.pgn. Polyglot je velmi citlivý na chyby v *.pgn, které obvykle vyplývají z jakéhosi zacházení Chessbase se standartem. Vadí hlavně "--", používané některými komentátory ve smyslu u nás používaných hlášek "s následujícím", nebo "pokud, tak". Také vadí znaky pro sekundy a minuty, které tam vkládá u počítačových zápasů Fritz, ' a ". Proto to také u svých partií vždy nahrazuji písmeny m+s. Spike BookBuilder takové partie prostě jen přeskočí a dá zprávu do chybového okna, Polyglot Vás pošle do háje a nevytvoří nic. Nakonec jsem zjistil, že nejlepším programem pro hledání takových chyb je ChessPad, který Vám ukáže místo, které mu konkrétně vadí a pak není problém si to v původním PGN najít a opravit. Je to někdy docela nepřehledné, ne vždy se to povede napoprvé, ChessPad totiž také ukáže vžde jen první chybu dané partie. Další nepříjemnost je, že Polyglot neimportuje fragmenty partií, např. pozici po 1.e4 e6 2.d4 d5 zadanou jako FEN a následné tahy. Zaprvé Vám toto nenajde ani ChessPad, zatímco SpikeBookBuilder ano, zadruhé se případné opravy knihovny stávají složitější, než jsem si myslel. V podstatě je nutné vše zkomplilovat znovu, pokud používáte nějaké vrstvy kvůli ovlivnění pořadí tahů, je nutné je mít zazálohované a na závěr je sloučit s novou knihovnou. Třetí možná chyba je použití dvojích uvozovek v hlavičce partie, narazil jsem třeba na turnaj "Memorial "dr .. Tarakov" 200?", opět to ChessPad nezjistí, protože mu to nevadí, ve Spike Book Builderu se to objeví. Při velké databázi je asi nejlepší to vše Chessbasí převést zpět do *.cbh, tam si kliknout na turnaje, opravit ten název pomocí F2 a nakopírovat zpět do nové PGN. Co se týká paměťových nároků, posloužím příkladem z tvorby poslední gambitové knihovny. Cca 70k partií, parametr max-ply pro první vrstvu 16, nároky minimální, pro další vrstvy neomezen, alokováno 96MB - při vyčerpání si vyžádá vždy dvojnásobek, takže při 250k partiích odhaduji potřebu na 384MB, to by snad s 1GB neměl být problém.) Slučování knihoven ------------------- *** novinka *** Použití: "polyglot merge-book -in1 -in2 -out " Sloučí dva binární soubory do jednoho. má "přednost", to znamená, že pokud je pozice přítomná v obou vstupních knihách, data od budou pro ni ignorována. Dvě hlavní použití jsou: 1) spojit bílou a černou knihovnu (zde na prioritě nezáleží) 2) spojit uživatelskou knihovnu s ručně zadanými variantami s nějakou širší z partiového výběru. Dále naznačuji možností použití. Nebombardujte mi e-maily, pokud tomu nerozumíte! Moje naděje spočívá v tom, že si přinejmenším jeden pokročilý uživatel přečte, co jsem zde napsal a podá lepší vysvětlení na nějaké internetové stránce nebo fóru (Ano, to jste vy? Díky) ... ---------------------------------------------------------------------------------- Představte si, že máme 4 PGN soubory, následovně: w1.pgn: pevné varianty za bílé, všechny tahy jsou ručně zadány w2.pgn: vybrané partie (pro náhodnou knihovnu jako s Polyglotem 1.3) b1.pgn a b2.pgn: stejně i za černé První krok má spočívá ve vytvoření čtyř binárních knihoven pomocí vhodných parametrů. Řádky začínající ">" signalizují, co má být napsáno v příkazové řádce. (P.Háse - tedy první knihovna, vybrané dobré varianty za bílé - určitě neuškodí si najít co nejvíce dostupných partií motoru, hraných na nějaký delší čas, třeba na CEGT, snad i WBEC a CCRL a udělat si statistiku, v jakých variantách má program dobré výsledky): > polyglot make-book -min-game 1 -uniform -only-white -pgn w1.pgn -bin w1.bin Zde jsem přidal "-uniform", protože to dovolí náhodnost v pevných variantách (např. d4+e4 - 50%). To nemá žádný vliv, pokud je tah v daném souboru obsažen jen jedinkrát. (P.Háse - pokud například chcete, aby pravděpodobnost tahů byla jiná, lze například zadat 40x 1.e4, 25x 1.d4, 15x 1.c4, 10x 1.Jf3, 4x 1.g3 a 1x 1.b3 a -uniform vynechat, je to jen o práci, jakou si s tím chcete dát. Smyslem této prioritní knihovny je určení pravděpodobnosti a použití variant vůbec během prvních tahů, proto jsem zmiňoval tu statistiku, na základě které by se dalo určit, zda programu např. v Sicilské vyhovuje spíše Sg5, Sc4, Se2 v hlavní variantě, nebo raději třeba zavřenou sicilskou, po případě c3, Sb5 atd.) "-min-game 1" je charakteristika pro uživatelské knihy. Předpokladem je, že všechny tahy jsou dobré, takže není důvod k jejich filtrování. (P.Háse - a teď "nasát" spousty dalších tahů z nějaké partiové databáze, pravděpodobnost jejich zahrání bude dána statistikou, když máme první knihovnu zadanou dobře, tato druhá jen rozšíří její hloubku. Mrzuté je ovšem, že jejich počet je možná omezen, buď pamětí, nebo počtem. Alespoň já se při první zkoušce přes hranici 10000 málokdy dostal - dnes, 25.3., již mám v podstatě hotový základ pro své knihovny a zbývá to jenom pospojovat - pak si zkusím ještě zaexperimentovat s tím maximálním počtem. Trochu odlišné proti práci s *.ctg, nebo *.scb -SpikeBookBuilder-, kde za Vás lecos udělá statistika a pak se to jen nějak doladí ručně. Ve SpikeBookBuilderu mnohem jednodušeji, než ve Fritzovi, ale tam zase pomáhá samoučení. Tady je potřeba dát si více záležet na výběru partií.) > polyglot make-book -min-score 50 -only-white -pgn w2.pgn -bin w2.bin Zde "min-score" může být různé pro bílou a černou knihovnu, stejně jako pro různě navrhované knihovny, třeba tématické. Já nepoužívám "max-ply", protože standartní hodnota "min-game" "3" hloubku sama o sobě omezuje. Je samozřejmě jen na Vás, jaký způsob budete používat Vy. Stejně pro knihovny za černé: > polyglot make-book -min-game 1 -uniform -only-black -pgn b1.pgn -bin b1.bin > polyglot make-book -min-score 40 -only-black -pgn b2.pgn -bin b2.bin V tomto bodě máme vytvořené čtyři binární knihovny. Poznamenávám, že byly použity různé parametry na bílou i černou, také různé PGN soubory mohou být využity). ------------------------------------------------------------------------- Nyní sloučení bílých knihoven. > polyglot merge-book -in1 w1.bin -in2 w2.bin -out w.bin Vstupní soubory nejsou porovnatelné, ručně zadaná (snad tedy kvalitnější) "in1" má přednost před "in2". "skipped xxx entries." zpráva od Polyglota, kolik pozic z "-in2" bylo přeskočeno, neboť byly obsažené již v "-in1". To je smyslem, aby počty partií z databáze nenarušovaly pravděpodobnost pro námi ručně zadaný repertoár. Stejně pro černé: > polyglot merge-book -in1 b1.bin -in2 b2.bin -out b.bin A nakonec sloučíme výsledné knihovny pro bílé a černé do jediného souboru. > polyglot merge-book -in1 w.bin -in2 b.bin -out book.bin Je nutné zkontrolovat, že tam nedošlo k nějakým konfliktům, jinak se cosi pokazilo. Dodávám, že tato poslední operace je možná jen díky sloučení knihoven za různé barvy, jinak by skoro všechny pozice vedly ke konfliktům. Z toho důvodu nemá příliš smysl slučovat staré soubory s novějšími (které obsahují tahy obou stran). (P.Háse - líbí se mi široké knihovny a tak by se tomu dalo možná pomoci sloučením knihoven na různé varianty, tam by byly konfliktní jen pozice na začátku, bylo by s tím více práce, samozřejmě. Základní pro bílé a černé a pak si dát zvlášť partie s hlavními variantami a pro ně udělat speciální hluboké knihovny. Potom vše postupně slučovat. Kromě toho nesouhlasím s autorem, že nemá smysl slučovat staré knihovny, lze je naopak takto rozšiřovat, resp. opravovat, ne?) Všechny tyto příkazové řádky snad mohou vypadat složitě, ale lze si na ně připravit dávkové soubory. Fabien Letouzey, 2006/01/16. Editoval Jaap Weidemann, 2007/03/13. Český překlad části o vytváření knihoven zahájení v Polyglotovi (pro Togu, Fruit, Polyglot, snad i něco dalšího) Pavel Háse - s pomocí Translatoru a následného porovnání původní anglické verze s překladem vznikl tento, snad srozumitelný soubor. (Doufám, že jsem tam tímto nezanesl nějaké chyby P.H.) P.S. Jak například zhruba vypadal dávkový soubor při tvorbě ph-book2008.bin se dočtete na http://www.chesspraga.cz/ph-book2008.htm