From 779d655c8e1b8316385ce097eca7aca2c88efd84 Mon Sep 17 00:00:00 2001 From: lukasmonk Date: Mon, 26 Feb 2018 22:57:34 +0100 Subject: [PATCH] Version 11.06 --- Code/Analisis.py | 6 +- Code/AnalisisIndexes.py | 2 +- Code/AperturasStd.py | 21 + Code/CajonDesastre.py | 2 +- Code/Constantes.py | 45 +- Code/ControlPosicion.py | 5 +- Code/DBgames.py | 66 +- Code/DBgamesFEN.py | 2 +- Code/EngineThread.py | 5 +- Code/EnginesLinux32.py | 6 +- Code/EnginesLinux64.py | 10 +- Code/EnginesWindows.py | 14 +- Code/Entrenamientos.py | 19 +- Code/Everest.py | 2 +- Code/GM.py | 2 +- Code/Gestor.py | 9 +- Code/Gestor60.py | 2 +- Code/GestorAlbum.py | 4 +- Code/GestorAperturas.py | 2 +- Code/GestorBooks.py | 2 +- Code/GestorCompeticion.py | 4 +- Code/GestorElo.py | 4 +- Code/GestorEntMaq.py | 6 +- Code/GestorEverest.py | 9 +- Code/GestorFideFics.py | 6 +- Code/GestorGM.py | 4 +- Code/GestorMicElo.py | 6 +- Code/GestorOpeningLines.py | 548 ++ Code/GestorPGN.py | 2 +- Code/GestorPartida.py | 10 +- Code/GestorPerson.py | 4 +- Code/GestorPlayPGN.py | 2 +- Code/GestorResistance.py | 3 +- Code/GestorRoutes.py | 4 +- Code/GestorSolo.py | 16 +- Code/GestorTorneo.py | 12 +- Code/GestorTurnOnLights.py | 6 +- Code/GestorVariantes.py | 4 +- Code/GestorWashing.py | 6 +- Code/Init.py | 2 +- Code/Jugada.py | 21 +- Code/LibChess.py | 2 +- Code/Memoria.py | 1 - Code/OpeningGuide.py | 2 +- Code/OpeningLines.py | 479 +- Code/PGNreader.py | 2 +- Code/Partida.py | 38 +- Code/Presentacion.py | 2 +- Code/Procesador.py | 50 +- Code/QT/Delegados.py | 25 + Code/QT/Iconos.py | 132 +- Code/QT/InfoBase.py | 9 +- Code/QT/POLAnalisis.py | 80 +- Code/QT/POLBoard.py | 88 +- Code/QT/POLines.py | 670 +- Code/QT/PantallaAnalisis.py | 5 +- Code/QT/PantallaAnalisisParam.py | 2 +- Code/QT/PantallaAperturas.py | 4 +- Code/QT/PantallaArbol.py | 2 +- Code/QT/PantallaColores.py | 52 +- Code/QT/PantallaConfig.py | 81 +- Code/QT/PantallaDailyTest.py | 4 +- ...BDatabaseFEN.py => PantallaDatabaseFEN.py} | 0 Code/QT/PantallaEverest.py | 2 +- Code/QT/PantallaGM.py | 11 +- Code/QT/PantallaHorses.py | 2 +- Code/QT/PantallaJuicio.py | 3 +- Code/QT/PantallaManualSave.py | 2 +- Code/QT/PantallaMotores.py | 2 +- Code/QT/PantallaTabDirVisual.py | 165 +- Code/QT/PantallaTorneos.py | 29 +- Code/QT/PantallaVisualiza.py | 2 +- Code/QT/TabElementos.py | 5 +- Code/QT/Tablero.py | 32 +- Code/QT/WBG_InfoMove.py | 2 +- Code/QT/WBG_Summary.py | 2 +- Code/Torneo.py | 2 +- Code/TurnOnLights.py | 16 + Code/Tutor.py | 11 +- Code/Util.py | 22 + Code/XGestorMotor.py | 2 +- Code/XMotorRespuesta.py | 9 +- Engines/Linux32/mcbrain/.DS_Store | Bin 10244 -> 0 bytes Engines/Linux32/mcbrain/.travis.yml | 45 +- Engines/Linux32/mcbrain/AUTHORS | 2 +- Engines/Linux32/mcbrain/McBrain-9_x32_linux | Bin 0 -> 325788 bytes Engines/Linux32/mcbrain/Readme.md | 4 +- .../Linux32/mcbrain/Top CPU Contributors.txt | 221 +- Engines/Linux32/mcbrain/appveyor.yml | 54 +- Engines/Linux32/mcbrain/src/Makefile | 80 +- Engines/Linux32/mcbrain/src/benchmark.cpp | 37 +- Engines/Linux32/mcbrain/src/bitbase.cpp | 39 +- Engines/Linux32/mcbrain/src/bitboard.cpp | 63 +- Engines/Linux32/mcbrain/src/bitboard.h | 44 +- Engines/Linux32/mcbrain/src/endgame.cpp | 40 +- Engines/Linux32/mcbrain/src/endgame.h | 38 +- Engines/Linux32/mcbrain/src/evaluate.cpp | 360 +- Engines/Linux32/mcbrain/src/evaluate.h | 39 +- Engines/Linux32/mcbrain/src/main.cpp | 44 +- Engines/Linux32/mcbrain/src/material.cpp | 60 +- Engines/Linux32/mcbrain/src/material.h | 37 +- Engines/Linux32/mcbrain/src/misc.cpp | 51 +- Engines/Linux32/mcbrain/src/misc.h | 37 +- Engines/Linux32/mcbrain/src/movegen.cpp | 57 +- Engines/Linux32/mcbrain/src/movegen.h | 39 +- Engines/Linux32/mcbrain/src/movepick.cpp | 75 +- Engines/Linux32/mcbrain/src/movepick.h | 80 +- Engines/Linux32/mcbrain/src/pawns.cpp | 106 +- Engines/Linux32/mcbrain/src/pawns.h | 41 +- Engines/Linux32/mcbrain/src/polybook.cpp | 737 ++ Engines/Linux32/mcbrain/src/polybook.h | 113 + Engines/Linux32/mcbrain/src/position.cpp | 108 +- Engines/Linux32/mcbrain/src/position.h | 37 +- Engines/Linux32/mcbrain/src/psqt.cpp | 39 +- Engines/Linux32/mcbrain/src/search.cpp | 644 +- Engines/Linux32/mcbrain/src/search.h | 44 +- Engines/Linux32/mcbrain/src/tbprobe.cpp | 59 +- Engines/Linux32/mcbrain/src/tbprobe.h | 36 +- Engines/Linux32/mcbrain/src/thread.cpp | 111 +- Engines/Linux32/mcbrain/src/thread.h | 55 +- Engines/Linux32/mcbrain/src/thread_win32.h | 37 +- Engines/Linux32/mcbrain/src/timeman.cpp | 135 +- Engines/Linux32/mcbrain/src/timeman.h | 37 +- Engines/Linux32/mcbrain/src/tt.cpp | 42 +- Engines/Linux32/mcbrain/src/tt.h | 41 +- Engines/Linux32/mcbrain/src/types.h | 164 +- Engines/Linux32/mcbrain/src/tzbook.cpp | 221 - Engines/Linux32/mcbrain/src/tzbook.h | 50 - Engines/Linux32/mcbrain/src/uci.cpp | 76 +- Engines/Linux32/mcbrain/src/uci.h | 39 +- Engines/Linux32/mcbrain/src/ucioption.cpp | 91 +- Engines/Linux64/mcbrain/.travis.yml | 45 +- Engines/Linux64/mcbrain/AUTHORS | 2 +- Engines/Linux64/mcbrain/McBrain-9_x64_linux | Bin 0 -> 290136 bytes Engines/Linux64/mcbrain/Readme.md | 4 +- .../Linux64/mcbrain/SF-McBrain-v40_x64_linux | Bin 1196376 -> 0 bytes .../Linux64/mcbrain/Top CPU Contributors.txt | 221 +- Engines/Linux64/mcbrain/appveyor.yml | 54 +- Engines/Linux64/mcbrain/src/Makefile | 36 +- Engines/Linux64/mcbrain/src/benchmark.cpp | 2 +- Engines/Linux64/mcbrain/src/bitbase.cpp | 2 +- Engines/Linux64/mcbrain/src/bitboard.cpp | 2 +- Engines/Linux64/mcbrain/src/bitboard.h | 2 +- Engines/Linux64/mcbrain/src/endgame.cpp | 2 +- Engines/Linux64/mcbrain/src/endgame.h | 2 +- Engines/Linux64/mcbrain/src/evaluate.cpp | 181 +- Engines/Linux64/mcbrain/src/evaluate.h | 2 +- Engines/Linux64/mcbrain/src/main.cpp | 6 +- Engines/Linux64/mcbrain/src/material.cpp | 23 +- Engines/Linux64/mcbrain/src/material.h | 2 +- Engines/Linux64/mcbrain/src/misc.cpp | 16 +- Engines/Linux64/mcbrain/src/misc.h | 2 +- Engines/Linux64/mcbrain/src/movegen.cpp | 2 +- Engines/Linux64/mcbrain/src/movegen.h | 2 +- Engines/Linux64/mcbrain/src/movepick.cpp | 66 +- Engines/Linux64/mcbrain/src/movepick.h | 2 +- Engines/Linux64/mcbrain/src/pawns.cpp | 27 +- Engines/Linux64/mcbrain/src/pawns.h | 2 +- Engines/Linux64/mcbrain/src/polybook.cpp | 21 + Engines/Linux64/mcbrain/src/polybook.h | 26 +- Engines/Linux64/mcbrain/src/position.cpp | 2 +- Engines/Linux64/mcbrain/src/position.h | 2 +- Engines/Linux64/mcbrain/src/psqt.cpp | 16 +- Engines/Linux64/mcbrain/src/search.cpp | 212 +- Engines/Linux64/mcbrain/src/search.h | 5 +- Engines/Linux64/mcbrain/src/tbprobe.cpp | 2 +- Engines/Linux64/mcbrain/src/tbprobe.h | 2 +- Engines/Linux64/mcbrain/src/thread.cpp | 60 +- Engines/Linux64/mcbrain/src/thread.h | 14 +- Engines/Linux64/mcbrain/src/thread_win32.h | 2 +- Engines/Linux64/mcbrain/src/timeman.cpp | 101 +- Engines/Linux64/mcbrain/src/timeman.h | 2 +- Engines/Linux64/mcbrain/src/tt.cpp | 7 +- Engines/Linux64/mcbrain/src/tt.h | 6 +- Engines/Linux64/mcbrain/src/types.h | 4 +- Engines/Linux64/mcbrain/src/tzbook.cpp | 221 - Engines/Linux64/mcbrain/src/tzbook.h | 50 - Engines/Linux64/mcbrain/src/uci.cpp | 6 +- Engines/Linux64/mcbrain/src/uci.h | 4 +- Engines/Linux64/mcbrain/src/ucioption.cpp | 35 +- Engines/Linux64/stockfish/.travis.yml | 40 +- Engines/Linux64/stockfish/AUTHORS | 80 +- .../Linux64/stockfish/Linux/stockfish-9-64 | Bin 0 -> 261448 bytes Engines/Linux64/stockfish/Readme.md | 10 +- .../stockfish/Top CPU Contributors.txt | 132 + Engines/Linux64/stockfish/appveyor.yml | 54 +- Engines/Linux64/stockfish/src/Makefile | 101 +- Engines/Linux64/stockfish/src/benchmark.cpp | 103 +- Engines/Linux64/stockfish/src/bitbase.cpp | 14 +- Engines/Linux64/stockfish/src/bitboard.cpp | 127 +- Engines/Linux64/stockfish/src/bitboard.h | 107 +- Engines/Linux64/stockfish/src/endgame.cpp | 55 +- Engines/Linux64/stockfish/src/endgame.h | 44 +- Engines/Linux64/stockfish/src/evaluate.cpp | 855 +- Engines/Linux64/stockfish/src/evaluate.h | 5 +- Engines/Linux64/stockfish/src/main.cpp | 7 +- Engines/Linux64/stockfish/src/material.cpp | 23 +- Engines/Linux64/stockfish/src/material.h | 6 +- Engines/Linux64/stockfish/src/misc.cpp | 142 +- Engines/Linux64/stockfish/src/misc.h | 14 +- Engines/Linux64/stockfish/src/movegen.cpp | 26 +- Engines/Linux64/stockfish/src/movegen.h | 13 +- Engines/Linux64/stockfish/src/movepick.cpp | 170 +- Engines/Linux64/stockfish/src/movepick.h | 134 +- Engines/Linux64/stockfish/src/pawns.cpp | 172 +- Engines/Linux64/stockfish/src/pawns.h | 6 +- Engines/Linux64/stockfish/src/position.cpp | 299 +- Engines/Linux64/stockfish/src/position.h | 51 +- Engines/Linux64/stockfish/src/psqt.cpp | 80 +- Engines/Linux64/stockfish/src/search.cpp | 853 +- Engines/Linux64/stockfish/src/search.h | 41 +- .../Linux64/stockfish/src/syzygy/tbprobe.cpp | 2246 +++-- .../Linux64/stockfish/src/syzygy/tbprobe.h | 66 +- Engines/Linux64/stockfish/src/thread.cpp | 190 +- Engines/Linux64/stockfish/src/thread.h | 80 +- Engines/Linux64/stockfish/src/thread_win32.h | 2 +- Engines/Linux64/stockfish/src/timeman.cpp | 2 +- Engines/Linux64/stockfish/src/timeman.h | 2 +- Engines/Linux64/stockfish/src/tt.cpp | 7 +- Engines/Linux64/stockfish/src/tt.h | 6 +- Engines/Linux64/stockfish/src/types.h | 163 +- Engines/Linux64/stockfish/src/uci.cpp | 137 +- Engines/Linux64/stockfish/src/uci.h | 4 +- Engines/Linux64/stockfish/src/ucioption.cpp | 11 +- Engines/Windows/_tools/LCEngine.pyd | Bin 207872 -> 0 bytes Engines/Windows/_tools/LCEngineV1.pyd | Bin 0 -> 207872 bytes Engines/Windows/mcbrain/.travis.yml | 45 +- Engines/Windows/mcbrain/AUTHORS | 2 +- Engines/Windows/mcbrain/McBrain-9_x32_old.exe | Bin 0 -> 1322510 bytes .../Windows/mcbrain/McBrain-9_x64_bmi2.exe | Bin 0 -> 1212928 bytes Engines/Windows/mcbrain/Readme.md | 4 +- .../mcbrain/SF-McBrain-v40_x32_old.exe | Bin 1330702 -> 0 bytes .../mcbrain/SF-McBrain-v40_x64_bmi2.exe | Bin 1207808 -> 0 bytes .../Windows/mcbrain/Top CPU Contributors.txt | 221 +- Engines/Windows/mcbrain/appveyor.yml | 54 +- Engines/Windows/mcbrain/src/Makefile | 36 +- Engines/Windows/mcbrain/src/benchmark.cpp | 2 +- Engines/Windows/mcbrain/src/bitbase.cpp | 2 +- Engines/Windows/mcbrain/src/bitboard.cpp | 2 +- Engines/Windows/mcbrain/src/bitboard.h | 2 +- Engines/Windows/mcbrain/src/endgame.cpp | 2 +- Engines/Windows/mcbrain/src/endgame.h | 2 +- Engines/Windows/mcbrain/src/evaluate.cpp | 181 +- Engines/Windows/mcbrain/src/evaluate.h | 2 +- Engines/Windows/mcbrain/src/main.cpp | 6 +- Engines/Windows/mcbrain/src/material.cpp | 23 +- Engines/Windows/mcbrain/src/material.h | 2 +- Engines/Windows/mcbrain/src/misc.cpp | 16 +- Engines/Windows/mcbrain/src/misc.h | 2 +- Engines/Windows/mcbrain/src/movegen.cpp | 2 +- Engines/Windows/mcbrain/src/movegen.h | 2 +- Engines/Windows/mcbrain/src/movepick.cpp | 66 +- Engines/Windows/mcbrain/src/movepick.h | 2 +- Engines/Windows/mcbrain/src/pawns.cpp | 27 +- Engines/Windows/mcbrain/src/pawns.h | 2 +- Engines/Windows/mcbrain/src/polybook.cpp | 21 + Engines/Windows/mcbrain/src/polybook.h | 26 +- Engines/Windows/mcbrain/src/position.cpp | 2 +- Engines/Windows/mcbrain/src/position.h | 2 +- Engines/Windows/mcbrain/src/psqt.cpp | 16 +- Engines/Windows/mcbrain/src/search.cpp | 212 +- Engines/Windows/mcbrain/src/search.h | 5 +- Engines/Windows/mcbrain/src/tbprobe.cpp | 2 +- Engines/Windows/mcbrain/src/tbprobe.h | 2 +- Engines/Windows/mcbrain/src/thread.cpp | 60 +- Engines/Windows/mcbrain/src/thread.h | 14 +- Engines/Windows/mcbrain/src/thread_win32.h | 2 +- Engines/Windows/mcbrain/src/timeman.cpp | 101 +- Engines/Windows/mcbrain/src/timeman.h | 2 +- Engines/Windows/mcbrain/src/tt.cpp | 7 +- Engines/Windows/mcbrain/src/tt.h | 6 +- Engines/Windows/mcbrain/src/types.h | 4 +- Engines/Windows/mcbrain/src/tzbook.cpp | 221 - Engines/Windows/mcbrain/src/tzbook.h | 50 - Engines/Windows/mcbrain/src/uci.cpp | 6 +- Engines/Windows/mcbrain/src/uci.h | 4 +- Engines/Windows/mcbrain/src/ucioption.cpp | 35 +- Engines/Windows/stockfish/.travis.yml | 40 +- Engines/Windows/stockfish/AUTHORS | 80 +- Engines/Windows/stockfish/Readme.md | 10 +- .../stockfish/Top CPU Contributors.txt | 132 + .../stockfish/Windows/stockfish_9_x32.exe | Bin 0 -> 1322510 bytes .../Windows/stockfish_9_x64_bmi2.exe | Bin 0 -> 1138688 bytes Engines/Windows/stockfish/appveyor.yml | 54 +- Engines/Windows/stockfish/src/Makefile | 101 +- Engines/Windows/stockfish/src/benchmark.cpp | 103 +- Engines/Windows/stockfish/src/bitbase.cpp | 14 +- Engines/Windows/stockfish/src/bitboard.cpp | 127 +- Engines/Windows/stockfish/src/bitboard.h | 107 +- Engines/Windows/stockfish/src/endgame.cpp | 55 +- Engines/Windows/stockfish/src/endgame.h | 44 +- Engines/Windows/stockfish/src/evaluate.cpp | 855 +- Engines/Windows/stockfish/src/evaluate.h | 5 +- Engines/Windows/stockfish/src/main.cpp | 7 +- Engines/Windows/stockfish/src/material.cpp | 23 +- Engines/Windows/stockfish/src/material.h | 6 +- Engines/Windows/stockfish/src/misc.cpp | 142 +- Engines/Windows/stockfish/src/misc.h | 14 +- Engines/Windows/stockfish/src/movegen.cpp | 26 +- Engines/Windows/stockfish/src/movegen.h | 13 +- Engines/Windows/stockfish/src/movepick.cpp | 170 +- Engines/Windows/stockfish/src/movepick.h | 134 +- Engines/Windows/stockfish/src/pawns.cpp | 172 +- Engines/Windows/stockfish/src/pawns.h | 6 +- Engines/Windows/stockfish/src/position.cpp | 299 +- Engines/Windows/stockfish/src/position.h | 51 +- Engines/Windows/stockfish/src/psqt.cpp | 80 +- Engines/Windows/stockfish/src/search.cpp | 853 +- Engines/Windows/stockfish/src/search.h | 41 +- .../Windows/stockfish/src/syzygy/tbprobe.cpp | 2246 +++-- .../Windows/stockfish/src/syzygy/tbprobe.h | 66 +- Engines/Windows/stockfish/src/thread.cpp | 190 +- Engines/Windows/stockfish/src/thread.h | 80 +- Engines/Windows/stockfish/src/thread_win32.h | 2 +- Engines/Windows/stockfish/src/timeman.cpp | 2 +- Engines/Windows/stockfish/src/timeman.h | 2 +- Engines/Windows/stockfish/src/tt.cpp | 7 +- Engines/Windows/stockfish/src/tt.h | 6 +- Engines/Windows/stockfish/src/types.h | 163 +- Engines/Windows/stockfish/src/uci.cpp | 137 +- Engines/Windows/stockfish/src/uci.h | 4 +- Engines/Windows/stockfish/src/ucioption.cpp | 11 +- GenIconos/Formatos.tema | 22 +- GenIconos/gnome/64px-Gnome-weather-clear.png | Bin 6352 -> 0 bytes .../gnome/64px-Gnome-weather-few-clouds.png | Bin 5857 -> 0 bytes .../gnome/64px-Gnome-weather-overcast.png | Bin 3132 -> 0 bytes GenIconos/gnome/64px-Gnome-weather-storm.png | Bin 4651 -> 0 bytes GenIconos/limpia.py | 55 + GenIconos/nuvola/runMono.png | Bin 0 -> 1591 bytes GenIconos/otros/led_circle_orange.png | Bin 479 -> 0 bytes GenIconos/silk/arrow_joinR.png | Bin 850 -> 0 bytes GenIconos/vehicles/Train.png | Bin 1663 -> 0 bytes GenIconos/vehicles/Train1.png | Bin 851 -> 0 bytes GenIconos/windows8/Active_Directory_32px.png | Bin 1337 -> 0 bytes GenIconos/windows8/Ascending_Sorting_32px.png | Bin 773 -> 0 bytes GenIconos/windows8/Books_32px.png | Bin 1211 -> 0 bytes GenIconos/windows8/Code_Fork_32px.png | Bin 1091 -> 0 bytes GenIconos/windows8/Coral_32px.png | Bin 1388 -> 0 bytes GenIconos/windows8/Factory_32px.png | Bin 820 -> 0 bytes GenIconos/windows8/Google_Sketchup_32px.png | Bin 1301 -> 0 bytes GenIconos/windows8/Gymnastics_32px.png | Bin 0 -> 970 bytes GenIconos/windows8/Partly_Cloudy_Day_32px.png | Bin 0 -> 863 bytes GenIconos/windows8/Pullups_32px.png | Bin 0 -> 854 bytes GenIconos/windows8/Rain_32px.png | Bin 0 -> 839 bytes GenIconos/windows8/Rain_Cloud_32px.png | Bin 0 -> 960 bytes GenIconos/windows8/Running_32px.png | Bin 0 -> 945 bytes GenIconos/windows8/Share_18px.png | Bin 492 -> 0 bytes GenIconos/windows8/Snowflake_32px.png | Bin 0 -> 1576 bytes GenIconos/windows8/Steam_Engine_26px.png | Bin 0 -> 781 bytes GenIconos/windows8/Summer_32px.png | Bin 0 -> 926 bytes GenIconos/windows8/University_32px.png | Bin 678 -> 0 bytes GenIconos/windows8/dashboard-32.png | Bin 733 -> 0 bytes GenIconos/windows8/define_location-26.png | Bin 289 -> 0 bytes GenIconos/windows8/documents-32.png | Bin 456 -> 0 bytes GenIconos/windows8/engine-26.png | Bin 322 -> 0 bytes GenIconos/windows8/factory-32.png | Bin 493 -> 0 bytes GenIconos/windows8/folder-32.png | Bin 281 -> 0 bytes GenIconos/windows8/greentech-32.png | Bin 858 -> 0 bytes GenIconos/windows8/online-26.png | Bin 262 -> 0 bytes GenIconos/windows8/research-26.png | Bin 549 -> 0 bytes GenIconos/windows8/research-32.png | Bin 700 -> 0 bytes GenIconos/windows8/settings-26.png | Bin 477 -> 0 bytes GenIconos/windows8/speedometer-26.png | Bin 593 -> 0 bytes IntFiles/Figs/bb.png | Bin 535 -> 419 bytes IntFiles/Figs/bk.png | Bin 723 -> 607 bytes IntFiles/Figs/bn.png | Bin 636 -> 429 bytes IntFiles/Figs/bp.png | Bin 357 -> 264 bytes IntFiles/Figs/bq.png | Bin 706 -> 521 bytes IntFiles/Figs/br.png | Bin 607 -> 453 bytes IntFiles/Figs/wb.png | Bin 608 -> 542 bytes IntFiles/Figs/wk.png | Bin 704 -> 581 bytes IntFiles/Figs/wn.png | Bin 691 -> 572 bytes IntFiles/Figs/wp.png | Bin 484 -> 414 bytes IntFiles/Figs/wq.png | Bin 854 -> 726 bytes IntFiles/Figs/wr.png | Bin 649 -> 474 bytes IntFiles/Iconos.bin | Bin 926520 -> 916833 bytes IntFiles/base.board | 7603 ++++++++++++++++- LCEngine/LCEngine.pyd | Bin 207872 -> 0 bytes LCEngine/LCEngine.so | Bin 945703 -> 0 bytes LCEngine/{LCEngine.c => LCEngineV1.c} | 2156 ++--- LCEngine/LCEngineV1.pyd | Bin 0 -> 207872 bytes LCEngine/{LCEngine.pyx => LCEngineV1.pyx} | 0 .../build/temp.win32-2.7/Release/LCEngine.exp | Bin 675 -> 675 bytes .../build/temp.win32-2.7/Release/LCEngine.lib | Bin 1736 -> 1736 bytes .../build/temp.win32-2.7/Release/LCEngine.obj | Bin 271215 -> 271215 bytes .../temp.win32-2.7/Release/LCEngineV1.exp | Bin 0 -> 685 bytes .../temp.win32-2.7/Release/LCEngineV1.lib | Bin 0 -> 1770 bytes .../temp.win32-2.7/Release/LCEngineV1.obj | Bin 0 -> 271879 bytes .../Release/LCEngineV1.pyd.manifest | 15 + LCEngine/irina/pgn.c | 3 +- LCEngine/setup.py | 2 +- LCEngine/xcython_VC.bat | 2 +- Linux/LinuxInstallation.md | 3 +- Linux/xlinux_install.sh | 35 +- Locale/br/LC_MESSAGES/lucaschess.mo | Bin 300235 -> 301806 bytes Locale/es/LC_MESSAGES/lucaschess.mo | Bin 309106 -> 310627 bytes Locale/fr/LC_MESSAGES/lucaschess.mo | Bin 270394 -> 270387 bytes Locale/it/LC_MESSAGES/lucaschess.mo | Bin 302830 -> 304216 bytes Locale/ro/LC_MESSAGES/lucaschess.mo | Bin 39607 -> 39135 bytes Locale/ro/lang.ini | 2 +- Locale/tr/LC_MESSAGES/lucaschess.mo | Bin 274477 -> 275746 bytes Locale/vi/LC_MESSAGES/lucaschess.mo | Bin 291061 -> 292783 bytes Lucas.py | 1 + bug.log | 2 +- 404 files changed, 23154 insertions(+), 10686 deletions(-) create mode 100644 Code/GestorOpeningLines.py rename Code/QT/{WBDatabaseFEN.py => PantallaDatabaseFEN.py} (100%) delete mode 100644 Engines/Linux32/mcbrain/.DS_Store create mode 100644 Engines/Linux32/mcbrain/McBrain-9_x32_linux create mode 100644 Engines/Linux32/mcbrain/src/polybook.cpp create mode 100644 Engines/Linux32/mcbrain/src/polybook.h delete mode 100644 Engines/Linux32/mcbrain/src/tzbook.cpp delete mode 100644 Engines/Linux32/mcbrain/src/tzbook.h create mode 100644 Engines/Linux64/mcbrain/McBrain-9_x64_linux delete mode 100644 Engines/Linux64/mcbrain/SF-McBrain-v40_x64_linux delete mode 100644 Engines/Linux64/mcbrain/src/tzbook.cpp delete mode 100644 Engines/Linux64/mcbrain/src/tzbook.h create mode 100644 Engines/Linux64/stockfish/Linux/stockfish-9-64 create mode 100644 Engines/Linux64/stockfish/Top CPU Contributors.txt delete mode 100644 Engines/Windows/_tools/LCEngine.pyd create mode 100644 Engines/Windows/_tools/LCEngineV1.pyd create mode 100644 Engines/Windows/mcbrain/McBrain-9_x32_old.exe create mode 100644 Engines/Windows/mcbrain/McBrain-9_x64_bmi2.exe delete mode 100644 Engines/Windows/mcbrain/SF-McBrain-v40_x32_old.exe delete mode 100644 Engines/Windows/mcbrain/SF-McBrain-v40_x64_bmi2.exe delete mode 100644 Engines/Windows/mcbrain/src/tzbook.cpp delete mode 100644 Engines/Windows/mcbrain/src/tzbook.h create mode 100644 Engines/Windows/stockfish/Top CPU Contributors.txt create mode 100644 Engines/Windows/stockfish/Windows/stockfish_9_x32.exe create mode 100644 Engines/Windows/stockfish/Windows/stockfish_9_x64_bmi2.exe delete mode 100644 GenIconos/gnome/64px-Gnome-weather-clear.png delete mode 100644 GenIconos/gnome/64px-Gnome-weather-few-clouds.png delete mode 100644 GenIconos/gnome/64px-Gnome-weather-overcast.png delete mode 100644 GenIconos/gnome/64px-Gnome-weather-storm.png create mode 100644 GenIconos/limpia.py create mode 100644 GenIconos/nuvola/runMono.png delete mode 100644 GenIconos/otros/led_circle_orange.png delete mode 100644 GenIconos/silk/arrow_joinR.png delete mode 100644 GenIconos/vehicles/Train.png delete mode 100644 GenIconos/vehicles/Train1.png delete mode 100644 GenIconos/windows8/Active_Directory_32px.png delete mode 100644 GenIconos/windows8/Ascending_Sorting_32px.png delete mode 100644 GenIconos/windows8/Books_32px.png delete mode 100644 GenIconos/windows8/Code_Fork_32px.png delete mode 100644 GenIconos/windows8/Coral_32px.png delete mode 100644 GenIconos/windows8/Factory_32px.png delete mode 100644 GenIconos/windows8/Google_Sketchup_32px.png create mode 100644 GenIconos/windows8/Gymnastics_32px.png create mode 100644 GenIconos/windows8/Partly_Cloudy_Day_32px.png create mode 100644 GenIconos/windows8/Pullups_32px.png create mode 100644 GenIconos/windows8/Rain_32px.png create mode 100644 GenIconos/windows8/Rain_Cloud_32px.png create mode 100644 GenIconos/windows8/Running_32px.png delete mode 100644 GenIconos/windows8/Share_18px.png create mode 100644 GenIconos/windows8/Snowflake_32px.png create mode 100644 GenIconos/windows8/Steam_Engine_26px.png create mode 100644 GenIconos/windows8/Summer_32px.png delete mode 100644 GenIconos/windows8/University_32px.png delete mode 100644 GenIconos/windows8/dashboard-32.png delete mode 100644 GenIconos/windows8/define_location-26.png delete mode 100644 GenIconos/windows8/documents-32.png delete mode 100644 GenIconos/windows8/engine-26.png delete mode 100644 GenIconos/windows8/factory-32.png delete mode 100644 GenIconos/windows8/folder-32.png delete mode 100644 GenIconos/windows8/greentech-32.png delete mode 100644 GenIconos/windows8/online-26.png delete mode 100644 GenIconos/windows8/research-26.png delete mode 100644 GenIconos/windows8/research-32.png delete mode 100644 GenIconos/windows8/settings-26.png delete mode 100644 GenIconos/windows8/speedometer-26.png delete mode 100644 LCEngine/LCEngine.pyd delete mode 100644 LCEngine/LCEngine.so rename LCEngine/{LCEngine.c => LCEngineV1.c} (91%) create mode 100644 LCEngine/LCEngineV1.pyd rename LCEngine/{LCEngine.pyx => LCEngineV1.pyx} (100%) create mode 100644 LCEngine/build/temp.win32-2.7/Release/LCEngineV1.exp create mode 100644 LCEngine/build/temp.win32-2.7/Release/LCEngineV1.lib create mode 100644 LCEngine/build/temp.win32-2.7/Release/LCEngineV1.obj create mode 100644 LCEngine/build/temp.win32-2.7/Release/LCEngineV1.pyd.manifest diff --git a/Code/Analisis.py b/Code/Analisis.py index 685e4cf..ebe914d 100644 --- a/Code/Analisis.py +++ b/Code/Analisis.py @@ -595,7 +595,8 @@ def siElegido(self, posRM): def ponPosRMactual(self, posRM): self.posRMactual = posRM self.rm = self.listaRM[self.posRMactual][0] - self.partida = Partida.Partida(self.jg.posicionBase).leerPV(self.rm.pv) + self.partida = Partida.Partida(self.jg.posicionBase) + self.partida.leerPV(self.rm.pv) self.partida.siTerminada() self.posMovActual = 0 @@ -817,7 +818,8 @@ def analizaJugada(self, jgNueva): self.rm = self.xtutor.analizaVariante(jgNueva, secs * 1000, self.siBlancas) me.final() - self.partidaTutor = Partida.Partida(jgNueva.posicion).leerPV(self.rm.pv) + self.partidaTutor = Partida.Partida(jgNueva.posicion) + self.partidaTutor.leerPV(self.rm.pv) if len(self.partidaTutor): self.w.tableroT.ponPosicion(self.partidaTutor.jugada(0).posicion) diff --git a/Code/AnalisisIndexes.py b/Code/AnalisisIndexes.py index 5324a22..05590f8 100644 --- a/Code/AnalisisIndexes.py +++ b/Code/AnalisisIndexes.py @@ -1,4 +1,4 @@ -import LCEngine +import LCEngineV1 as LCEngine from Code import VarGen from Code import Partida diff --git a/Code/AperturasStd.py b/Code/AperturasStd.py index b54665e..9dd6056 100644 --- a/Code/AperturasStd.py +++ b/Code/AperturasStd.py @@ -1,3 +1,5 @@ +import LCEngineV1 as LCEngine + from operator import attrgetter from Code import TrListas @@ -34,6 +36,7 @@ def __str__(self): class ListaAperturasStd: def __init__(self): self.dic = None + self.dicFenM2 = None self.hijos = None self.lia1h8 = None @@ -49,6 +52,14 @@ def reset(self, configuracion, siBasic, siEntrenar): bl.trOrdena = ("A" if bl.siBasic else "B") + bl.trNombre.upper() self.hijos = self.ordena(self.hijos, 0) + dfen = {} + makePV = LCEngine.makePV + fen2fenM2 = LCEngine.fen2fenM2 + for pv, ap in self.dic.iteritems(): + fen = makePV(pv) + dfen[fen2fenM2(fen)] = ap + self.dicFenM2 = dfen + def ordena(self, hijos, n): if hijos: hijos = sorted(hijos, key=attrgetter("trOrdena")) @@ -132,6 +143,16 @@ def lee(self, ficheroPers, siEntrenar): if n <= 0: self.hijos.append(bloque) + def asignaTransposition(self, partida): + partida.transposition = None + if not (partida.apertura is None or partida.pendienteApertura): + for nj, jg in enumerate(partida.liJugadas): + if not jg.siApertura: + fenm2 = jg.posicion.fenM2() + if fenm2 in self.dicFenM2: + partida.transposition = self.dicFenM2[fenm2] + partida.jg_transposition = jg + def asignaApertura(self, partida): partida.apertura = None if not partida.siFenInicial(): diff --git a/Code/CajonDesastre.py b/Code/CajonDesastre.py index 5c21041..a83b37b 100644 --- a/Code/CajonDesastre.py +++ b/Code/CajonDesastre.py @@ -4,7 +4,7 @@ import shutil import sqlite3 -import LCEngine +import LCEngineV1 as LCEngine from Code import BaseConfig from Code import Util diff --git a/Code/Constantes.py b/Code/Constantes.py index ab6eab1..adc4f39 100644 --- a/Code/Constantes.py +++ b/Code/Constantes.py @@ -2,27 +2,34 @@ kSigueApertura, kSigueUsuario, kMalApertura = range(3) -kJugNueva, kJugEntPos, kJugPGN, kJugEntMaq, kJugGM, kJugRemoto, kJugSolo, kJug60, kJugElo, kJugMicElo, \ -kJugBooks, kJugAperturas, kJugBoxing, kJugEntTac, kJugMvM, kJugAlbum, kJugFics, kJugFide, kJugLichess, \ -kJugWorldMap, kJugRoute, kJugEntLight, kJugWashingCreate, kJugWashingTactics, kJugWashingReplay, kJugSingularMoves\ - = range(26) +( + kJugNueva, kJugEntPos, kJugPGN, kJugEntMaq, kJugGM, kJugRemoto, kJugSolo, kJug60, kJugElo, kJugMicElo, + kJugBooks, kJugAperturas, kJugOpeningLines, kJugBoxing, kJugEntTac, kJugMvM, kJugAlbum, kJugFics, kJugFide, + kJugLichess, kJugWorldMap, kJugRoute, kJugEntLight, kJugWashingCreate, kJugWashingTactics, kJugWashingReplay, + kJugSingularMoves +) = range(27) kFinNormal, kFinReinicio = range(2) -kGanamos, kGanaRival, kTablas, kTablasRepeticion, kTablas50, kTablasFaltaMaterial, kGanamosTiempo, kGanaRivalTiempo, kTablasAcuerdo, kDesconocido = range(10) +( + kGanamos, kGanaRival, kTablas, kTablasRepeticion, kTablas50, kTablasFaltaMaterial, kGanamosTiempo, + kGanaRivalTiempo, kTablasAcuerdo, kDesconocido +) = range(10) kMoverAdelante, kMoverAtras, kMoverInicio, kMoverFinal, kMoverLibre, kMoverReloj = range(6) -k_terminar, k_play, k_mainmenu, k_competicion, k_competir, k_entrenamiento, k_opciones, \ -k_informacion, k_grabar, k_grabarComo, k_file, k_recuperar, k_abandonar, k_reiniciar, k_atras, \ -k_aplazar, k_finpartida, k_ent_empezar, k_ent_otro, k_pgnFin, k_pgnPaste, \ -k_pgnFichero, k_pgnInformacion, k_pgnFicheroRepite, k_pgnNuestroFichero, k_jugadadia, k_pgnComandoExterno, \ -k_rendirse, k_tablas, k_libros, \ -k_peliculaTerminar, k_peliculaLento, k_peliculaPausa, k_peliculaSeguir, k_peliculaRapido, k_peliculaRepetir, \ -k_peliculaPGN, k_jugar, k_anterior, k_siguiente, k_trasteros, \ -k_ayuda, k_mateNivel, k_ayudaMover, \ -k_aceptar, k_cancelar, \ -k_configurar, k_utilidades, k_variantes, k_tools, k_elo, k_cambiar, k_libre, k_showtext, k_enviar = range(55) +( + k_terminar, k_play, k_mainmenu, k_competicion, k_competir, k_entrenamiento, k_opciones, + k_informacion, k_grabar, k_grabarComo, k_file, k_recuperar, k_abandonar, k_reiniciar, k_atras, + k_aplazar, k_finpartida, k_ent_empezar, k_ent_otro, k_pgnFin, k_pgnPaste, + k_pgnFichero, k_pgnInformacion, k_pgnFicheroRepite, k_pgnNuestroFichero, k_jugadadia, k_pgnComandoExterno, + k_rendirse, k_tablas, k_libros, + k_peliculaTerminar, k_peliculaLento, k_peliculaPausa, k_peliculaSeguir, k_peliculaRapido, k_peliculaRepetir, + k_peliculaPGN, k_jugar, k_anterior, k_siguiente, k_trasteros, + k_ayuda, k_mateNivel, k_ayudaMover, + k_aceptar, k_cancelar, + k_configurar, k_utilidades, k_variantes, k_tools, k_elo, k_cambiar, k_libre, k_showtext, k_enviar +) = range(55) kMP_1, kMP_2, kMP_3, kMP_4, kMP_5, kMP_6, kMP_7 = range(7) @@ -30,9 +37,11 @@ kTutorH, kTutorH2_1, kTutorH1_2, kTutorV = range(4) -kAjustarMejor, kAjustarSuperior, kAjustarSimilar, kAjustarInferior, kAjustarPeor, kAjustarPlayer, \ -kAjustarNivelAlto, kAjustarNivelMedio, kAjustarNivelBajo, kAjustarSuperiorM, kAjustarSuperiorMM, \ -kAjustarInferiorM, kAjustarInferiorMM = range(13) +( + kAjustarMejor, kAjustarSuperior, kAjustarSimilar, kAjustarInferior, kAjustarPeor, kAjustarPlayer, + kAjustarNivelAlto, kAjustarNivelMedio, kAjustarNivelBajo, kAjustarSuperiorM, kAjustarSuperiorMM, + kAjustarInferiorM, kAjustarInferiorMM +) = range(13) kControlTableroNo, kControlTableroGeneral, kControlTableroParticular = range(3) diff --git a/Code/ControlPosicion.py b/Code/ControlPosicion.py index 26524f3..42eb2aa 100644 --- a/Code/ControlPosicion.py +++ b/Code/ControlPosicion.py @@ -1,4 +1,4 @@ -import LCEngine +import LCEngineV1 as LCEngine from Code import TrListas @@ -434,3 +434,6 @@ def siPeonCoronando(self, desdeA1H8, hastaA1H8): return False return True + +def distancia(desde, hasta): + return ((ord(desde[0])-ord(hasta[0]))**2 + (ord(desde[1])-ord(hasta[1]))**2)**0.5 diff --git a/Code/DBgames.py b/Code/DBgames.py index f0c3acc..8ee44cc 100644 --- a/Code/DBgames.py +++ b/Code/DBgames.py @@ -4,7 +4,7 @@ import time import random -import LCEngine +import LCEngineV1 as LCEngine from Code import ControlPosicion from Code import Partida @@ -524,8 +524,9 @@ def getSummary(self, pvBase, dicAnalisis, siFigurinesPGN, allmoves=True): class DBgames: - def __init__(self, nomFichero): + def __init__(self, nomFichero, with_dbSTAT=True): self.nomFichero = Util.dirRelativo(nomFichero) + self.with_dbSTAT = with_dbSTAT self.liCamposBase = ["EVENT", "SITE", "DATE", "WHITE", "BLACK", "RESULT", "ECO", "WHITEELO", "BLACKELO", "PLIES"] self.liCamposWork = ["XPV", ] self.liCamposBLOB = ["PGN", ] @@ -556,7 +557,10 @@ def __init__(self, nomFichero): self.liOrden = [] - self.dbSTAT = TreeSTAT(self.nomFichero + "_s1") + if self.with_dbSTAT: + self.dbSTAT = TreeSTAT(self.nomFichero + "_s1") + else: + self.dbSTAT = None self.liRowids = [] @@ -759,10 +763,12 @@ def borrarLista(self, lista): for recno in lista: pv = self.damePV(recno) result = self.field(recno, "RESULT") - self.dbSTAT.append(pv, result, -1) + if self.with_dbSTAT: + self.dbSTAT.append(pv, result, -1) self._cursor.execute(cSQL,(self.liRowids[recno],)) del self.liRowids[recno] - self.dbSTAT.commit() + if self.with_dbSTAT: + self.dbSTAT.commit() self._conexion.commit() def getSummary(self, pvBase, dicAnalisis, siFigurinesPGN, allmoves=True): @@ -803,7 +809,8 @@ def leerPGNs(self, ficheros, dlTmp): t1 = time.time()-0.7 # para que empiece enseguida - self.dbSTAT.massive_append_set(True) + if self.with_dbSTAT: + self.dbSTAT.massive_append_set(True) def write_logs(fich, pgn): with open(fich, "ab") as ferr: @@ -880,7 +887,8 @@ def write_logs(fich, pgn): pgn = Util.var2blob(pgn) reg = (xpv, event, site, date, white, black, result, eco, whiteelo, blackelo, pgn, plies) - self.dbSTAT.append_fen(pv, result, liFens) + if self.with_dbSTAT: + self.dbSTAT.append_fen(pv, result, liFens) liRegs.append(reg) nRegs += 1 importados += 1 @@ -890,9 +898,10 @@ def write_logs(fich, pgn): liRegs = [] stRegs = set() conexion.commit() - self.dbSTAT.massive_append_set(False) - self.dbSTAT.commit() - self.dbSTAT.massive_append_set(True) + if self.with_dbSTAT: + self.dbSTAT.massive_append_set(False) + self.dbSTAT.commit() + self.dbSTAT.massive_append_set(True) if n == next_n: if time.time()-t1> 0.8: if not dlTmp.actualiza(erroneos+duplicados+importados, erroneos, duplicados, importados): @@ -906,15 +915,17 @@ def write_logs(fich, pgn): dlTmp.actualiza(erroneos+duplicados+importados, erroneos, duplicados, importados) dlTmp.ponSaving() - self.dbSTAT.massive_append_set(False) - self.dbSTAT.commit() + if self.with_dbSTAT: + self.dbSTAT.massive_append_set(False) + self.dbSTAT.commit() conexion.commit() dlTmp.ponContinuar() def appendDB(self, db, liRecnos, dlTmp): duplicados = importados = 0 - self.dbSTAT.massive_append_set(True) + if self.with_dbSTAT: + self.dbSTAT.massive_append_set(True) t1 = time.time() - 0.7 # para que empiece enseguida @@ -941,7 +952,8 @@ def appendDB(self, db, liRecnos, dlTmp): pv = xpv2pv(xpv) reg = (xpv, raw["EVENT"], raw["SITE"], raw["DATE"], raw["WHITE"], raw["BLACK"], raw["RESULT"], raw["ECO"], raw["WHITEELO"], raw["BLACKELO"], raw["PGN"], raw["PLIES"]) - self.dbSTAT.append(pv, raw["RESULT"]) + if self.with_dbSTAT: + self.dbSTAT.append(pv, raw["RESULT"]) liRegs.append(reg) nRegs += 1 importados += 1 @@ -949,9 +961,10 @@ def appendDB(self, db, liRecnos, dlTmp): cursor.executemany(sql, liRegs) liRegs = [] conexion.commit() - self.dbSTAT.massive_append_set(False) - self.dbSTAT.commit() - self.dbSTAT.massive_append_set(True) + if self.with_dbSTAT: + self.dbSTAT.massive_append_set(False) + self.dbSTAT.commit() + self.dbSTAT.massive_append_set(True) if pos == next_n: if time.time() - t1 > 0.8: @@ -967,8 +980,9 @@ def appendDB(self, db, liRecnos, dlTmp): dlTmp.actualiza(duplicados + importados, duplicados, importados) dlTmp.ponSaving() - self.dbSTAT.massive_append_set(False) - self.dbSTAT.commit() + if self.with_dbSTAT: + self.dbSTAT.massive_append_set(False) + self.dbSTAT.commit() conexion.commit() dlTmp.ponContinuar() @@ -1022,7 +1036,7 @@ def leePartidaRaw(self, raw): litags.extend(rtags) p.setTags(litags) - p.asignaApertura(VarGen.configuracion) + p.asignaApertura() return p def leePGNRecno(self, recno): @@ -1102,9 +1116,10 @@ def modifica(self, recno, partidaCompleta): self._conexion.commit() pvAnt = xpv2pv(reg_ant["XPV"]) resNue = dTags.get("RESULT", "*") - self.dbSTAT.append(pvAnt, resAnt, -1) - self.dbSTAT.append(pvNue, resNue, +1) - self.dbSTAT.commit() + if self.with_dbSTAT: + self.dbSTAT.append(pvAnt, resAnt, -1) + self.dbSTAT.append(pvNue, resNue, +1) + self.dbSTAT.commit() del self.cache[rowid] @@ -1136,8 +1151,9 @@ def inserta(self, partidaCompleta): sql = "insert into games (XPV,EVENT,SITE,DATE,WHITE,BLACK,RESULT,ECO,WHITEELO,BLACKELO,PLIES,PGN) values (?,?,?,?,?,?,?,?,?,?,?,?);" self._cursor.execute(sql, data) self._conexion.commit() - self.dbSTAT.append(pv, dTags.get("RESULT", "*"), +1) - self.dbSTAT.commit() + if self.with_dbSTAT: + self.dbSTAT.append(pv, dTags.get("RESULT", "*"), +1) + self.dbSTAT.commit() self.liRowids.append(self._cursor.lastrowid) diff --git a/Code/DBgamesFEN.py b/Code/DBgamesFEN.py index bdd021e..e6b29ff 100644 --- a/Code/DBgamesFEN.py +++ b/Code/DBgamesFEN.py @@ -4,7 +4,7 @@ import time import random -import LCEngine +import LCEngineV1 as LCEngine from Code import Partida from Code import Util diff --git a/Code/EngineThread.py b/Code/EngineThread.py index 16d012f..f8ef893 100644 --- a/Code/EngineThread.py +++ b/Code/EngineThread.py @@ -10,7 +10,6 @@ DEBUG_ENGINE = False - def xpr(line): if DEBUG_ENGINE: t = time.time() @@ -130,6 +129,10 @@ def start(self): startupinfo = None curdir = os.path.abspath(os.curdir) # problem with "." as curdir os.chdir(self.direxe) # to fix problems with non ascii folders + if VarGen.isLinux: + argv0 = self.args[0] + if "/" not in argv0: + self.args[0] = os.path.join(self.direxe, argv0) self.process = subprocess.Popen(self.args, stdout=subprocess.PIPE, stdin=subprocess.PIPE, startupinfo=startupinfo, shell=False) os.chdir(curdir) diff --git a/Code/EnginesLinux32.py b/Code/EnginesLinux32.py index 3e91a81..c1c89b9 100644 --- a/Code/EnginesLinux32.py +++ b/Code/EnginesLinux32.py @@ -151,10 +151,10 @@ def mas(cm): cm.ordenUCI("Hash", "64") mas(cm) - cm = ConfigMotor("mcbrain", "Michael Byrne (based on stockfish)", "4.0", "https://github.com/MichaelB7/Stockfish/releases") - cm.path = "SF-McBrain-v40_x32_linux" + cm = ConfigMotor("mcbrain", "Michael Byrne", "9", "https://github.com/MichaelB7/Stockfish/releases") + cm.path = "McBrain-9_x32_linux" cm.elo = 3200 - cm.ordenUCI("Tactical", "3") + cm.ordenUCI("Contempt", "0") cm.ordenUCI("Hash", "64") cm.ponMultiPV(20, 500) mas(cm) diff --git a/Code/EnginesLinux64.py b/Code/EnginesLinux64.py index 924cd69..c4d6e83 100644 --- a/Code/EnginesLinux64.py +++ b/Code/EnginesLinux64.py @@ -48,8 +48,8 @@ def mas(cm): cm.ponMultiPV(20, 218) mas(cm) - cm = ConfigMotor("stockfish", "Tord Romstad, Marco Costalba, Joona Kiiski", "8", "http://stockfishchess.org/") - cm.path = "Linux/stockfish_8_x64" + cm = ConfigMotor("stockfish", "Tord Romstad, Marco Costalba, Joona Kiiski", "9", "http://stockfishchess.org/") + cm.path = "Linux/stockfish-9-64" cm.elo = 3300 cm.ordenUCI("Ponder", "false") cm.ordenUCI("Hash", "64") @@ -138,10 +138,10 @@ def mas(cm): cm.ordenUCI("Hash", "64") mas(cm) - cm = ConfigMotor("mcbrain", "Michael Byrne (based on stockfish)", "4.0", "https://github.com/MichaelB7/Stockfish/releases") - cm.path = "SSF-McBrain-v40_x64_linux" + cm = ConfigMotor("mcbrain", "Michael Byrne", "9", "https://github.com/MichaelB7/Stockfish/releases") + cm.path = "McBrain-9_x64_linux" cm.elo = 3200 - cm.ordenUCI("Tactical", "3") + cm.ordenUCI("Contempt", "0") cm.ordenUCI("Hash", "64") cm.ponMultiPV(20, 500) mas(cm) diff --git a/Code/EnginesWindows.py b/Code/EnginesWindows.py index 56b0a14..c8a0778 100644 --- a/Code/EnginesWindows.py +++ b/Code/EnginesWindows.py @@ -208,9 +208,9 @@ def mas(cm): cm.ponMultiPV(20, 256) mas(cm) - cm = ConfigMotor("stockfish", "Tord Romstad, Marco Costalba, Joona Kiiski", "8 32bits", "http://stockfishchess.org/") - cm.path = "Windows/stockfish_8_x32.exe" - cm.path_64 = "Windows/stockfish_8_x64_bmi2.exe", "8 64bits bmi2" + cm = ConfigMotor("stockfish", "Tord Romstad, Marco Costalba, Joona Kiiski", "9 32bits", "http://stockfishchess.org/") + cm.path = "Windows/stockfish_9_x32.exe" + cm.path_64 = "Windows/stockfish_9_x64_bmi2.exe", "9 64bits bmi2" cm.elo = 3300 cm.ordenUCI("Ponder", "false") cm.ordenUCI("Hash", "64") @@ -218,11 +218,11 @@ def mas(cm): cm.ponMultiPV(20, 500) mas(cm) - cm = ConfigMotor("mcbrain", "Michael Byrne (based on stockfish)", "4.0 32bit", "https://github.com/MichaelB7/Stockfish/releases") - cm.path = "SF-McBrain-v40_x32_old.exe" - cm.path_64 = "SF-McBrain-v40_x64_bmi2.exe", "4.0 64bit bmi2" + cm = ConfigMotor("mcbrain", "Michael Byrne", "9 32bit", "https://github.com/MichaelB7/Stockfish/releases") + cm.path = "McBrain-9_x32_old.exe" + cm.path_64 = "McBrain-9_x64_bmi2.exe", "9 64bit bmi2" cm.elo = 3200 - cm.ordenUCI("Tactical", "3") + cm.ordenUCI("Contempt", "0") cm.ordenUCI("Hash", "64") cm.ponMultiPV(20, 500) mas(cm) diff --git a/Code/Entrenamientos.py b/Code/Entrenamientos.py index 722862b..d20911b 100644 --- a/Code/Entrenamientos.py +++ b/Code/Entrenamientos.py @@ -261,14 +261,18 @@ def menuTacticas(submenu, tipo, carpetaBase, lista): menu1.separador() menu2 = menu1.submenu(_("Turn on the lights"), Iconos.TOL()) menu3 = menu2.submenu(_("Memory mode"), Iconos.TOL()) - xopcion(menu3, "tol_uned", _("UNED chess school"), Iconos.Uned()) + xopcion(menu3, "tol_uned_easy", "%s (%s)" % (_("UNED chess school"), _("Initial")), Iconos.Uned()) + menu3.separador() + xopcion(menu3, "tol_uned", "%s (%s)" % (_("UNED chess school"), _("Complete")), Iconos.Uned()) menu3.separador() xopcion(menu3, "tol_uwe_easy", "%s (%s)" % (_("Uwe Auerswald"), _("Initial")), Iconos.Uwe()) menu3.separador() xopcion(menu3, "tol_uwe", "%s (%s)" % (_("Uwe Auerswald"), _("Complete")), Iconos.Uwe()) menu2.separador() menu3 = menu2.submenu(_("Calculation mode"), Iconos.Calculo()) - xopcion(menu3, "tol_uned_calc", _("UNED chess school"), Iconos.Uned()) + xopcion(menu3, "tol_uned_easy_calc", "%s (%s)" % (_("UNED chess school"), _("Initial")), Iconos.Uned()) + menu3.separador() + xopcion(menu3, "tol_uned_calc", "%s (%s)" % (_("UNED chess school"), _("Complete")), Iconos.Uned()) menu3.separador() xopcion(menu3, "tol_uwe_easy_calc", "%s (%s)" % (_("Uwe Auerswald"), _("Initial")), Iconos.Uwe()) menu3.separador() @@ -290,8 +294,8 @@ def menuTacticas(submenu, tipo, carpetaBase, lista): txt = cat.nombre() nm = mem.nivel(x) - if nm > -1: - txt += " %s %d" % (_("Level"), nm + 1) + if nm >= 0: + txt += " %s %d" % (_("Level"), nm+1) xopcion(menu2, -100 - x, txt, cat.icono(), siDeshabilitado=not mem.siActiva(x)) @@ -667,7 +671,12 @@ def everest(self): PantallaEverest.everest(self.procesador) def turn_on_lights(self, name): - if name.startswith("uned"): + if name.startswith("uned_easy"): + title = "%s (%s)" % (_("UNED chess school"), _("Initial")) + folder = "Trainings/Tactics by UNED chess school" + icono = Iconos.Uned() + li_tam_blocks = (4, 6, 9, 12, 18, 36) + elif name.startswith("uned"): title = _("UNED chess school") folder = "Trainings/Tactics by UNED chess school" icono = Iconos.Uned() diff --git a/Code/Everest.py b/Code/Everest.py index f34f0ff..3bc652d 100644 --- a/Code/Everest.py +++ b/Code/Everest.py @@ -1,4 +1,4 @@ -import LCEngine +import LCEngineV1 as LCEngine from Code import Partida from Code.SQL import Base diff --git a/Code/GM.py b/Code/GM.py index e2ba76c..853265a 100644 --- a/Code/GM.py +++ b/Code/GM.py @@ -1,7 +1,7 @@ import operator import os -from LCEngine import xpv2pv, pv2xpv +from LCEngineV1 import xpv2pv, pv2xpv from Code import Jugada from Code import Util diff --git a/Code/Gestor.py b/Code/Gestor.py index edc5501..5009532 100644 --- a/Code/Gestor.py +++ b/Code/Gestor.py @@ -3,7 +3,7 @@ import random import time -import LCEngine +import LCEngineV1 as LCEngine from Code import Analisis from Code import AnalisisIndexes @@ -977,9 +977,13 @@ def borrar(self): li_del.append((_("Comments") + ":", False)) li_del.append(separador) li_del.append((_("Analysis") + ":", False)) + li_del.append(separador) + li_del.append((_("All") + ":", False)) resultado = FormLayout.fedit(li_del, title=_("Remove"), parent=self.pantalla, icon=Iconos.Delete()) if resultado: - variants, ratings, comments, analysis = resultado[1] + variants, ratings, comments, analysis, all = resultado[1] + if all: + variants, ratings, comments, analysis = True, True, True, True for jg in self.partida.liJugadas: if variants: jg.variantes = "" @@ -1500,6 +1504,7 @@ def showAnalisis(self): elos = self.partida.calc_elos(self.configuracion) alm = Histogram.genHistograms(self.partida, self.configuracion.centipawns) alm.indexesHTML, alm.indexesRAW, alm.eloW, alm.eloB, alm.eloT = AnalisisIndexes.genIndexes(self.partida, elos, alm) + alm.siBlancasAbajo = self.tablero.siBlancasAbajo um.final() PantallaAnalisis.showGraph(self.pantalla, self, alm, Analisis.muestraAnalisis) diff --git a/Code/Gestor60.py b/Code/Gestor60.py index 0b62c8c..92987b2 100644 --- a/Code/Gestor60.py +++ b/Code/Gestor60.py @@ -2,7 +2,7 @@ import random import time -import LCEngine +import LCEngineV1 as LCEngine from Code import ControlPosicion from Code import Gestor diff --git a/Code/GestorAlbum.py b/Code/GestorAlbum.py index b0e0af9..b3ed1c1 100644 --- a/Code/GestorAlbum.py +++ b/Code/GestorAlbum.py @@ -36,7 +36,7 @@ def inicio(self, album, cromo, aplazamiento=None): # -Aplazamiento 1/2-------------------------------------------------- if aplazamiento: self.partida.recuperaDeTexto(aplazamiento["JUGADAS"]) - self.listaAperturasStd.asignaApertura(self.partida) + self.partida.asignaApertura() self.xrival = Albums.GestorMotorAlbum(self, self.cromo) self.pantalla.ponToolBar((k_rendirse, k_aplazar, k_configurar, k_utilidades)) @@ -196,7 +196,7 @@ def masJugada(self, jg, siNuestra): self.partida.append_jg(jg) if self.partida.pendienteApertura: - self.listaAperturasStd.asignaApertura(self.partida) + self.partida.asignaApertura() resp = self.partida.si3repetidas() if resp: diff --git a/Code/GestorAperturas.py b/Code/GestorAperturas.py index 45462c2..3958f8d 100644 --- a/Code/GestorAperturas.py +++ b/Code/GestorAperturas.py @@ -218,7 +218,7 @@ def masJugada(self, jg, siNuestra): self.partida.append_jg(jg) if self.partida.pendienteApertura: - self.listaAperturasStd.asignaApertura(self.partida) + self.partida.asignaApertura() self.ponFlechaSC(jg.desde, jg.hasta) self.beepExtendido(siNuestra) diff --git a/Code/GestorBooks.py b/Code/GestorBooks.py index fa4df2f..77edaa9 100644 --- a/Code/GestorBooks.py +++ b/Code/GestorBooks.py @@ -280,7 +280,7 @@ def masJugada(self, jg, siNuestra): self.partida.append_jg(jg) if self.partida.pendienteApertura: - self.listaAperturasStd.asignaApertura(self.partida) + self.partida.asignaApertura() self.ponFlechaSC(jg.desde, jg.hasta) self.beepExtendido(siNuestra) diff --git a/Code/GestorCompeticion.py b/Code/GestorCompeticion.py index 4651eb5..5c3a09c 100644 --- a/Code/GestorCompeticion.py +++ b/Code/GestorCompeticion.py @@ -185,7 +185,7 @@ def atras(self): self.ponAyudas(self.ayudas) self.partida.anulaUltimoMovimiento(self.siJugamosConBlancas) self.siApertura = False - self.listaAperturasStd.asignaApertura(self.partida) + self.partida.asignaApertura() self.ponteAlFinal() self.siAnalizadoTutor = False self.refresh() @@ -322,7 +322,7 @@ def masJugada(self, jg, siNuestra): self.partida.append_jg(jg) if self.partida.pendienteApertura: - self.listaAperturasStd.asignaApertura(self.partida) + self.partida.asignaApertura() resp = self.partida.si3repetidas() if resp: diff --git a/Code/GestorElo.py b/Code/GestorElo.py index 74815e3..a0d4712 100644 --- a/Code/GestorElo.py +++ b/Code/GestorElo.py @@ -529,7 +529,7 @@ def masJugada(self, jg, siNuestra): self.partida.append_jg(jg) if self.partida.pendienteApertura: - self.listaAperturasStd.asignaApertura(self.partida) + self.partida.asignaApertura() resp = self.partida.si3repetidas() if resp: @@ -692,7 +692,7 @@ def determinaColor(self, datosMotor): def atras(self): if self.partida.numJugadas() > 2: self.partida.anulaUltimoMovimiento(self.siJugamosConBlancas) - self.listaAperturasStd.asignaApertura(self.partida) + self.partida.asignaApertura() self.ponteAlFinal() self.refresh() self.siguienteJugada() diff --git a/Code/GestorEntMaq.py b/Code/GestorEntMaq.py index ade5792..2602bb7 100644 --- a/Code/GestorEntMaq.py +++ b/Code/GestorEntMaq.py @@ -1,4 +1,4 @@ -import LCEngine +import LCEngineV1 as LCEngine from PyQt4 import QtCore from Code import Analisis @@ -475,7 +475,7 @@ def atras(self): self.ponAyudasEM() self.partida.anulaUltimoMovimiento(self.siJugamosConBlancas) if not self.fen: - self.listaAperturasStd.asignaApertura(self.partida) + self.partida.asignaApertura() self.ponteAlFinal() self.reOpenBook() self.refresh() @@ -883,7 +883,7 @@ def masJugada(self, jg, siNuestra): self.partida.append_jg(jg) if self.partida.pendienteApertura: - self.listaAperturasStd.asignaApertura(self.partida) + self.partida.asignaApertura() resp = self.partida.si3repetidas() if resp: diff --git a/Code/GestorEverest.py b/Code/GestorEverest.py index bcee87f..989288b 100644 --- a/Code/GestorEverest.py +++ b/Code/GestorEverest.py @@ -246,6 +246,13 @@ def mueveHumano(self, desde, hasta, coronacion=""): um.final() rmUsu, posUsu = mrm.buscaRM(jgUsu.movimiento()) + if rmUsu is None: + um = QTUtil2.analizando(self.pantalla) + self.analizaFinal() + rmUsu = self.xanalyzer.valora(posicion, desde, hasta, coronacion) + mrm.agregaRM(rmUsu) + self.analizaInicio() + um.final() w = PantallaJuicio.WJuicio(self, self.xanalyzer, self.nombreObj, posicion, mrm, rmObj, rmUsu, analisis, siCompetitivo=False) @@ -286,7 +293,7 @@ def masJugada(self, siNuestra, analisis=None, comentario=None): self.partida.append_jg(jg) if self.partida.pendienteApertura: - self.listaAperturasStd.asignaApertura(self.partida) + self.partida.asignaApertura() self.movimientosPiezas(jg.liMovs, True) self.tablero.ponPosicion(jg.posicion) self.ponFlechaSC(jg.desde, jg.hasta) diff --git a/Code/GestorFideFics.py b/Code/GestorFideFics.py index 103a09b..ee7ef5a 100644 --- a/Code/GestorFideFics.py +++ b/Code/GestorFideFics.py @@ -3,7 +3,7 @@ import datetime import random -import LCEngine +import LCEngineV1 as LCEngine from Code import Apertura from Code import Gestor @@ -414,7 +414,7 @@ def masJugada(self, siNuestra, comentario=None, analisis=None): self.partida.append_jg(jg) if self.partida.pendienteApertura: - self.listaAperturasStd.asignaApertura(self.partida) + self.partida.asignaApertura() self.movimientosPiezas(jg.liMovs, True) self.tablero.ponPosicion(jg.posicion) self.ponFlechaSC(jg.desde, jg.hasta) @@ -506,7 +506,7 @@ def atras(self): if self.partida.numJugadas() > 2: self.analizaFinal() ndel = self.partida.anulaUltimoMovimiento(self.siJugamosConBlancas) - self.listaAperturasStd.asignaApertura(self.partida) + self.partida.asignaApertura() self.posJugadaObj -= ndel self.analisis = None self.ponteAlFinal() diff --git a/Code/GestorGM.py b/Code/GestorGM.py index c6beeab..b5f2493 100644 --- a/Code/GestorGM.py +++ b/Code/GestorGM.py @@ -308,10 +308,12 @@ def mueveHumano(self, desde, hasta, coronacion=None): rmUsu, nada = mrm.buscaRM(jgUsu.movimiento()) if rmUsu is None: + um = QTUtil2.analizando(self.pantalla) self.analizaFinal() rmUsu = self.xtutor.valora(posicion, desde, hasta, coronacion) mrm.agregaRM(rmUsu) self.analizaInicio() + um.final() rmGM, posGM = mrm.buscaRM(jgGM.movimiento()) if rmGM is None: @@ -390,7 +392,7 @@ def masJugada(self, jg, siNuestra): self.partida.append_jg(jg) if self.partida.pendienteApertura: - self.listaAperturasStd.asignaApertura(self.partida) + self.partida.asignaApertura() self.ponFlechaSC(jg.desde, jg.hasta) self.beepExtendido(siNuestra) diff --git a/Code/GestorMicElo.py b/Code/GestorMicElo.py index 49b74f1..cdf827a 100644 --- a/Code/GestorMicElo.py +++ b/Code/GestorMicElo.py @@ -134,7 +134,7 @@ def inicio(self, datosMotor, minutos, segundos, siCompetitivo, aplazamiento=None self.maxSegundos = aplazamiento["MAXSEGUNDOS"] self.segundosJugada = aplazamiento["SEGUNDOSJUGADA"] - self.listaAperturasStd.asignaApertura(self.partida) + self.partida.asignaApertura() else: self.datosMotor = datosMotor @@ -392,7 +392,7 @@ def masJugada(self, jg, siNuestra): self.partida.liJugadas.append(jg) if self.partida.pendienteApertura: - self.listaAperturasStd.asignaApertura(self.partida) + self.partida.asignaApertura() resp = self.partida.si3repetidas() if resp: @@ -601,7 +601,7 @@ def relojStop(self, siUsuario): def atras(self): if self.partida.numJugadas() > 2: self.partida.anulaUltimoMovimiento(self.siJugamosConBlancas) - self.listaAperturasStd.asignaApertura(self.partida) + self.partida.asignaApertura() self.ponteAlFinal() self.refresh() self.siguienteJugada() diff --git a/Code/GestorOpeningLines.py b/Code/GestorOpeningLines.py new file mode 100644 index 0000000..127f0e6 --- /dev/null +++ b/Code/GestorOpeningLines.py @@ -0,0 +1,548 @@ +import time + +from Code import Gestor +from Code import Jugada +from Code import ControlPosicion +from Code import TrListas +from Code.QT import QTUtil2 +from Code import Util +from Code import OpeningLines +from Code import XMotorRespuesta +from Code import Partida +from Code.Constantes import * + + +class GestorOpeningLines(Gestor.Gestor): + def inicio(self, pathFichero, modo, num_linea): + self.tablero.saveVisual() + + self.pathFichero = pathFichero + dbop = OpeningLines.Opening(pathFichero) + self.tablero.dbVisual_setFichero(dbop.nomFichero) + self.reinicio(dbop, modo, num_linea) + + def reinicio(self, dbop, modo, num_linea): + self.dbop = dbop + self.tipoJuego = kJugOpeningLines + + self.modo = modo + self.num_linea = num_linea + + self.training = self.dbop.training() + self.liGames = self.training["LIGAMES_%s" % modo.upper()] + self.game = self.liGames[num_linea] + self.liPV = self.game["LIPV"] + self.numPV = len(self.liPV) + + self.calc_totalTiempo() + + self.dicFENm2 = self.training["DICFENM2"] + + + self.liMensBasic = [ + "%s: %d" % (_("Lines"), len(self.liGames)), + ] + + self.siAyuda = False + self.tablero.dbVisual_setShowAllways(False) + + self.partida = Partida.Partida() + + self.ayudas = 9999 # Para que analice sin problemas + + self.siJugamosConBlancas = self.training["COLOR"] == "WHITE" + self.siRivalConBlancas = not self.siJugamosConBlancas + + self.pantalla.ponToolBar((k_mainmenu, k_ayuda, k_reiniciar)) + self.pantalla.activaJuego(True, False, siAyudas=False) + self.ponMensajero(self.mueveHumano) + self.ponPosicion(self.partida.ultPosicion) + self.mostrarIndicador(True) + self.quitaAyudas() + self.ponPiezasAbajo(self.siJugamosConBlancas) + self.pgnRefresh(True) + + self.ponCapInfoPorDefecto() + + self.estado = kJugando + + self.ponPosicionDGT() + + self.errores = 0 + self.ini_time = time.time() + self.muestraInformacion() + self.siguienteJugada() + + def calc_totalTiempo(self): + self.tm = 0 + for game in self.liGames: + for tr in game["TRIES"]: + self.tm += tr["TIME"] + + def ayuda(self): + self.siAyuda = True + self.pantalla.ponToolBar((k_mainmenu, k_reiniciar)) + self.tablero.dbVisual_setShowAllways(True) + + self.muestraAyuda() + self.muestraInformacion() + + def muestraInformacion(self): + li = [] + li.append("%s: %d" %(_("Errors"), self.errores)) + if self.siAyuda: + li.append(_("Help activated")) + self.ponRotulo1("\n".join(li)) + + tgm = 0 + for tr in self.game["TRIES"]: + tgm += tr["TIME"] + + mens = "\n" + "\n".join(self.liMensBasic) + mens += "\n%s:\n %s %s\n %s %s" % (_("Working time"), + time.strftime("%H:%M:%S", time.gmtime(tgm)), _("Current"), + time.strftime("%H:%M:%S", time.gmtime(self.tm)), _("Total")) + + self.ponRotulo2(mens) + + if self.siAyuda: + dicNAGs = TrListas.dicNAGs() + mens3 = "" + fenM2 = self.partida.ultPosicion.fenM2() + reg = self.dbop.getfenvalue(fenM2) + if reg: + mens3 = reg["COMENTARIO"] + ventaja = reg.get("VENTAJA", 0) + valoracion = reg.get("VALORACION", 0) + if ventaja: + mens3 += "\n %s" % dicNAGs[ventaja] + if valoracion: + mens3 += "\n %s" % dicNAGs[valoracion] + self.ponRotulo3(mens3 if mens3 else None) + + + def partidaTerminada(self, siCompleta): + tm = time.time() - self.ini_time + li = [_("Line finished.")] + if self.siAyuda: + li.append(_("Help activated")) + if self.errores > 0: + li.append("%s: %d" % (_("Errors"), self.errores)) + + if siCompleta: + QTUtil2.mensaje(self.pantalla, "\n".join(li)) + + dictry = { + "DATE": Util.hoy(), + "TIME": tm, + "AYUDA": self.siAyuda, + "ERRORS": self.errores + } + self.game["TRIES"].append(dictry) + + sinError = self.errores == 0 and not self.siAyuda + if siCompleta: + if sinError: + self.game["NOERROR"] += 1 + noError = self.game["NOERROR"] + if self.modo == "sequential": + salto = 2**(noError + 1) + numGames = len(self.liGames) + for x in range(salto, numGames): + game = self.liGames[x] + if game["NOERROR"] != noError: + salto = x + break + + liNuevo = self.liGames[1:salto] + liNuevo.append(self.game) + if numGames > salto: + liNuevo.extend(self.liGames[salto:]) + self.training["LIGAMES_SEQUENTIAL"] = liNuevo + self.pantalla.ponToolBar((k_mainmenu, k_siguiente)) + else: + self.pantalla.ponToolBar((k_mainmenu, k_reiniciar)) + else: + self.game["NOERROR"] -= 1 + + self.pantalla.ponToolBar((k_mainmenu, k_reiniciar)) + else: + if not sinError: + self.game["NOERROR"] -= 1 + self.game["NOERROR"] = max(0, self.game["NOERROR"]) + + self.dbop.setTraining(self.training) + self.estado = kFinJuego + self.calc_totalTiempo() + self.muestraInformacion() + + def muestraAyuda(self): + pv = self.liPV[len(self.partida)] + self.tablero.creaFlechaMov(pv[:2], pv[2:4], "mt80") + fenM2 = self.partida.ultPosicion.fenM2() + for pv1 in self.dicFENm2[fenM2]: + if pv1 != pv: + self.tablero.creaFlechaMov(pv1[:2], pv1[2:4], "ms40") + + def procesarAccion(self, clave): + if clave == k_mainmenu: + self.finPartida() + + elif clave == k_reiniciar : + self.reiniciar() + + elif clave == k_configurar: + self.configurar(siSonidos=True) + + elif clave == k_utilidades: + self.utilidades() + + elif clave == k_siguiente: + self.reinicio(self.dbop, self.modo, self.num_linea) + + elif clave == k_ayuda: + self.ayuda() + + else: + Gestor.Gestor.rutinaAccionDef(self, clave) + + def finalX(self): + return self.finPartida() + + def finPartida(self): + self.dbop.close() + self.tablero.restoreVisual() + self.procesador.inicio() + if self.modo == "static": + self.procesador.openingsTrainingStatic(self.pathFichero) + else: + self.procesador.openings() + return False + + def reiniciar(self): + if len(self.partida) > 0 and self.estado != kFinJuego: + self.partidaTerminada(False) + self.reinicio(self.dbop, self.modo, self.num_linea) + + def siguienteJugada(self): + self.muestraInformacion() + if self.estado == kFinJuego: + return + + self.estado = kJugando + + self.siJuegaHumano = False + self.ponVista() + + siBlancas = self.partida.ultPosicion.siBlancas + + self.ponIndicador(siBlancas) + self.refresh() + + siRival = siBlancas == self.siRivalConBlancas + + numJugadas = len(self.partida) + if numJugadas >= self.numPV: + self.partidaTerminada(True) + return + pv = self.liPV[numJugadas] + + if siRival: + self.desactivaTodas() + + self.rmRival = XMotorRespuesta.RespuestaMotor("Apertura", self.siRivalConBlancas) + self.rmRival.desde = pv[:2] + self.rmRival.hasta = pv[2:4] + self.rmRival.coronacion = pv[4:] + + self.mueveRival(self.rmRival) + self.siguienteJugada() + + else: + self.activaColor(siBlancas) + self.siJuegaHumano = True + if self.siAyuda: + self.muestraAyuda() + + def mueveHumano(self, desde, hasta, coronacion=""): + jg = self.checkMueveHumano(desde, hasta, coronacion) + if not jg: + return False + pvSel = desde + hasta + coronacion + pvObj = self.liPV[len(self.partida)] + + if pvSel != pvObj: + fenM2 = jg.posicionBase.fenM2() + li = self.dicFENm2[fenM2] + if pvSel in li: + mens = _("You have selected a correct move, but this line uses another one.") + QTUtil2.mensajeTemporal(self.pantalla, mens, 2, posicion="tb", background="#C3D6E8") + self.sigueHumano() + return False + + self.errores += 1 + mens = "%s: %d" % (_("Error"), self.errores) + QTUtil2.mensajeTemporal(self.pantalla, mens, 2, posicion="tb", background="#FF9B00") + self.muestraInformacion() + self.sigueHumano() + return False + + self.movimientosPiezas(jg.liMovs) + + self.masJugada(jg, True) + self.siguienteJugada() + return True + + def masJugada(self, jg, siNuestra): + self.partida.append_jg(jg) + if self.partida.pendienteApertura: + self.partida.asignaApertura() + + self.ponFlechaSC(jg.desde, jg.hasta) + self.beepExtendido(siNuestra) + + self.pgnRefresh(self.partida.ultPosicion.siBlancas) + self.refresh() + + self.ponPosicionDGT() + + def mueveRival(self, respMotor): + desde = respMotor.desde + hasta = respMotor.hasta + + coronacion = respMotor.coronacion + + siBien, mens, jg = Jugada.dameJugada(self.partida.ultPosicion, desde, hasta, coronacion) + if siBien: + self.partida.ultPosicion = jg.posicion + + self.masJugada(jg, False) + self.movimientosPiezas(jg.liMovs, True) + + self.error = "" + + return True + else: + self.error = mens + return False + + +class GestorOpeningLinesPositions(Gestor.Gestor): + def inicio(self, pathFichero): + self.pathFichero = pathFichero + dbop = OpeningLines.Opening(pathFichero) + self.reinicio(dbop) + + def reinicio(self, dbop): + self.dbop = dbop + self.tipoJuego = kJugOpeningLines + + self.training = self.dbop.training() + self.liTrainPositions = self.training["LITRAINPOSITIONS"] + self.trposition = self.liTrainPositions[0] + + self.tm = 0 + for game in self.liTrainPositions: + for tr in game["TRIES"]: + self.tm += tr["TIME"] + + self.liMensBasic = [ + "%s: %d" % (_("Moves"), len(self.liTrainPositions)), + ] + + self.siAyuda = False + + cp = ControlPosicion.ControlPosicion() + cp.leeFen(self.trposition["FENM2"] + " 0 1") + + self.partida = Partida.Partida(iniPosicion=cp) + + self.ayudas = 9999 # Para que analice sin problemas + + self.siJugamosConBlancas = self.training["COLOR"] == "WHITE" + self.siRivalConBlancas = not self.siJugamosConBlancas + + self.pantalla.ponToolBar((k_mainmenu, k_ayuda, k_reiniciar)) + self.pantalla.activaJuego(True, False, siAyudas=False) + self.ponMensajero(self.mueveHumano) + self.ponPosicion(cp) + self.mostrarIndicador(True) + self.quitaAyudas() + self.ponPiezasAbajo(self.siJugamosConBlancas) + self.pgnRefresh(True) + + self.ponCapInfoPorDefecto() + + self.estado = kJugando + + self.ponPosicionDGT() + + self.quitaInformacion() + + self.errores = 0 + self.ini_time = time.time() + self.muestraInformacion() + self.siguienteJugada() + + def ayuda(self): + self.siAyuda = True + self.pantalla.ponToolBar((k_mainmenu, k_reiniciar)) + + self.muestraAyuda() + self.muestraInformacion() + + def muestraInformacion(self): + li = [] + li.append("%s: %d" %(_("Errors"), self.errores)) + if self.siAyuda: + li.append(_("Help activated")) + self.ponRotulo1("\n".join(li)) + + tgm = 0 + for tr in self.trposition["TRIES"]: + tgm += tr["TIME"] + + mas = time.time() - self.ini_time + + mens = "\n" + "\n".join(self.liMensBasic) + mens += "\n%s:\n %s %s\n %s %s" % (_("Working time"), + time.strftime("%H:%M:%S", time.gmtime(tgm+mas)), _("Current"), + time.strftime("%H:%M:%S", time.gmtime(self.tm+mas)), _("Total")) + + self.ponRotulo2(mens) + + def posicionTerminada(self): + tm = time.time() - self.ini_time + li = [_("Finished.")] + if self.siAyuda: + li.append(_("Help activated")) + if self.errores > 0: + li.append("%s: %d" % (_("Errors"), self.errores)) + + QTUtil2.mensajeTemporal(self.pantalla, "\n".join(li), 1.2) + + dictry = { + "DATE": Util.hoy(), + "TIME": tm, + "AYUDA": self.siAyuda, + "ERRORS": self.errores + } + self.trposition["TRIES"].append(dictry) + + sinError = self.errores == 0 and not self.siAyuda + if sinError: + self.trposition["NOERROR"] += 1 + else: + self.trposition["NOERROR"] = max(0, self.trposition["NOERROR"]-1) + noError = self.trposition["NOERROR"] + salto = 2**(noError + 1) + 1 + numPosics = len(self.liTrainPositions) + for x in range(salto, numPosics): + posic = self.liTrainPositions[x] + if posic["NOERROR"] != noError: + salto = x + break + + liNuevo = self.liTrainPositions[1:salto] + liNuevo.append(self.trposition) + if numPosics > salto: + liNuevo.extend(self.liTrainPositions[salto:]) + self.training["LITRAINPOSITIONS"] = liNuevo + self.pantalla.ponToolBar((k_mainmenu, k_siguiente)) + + self.dbop.setTraining(self.training) + self.estado = kFinJuego + self.muestraInformacion() + + def muestraAyuda(self): + liMoves = self.trposition["MOVES"] + for pv in liMoves: + self.tablero.creaFlechaMov(pv[:2], pv[2:4], "mt80") + + def procesarAccion(self, clave): + if clave == k_mainmenu: + self.finPartida() + + elif clave == k_reiniciar : + self.reiniciar() + + elif clave == k_configurar: + self.configurar(siSonidos=True) + + elif clave == k_utilidades: + self.utilidades() + + elif clave == k_siguiente: + self.reinicio(self.dbop) + + elif clave == k_ayuda: + self.ayuda() + + else: + Gestor.Gestor.rutinaAccionDef(self, clave) + + def finalX(self): + return self.finPartida() + + def finPartida(self): + self.dbop.close() + self.procesador.inicio() + self.procesador.openings() + return False + + def reiniciar(self): + self.reinicio(self.dbop) + + def siguienteJugada(self): + self.muestraInformacion() + if self.estado == kFinJuego: + return + + self.estado = kJugando + + self.siJuegaHumano = False + self.ponVista() + + siBlancas = self.partida.ultPosicion.siBlancas + + self.ponIndicador(siBlancas) + self.refresh() + + self.activaColor(siBlancas) + self.siJuegaHumano = True + if self.siAyuda: + self.muestraAyuda() + + def mueveHumano(self, desde, hasta, coronacion=""): + jg = self.checkMueveHumano(desde, hasta, coronacion) + if not jg: + return False + pvSel = desde + hasta + coronacion + lipvObj = self.trposition["MOVES"] + + if pvSel not in lipvObj: + self.errores += 1 + mens = "%s: %d" % (_("Error"), self.errores) + QTUtil2.mensajeTemporal(self.pantalla, mens, 2, posicion="ad", background="#FF9B00") + self.muestraInformacion() + self.sigueHumano() + return False + + self.movimientosPiezas(jg.liMovs) + + self.masJugada(jg, True) + self.posicionTerminada() + return True + + def masJugada(self, jg, siNuestra): + self.partida.append_jg(jg) + if self.partida.pendienteApertura: + self.partida.asignaApertura() + + self.ponFlechaSC(jg.desde, jg.hasta) + self.beepExtendido(siNuestra) + + self.pgnRefresh(self.partida.ultPosicion.siBlancas) + self.refresh() + + self.ponPosicionDGT() \ No newline at end of file diff --git a/Code/GestorPGN.py b/Code/GestorPGN.py index 6289032..ba24e05 100644 --- a/Code/GestorPGN.py +++ b/Code/GestorPGN.py @@ -193,7 +193,7 @@ def miniatura(self): def mostrar(self, pgn, siRepiteFichero, siBlancas=None): self.pensando(True) self.partida.leeOtra(pgn.partida) - self.listaAperturasStd.asignaApertura(self.partida) + self.partida.asignaApertura() blancas = pgn.variable("WHITE") negras = pgn.variable("BLACK") resultado = pgn.variable("RESULT") diff --git a/Code/GestorPartida.py b/Code/GestorPartida.py index 96418e2..efcad16 100644 --- a/Code/GestorPartida.py +++ b/Code/GestorPartida.py @@ -184,7 +184,7 @@ def masJugada(self, jg, siNuestra): self.partida.append_jg(jg) if self.partida.pendienteApertura: - self.listaAperturasStd.asignaApertura(self.partida) + self.partida.asignaApertura() resp = self.partida.si3repetidas() if resp: @@ -349,8 +349,7 @@ def configurarGS(self): return p = Partida.PartidaCompleta() p.leeOtra(partida) - if self.siCompleta: - p.asignaApertura(self.configuracion) + p.asignaApertura() p.setTags(unpgn.listaCabeceras()) self.reinicio = p.save() self.reiniciar() @@ -368,8 +367,7 @@ def configurarGS(self): return p = Partida.PartidaCompleta() p.leeOtra(partida) - if self.siCompleta: - p.asignaApertura(self.configuracion) + p.asignaApertura() p.setTags(unpgn.listaCabeceras()) self.reinicio = p.save() self.reiniciar() @@ -438,7 +436,7 @@ def atras(self): if self.partida.numJugadas(): self.partida.anulaSoloUltimoMovimiento() if not self.fen: - self.listaAperturasStd.asignaApertura(self.partida) + self.partida.asignaApertura() self.ponteAlFinal() self.estado = kJugando self.refresh() diff --git a/Code/GestorPerson.py b/Code/GestorPerson.py index cb94dcd..aea2165 100644 --- a/Code/GestorPerson.py +++ b/Code/GestorPerson.py @@ -299,7 +299,7 @@ def atras(self): self.ayudas -= 1 self.partida.anulaUltimoMovimiento(self.siJugamosConBlancas) if not self.fen: - self.listaAperturasStd.asignaApertura(self.partida) + self.partida.asignaApertura() self.ponteAlFinal() self.refresh() self.siguienteJugada() @@ -422,7 +422,7 @@ def masJugada(self, jg, siNuestra): self.partida.append_jg(jg) if self.partida.pendienteApertura: - self.listaAperturasStd.asignaApertura(self.partida) + self.partida.asignaApertura() resp = self.partida.si3repetidas() if resp: diff --git a/Code/GestorPlayPGN.py b/Code/GestorPlayPGN.py index 6adeb38..2c60080 100644 --- a/Code/GestorPlayPGN.py +++ b/Code/GestorPlayPGN.py @@ -275,7 +275,7 @@ def masJugada(self, siNuestra, analisis=None, comentario=None): self.partida.append_jg(jg) if self.partida.pendienteApertura: - self.listaAperturasStd.asignaApertura(self.partida) + self.partida.asignaApertura() self.movimientosPiezas(jg.liMovs, True) self.tablero.ponPosicion(jg.posicion) self.ponFlechaSC(jg.desde, jg.hasta) diff --git a/Code/GestorResistance.py b/Code/GestorResistance.py index 91db0bb..fda1525 100644 --- a/Code/GestorResistance.py +++ b/Code/GestorResistance.py @@ -34,7 +34,6 @@ def inicio(self, resistance, numEngine, clave): self.apertura = Apertura.AperturaPol(5) # lee las aperturas # debe hacerse antes que rival - # arbitro = self.configuracion.buscaRival( "stockfish" ) self.xarbitro = self.procesador.creaGestorMotor(self.configuracion.tutor, self.segundos * 1000, None) self.xarbitro.anulaMultiPV() @@ -289,7 +288,7 @@ def masJugada(self, jg, siNuestra): self.partida.append_jg(jg) if self.partida.pendienteApertura: - self.listaAperturasStd.asignaApertura(self.partida) + self.partida.asignaApertura() resp = self.partida.si3repetidas() if resp: diff --git a/Code/GestorRoutes.py b/Code/GestorRoutes.py index b14aec9..37c3076 100644 --- a/Code/GestorRoutes.py +++ b/Code/GestorRoutes.py @@ -1,7 +1,7 @@ import random import time -import LCEngine +import LCEngineV1 as LCEngine from Code import Util from Code import Books @@ -141,7 +141,7 @@ def finalX(self): def masJugada(self, jg, siNuestra): self.partida.append_jg(jg) if self.partida.pendienteApertura: - self.listaAperturasStd.asignaApertura(self.partida) + self.partida.asignaApertura() resp = self.partida.si3repetidas() if resp: diff --git a/Code/GestorSolo.py b/Code/GestorSolo.py index b3467f9..2562198 100644 --- a/Code/GestorSolo.py +++ b/Code/GestorSolo.py @@ -152,12 +152,12 @@ def inicio(self, dic=None, fichero=None, pgn=None, jugadaInicial=None, siGrabar= if self.bloqueApertura: self.partida.reset() self.partida.leerPV(self.bloqueApertura.a1h8) - self.listaAperturasStd.asignaApertura(self.partida) + self.partida.asignaApertura() if "PARTIDA" in dic: self.partida.reset() self.partida.recuperaDeTexto(dic["PARTIDA"]) - self.listaAperturasStd.asignaApertura(self.partida) + self.partida.asignaApertura() cp = self.partida.iniPosicion # Para ver si las blancas abajo self.ponToolBar(siExterno, siGrabar) @@ -383,7 +383,7 @@ def masJugada(self, jg, siNuestra): self.partida.append_jg(jg) if self.partida.pendienteApertura: - self.listaAperturasStd.asignaApertura(self.partida) + self.partida.asignaApertura() resp = self.partida.si3repetidas() if resp: @@ -585,9 +585,11 @@ def file(self): menu = QTVarios.LCMenu(self.pantalla) if self.ultimoFichero: menuR = menu.submenu(_("Save"), Iconos.Grabar()) - rpath = os.path.relpath(self.ultimoFichero) - if rpath.count("..") > 0: - rpath = self.ultimoFichero + rpath = self.ultimoFichero + if os.curdir[:1] == rpath[:1]: + rpath = os.path.relpath(rpath) + if rpath.count("..") > 0: + rpath = self.ultimoFichero menuR.opcion("save", "%s: %s" %( _("Save"), rpath), Iconos.Grabar()) menuR.separador() menuR.opcion("saveas", _("Save as"), Iconos.GrabarComo()) @@ -926,7 +928,7 @@ def atras(self): if self.partida.numJugadas(): self.partida.anulaSoloUltimoMovimiento() if not self.fen: - self.listaAperturasStd.asignaApertura(self.partida) + self.partida.asignaApertura() self.ponteAlFinal() self.estado = kJugando self.refresh() diff --git a/Code/GestorTorneo.py b/Code/GestorTorneo.py index be55974..07a627a 100644 --- a/Code/GestorTorneo.py +++ b/Code/GestorTorneo.py @@ -4,7 +4,6 @@ from Code import Partida from Code.QT import PantallaTorneos from Code import Util -from Code import VarGen from Code import XGestorMotor from Code.Constantes import * @@ -17,7 +16,6 @@ def inicio(self, torneo, liGames): self.torneo = torneo self.torneoTMP = torneo.clone() self.torneoTMP._liGames = liGames - self.fenInicial = self.torneo.fenNorman() self.liGames = liGames self.pantalla.ponActivarTutor(False) self.ponPiezasAbajo(True) @@ -33,6 +31,7 @@ def inicio(self, torneo, liGames): numGames = len(self.liGames) for ng, gm in enumerate(self.liGames): self.siguienteJuego(gm, ng + 1, numGames) + self.procesador.pararMotores() if self.siTerminar: break if self.wresult: @@ -43,6 +42,7 @@ def inicio(self, torneo, liGames): def siguienteJuego(self, gm, ngame, numGames): self.estado = kJugando + self.fenInicial = self.torneo.fenNorman() self.gm = gm self.maxSegundos = self.gm.minutos() * 60.0 @@ -71,8 +71,8 @@ def siguienteJuego(self, gm, ngame, numGames): bk = rv.book() if bk == "*": - bk = VarGen.tbook - elif bk == "-": + bk = self.torneo.book() + if bk == "-": # Puede que el torneo tenga "-" bk = None if bk: self.book[color] = Books.Libro("P", bk, bk, True) @@ -118,8 +118,6 @@ def guiDispatch(self, rm): txt = "[%s] (%s) %s" % (rm.nombre, rm.abrTexto(), p.pgnSP()) self.ponRotulo3(txt) self.showPV(rm.pv, 3) - # self.ponFlechaSC( rm.pv[:2], rm.pv[2:4] ) - # QTUtil.refreshGUI() self.refresh() return not self.siTerminar @@ -300,7 +298,7 @@ def masJugada(self, jg): self.partida.append_jg(jg) if self.partida.pendienteApertura: - self.listaAperturasStd.asignaApertura(self.partida) + self.partida.asignaApertura() resp = self.partida.si3repetidas() if resp: diff --git a/Code/GestorTurnOnLights.py b/Code/GestorTurnOnLights.py index 4cb51e9..b4bba1e 100644 --- a/Code/GestorTurnOnLights.py +++ b/Code/GestorTurnOnLights.py @@ -26,6 +26,7 @@ def inicio(self, num_theme, num_block, tol): self.calculation_mode = self.tol.is_calculation_mode() self.penaltyError = self.block.penaltyError(self.calculation_mode) self.penaltyHelp = self.block.penaltyHelp(self.calculation_mode) + # self.factorDistancia = self.block.factorDistancia() # No se usa es menor que 1.0 self.av_seconds = self.block.av_seconds() if self.av_seconds: @@ -167,8 +168,9 @@ def siguienteJugada(self): else: self.siJuegaHumano = True + self.base_time = time.time() if not (self.calculation_mode and self.ini_time is None): # Se inicia salvo que sea el principio de la linea - self.ini_time = time.time() + self.ini_time = self.base_time self.activaColor(siBlancas) if self.calculation_mode: self.tablero.setDispatchMove(self.dispatchMove) @@ -250,6 +252,8 @@ def finLinea(self): self.pantalla.ponToolBar(liOpciones) def mueveHumano(self, desde, hasta, coronacion=None): + if self.ini_time is None: + self.ini_time = self.base_time end_time = time.time() jg = self.checkMueveHumano(desde, hasta, coronacion) if not jg: diff --git a/Code/GestorVariantes.py b/Code/GestorVariantes.py index 304397d..fcbf28c 100644 --- a/Code/GestorVariantes.py +++ b/Code/GestorVariantes.py @@ -136,7 +136,7 @@ def atras(self): if self.partida.numJugadas(): self.partida.anulaSoloUltimoMovimiento() if not self.fen: - self.listaAperturasStd.asignaApertura(self.partida) + self.partida.asignaApertura() self.ponteAlFinal() self.refresh() self.siguienteJugada() @@ -211,7 +211,7 @@ def masJugada(self, jg): self.partida.append_jg(jg) if self.partida.pendienteApertura: - self.listaAperturasStd.asignaApertura(self.partida) + self.partida.asignaApertura() resp = self.partida.si3repetidas() if resp: diff --git a/Code/GestorWashing.py b/Code/GestorWashing.py index 721fa57..bc5904d 100644 --- a/Code/GestorWashing.py +++ b/Code/GestorWashing.py @@ -216,7 +216,7 @@ def masJugada(self, jg, siNuestra): self.partida.append_jg(jg) if self.partida.pendienteApertura: - self.listaAperturasStd.asignaApertura(self.partida) + self.partida.asignaApertura() self.ponFlechaSC(jg.desde, jg.hasta) self.beepExtendido(siNuestra) @@ -728,7 +728,7 @@ def masJugada(self, jg, siNuestra): self.partida.append_jg(jg) if self.partida.pendienteApertura: - self.listaAperturasStd.asignaApertura(self.partida) + self.partida.asignaApertura() resp = self.partida.si3repetidas() if resp: @@ -815,7 +815,7 @@ def atras(self): if self.partida.numJugadas(): self.analizaTerminar() self.partida.anulaUltimoMovimiento(self.siJugamosConBlancas) - self.listaAperturasStd.asignaApertura(self.partida) + self.partida.asignaApertura() self.ponteAlFinal() self.apertura = Apertura.AperturaPol(30, self.engine.elo) self.siAnalizadoTutor = False diff --git a/Code/Init.py b/Code/Init.py index c3cbca0..7aab268 100644 --- a/Code/Init.py +++ b/Code/Init.py @@ -9,7 +9,7 @@ from Code.Constantes import * DEBUG = False -VERSION = "11.05b" +VERSION = "11.06" if DEBUG: prlkn("DEBUG " * 20) diff --git a/Code/Jugada.py b/Code/Jugada.py index 094e7a4..eadc61d 100644 --- a/Code/Jugada.py +++ b/Code/Jugada.py @@ -113,14 +113,18 @@ def pgnSP(self): def pgnFigurinesSP(self): return self.pgnBase + self.resultadoSP() - def pgnHTML(self): + def pgnHTML(self, siFigurines): siBlancas = self.siBlancas() - li = [] - for c in self.pgnBase: - if c in "NBRQK": - c = dicHTMLFigs[c if siBlancas else c.lower()] - li.append(c) - resp = "".join(li) + self.resto() + if siFigurines: + li = [] + for c in self.pgnBase: + if c in "NBRQK": + c = dicHTMLFigs[c if siBlancas else c.lower()] + li.append(c) + resp = "".join(li) + else: + resp = self.pgnBaseSP() + resp += self.resto() result = self.resultado() if result: resp += " " + result @@ -427,6 +431,9 @@ def calc_elo(self, perfomance): self.bad_move = False self.verybad_move = False + def distancia(self): + return ControlPosicion.distancia(self.desde, self.hasta) + def dameJugada(posicionBase, desde, hasta, coronacion): posicion = posicionBase.copia() diff --git a/Code/LibChess.py b/Code/LibChess.py index fc7f546..ba0d14d 100644 --- a/Code/LibChess.py +++ b/Code/LibChess.py @@ -1,6 +1,6 @@ import random -import LCEngine +import LCEngineV1 as LCEngine import chess import chess.syzygy diff --git a/Code/Memoria.py b/Code/Memoria.py index 537ba65..bf91196 100644 --- a/Code/Memoria.py +++ b/Code/Memoria.py @@ -84,7 +84,6 @@ def lanzaNivel(self, numcategoria, nivel): return False def dameListaFen(self, piezas): - me = self.procesador.unMomento() li = [] diff --git a/Code/OpeningGuide.py b/Code/OpeningGuide.py index 743430e..b1e773c 100644 --- a/Code/OpeningGuide.py +++ b/Code/OpeningGuide.py @@ -2,7 +2,7 @@ import os import sqlite3 -import LCEngine +import LCEngineV1 as LCEngine from Code import AperturasStd from Code import Books diff --git a/Code/OpeningLines.py b/Code/OpeningLines.py index 2f05bec..72de83a 100644 --- a/Code/OpeningLines.py +++ b/Code/OpeningLines.py @@ -1,26 +1,47 @@ import os import sqlite3 -import atexit +import random -import LCEngine +import LCEngineV1 as LCEngine from Code import Util from Code import Partida from Code import PGNreader from Code import Books +from Code import DBgames from Code.QT import QTVarios from Code.QT import QTUtil2 - class ListaOpenings: def __init__(self, configuracion): self.folder = configuracion.folderOpenings - self.fichero = os.path.join(self.folder, "index.pk") + self.fichero = os.path.join(self.folder, "openinglines.pk") self.lista = Util.recuperaVar(self.fichero) if self.lista is None: - self.lista = self.read() + self.lista = self.read() # file, lines, title, pv self.save() + else: + self.testdates() + + def testdates(self): + index_date = Util.datefile(self.fichero) + + for pos, dic in enumerate(self.lista): + pathfile = os.path.join(self.folder, dic["file"]) + file_date = Util.datefile(pathfile) + if file_date is None: + self.reiniciar() + break + if file_date > index_date: + op = Opening(pathfile) + self.lista[pos]["lines"] = len(op) + op.close() + self.save() + + def reiniciar(self): + self.lista = self.read() + self.save() def __len__(self): return len(self.lista) @@ -29,9 +50,9 @@ def __getitem__(self, item): return self.lista[item] if self.lista and item < len(self.lista) else None def __delitem__(self, item): - name, pv, tit = self.lista[item] + dicline = self.lista[item] del self.lista[item] - os.remove(os.path.join(self.folder, name)) + os.remove(os.path.join(self.folder, dicline["file"])) self.save() def arriba(self, item): @@ -50,36 +71,20 @@ def abajo(self, item): else: return False - def refresh(self): - dic = {} - for entry in Util.listdir(self.folder): - if entry.name.endswith(".opk"): - op = Opening(entry.path) - dic[entry.name] = (entry.name, op.basePV, op.title) - op.close() - liborrar = [] - st_esta = set() - for n, (fichero, basePV, title) in enumerate(self.lista): - if fichero in dic: - self.lista[n] = dic[fichero] - st_esta.add(fichero) - else: - liborrar.append(n) - for x in range(len(liborrar)-1, -1, -1): - del self.lista[x] - - for fichero in dic: - if fichero not in st_esta: - self.lista.append(dic[fichero]) - self.save() - def read(self): li = [] for entry in Util.listdir(self.folder): fichero = entry.name if fichero.endswith(".opk"): op = Opening(entry.path) - li.append((fichero, op.basePV, op.title)) + dicline = { + "file": fichero, + "pv": op.basePV, + "title": op.title, + "lines": len(op), + "withtrainings": op.withTrainings() + } + li.append(dicline) op.close() return li @@ -88,9 +93,8 @@ def save(self): def select_filename(self, name): name = name.strip().replace(" ", "_") - name = Util.validNomFichero(name) - while "__" in name: - name = name.replace("__", "_") + name = Util.asciiNomFichero(name) + plant = name + "%d.opk" file = name + ".opk" num = 0 @@ -100,10 +104,17 @@ def select_filename(self, name): return file def filepath(self, num): - return os.path.join(self.folder, self.lista[num][0]) + return os.path.join(self.folder, self.lista[num]["file"]) def new(self, file, basepv, title): - self.lista.append((file, basepv, title)) + dicline = { + "file": file, + "pv": basepv, + "title": title, + "lines": 0, + "withtrainings": False + } + self.lista.append(dicline) op = Opening(self.filepath(len(self.lista)-1)) op.setbasepv(basepv) op.settitle(title) @@ -114,11 +125,14 @@ def change_title(self, num, title): op = Opening(self.filepath(num)) op.settitle(title) op.close() - file, pv, ant_title = self.lista[num] - self.lista[num] = (file, pv, title) + self.lista[num]["title"] = title - def remove(self, lines): - pass + def add_training_file(self, file): + for dicline in self.lista: + if file == dicline["file"]: + dicline["withtrainings"] = True + self.save() + return class Opening: @@ -126,7 +140,6 @@ def __init__(self, nomFichero): self.nomFichero = nomFichero self._conexion = sqlite3.connect(nomFichero) - atexit.register(self.close) self.cache = {} self.max_cache = 4000 @@ -141,10 +154,16 @@ def __init__(self, nomFichero): self.basePV = self.getconfig("BASEPV", "") self.title = self.getconfig("TITLE", os.path.basename(nomFichero).split(".")[0]) - def getOtras(self, configuracion): + self.tablero = None + + def setdbVisual_Tablero(self, tablero): + self.tablero = tablero + + def getOtras(self, configuracion, partida): liOp = ListaOpenings(configuracion) fich = os.path.basename(self.nomFichero) - liOp = [(fichero, titulo) for fichero, pv, titulo in liOp.lista if fichero != fich and pv.startswith(self.basePV)] + pvbase = partida.pv() + liOp = [(dic["file"], dic["title"]) for dic in liOp.lista if dic["file"] != fich and (pvbase.startswith(dic["pv"]) or dic["pv"].startswith(pvbase))] return liOp def getfenvalue(self, fenM2): @@ -154,12 +173,200 @@ def getfenvalue(self, fenM2): def setfenvalue(self, fenM2, dic): self.db_fenvalues[fenM2] = dic + def removeAnalisis(self, tmpBP, mensaje): + for n, fenM2 in enumerate(self.db_fenvalues.keys()): + tmpBP.inc() + tmpBP.mensaje(mensaje%n) + if tmpBP.siCancelado(): + break + dic = self.getfenvalue(fenM2) + if "ANALISIS" in dic: + del dic["ANALISIS"] + self.setfenvalue(fenM2, dic) + self.packAlTerminar() + def getconfig(self, key, default=None): return self.db_config.get(key, default) def setconfig(self, key, value): self.db_config[key] = value + def training(self): + return self.getconfig("TRAINING") + + def setTraining(self, reg): + return self.setconfig("TRAINING", reg) + + def preparaTraining(self, reg): + lilipv = [LCEngine.xpv2pv(xpv).split(" ") for xpv in self.li_xpv] + maxmoves = reg["MAXMOVES"] + if maxmoves: + for num, lipv in enumerate(lilipv): + if len(lipv) > maxmoves: + lilipv[num] = lipv[:maxmoves] + + siBlancas = reg["COLOR"] == "WHITE" + + if reg["RANDOM"]: + random.shuffle(lilipv) + + ligamesST = [] + ligamesSQ = [] + stPV = set() + dicFENm2 = {} + for lipv in lilipv: + # Siempre termina el usuario + if len(lipv) % 2 == (0 if siBlancas else 1): + lipv = lipv[:-1] + + # Duplicados + pv = "".join(lipv) + if pv in stPV: + continue + stPV.add(pv) + + game = {} + game["LIPV"] = lipv + game["NOERROR"] = 0 + game["TRIES"] = [] + + ligamesST.append(game) + game = dict(game) + ligamesSQ.append(game) + LCEngine.setFenInicial() + for pv in lipv: + fen = LCEngine.getFen() + fenM2 = LCEngine.fen2fenM2(fen) + if fenM2 not in dicFENm2: + dicFENm2[fenM2] = set() + dicFENm2[fenM2].add(pv) + LCEngine.makeMove(pv) + + reg["LIGAMES_STATIC"] = ligamesST + if reg["RANDOM"]: + random.shuffle(ligamesSQ) + reg["LIGAMES_SEQUENTIAL"] = ligamesSQ + reg["DICFENM2"] = dicFENm2 + + bcolor = " w " if siBlancas else " b " + liTrainPositions = [] + for fenM2 in dicFENm2: + if bcolor in fenM2: + data = {} + data["FENM2"] = fenM2 + data["MOVES"] = dicFENm2[fenM2] + data["NOERROR"] = 0 + data["TRIES"] = [] + liTrainPositions.append(data) + random.shuffle(liTrainPositions) + reg["LITRAINPOSITIONS"] = liTrainPositions + + def createTraining(self, reg, configuracion): + self.preparaTraining(reg) + + reg["DATECREATION"] = Util.hoy() + self.setconfig("TRAINING", reg) + self.setconfig("ULT_PACK", 100) # Se le obliga al VACUUM + + lo = ListaOpenings(configuracion) + lo.add_training_file(os.path.basename(self.nomFichero)) + + def withTrainings(self): + return "TRAINING" in self.db_config + + def updateTraining(self): + reg = self.training() + reg1 = {} + for key in ("MAXMOVES", "COLOR", "RANDOM"): + reg1[key] = reg[key] + self.preparaTraining(reg1) + + for tipo in ("LIGAMES_SEQUENTIAL", "LIGAMES_STATIC"): + # Los que estan pero no son, los borramos + liBorrados = [] + for pos, game in enumerate(reg[tipo]): + pv = " ".join(game["LIPV"]) + ok = False + for game1 in reg1[tipo]: + pv1 = " ".join(game1["LIPV"]) + if pv == pv1: + ok = True + break + if not ok: + liBorrados.append(pos) + if liBorrados: + li = reg[tipo] + liBorrados.sort(reverse=True) + for x in liBorrados: + del li[x] + reg[tipo] = li + + # Los que son pero no estan + liMas = [] + for game1 in reg1[tipo]: + pv1 = " ".join(game1["LIPV"]) + ok = False + for game in reg[tipo]: + pv = " ".join(game["LIPV"]) + if pv == pv1: + ok = True + break + if not ok: + liMas.append(game1) + if liMas: + li = reg[tipo] + liMas.sort(reverse=True) + for game in liMas: + li.insert(0, game) + reg[tipo] = li + + reg["DICFENM2"] = reg1["DICFENM2"] + + # Posiciones + + # Estan pero no son + liBorrados = [] + tipo = "LITRAINPOSITIONS" + for pos, data in enumerate(reg[tipo]): + fen = data["FENM2"] + ok = False + for data1 in reg1[tipo]: + fen1 = data1["FENM2"] + if fen == fen1: + ok = True + break + if not ok: + liBorrados.append(pos) + if liBorrados: + li = reg[tipo] + liBorrados.sort(reverse=True) + for x in liBorrados: + del li[x] + reg[tipo] = li + + # Los que son pero no estan + liMas = [] + for data1 in reg1[tipo]: + fen1 = data1["FENM2"] + ok = False + for data in reg[tipo]: + fen = data["FENM2"] + if fen == fen1: + ok = True + break + if not ok: + liMas.append(data) + if liMas: + li = reg[tipo] + li.insert(0, liMas) + reg[tipo] = li + + self.setconfig("TRAINING", reg) + self.packAlTerminar() + + def packAlTerminar(self): + self.setconfig("ULT_PACK", 100) # Se le obliga al VACUUM + def settitle(self, title): self.setconfig("TITLE", title) @@ -199,6 +406,7 @@ def init_database(self): sql = "select XPV from LINES ORDER BY XPV" cursor.execute(sql) li_xpv = [ raw[0] for raw in cursor.fetchall()] + cursor.close() return li_xpv def append(self, partida): @@ -246,6 +454,7 @@ def __setitem__(self, num, partida_nue): cursor.execute(sql, (xpv_nue, partida_nue.save2blob(), xpv_ant)) self._conexion.commit() self.add_cache(xpv_nue, partida_nue) + cursor.close() return num def __getitem__(self, num): @@ -260,6 +469,7 @@ def __getitem__(self, num): partida = Partida.Partida() partida.blob2restore(blob) self.add_cache(xpv, partida) + cursor.close() return partida def __delitem__(self, num): @@ -271,6 +481,7 @@ def __delitem__(self, num): del self.cache[xpv] del self.li_xpv[num] self._conexion.commit() + cursor.close() def __len__(self): return len(self.li_xpv) @@ -285,6 +496,13 @@ def close(self): self.db_config.close() self.db_config = None + self.db_fenvalues.close() + self.db_fenvalues = None + + if self.tablero: + self.tablero.dbVisual_close() + self.tablero = None + if si_pack: cursor = conexion.cursor() cursor.execute("VACUUM") @@ -293,17 +511,15 @@ def close(self): conexion.close() - def grabarPGN(self, owner, ficheroPGN, maxDepth): + def importarPGN(self, owner, partidabase, ficheroPGN, maxDepth): erroneos = duplicados = importados = 0 dlTmp = QTVarios.ImportarFicheroPGN(owner) dlTmp.hideDuplicados() dlTmp.show() - sql = "INSERT INTO LINES( XPV, LINE ) VALUES( ?, ? )" cursor = self._conexion.cursor() base = self.getconfig("BASEPV") - partidabase = self.getpartidabase() njugbase = partidabase.numJugadas() n = 0 @@ -320,9 +536,9 @@ def grabarPGN(self, owner, ficheroPGN, maxDepth): continue def haz_partida(partida, liMoves): - njg = partida.numJugadas() + njg = len(partida) if len(liMoves) + njg > maxDepth: - liMoves = liMoves[:maxDepth+njg] + liMoves = liMoves[:maxDepth - njg] pv = " ".join([move.pv for move in liMoves]) partida.leerPV(pv) pv = partida.pv() @@ -351,7 +567,7 @@ def haz_partida(partida, liMoves): partida = Partida.Partida() haz_partida(partida, g.moves.liMoves) - if n %1000: + if n % 50: self._conexion.commit() cursor.close() @@ -361,7 +577,32 @@ def haz_partida(partida, liMoves): dlTmp.actualiza(n, erroneos, duplicados, importados) dlTmp.ponContinuar() - def grabarPolyglot(self, ventana, ficheroBIN, depth, whiteBest, blackBest): + def guardaPartidas(self, liPartidas): + partidabase = self.getpartidabase() + sql_insert = "INSERT INTO LINES( XPV, LINE ) VALUES( ?, ? )" + sql_update = "UPDATE LINES SET XPV=?, LINE=? WHERE XPV=?" + cursor = self._conexion.cursor() + for partida in liPartidas: + if partida.numJugadas() > partidabase.numJugadas(): + xpv = LCEngine.pv2xpv(partida.pv()) + if xpv not in self.li_xpv: + line_blob = partida.save2blob() + updated = False + for npos, xpv_ant in enumerate(self.li_xpv): + if xpv.startswith(xpv_ant): + cursor.execute(sql_update, (xpv, line_blob, xpv_ant)) + self.li_xpv[npos] = xpv + updated = True + break + if not updated: + cursor.execute(sql_insert, (xpv, line_blob)) + self.li_xpv.append(xpv) + + cursor.close() + self._conexion.commit() + self.li_xpv.sort() + + def importarPolyglot(self, ventana, partidabase, ficheroBIN, depth, siWhite): titulo = _("Import a polyglot book") bp = QTUtil2.BarraProgreso1(ventana, titulo) bp.ponTotal(0) @@ -371,9 +612,6 @@ def grabarPolyglot(self, ventana, ficheroBIN, depth, whiteBest, blackBest): book = Books.Libro("P", ficheroBIN, ficheroBIN, True) book.polyglot() - stFenM2 = set() # para que no se produzca un circulo vicioso - - partidabase = self.getpartidabase() cp = partidabase.ultPosicion liPartidas = [] @@ -381,71 +619,112 @@ def grabarPolyglot(self, ventana, ficheroBIN, depth, whiteBest, blackBest): setFen = LCEngine.setFen makeMove = LCEngine.makeMove getFen = LCEngine.getFen - fen2fenM2 = LCEngine.fen2fenM2 - - def hazFEN(fen, ply, lipv_ant): - plyN = ply + 1 - siWhite = " w " in fen - siMax = False - if whiteBest: - siMax = siWhite - if blackBest: - siMax = siMax or not siWhite - - liPV = book.miraListaPV(fen, siMax) - if liPV: - sigue = False + + def hazFEN(fen, lipv_ant): + if bp.siCancelado(): + return + siWhite1 = " w " in fen + + liPV = book.miraListaPV(fen, siWhite1 == siWhite) + if liPV and len(lipv_ant) < depth: for pv in liPV: setFen(fen) makeMove(pv) fenN = getFen() - lipv_nue = lipv_ant[:] lipv_nue.append(pv) - if plyN < depth: - fenM2 = fen2fenM2(fenN) - if fenM2 not in stFenM2: - stFenM2.add(fenM2) - hazFEN(fenN, plyN, lipv_nue) - sigue = True + hazFEN(fenN, lipv_nue) else: - sigue = False - if not sigue: p = Partida.Partida() - p.leerPV(" ".join(lipv_ant)) + p.leerLIPV(lipv_ant) liPartidas.append(p) bp.ponTotal(len(liPartidas)) bp.pon(len(liPartidas)) - hazFEN(cp.fen(), 0, partidabase.lipv()) + hazFEN(cp.fen(), partidabase.lipv()) bp.ponRotulo(_("Writing...")) + self.guardaPartidas(liPartidas) + bp.cerrar() - sql_insert = "INSERT INTO LINES( XPV, LINE ) VALUES( ?, ? )" - sql_update = "UPDATE LINES SET XPV=?, LINE=? WHERE XPV=?" - cursor = self._conexion.cursor() - for partida in liPartidas: - if partida.numJugadas() > partidabase.numJugadas(): - xpv = LCEngine.pv2xpv(partida.pv()) - if xpv not in self.li_xpv: - line_blob = partida.save2blob() - updated = False - for npos, xpv_ant in enumerate(self.li_xpv): - if xpv.startswith(xpv_ant): - cursor.execute(sql_update, (xpv, line_blob, xpv_ant)) - self.li_xpv[npos] = xpv - updated = True - break - if not updated: - cursor.execute(sql_insert, (xpv, line_blob)) - self.li_xpv.append(xpv) + return True - cursor.close() - self._conexion.commit() - self.li_xpv.sort() + def importarSummary(self, ventana, partidabase, ficheroSummary, depth, siWhite): + titulo = _("Importing the summary of a database") + bp = QTUtil2.BarraProgreso1(ventana, titulo) + bp.ponTotal(0) + bp.ponRotulo(_X(_("Reading %1"), os.path.basename(ficheroSummary))) + bp.mostrar() + dbSTAT = DBgames.TreeSTAT(ficheroSummary) + + if depth == 0: + depth = 99999 + + pvBase = partidabase.pv() + len_partidabase = len(partidabase) + + liPartidas = [] + + def hazPV(lipv_ant): + if bp.siCancelado(): + return + siWhite1 = len(lipv_ant) % 2 == 0 + + pv_ant = " ".join(lipv_ant) + liChildren = dbSTAT.children(pv_ant, False) + + if len(liChildren) == 0 or len(lipv_ant) > depth: + p = Partida.Partida() + p.leerLIPV(lipv_ant) + if len(p) > len_partidabase: + liPartidas.append(p) + bp.ponTotal(len(liPartidas)) + bp.pon(len(liPartidas)) + return + + if siWhite1 == siWhite: + alm_max = None + tt_max = 0 + for alm in liChildren: + tt = alm.W + alm.B + alm.O + alm.D + if tt > tt_max: + tt_max = tt + alm_max = alm + liChildren = [] if tt_max == 0 else [alm_max,] + + for alm in liChildren: + li = lipv_ant[:] + li.append(alm.move) + hazPV(li) + + hazPV(pvBase.split(" ")) + + bp.ponRotulo(_("Writing...")) + self.guardaPartidas(liPartidas) bp.cerrar() return True - + def importarOtra(self, pathFichero, partida): + xpvbase = LCEngine.pv2xpv(partida.pv()) + tambase = len(xpvbase) + otra = Opening(pathFichero) + liPartidas = [] + for n, xpv in enumerate(otra.li_xpv): + if xpv.startswith(xpvbase) and tambase < len(xpv): + liPartidas.append(otra[n]) + otra.close() + self.guardaPartidas(liPartidas) + + def getAllFen(self): + stFENm2 = set() + lilipv = [LCEngine.xpv2pv(xpv).split(" ") for xpv in self.li_xpv] + for lipv in lilipv: + LCEngine.setFenInicial() + for pv in lipv: + fen = LCEngine.getFen() + fenM2 = LCEngine.fen2fenM2(fen) + stFENm2.add(fenM2) + LCEngine.makeMove(pv) + return stFENm2 diff --git a/Code/PGNreader.py b/Code/PGNreader.py index cbacb41..e35ca3f 100644 --- a/Code/PGNreader.py +++ b/Code/PGNreader.py @@ -1,4 +1,4 @@ -import LCEngine +import LCEngineV1 as LCEngine from Code import Util diff --git a/Code/Partida.py b/Code/Partida.py index 5ac10d2..0a5a854 100644 --- a/Code/Partida.py +++ b/Code/Partida.py @@ -42,7 +42,7 @@ def jugada(self, num): try: return self.liJugadas[num] except: - return None + return self.liJugadas[-1] if len(self) > 0 else None def append_jg(self, jg): self.liJugadas.append(jg) @@ -115,9 +115,12 @@ def si3repetidas(self): return None def leerPV(self, pvBloque): + return self.leerLIPV(pvBloque.split(" ")) + + def leerLIPV(self, lipv): posicion = self.ultPosicion pv = [] - for mov in pvBloque.split(" "): + for mov in lipv: if len(mov) >= 4 and mov[0] in "abcdefgh" and mov[1] in "12345678" and mov[2] in "abcdefgh" \ and mov[3] in "12345678": pv.append(mov) @@ -266,7 +269,7 @@ def pgnHTML(self, numJugada=None, hastaJugada=9999, siFigurines=True): numJugada += 1 else: x = "" - liResp.append(x + (jg.pgnHTML() if siFigurines else jg.pgnSP())) + liResp.append(x + (jg.pgnHTML(siFigurines))) return " ".join(liResp) def siTerminada(self): @@ -474,6 +477,27 @@ def calc_elos(self, configuracion): return elos + def asignaApertura(self): + AperturasStd.ap.asignaApertura(self) + + def asignaTransposition(self): + AperturasStd.ap.asignaTransposition(self) + + def rotuloApertura(self): + return self.apertura.trNombre if hasattr(self, "apertura") and self.apertura is not None else None + + def rotuloTransposition(self): + if hasattr(self, "transposition"): + ap = self.transposition + if ap is not None: + return "%s %s" % (self.jg_transposition.pgnSP(), ap.trNombre) + return None + + def test_apertura(self): + if not hasattr(self, "apertura") or self.pendienteApertura: + self.asignaApertura() + self.asignaTransposition() + def pv_san(fen, pv): p = Partida(fen=fen) @@ -529,17 +553,11 @@ def readPGN(self, configuracion, pgn): if not unpgn.leeTexto(pgn): return None self.recuperaDeTexto(unpgn.partida.guardaEnTexto()) - self.asignaApertura(configuracion) + self.asignaApertura() self.liTags = unpgn.listaCabeceras() return self - def asignaApertura_raw(self, ap): - ap.asignaApertura(self) - - def asignaApertura(self, configuracion): - AperturasStd.ap.asignaApertura(self) - def pgn(self): li = ['[%s "%s"]\n'%(k,v) for k,v in self.liTags] txt = "".join(li) diff --git a/Code/Presentacion.py b/Code/Presentacion.py index 1634612..4cd4e7e 100644 --- a/Code/Presentacion.py +++ b/Code/Presentacion.py @@ -2,7 +2,7 @@ import time import codecs -import LCEngine +import LCEngineV1 as LCEngine from Code import Util from Code import ControlPosicion diff --git a/Code/Procesador.py b/Code/Procesador.py index 37a9a0d..85f8ed2 100644 --- a/Code/Procesador.py +++ b/Code/Procesador.py @@ -24,6 +24,7 @@ from Code import GestorMateMap from Code import GestorMicElo from Code import GestorCompeticion +from Code import GestorOpeningLines from Code import GestorPGN from Code import GestorPerson from Code import GestorRoutes @@ -32,6 +33,7 @@ from Code import GestorPartida from Code import GestorTorneo from Code import Presentacion +from Code import OpeningLines from Code import GestorWashing from Code import GestorPlayPGN from Code.QT import DatosNueva @@ -62,7 +64,7 @@ from Code.QT import QTVarios from Code.QT import PantallaDatabase from Code.QT import PantallaManualSave -from Code.QT import WBDatabaseFEN +from Code.QT import PantallaDatabaseFEN from Code.QT import WOpeningGuide from Code.QT import PantallaKibitzers from Code.QT import POLines @@ -180,6 +182,8 @@ def reset(self): self.pantalla.activaJuego(False, False) self.tablero.exePulsadoNum = None self.tablero.ponPosicion(self.posicionInicial) + self.tablero.borraMovibles() + self.tablero.quitaFlechas() self.pantalla.ajustaTam() self.pantalla.ponTitulo() self.pararMotores() @@ -707,8 +711,6 @@ def trainingMap(self, mapa): self.gestor.inicio(resp) def tools(self): - # self.openings() - # return menu = QTVarios.LCMenu(self.pantalla) menu.opcion("juega_solo", _("Create your own game"), Iconos.JuegaSolo()) @@ -742,7 +744,7 @@ def tools(self): menu1.separador() menu1.opcion("bookguide", _("Personal Opening Guide"), Iconos.BookGuide()) menu1.separador() - menu1.opcion("openings", _("Opening lines") + " [WORK IN PROGRESS]", Iconos.OpeningLines()) + menu1.opcion("openings", _("Opening lines"), Iconos.OpeningLines()) menu.separador() menu1 = menu.submenu(_("Engines"), Iconos.Motores()) @@ -790,12 +792,42 @@ def tools(self): self.openings() def openings(self): - result = POLines.openingLines(self) - if result: - fichero, basepv, title = result - POLines.study(self, fichero) + dicline = POLines.openingLines(self) + if dicline: + if "TRAIN" in dicline: + resp = "tr_%s" % dicline["TRAIN"] + else: + resp = POLines.study(self, dicline["file"]) + if resp is None: + self.openings() + else: + pathFichero = os.path.join(self.configuracion.folderOpenings, dicline["file"]) + if resp == "tr_sequential": + self.openingsTrainingSequential(pathFichero) + elif resp == "tr_static": + self.openingsTrainingStatic(pathFichero) + elif resp == "tr_positions": + self.openingsTrainingPositions(pathFichero) + + + def openingsTrainingSequential(self, pathFichero): + self.gestor = GestorOpeningLines.GestorOpeningLines(self) + self.gestor.inicio(pathFichero, "sequential", 0) + + def openingsTrainingStatic(self, pathFichero): + dbop = OpeningLines.Opening(pathFichero) + num_linea = POLines.selectLine(self, dbop) + dbop.close() + if num_linea is not None: + self.gestor = GestorOpeningLines.GestorOpeningLines(self) + self.gestor.inicio(pathFichero, "static", num_linea) + else: self.openings() + def openingsTrainingPositions(self, pathFichero): + self.gestor = GestorOpeningLines.GestorOpeningLinesPositions(self) + self.gestor.inicio(pathFichero) + def kibitzers(self): w = PantallaKibitzers.WKibitzers(self.pantalla, self) w.exec_() @@ -819,7 +851,7 @@ def database(self): # self.procesarAccion(k_terminar) def databaseFEN(self): # TODO - w = WBDatabaseFEN.WBDatabaseFEN(self.pantalla, self) + w = PantallaDatabaseFEN.WBDatabaseFEN(self.pantalla, self) w.exec_() def manual_save(self): diff --git a/Code/QT/Delegados.py b/Code/QT/Delegados.py index 115c22a..939989c 100644 --- a/Code/QT/Delegados.py +++ b/Code/QT/Delegados.py @@ -302,6 +302,31 @@ def paint(self, painter, option, index): painter.restore() +class PmIconosWeather(QtGui.QStyledItemDelegate): + def __init__(self, parent=None): + QtGui.QStyledItemDelegate.__init__(self, parent) + + self.dicIconos = { + "0": Iconos.pmInvierno(), + "1": Iconos.pmLluvia(), + "2": Iconos.pmSolNubesLluvia(), + "3": Iconos.pmSolNubes(), + "4": Iconos.pmSol(), + } + + def paint(self, painter, option, index): + pos = str(index.model().data(index, QtCore.Qt.DisplayRole)) + if pos not in self.dicIconos: + if pos.isdigit(): + pos = "4" if int(pos)> 4 else "0" + else: + return + painter.save() + painter.translate(option.rect.x(), option.rect.y()) + painter.drawPixmap(4, 4, self.dicIconos[pos]) + painter.restore() + + class HTMLDelegate(QtGui.QStyledItemDelegate): def paint(self, painter, option, index): options = QtGui.QStyleOptionViewItemV4(option) diff --git a/Code/QT/Iconos.py b/Code/QT/Iconos.py index aab1f15..d6368d5 100644 --- a/Code/QT/Iconos.py +++ b/Code/QT/Iconos.py @@ -2057,31 +2057,37 @@ def Maps(): return QtGui.QIcon(pmMaps()) def pmSol(): - return PM(860091,866443) + return PM(860091,861017) def Sol(): return QtGui.QIcon(pmSol()) def pmSolNubes(): - return PM(866443,872300) + return PM(861017,861880) def SolNubes(): return QtGui.QIcon(pmSolNubes()) -def pmNubes(): - return PM(872300,875432) +def pmSolNubesLluvia(): + return PM(861880,862840) -def Nubes(): - return QtGui.QIcon(pmNubes()) +def SolNubesLluvia(): + return QtGui.QIcon(pmSolNubesLluvia()) -def pmTormenta(): - return PM(875432,880083) +def pmLluvia(): + return PM(862840,863679) -def Tormenta(): - return QtGui.QIcon(pmTormenta()) +def Lluvia(): + return QtGui.QIcon(pmLluvia()) + +def pmInvierno(): + return PM(863679,865255) + +def Invierno(): + return QtGui.QIcon(pmInvierno()) def pmWords(): - return PM(880083,883868) + return PM(865255,869040) def Words(): return QtGui.QIcon(pmWords()) @@ -2099,31 +2105,31 @@ def FixedElo(): return QtGui.QIcon(pmFixedElo()) def pmX_Microfono(): - return PM(883868,886321) + return PM(869040,871493) def X_Microfono(): return QtGui.QIcon(pmX_Microfono()) def pmSoundTool(): - return PM(886321,888780) + return PM(871493,873952) def SoundTool(): return QtGui.QIcon(pmSoundTool()) def pmImportar(): - return PM(888780,891448) + return PM(873952,876620) def Importar(): return QtGui.QIcon(pmImportar()) def pmVoyager1(): - return PM(891448,893898) + return PM(876620,879070) def Voyager1(): return QtGui.QIcon(pmVoyager1()) def pmTrain(): - return PM(893898,895268) + return PM(879070,880440) def Train(): return QtGui.QIcon(pmTrain()) @@ -2141,67 +2147,67 @@ def Measure(): return QtGui.QIcon(pmMeasure()) def pmPlayGame(): - return PM(895268,899626) + return PM(880440,884798) def PlayGame(): return QtGui.QIcon(pmPlayGame()) def pmScanner(): - return PM(899626,899967) + return PM(884798,885139) def Scanner(): return QtGui.QIcon(pmScanner()) def pmMenos(): - return PM(899967,900492) + return PM(885139,885664) def Menos(): return QtGui.QIcon(pmMenos()) def pmSchool(): - return PM(900492,901033) + return PM(885664,886205) def School(): return QtGui.QIcon(pmSchool()) def pmLaw(): - return PM(901033,901649) + return PM(886205,886821) def Law(): return QtGui.QIcon(pmLaw()) def pmLearnGame(): - return PM(901649,902082) + return PM(886821,887254) def LearnGame(): return QtGui.QIcon(pmLearnGame()) def pmUniversity(): - return PM(902082,902502) + return PM(887254,887674) def University(): return QtGui.QIcon(pmUniversity()) def pmLonghaul(): - return PM(902502,903428) + return PM(887674,888600) def Longhaul(): return QtGui.QIcon(pmLonghaul()) def pmTrekking(): - return PM(903428,904122) + return PM(888600,889294) def Trekking(): return QtGui.QIcon(pmTrekking()) def pmPassword(): - return PM(904122,904575) + return PM(889294,889747) def Password(): return QtGui.QIcon(pmPassword()) def pmSQL_RAW(): - return PM(895268,899626) + return PM(880440,884798) def SQL_RAW(): return QtGui.QIcon(pmSQL_RAW()) @@ -2219,128 +2225,158 @@ def Light(): return QtGui.QIcon(pmLight()) def pmLight32(): - return PM(904575,906275) + return PM(889747,891447) def Light32(): return QtGui.QIcon(pmLight32()) def pmTOL(): - return PM(906275,906984) + return PM(891447,892156) def TOL(): return QtGui.QIcon(pmTOL()) def pmUned(): - return PM(902082,902502) + return PM(887254,887674) def Uned(): return QtGui.QIcon(pmUned()) def pmUwe(): - return PM(906984,907953) + return PM(892156,893125) def Uwe(): return QtGui.QIcon(pmUwe()) def pmThinking(): - return PM(907953,908325) + return PM(893125,893497) def Thinking(): return QtGui.QIcon(pmThinking()) def pmWashingMachine(): - return PM(908325,908988) + return PM(893497,894160) def WashingMachine(): return QtGui.QIcon(pmWashingMachine()) def pmTerminal(): - return PM(908988,912532) + return PM(894160,897704) def Terminal(): return QtGui.QIcon(pmTerminal()) def pmManualSave(): - return PM(912532,913115) + return PM(897704,898287) def ManualSave(): return QtGui.QIcon(pmManualSave()) def pmSettings(): - return PM(913115,913553) + return PM(898287,898725) def Settings(): return QtGui.QIcon(pmSettings()) def pmStrength(): - return PM(913553,914224) + return PM(898725,899396) def Strength(): return QtGui.QIcon(pmStrength()) def pmSingular(): - return PM(914224,915079) + return PM(899396,900251) def Singular(): return QtGui.QIcon(pmSingular()) def pmScript(): - return PM(915079,915648) + return PM(900251,900820) def Script(): return QtGui.QIcon(pmScript()) def pmScriptFree(): - return PM(915648,916208) + return PM(900820,901380) def ScriptFree(): return QtGui.QIcon(pmScriptFree()) def pmTexto(): - return PM(916208,919053) + return PM(901380,904225) def Texto(): return QtGui.QIcon(pmTexto()) def pmLampara(): - return PM(919053,919762) + return PM(904225,904934) def Lampara(): return QtGui.QIcon(pmLampara()) def pmFile(): - return PM(919762,922062) + return PM(904934,907234) def File(): return QtGui.QIcon(pmFile()) def pmCalculo(): - return PM(922062,922988) + return PM(907234,908160) def Calculo(): return QtGui.QIcon(pmCalculo()) def pmOpeningLines(): - return PM(922988,923666) + return PM(908160,908838) def OpeningLines(): return QtGui.QIcon(pmOpeningLines()) def pmStudy(): - return PM(923666,924703) + return PM(908838,909875) def Study(): return QtGui.QIcon(pmStudy()) def pmLichess(): - return PM(924703,925593) + return PM(909875,910765) def Lichess(): return QtGui.QIcon(pmLichess()) def pmMiniatura(): - return PM(925593,926520) + return PM(910765,911692) def Miniatura(): return QtGui.QIcon(pmMiniatura()) +def pmLocomotora(): + return PM(911692,912473) + +def Locomotora(): + return QtGui.QIcon(pmLocomotora()) + +def pmPositions(): + return PM(912473,914064) + +def Positions(): + return QtGui.QIcon(pmPositions()) + +def pmTrainSequential(): + return PM(914064,915009) + +def TrainSequential(): + return QtGui.QIcon(pmTrainSequential()) + +def pmTrainStatic(): + return PM(915009,915979) + +def TrainStatic(): + return QtGui.QIcon(pmTrainStatic()) + +def pmTrainPositions(): + return PM(915979,916833) + +def TrainPositions(): + return QtGui.QIcon(pmTrainPositions()) + diff --git a/Code/QT/InfoBase.py b/Code/QT/InfoBase.py index 7e35e1b..7a1f80d 100644 --- a/Code/QT/InfoBase.py +++ b/Code/QT/InfoBase.py @@ -61,8 +61,8 @@ def listaMotores(self, bloque): ["Rybka 2.3.2a 32-bit", "Vasik Rajlich", "http://rybkachess.com/"], ["Critter 1.6a 32bits", "Richard Vida", "http://www.vlasak.biz/critter/"], ["Texel 1.07", "Peter Österlund", "http://hem.bredband.net/petero2b/javachess/index.html#texel"], - ["Stockfish 8", "Tord Romstad, Marco Costalba, Joona Kiiski", "http://stockfishchess.org/"], - ["McBrain 4.0", "Michael Byrne (based on stockfish)", "https://github.com/MichaelB7/Stockfish/releases"], + ["Stockfish 9", "Tord Romstad, Marco Costalba, Joona Kiiski", "http://stockfishchess.org/"], + ["McBrain 9", "Michael Byrne", "https://github.com/MichaelB7/Stockfish/releases"], ["Gull 3", "Vadim Demichev", "https://sourceforge.net/projects/gullchess/"], ["Delfi 5.4", "Fabio Cavicchio", "http://www.msbsoftware.it/delfi/"], # ["SmartThink 1.97", "Sergei S. Markoff", "http://genes1s.net/smarthink.php"], @@ -124,7 +124,7 @@ def version(num, liBase, liResto): return txt # Version 11 - liBase = ["Alfonso Solbes", "Max Aloyau", "tico-tico", "Nils Andersson", "Bernhard", "Ed Smith", "Rob", "Giovanni di Maria", "vga", "Remes", "Péter Rabi"] + liBase = ["Alfonso Solbes", "Max Aloyau", "tico-tico", "Nils Andersson", "Bernhard", "Ed Smith", "Rob", "Giovanni di Maria", "vga", "Remes", "Péter Rabi", "Iñaki Rodriguez"] liResto = ["Immortalchess forum",] txt += version(11, liBase, liResto) @@ -391,7 +391,7 @@ def Engines(self, orden): txt += "" if "McBrain" in nombre: txt += '%s (%s)' % (nombre, _("default")) - txt += '%s' % autor + txt += '%s' % autor else: txt += "%s" % nombre txt += "%s" % autor @@ -425,7 +425,6 @@ def Programming(self): (_("GUI"), "PyQt4 - GPL", "http://www.riverbankcomputing.co.uk"), (_("Audio"), "PyAudio v0.2.4 - MIT License", "http://people.csail.mit.edu/hubert/pyaudio/"), ("psutil", _X(_("Created by %1"), "Giampaolo Rodola"), "http://code.google.com/p/psutil/"), - ("pygal", _X(_("Created by %1"), "Kozea"), "http://pygal.org"), ("chardet", _X(_("Created by %1"), "Ian Cordasco"), "https://github.com/chardet/chardet"), (_("Polyglot books"), _X(_("Based on work by %1"), "Michel Van den Bergh"), "http://alpha.uhasselt.be/Research/Algebra/Toga/book_format.html"), ("Polyglot1.4w", _X(_("Created by %1"), "Fabien Letouzy") + ". " + _X(_("Modified by %1"), "Fonzy Bluemers"), "http://www.geenvis.net/"), diff --git a/Code/QT/POLAnalisis.py b/Code/QT/POLAnalisis.py index 77d7f61..8a11eca 100644 --- a/Code/QT/POLAnalisis.py +++ b/Code/QT/POLAnalisis.py @@ -1,6 +1,6 @@ import os -import LCEngine +import LCEngineV1 as LCEngine from PyQt4 import QtGui, QtCore @@ -27,6 +27,9 @@ def __init__(self, tabsAnalisis, procesador, configuracion): self.posicion = None self.li_analysis = [] self.gestor_motor = None + self.current_mrm = None + + self.dbop = tabsAnalisis.dbop self.procesador = procesador self.configuracion = configuracion @@ -38,11 +41,16 @@ def __init__(self, tabsAnalisis, procesador, configuracion): self.bt_stop.hide() self.lb_engine = Controles.LB(self, _("Engine") + ":") - liMotores = configuracion.comboMotoresCompleto() - self.cb_engine = Controles.CB(self, liMotores, configuracion.tutor.clave).capturaCambiado(self.reset_motor) - + liMotores = configuracion.comboMotoresCompleto() # (nombre, clave) + default = configuracion.tutor.clave + engine = self.dbop.getconfig("ENGINE", default) + if len([clave for nombre,clave in liMotores if clave==engine]) == 0: + engine = default + self.cb_engine = Controles.CB(self, liMotores, engine).capturaCambiado(self.reset_motor) + + multipv = self.dbop.getconfig("ENGINE_MULTIPV", 10) lb_multipv = Controles.LB(self, _("Multi PV")+": ") - self.sb_multipv = Controles.SB(self, 10, 1, 500).tamMaximo(50) + self.sb_multipv = Controles.SB(self, multipv, 1, 500).tamMaximo(50) self.lb_analisis = Controles.LB(self, "").ponFondoN("#C9D2D7").ponTipoLetra(puntos=configuracion.puntosPGN) @@ -66,7 +74,19 @@ def __init__(self, tabsAnalisis, procesador, configuracion): self.reset_motor() + def saveCurrent(self): + if self.current_mrm: + fenM2 = self.current_posicion.fenM2() + dic = self.dbop.getfenvalue(fenM2) + if "ANALISIS" in dic: + mrm_ant = dic["ANALISIS"] + if mrm_ant.getdepth0() > self.current_mrm.getdepth0(): + return + dic["ANALISIS"] = self.current_mrm + self.dbop.setfenvalue(fenM2, dic) + def setData(self, label, posicion): + self.saveCurrent() self.posicion = posicion self.lb_analisis.ponTexto(label) if self.analyzing: @@ -76,8 +96,18 @@ def setData(self, label, posicion): self.gestor_motor.ac_inicio(partida) self.analyzing = True QtCore.QTimer.singleShot(1000, self.lee_analisis) + else: + fenM2 = posicion.fenM2() + dic = self.dbop.getfenvalue(fenM2) + if "ANALISIS" in dic: + self.show_analisis(dic["ANALISIS"]) + else: + self.li_analysis = [] + self.grid_analysis.refresh() def start(self): + self.current_mrm = None + self.current_posicion = None self.sb_multipv.setDisabled(True) self.cb_engine.setDisabled(True) self.analyzing = True @@ -98,6 +128,8 @@ def show_stop(self): self.bt_stop.show() def show_analisis(self, mrm): + self.current_mrm = mrm + self.current_posicion = self.posicion li = [] for rm in mrm.liMultiPV: partida = Partida.Partida(self.posicion) @@ -112,7 +144,10 @@ def show_analisis(self, mrm): pgn0 = lit[1] pgn1 = " ".join(lit[2:]) - partida.ms_sol = pgn0, siBlancas, None, None, None, None, False, False + if self.siFigurines: + partida.ms_sol = pgn0, siBlancas, None, None, None, None, False, False + else: + partida.ms_sol = pgn0 partida.ms_pgn = pgn1 partida.ms_pdt = rm.abrTextoPDT() li.append(partida) @@ -126,6 +161,7 @@ def lee_analisis(self): QtCore.QTimer.singleShot(2000, self.lee_analisis) def stop(self): + self.saveCurrent() self.sb_multipv.setDisabled(False) self.cb_engine.setDisabled(False) self.analyzing = False @@ -134,6 +170,7 @@ def stop(self): self.gestor_motor.ac_final(0) def reset_motor(self): + self.saveCurrent() clave = self.cb_engine.valor() if not clave: return @@ -157,6 +194,10 @@ def gridDato(self, grid, fila, oColumna): else: return self.li_analysis[fila].ms_pgn + def saveConfig(self): + self.dbop.setconfig("ENGINE", self.cb_engine.valor()) + self.dbop.setconfig("ENGINE_MULTIPV", self.sb_multipv.valor()) + class TabBook(QtGui.QWidget): def __init__(self, tabsanalisis, book, configuracion): @@ -170,8 +211,10 @@ def __init__(self, tabsanalisis, book, configuracion): book.polyglot() self.li_moves = [] + self.siFigurines = configuracion.figurinesPGN + oColumnas = Columnas.ListaColumnas() - delegado = Delegados.EtiquetaPOS(True, siLineas=False) if configuracion.figurinesPGN else None + delegado = Delegados.EtiquetaPOS(True, siLineas=False) if self.siFigurines else None for x in range(20): oColumnas.nueva(x, "", 80, siCentrado=True, edicion = delegado) self.grid_moves = Grid.Grid(self, oColumnas, siSelecFilas=True, siCabeceraMovible=False, siCabeceraVisible=False) @@ -190,8 +233,11 @@ def gridDato(self, grid, fila, oColumna): li = mv.dato key = int(oColumna.clave) pgn = li[key] - siBlancas = " w " in mv.fen - return pgn, siBlancas, None, None, None, None, False, True + if self.siFigurines: + siBlancas = " w " in mv.fen + return pgn, siBlancas, None, None, None, None, False, True + else: + return pgn def gridDobleClick(self, grid, fila, oColumna): self.lee_subnivel(fila) @@ -201,7 +247,6 @@ def gridBotonDerecho(self, grid, fila, columna, modificadores): self.borra_subnivel(fila) self.grid_moves.refresh() - def setData(self, posicion): self.posicion = posicion self.start() @@ -327,7 +372,7 @@ def __init__(self, panelOpening, procesador, configuracion): self.tabs.tabCloseRequested.connect(self.tabCloseRequested) layout = Colocacion.V() - layout.control(self.tabs).margen(3) + layout.control(self.tabs).margen(0) self.setLayout(layout) def changedNextMove(self): @@ -363,6 +408,7 @@ def creaTab(self): pos = len(self.liTabs)-1 self.tabs.nuevaTab(tabbook, book.nombre, pos) self.tabs.setTabIcon(pos, Iconos.Libros()) + self.setPosicion(self.partida, self.njg, pos) elif resp == "dbase": nomfichgames = QTVarios.selectDB(self, self.configuracion, False, True) if nomfichgames: @@ -371,11 +417,14 @@ def creaTab(self): self.liTabs.append((resp, tabdb)) pos = len(self.liTabs) - 1 self.setPosicion(self.partida, self.njg, pos) - self.tabs.nuevaTab(tabdb, _("Database"), pos) + nombre = os.path.basename(nomfichgames)[:-4] + self.tabs.nuevaTab(tabdb, nombre, pos) self.tabs.setTabIcon(pos, Iconos.Database()) self.tabs.activa(pos) def setPosicion(self, partida, njg, numTab=None): + if partida is None: + return jg = partida.jugada(njg) self.partida = partida self.njg = njg @@ -403,7 +452,6 @@ def setPosicion(self, partida, njg, numTab=None): tab.setData(data) tab.start() - def seleccionaLibro(self): listaLibros = Books.ListaLibros() listaLibros.recuperaVar(self.configuracion.ficheroBooks) @@ -426,7 +474,13 @@ def seleccionaLibro(self): nombre = os.path.basename(fbin)[:-4] book = Books.Libro("P", nombre, fbin, True) listaLibros.nuevo(book) + listaLibros.guardaVar(self.configuracion.ficheroBooks) else: book = None return book + def saveConfig(self): + for tipo, wtab in self.liTabs: + if tipo == "engine": + wtab.saveConfig() + diff --git a/Code/QT/POLBoard.py b/Code/QT/POLBoard.py index df30935..d3d30f1 100644 --- a/Code/QT/POLBoard.py +++ b/Code/QT/POLBoard.py @@ -24,21 +24,31 @@ def __init__(self, panelOpening, configuracion): self.panelOpening = panelOpening self.dbop = panelOpening.dbop + self.partidabase = panelOpening.partidabase + self.num_jg_inicial = len(self.partidabase) + self.posJugada = self.num_jg_inicial + confTablero = configuracion.confTablero("POSLINES", 32) self.tablero = Tablero.Tablero(self, confTablero) self.tablero.crea() self.tablero.ponerPiezasAbajo(True) self.tablero.ponMensajero(self.mueveHumano) self.tablero.dispatchSize(self.ajustaAncho) + self.tablero.dbVisual_setFichero(self.dbop.nomFichero) + self.tablero.dbVisual_setShowAllways(True) + + self.dbop.setdbVisual_Tablero(self.tablero) # To close self.intervalo = 1400 + tipoLetra = Controles.TipoLetra(puntos=configuracion.puntosPGN) + lybt, bt = QTVarios.lyBotonesMovimiento(self, "", siTiempo=True, siLibre=False, tamIcon=24) self.lbPGN = Controles.LB(self).ponWrap() self.lbPGN.colocate = self.colocatePartida self.lbPGN.setStyleSheet("QLabel{ border-style: groove; border-width: 2px; border-color: LightSlateGray; padding: 8px;}") - self.lbPGN.ponTipoLetra(puntos=configuracion.puntosPGN) + self.lbPGN.ponFuente(tipoLetra) self.lbPGN.setOpenExternalLinks(False) def muestraPos(txt): self.colocatePartida(int(txt)) @@ -68,19 +78,24 @@ def muestraPos(txt): # Valoracion liOpciones = [(tit[0], k, tit[1]) for k, tit in self.dicValoracion.iteritems()] - self.lbValoracion = Controles.LB(self, _("Rating") + ":") self.cbValoracion = Controles.CB(self, liOpciones, 0).capturaCambiado(self.cambiadoValoracion) + self.cbValoracion.ponFuente(tipoLetra) # Ventaja liOpciones = [(tit, k, icon) for k, (tit, icon) in self.dicVentaja.iteritems()] self.cbVentaja = Controles.CB(self, liOpciones, 0).capturaCambiado(self.cambiadoVentaja) + self.cbVentaja.ponFuente(tipoLetra) # Comentario self.emComentario = Controles.EM(self, siHTML=False).capturaCambios(self.cambiadoComentario) - - lyVal = Colocacion.H().control(self.lbValoracion).control(self.cbValoracion).control(self.cbVentaja).relleno() + self.emComentario.ponFuente(tipoLetra) + self.emComentario.altoFijo(5*configuracion.altoFilaPGN) + lyVal = Colocacion.H().control(self.cbValoracion).control(self.cbVentaja) lyEd = Colocacion.V().otro(lyVal).control(self.emComentario) + # Apertura + self.lbApertura = Controles.LB(self).alinCentrado().ponFuente(tipoLetra).ponWrap() + lyt = Colocacion.H().relleno().control(self.tablero).relleno() lya = Colocacion.H().relleno().control(self.lbPGN).relleno() @@ -90,6 +105,7 @@ def muestraPos(txt): layout.otro(lybt) layout.otro(lya) layout.otro(lyEd) + layout.control(self.lbApertura) layout.relleno() self.setLayout(layout) @@ -97,6 +113,8 @@ def muestraPos(txt): self.siReloj = False + self.ponPartida(self.partidabase) + def analisis(self): x = self.gb_analysis.isChecked() if not x: @@ -104,23 +122,17 @@ def analisis(self): else: self.wanalisis.show() - def gridNumDatos(self, grid): - return 0 - - def reset_motor(self): - pass - - def start(self): - pass - - def stop(self): - pass - - def ponPartidaBase(self, partida): - self.num_jg_inicial = partida.numJugadas()-1 - def ponPartida(self, partida): + partida.test_apertura() self.partida = partida + rotulo = partida.rotuloApertura() + if rotulo is not None: + trans = partida.rotuloTransposition() + if trans is not None: + rotulo += "\n%s: %s" % (_("Transposition"), trans) + else: + rotulo = "" + self.lbApertura.ponTexto(rotulo) def procesarTB(self): getattr(self, self.sender().clave)() @@ -153,7 +165,7 @@ def camposEdicion(self, siVisible): self.emComentario.setVisible(siVisible) def mueveHumano(self, desde, hasta, coronacion=""): - cpActual = self.partida.jugada(self.posJugada).posicion + cpActual = self.partida.jugada(self.posJugada).posicion if self.posJugada >= 0 else self.partida.iniPosicion if cpActual.siPeonCoronando(desde, hasta): coronacion = self.tablero.peonCoronando(cpActual.siBlancas) if coronacion is None: @@ -177,20 +189,24 @@ def resetValues(self): def colocatePartida(self, pos): self.fenM2 = None - if not self.partida.numJugadas(): + num_jugadas = self.partida.numJugadas() + if num_jugadas == 0: + self.posJugada = -1 self.lbPGN.ponTexto("") self.tablero.ponPosicion(self.partida.iniPosicion) self.resetValues() + self.activaPiezas() return - lh = self.partida.numJugadas() - 1 - if pos >= lh: + if pos >= num_jugadas: self.siReloj = False - pos = lh + pos = num_jugadas - 1 + elif pos < self.num_jg_inicial-1: + pos = self.num_jg_inicial-1 p = self.partida - numJugada = p.primeraJugada() + numJugada = 1 pgn = "" style_number = "color:teal; font-weight: bold;" style_moves = "color:black;" @@ -201,7 +217,7 @@ def colocatePartida(self, pos): pgn += '%d.' % (style_number, numJugada) numJugada += 1 - xp = jg.pgnHTML() if self.siFigurines else jg.pgnSP() + xp = jg.pgnHTML(self.siFigurines) if n == pos: xp = '%s' % (style_select, xp) else: @@ -216,13 +232,15 @@ def colocatePartida(self, pos): if pos < 0: self.tablero.ponPosicion(self.partida.iniPosicion) self.resetValues() + self.activaPiezas() return jugada = self.partida.jugada(self.posJugada) - posicion = jugada.posicion + posicion = jugada.posicion if jugada else self.partida.iniPosicion self.tablero.ponPosicion(posicion) - self.tablero.ponFlechaSC(jugada.desde, jugada.hasta) + if jugada: + self.tablero.ponFlechaSC(jugada.desde, jugada.hasta) self.fenM2 = posicion.fenM2() dic = self.dbop.getfenvalue(self.fenM2) @@ -242,14 +260,16 @@ def colocatePartida(self, pos): def activaPiezas(self): self.tablero.desactivaTodas() - if not self.siReloj and self.posJugada >= self.num_jg_inicial: - jg = self.partida.jugada(self.posJugada) - self.tablero.activaColor(not jg.siBlancas()) + if not self.siReloj and self.posJugada >= self.num_jg_inicial-1: + if self.posJugada >= 0: + jg = self.partida.jugada(self.posJugada) + color = not jg.siBlancas() + else: + color = True + self.tablero.activaColor(color) def MoverInicio(self): - self.posJugada = -1 - posicion = self.partida.iniPosicion - self.tablero.ponPosicion(posicion) + self.colocatePartida(0) def MoverAtras(self): self.colocatePartida(self.posJugada - 1) diff --git a/Code/QT/POLines.py b/Code/QT/POLines.py index 4e1de80..2c7b6f7 100644 --- a/Code/QT/POLines.py +++ b/Code/QT/POLines.py @@ -1,13 +1,14 @@ import os.path +import copy -from PyQt4 import QtCore +from PyQt4 import QtCore, QtGui +from Code import Util from Code import Partida from Code import OpeningLines from Code.QT import Colocacion from Code.QT import Columnas from Code.QT import Controles -from Code.QT import FormLayout from Code.QT import Grid from Code.QT import Iconos from Code.QT import PantallaAperturas @@ -18,6 +19,7 @@ from Code.QT import POLBoard from Code.QT import POLAnalisis from Code.QT import Voyager +from Code.QT import FormLayout class WOpeningLines(QTVarios.WDialogo): @@ -34,9 +36,9 @@ def __init__(self, procesador): oColumnas = Columnas.ListaColumnas() oColumnas.nueva("TITLE", _("Name"), 240) oColumnas.nueva("BASEPV", _("First moves"), 280) + oColumnas.nueva("NUMLINES", _("Lines"), 80, siCentrado=True) oColumnas.nueva("FILE", _("File"), 200) self.glista = Grid.Grid(self, oColumnas, siSelecFilas=True) - self.glista.setMinimumWidth(self.glista.anchoColumnas() + 20) liAcciones = ( (_("Close"), Iconos.MainMenu(), self.terminar), None, @@ -45,17 +47,58 @@ def __init__(self, procesador): (_("Up"), Iconos.Arriba(), self.arriba), (_("Down"), Iconos.Abajo(), self.abajo), None, (_("Remove"), Iconos.Borrar(), self.borrar), None, + (_("Reinit"), Iconos.Reiniciar(), self.reiniciar), None, ) tb = Controles.TBrutina(self, liAcciones) + sp = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) + tb.setSizePolicy(sp) + + liAcciones = ( + (_("Sequential"), Iconos.TrainSequential(), self.tr_sequential), None, + (_("Static"), Iconos.TrainStatic(), self.tr_static), None, + (_("Positions"), Iconos.TrainPositions(), self.tr_positions), + ) + tbtrain = Controles.TBrutina(self, liAcciones, siTexto=False) + + lbtrain = Controles.LB(self, _("Trainings")).alinCentrado().ponFondoN("lightgray") + lytrain = Colocacion.V().control(lbtrain).control(tbtrain).margen(0) + self.wtrain = QtGui.QWidget() + self.wtrain.setLayout(lytrain) + # Colocamos - ly = Colocacion.V().control(tb).control(self.glista).margen(3) + + lytb = Colocacion.H().control(tb).control(self.wtrain) + ly = Colocacion.V().otro(lytb).control(self.glista).margen(3) self.setLayout(ly) self.registrarGrid(self.glista) self.recuperarVideo() + self.wtrain.setVisible(False) + self.glista.gotop() + + def tr_(self, tipo): + recno = self.glista.recno() + op = self.listaOpenings[recno] + op["TRAIN"] = tipo + self.resultado = op + self.guardarVideo() + self.accept() + + def tr_sequential(self): + self.tr_("sequential") + + def tr_static(self): + self.tr_("static") + + def tr_positions(self): + self.tr_("positions") + + def reiniciar(self): + self.listaOpenings.reiniciar() + self.glista.refresh() self.glista.gotop() def arriba(self): @@ -98,24 +141,19 @@ def new(self): if si_expl: QTUtil2.mensaje(self, _("Secondly you have to choose a name for this opening studio.")) - while True: - liGen = [(None, None)] - liGen.append((_("Opening studio name") + ":", name)) - resultado = FormLayout.fedit(liGen, title=_("Opening studio name"), parent=self, icon=Iconos.OpeningLines(), anchoMinimo=460) - if resultado: - accion, liResp = resultado - name = liResp[0] - if name: - file = self.listaOpenings.select_filename(name) - break - else: - return - else: - return - self.listaOpenings.new(file, pv, name) - self.glista.gobottom() - self.glista.refresh() + liGen = [(None, None)] + liGen.append((_("Opening studio name") + ":", name)) + resultado = FormLayout.fedit(liGen, title=_("Opening studio name"), parent=self, icon=Iconos.OpeningLines(), anchoMinimo=460) + if resultado: + accion, liResp = resultado + name = liResp[0] + if name: + file = self.listaOpenings.select_filename(name) + self.listaOpenings.new(file, pv, name) + self.resultado = self.listaOpenings[-1] + self.guardarVideo() + self.accept() def borrar(self): li = self.glista.recnosSeleccionados() @@ -123,7 +161,7 @@ def borrar(self): mens = _("Do you want to delete all selected records?") mens += "\n" for num, fila in enumerate(li, 1): - mens += "\n%d. %s" % (num, self.listaOpenings[fila][2]) + mens += "\n%d. %s" % (num, self.listaOpenings[fila]["title"]) if QTUtil2.pregunta(self, mens): li.sort(reverse=True) for fila in li: @@ -137,14 +175,16 @@ def gridDato(self, grid, fila, oColumna): col = oColumna.clave op = self.listaOpenings[fila] if col == "TITLE": - return op[2] + return op["title"] elif col == "FILE": - return op[0] + return op["file"] + elif col == "NUMLINES": + return op["lines"] elif col == "BASEPV": - pv = op[1] + pv = op["pv"] if pv: p = Partida.Partida() - p.leerPV(op[1]) + p.leerPV(pv) return p.pgnBaseRAW() else: return "" @@ -154,6 +194,14 @@ def gridPonValor(self, grid, fila, columna, valor): if valor: self.listaOpenings.change_title(fila, valor) + def gridCambiadoRegistro(self, grid, fila, columna): + ok = False + if fila >= 0: + op = self.listaOpenings[fila] + ok = op["withtrainings"] + + self.wtrain.setVisible(ok) + def closeEvent(self, event): # Cierre con X self.guardarVideo() @@ -162,30 +210,31 @@ def terminar(self): self.reject() -class WStudy(QTVarios.WDialogo): +class WLines(QTVarios.WDialogo): def __init__(self, procesador, dbop): - self.dbop = dbop title = dbop.gettitle() - QTVarios.WDialogo.__init__(self, procesador.pantalla, title, Iconos.Study(), "studyOpening") + QTVarios.WDialogo.__init__(self, procesador.pantalla, title, Iconos.OpeningLines(), "studyOpening") self.procesador = procesador self.configuracion = procesador.configuracion self.partidabase = self.dbop.getpartidabase() self.num_jg_inicial = self.partidabase.numJugadas() + self.num_jg_actual = None self.partida = None + + self.resultado = None siFigurinesPGN = self.configuracion.figurinesPGN liAcciones = ( (_("Close"), Iconos.MainMenu(), self.terminar), None, - # (_("New"), Iconos.Nuevo(), self.new), None, (_("Remove"), Iconos.Borrar(), self.borrar), None, - # (_("Train"), Iconos.Study(), self.train), None, - (_("Voyager 2"), Iconos.Voyager1(), self.voyager2), None, - (_("Import"), Iconos.Mezclar(), self.importar), None + (_("Import"), Iconos.Mezclar(), self.importar), None, + (_("Utilities"), Iconos.Utilidades(), self.utilidades), None, + (_("Train"), Iconos.Study(), self.train), None, ) - self.tb = tb = Controles.TBrutina(self, liAcciones) + self.tb = Controles.TBrutina(self, liAcciones) oColumnas = Columnas.ListaColumnas() oColumnas.nueva("LINE", _("Line"), 35, edicion=Delegados.EtiquetaPOS(False, True)) @@ -199,110 +248,352 @@ def __init__(self, procesador, dbop): self.glines.ponAltoFila(self.configuracion.altoFilaPGN) self.pboard = POLBoard.BoardLines(self, self.configuracion) - self.pboard.ponPartidaBase(self.partidabase) - self.pboard.ponPartida(self.partidabase) self.tabsanalisis = POLAnalisis.TabsAnalisis(self, self.procesador, self.configuracion) - lyg = Colocacion.H().control(self.tabsanalisis).margen(3) - self.gb_analysis = Controles.GB(self, _("Analysis"), lyg) - self.gb_analysis.conectar(self.analisis) - self.gb_analysis.setChecked(True) - - lyLV = Colocacion.V().control(self.glines).control(self.gb_analysis) - ly1 = Colocacion.H().control(self.pboard).otro(lyLV) - layout = Colocacion.V().control(tb).otro(ly1) + + splitter = QtGui.QSplitter(self) + splitter.setOrientation(QtCore.Qt.Vertical) + splitter.addWidget(self.glines) + splitter.addWidget(self.tabsanalisis) + + sp = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) + splitter.setSizePolicy(sp) + + self.registrarSplitter(splitter, "SPLITTER") + + lyLV = Colocacion.V().control(splitter) + lyTB = Colocacion.V().control(self.tb).control(self.pboard) + layout = Colocacion.H().otro(lyTB).otro(lyLV).margen(3) self.setLayout(layout) self.colorPar = QTUtil.qtColor("#DBDAD9") self.colorNon = QTUtil.qtColor("#F1EFE9") self.colorLine = QTUtil.qtColor("#CDCCCB") - self.analisis() self.partida = self.partidabase + self.pboard.MoverFinal() self.recuperarVideo() - def voyager2(self): + def utilidades(self): + menu = QTVarios.LCMenu(self) + submenu = menu.submenu(_("Analysis"), Iconos.Analizar()) + submenu.opcion(self.ta_massive, _("Mass analysis"), Iconos.Analizar()) + submenu.separador() + submenu.opcion(self.ta_remove, _("Delete all previous analysis"), Iconos.Delete()) + menu.separador() + resp = menu.lanza() + if resp: + resp() + + def ta_massive(self): + dicVar = self.configuracion.leeVariables("MASSIVE_OLINES") + + liGen = [FormLayout.separador] + + config = FormLayout.Combobox(_("Engine"), self.configuracion.comboMotoresMultiPV10(4)) + liGen.append((config, dicVar.get("ENGINE", self.configuracion.tutor))) + + liGen.append((_("Duration of engine analysis (secs)") + ":", dicVar.get("SEGUNDOS", float(self.configuracion.tiempoTutor / 1000.0)))) + liDepths = [("--", 0)] + for x in range(1, 51): + liDepths.append((str(x), x)) + config = FormLayout.Combobox(_("Depth"), liDepths) + liGen.append((config, dicVar.get("DEPTH", self.configuracion.depthTutor))) + + li = [(_("Maximum"), 0)] + for x in (1, 3, 5, 10, 15, 20, 30, 40, 50, 75, 100, 150, 200): + li.append((str(x), x)) + config = FormLayout.Combobox(_("Number of moves evaluated by engine(MultiPV)"), li) + liGen.append((config, dicVar.get("MULTIPV", self.configuracion.tutorMultiPV))) + + liGen.append(FormLayout.separador) + liGen.append((_("Redo any existing prior analyses (if they exist)") + ":", dicVar.get("REDO", False))) + + resultado = FormLayout.fedit(liGen, title=_("Mass analysis"), parent=self, anchoMinimo=460, + icon=Iconos.Analizar()) + if resultado is None: + return + + claveMotor, tiempo, depth, multiPV, redo = resultado[1] + ms = int(tiempo * 1000) + if ms == 0 and depth == 0: + return + + dicVar["ENGINE"] = claveMotor + dicVar["SEGUNDOS"] = tiempo + dicVar["DEPTH"] = depth + dicVar["MULTIPV"] = multiPV + dicVar["REDO"] = redo + self.configuracion.escVariables("MASSIVE_OLINES", dicVar) + + um = QTUtil2.unMomento(self) + stFensM2 = self.dbop.getAllFen() + if redo == False: + liBorrar = [] + for fenM2 in stFensM2: + dic = self.dbop.getfenvalue(fenM2) + if "ANALISIS" in dic: + liBorrar.append(fenM2) + for fenM2 in liBorrar: + stFensM2.remove(fenM2) + + conf_engine = copy.deepcopy(self.configuracion.buscaMotor(claveMotor)) + conf_engine.actMultiPV(multiPV) + xgestor = self.procesador.creaGestorMotor(conf_engine, ms, depth, True) + + um.final() + + mensaje = _("Move") + " %d/" + str(len(stFensM2)) + tmpBP = QTUtil2.BarraProgreso(self, _("Mass analysis"), "", len(stFensM2)) + + done = 0 + + for n, fenM2 in enumerate(stFensM2, 1): + + if tmpBP.siCancelado(): + break + + tmpBP.inc() + tmpBP.mensaje(mensaje % n) + + mrm = xgestor.analiza(fenM2 + " 0 1") + dic = self.dbop.getfenvalue(fenM2) + dic["ANALISIS"] = mrm + self.dbop.setfenvalue(fenM2, dic) + done += 1 + + tmpBP.cerrar() + + def ta_remove(self): + if QTUtil2.pregunta(self, _("Are you sure?")): + total = len(self.dbop.db_fenvalues) + mensaje = _("Move") + " %d/" + str(total) + tmpBP = QTUtil2.BarraProgreso(self, "", "", total) + self.dbop.removeAnalisis(tmpBP, mensaje) + tmpBP.cerrar() + self.glines.refresh() + + + def train(self): + if self.train_test(): + menu = QTVarios.LCMenu(self) + menu.opcion("tr_sequential", _("Sequential"), Iconos.TrainSequential()) + menu.separador() + menu.opcion("tr_static", _("Static"), Iconos.TrainStatic()) + menu.separador() + menu.opcion("tr_positions", _("Positions"), Iconos.TrainPositions()) + menu.separador() + submenu = menu.submenu(_("Configuration"), Iconos.Configurar()) + submenu.opcion("update", _("Update current trainings"), Iconos.Reindexar()) + submenu.separador() + submenu.opcion("new", _("Re-create all trainings"), Iconos.Modificar()) + resp = menu.lanza() + if resp is None: + return + if resp.startswith("tr_"): + self.resultado = resp + self.accept() + elif resp == "new": + self.trainNew() + elif resp == "update": + self.trainUpdate() + + def train_test(self): + if len(self.dbop) == 0: + return False + training = self.dbop.training() + if training is None: + return self.trainNew() + return True + + def trainNew(self): + training = self.dbop.training() + if training is None: + color = "WHITE" + random_order = False + max_moves = 0 + else: + color = training["COLOR"] + random_order = training["RANDOM"] + max_moves = training["MAXMOVES"] + + liGen = [(None, None)] + + liJ = [(_("White"), "WHITE"), (_("Black"), "BLACK")] + config = FormLayout.Combobox(_("Play with"), liJ) + liGen.append((config, color)) + + liGen.append((None, None)) + liGen.append((_("Random order"), random_order)) + + liGen.append((None, None)) + liGen.append((_("Maximum number of moves (0=all)"), max_moves)) + + resultado = FormLayout.fedit(liGen, title=_("New training"), parent=self, anchoMinimo=360, icon=Iconos.Study()) + if resultado is None: + return + + accion, liResp = resultado + + reg = {} + + reg["COLOR"], reg["RANDOM"], reg["MAXMOVES"] = liResp + + self.dbop.createTraining(reg, self.configuracion) + + QTUtil2.mensaje(self, _("The trainings of this opening has been created")) + + def trainUpdate(self): + self.dbop.updateTraining() + QTUtil2.mensaje(self, _("The trainings have been updated")) + + def addPartida(self, partida): + if partida.pv().startswith(self.partidabase.pv()): + siNueva, num_linea, siAppend = self.dbop.posPartida(partida) + if siNueva: + self.dbop.append(partida) + else: + if siAppend: + self.dbop[num_linea] = partida + self.glines.refresh() + else: + QTUtil2.mensError(self, _X("New line must begin with %1", self.partidabase.pgnSP())) + + def partidaActual(self): partida = Partida.Partida() - partida.leeOtra(self.partidabase) - ptxt = Voyager.voyagerPartida(self.owner, partida) + numcol = self.glines.posActualN()[1] + partida.leeOtra(self.partida if self.partida and numcol> 0 else self.partidabase) + if self.num_jg_actual is not None \ + and self.num_jg_inicial <= self.num_jg_actual < len(partida): + partida.liJugadas = partida.liJugadas[:self.num_jg_actual+1] + partida.ultPosicion = partida.jugada(-1).posicion + return partida + + def voyager2(self, partida): + ptxt = Voyager.voyagerPartida(self, partida) if ptxt: partida = Partida.Partida() partida.recuperaDeTexto(ptxt) - if self.partidabase.pv() in partida.pv(): - siNueva, num_linea, siAppend = self.dbop.posPartida(partida) - if siNueva: - self.dbop.append(partida) - else: - if siAppend: - self.dbop[num_linea] = partida - self.glines.refresh() - else: - QTUtil2.mensError(self, _X("New line must begin with %1", self.partidabase.pgnSP())) + self.addPartida(partida) def importar(self): menu = QTVarios.LCMenu(self) - liOp = self.dbop.getOtras(self.configuracion) - if liOp: - otra = menu.submenu(_("Other line openings"), Iconos.OpeningLines()) - for fichero, titulo in liOp: - otra.opcion(("ol", fichero), titulo, Iconos.PuntoVerde()) + def haz_menu(frommenu, part): + liOp = self.dbop.getOtras(self.configuracion, part) + if liOp: + otra = frommenu.submenu(_("Other opening lines"), Iconos.OpeningLines()) + for fichero, titulo in liOp: + otra.opcion(("ol", (fichero, part)), titulo, Iconos.PuntoVerde()) + frommenu.separador() + frommenu.opcion(("pgn", part), _("PGN with variants"), Iconos.Tablero()) + frommenu.separador() + frommenu.opcion(("polyglot", part), _("Polyglot book"), Iconos.Libros()) + frommenu.separador() + frommenu.opcion(("summary", part), _("Database summary"), Iconos.DatabaseC()) + frommenu.separador() + frommenu.opcion(("voyager2", part), _("Voyager 2"), Iconos.Voyager1()) + frommenu.separador() + frommenu.opcion(("opening", part), _("Opening"), Iconos.Apertura()) + + partida = self.partidaActual() + if len(partida) > len(self.partidabase): + sub1 = menu.submenu(_("From current position"), Iconos.MoverLibre()) + haz_menu(sub1, partida) menu.separador() - menu.opcion(("pgn", None), _("PGN with variants"), Iconos.Tablero()) - menu.separador() - menu.opcion(("polyglot", None), _("Polyglot book"), Iconos.Libros()) - menu.separador() - menu.opcion(("summary", None), _("Database summary"), Iconos.DatabaseC()) - menu.separador() + sub2 = menu.submenu(_("From base position"), Iconos.MoverInicio()) + haz_menu(sub2, self.partidabase) + else: + haz_menu(menu, self.partidabase) + resp = menu.lanza() if resp is None: return - tipo, arg = resp + tipo, partida = resp if tipo == "pgn" : - self.importarPGN() + self.importarPGN(partida) elif tipo == "polyglot": - self.importarPolyglot() + self.importarPolyglot(partida) elif tipo == "summary": - pass + self.importarSummary(partida) + elif tipo == "voyager2": + self.voyager2(partida) + elif tipo == "opening": + self.importarApertura(partida) elif tipo == "ol": - pass - - def importarPolyglot(self): - previo = self.configuracion.leeVariables("WBG_MOVES") - carpeta = previo.get("CARPETABIN", "") + fichero, partida = partida + self.importarOtra(fichero, partida) + + def importarOtra(self, fichero, partida): + um = QTUtil2.unMomento(self) + pathFichero = os.path.join(self.configuracion.folderOpenings, fichero) + self.dbop.importarOtra(pathFichero, partida) + um.final() + self.glines.refresh() + self.glines.gotop() - ficheroBIN = QTUtil2.leeFichero(self, carpeta, "%s (*.bin)" % _("Polyglot book"), titulo=_("File to import")) - if not ficheroBIN: - return - previo["CARPETABIN"] = os.path.dirname(ficheroBIN) - self.configuracion.escVariables("WBG_MOVES", previo) + def importarApertura(self, partida): + partida.asignaApertura() + w = PantallaAperturas.WAperturas(self, self.configuracion, partida.apertura) + if w.exec_(): + ap = w.resultado() + partida = Partida.Partida() + partida.leerPV(ap.a1h8) + self.addPartida(partida) + def importarLeeParam(self, titulo, dicData): liGen = [(None, None)] liGen.append((None, _("Select a maximum number of moves (plies)
to consider from each game"))) - - liGen.append((FormLayout.Spinbox(_("Depth"), 3, 99, 50), 30)) - liGen.append((None, None)) - - liGen.append((_("Only white best moves"), False)) + liGen.append((FormLayout.Spinbox(_("Depth"), 3, 99, 50), dicData.get("DEPTH", 30))) liGen.append((None, None)) - liGen.append((_("Only black best moves"), False)) + li = [(_("Only white best moves"), True), (_("Only black best moves"), False)] + config = FormLayout.Combobox(_("Moves"), li) + liGen.append((config, dicData.get("SIWHITE", True))) liGen.append((None, None)) - resultado = FormLayout.fedit(liGen, title=os.path.basename(ficheroBIN), parent=self, anchoMinimo=360, - icon=Iconos.PuntoNaranja()) - + resultado = FormLayout.fedit(liGen, title=titulo, parent=self, anchoMinimo=360, icon=Iconos.PuntoNaranja()) if resultado: accion, liResp = resultado - depth, whiteBest, blackBest = liResp - self.dbop.grabarPolyglot(self, ficheroBIN, depth, whiteBest, blackBest) + depth, siWhite = liResp + dicData["DEPTH"] = depth + dicData["SIWHITE"] = siWhite + self.configuracion.escVariables("WBG_MOVES", dicData) + return dicData + return None + + def importarSummary(self, partida): + nomfichgames = QTVarios.selectDB(self, self.configuracion, False, True) + if nomfichgames: + previo = self.configuracion.leeVariables("OPENINGLINES") + dicData = self.importarLeeParam(_("Database summary"), previo) + if dicData: + ficheroSummary = nomfichgames + "_s1" + depth, siWhite = dicData["DEPTH"], dicData["SIWHITE"] + self.dbop.importarSummary(self, partida, ficheroSummary, depth, siWhite) + self.glines.refresh() + self.glines.gotop() + + def importarPolyglot(self): + dicData = self.configuracion.leeVariables("OPENINGLINES") + carpeta = dicData.get("CARPETABIN", "") + + ficheroBIN = QTUtil2.leeFichero(self, carpeta, "%s (*.bin)" % _("Polyglot book"), titulo=_("File to import")) + if not ficheroBIN: + return + + dicData["CARPETABIN"] = os.path.dirname(ficheroBIN) + dicData = self.importarLeeParam(dicData) + if dicData: + depth, siWhite = dicData["DEPTH"], dicData["SIWHITE"] + self.dbop.importarPolyglot(self, ficheroBIN, depth, siWhite) self.glines.refresh() self.glines.gotop() - def importarPGN(self): + def importarPGN(self, partida): previo = self.configuracion.leeVariables("OPENINGLINES") carpeta = previo.get("CARPETAPGN", "") @@ -326,23 +617,16 @@ def importarPGN(self): accion, liResp = resultado depth = liResp[0] - self.dbop.grabarPGN(self, ficheroPGN, depth) + self.dbop.importarPGN(self, partida, ficheroPGN, depth) self.glines.refresh() self.glines.gotop() - def analisis(self): - x = self.gb_analysis.isChecked() - if not x: - self.tabsanalisis.hide() - else: - self.tabsanalisis.show() - def gridColorFondo(self, grid, fila, oColumna): col = oColumna.clave - linea = fila//2 if col == "LINE": return self.colorLine else: + linea = fila // 2 return self.colorPar if linea % 2 == 0 else self.colorNon def gridCambiadoRegistro(self, grid, fila, oColumna): @@ -355,7 +639,8 @@ def gridCambiadoRegistro(self, grid, fila, oColumna): if not iswhite: njug += 1 else: - njug = self.partida.numJugadas()-1 + njug = None + self.num_jg_actual = njug self.pboard.ponPartida(self.partida) self.pboard.colocatePartida(njug) self.glines.setFocus() @@ -415,8 +700,12 @@ def gridNumDatos(self, grid): return len(self.dbop)*2 def gridTeclaControl(self, grid, k, siShift, siControl, siAlt): - if k == QtCore.Qt.Key_Delete: - self.borrar_move() + if k in (QtCore.Qt.Key_Delete, QtCore.Qt.Key_Backspace): + fila, col = self.glines.posActual() + if col.clave == "LINE": + self.borrar() + else: + self.borrar_move() def borrar_move(self): fila, col = self.glines.posActual() @@ -438,7 +727,8 @@ def borrar_move(self): if njug == self.num_jg_inicial: return self.borrar() - if QTUtil2.pregunta(self, _("Do you want to eliminate this move?")): + siUltimo = njug == len(partida)-1 # si es el ultimo no se pregunta + if siUltimo or QTUtil2.pregunta(self, _("Do you want to eliminate this move?")): partida.liJugadas = partida.liJugadas[:njug] partida.ultPosicion = partida.jugada(-1).posicion self.dbop[linea] = partida @@ -446,12 +736,75 @@ def borrar_move(self): self.goto_finlinea() def borrar(self): - fila = self.glines.recno() - linea = fila//2 - if 0 <= linea < len(self.dbop): - if QTUtil2.pregunta(self, _X("Do you want to remove line %1", str(linea+1))): - del self.dbop[linea] - self.goto_finlinea() + tam_dbop = len(self.dbop) + if tam_dbop == 0: + return + current = self.glines.recno()//2 + li = [] + if 0 <= current < tam_dbop: + li.append(["current", _("Remove line %d") % (current+1,), Iconos.Mover()]) + if tam_dbop > 1: + li.append(["lines", _("Remove a list of lines"), Iconos.MoverLibre()]) + + if len(li) > 0: + menu = QTVarios.LCMenu(self) + for key, title, ico in li: + menu.opcion(key, title, ico) + menu.separador() + resp = menu.lanza() + + if resp == "current": + del self.dbop[current] + self.goto_inilinea() + + else: + liGen = [FormLayout.separador] + config = FormLayout.Editbox("
" + _("Lines") + "
" + + _("By example:") + " -5,8-12,14,19-", + rx="[0-9,\-,\,]*") + liGen.append((config, "")) + resultado = FormLayout.fedit(liGen, title=_("Remove a list of lines"), parent=self, anchoMinimo=460, icon=Iconos.OpeningLines()) + if resultado: + accion, liResp = resultado + clista = liResp[0] + if clista: + ln = Util.ListaNumerosImpresion(clista) + li = ln.selected(range(1, tam_dbop+1)) + sli = [] + cad = "" + for num in li: + if cad: + cad += "," + str(num) + else: + cad = str(num) + if len(cad) > 80: + sli.append(cad) + cad = "" + if cad: + sli.append(cad) + cli = "\n".join(sli) + if QTUtil2.pregunta(self, _("Do you want to remove the next lines ?") + "\n\n" + cli): + li.sort(reverse=True) + um = QTUtil2.unMomento(self, _("Working...")) + for num in li: + del self.dbop[num-1] + self.glines.refresh() + self.goto_inilinea() + um.final() + + def goto_inilinea(self): + nlines = len(self.dbop) + if nlines == 0: + return + + linea = self.glines.recno() // 2 + if linea >= nlines: + linea = nlines-1 + + fila = linea*2 + ncol = 0 + self.glines.goto(fila, ncol) + self.glines.refresh() def goto_finlinea(self): nlines = len(self.dbop) @@ -478,6 +831,7 @@ def goto_finlinea(self): self.glines.refresh() def terminar(self): + self.tabsanalisis.saveConfig() self.guardarVideo() self.accept() @@ -485,9 +839,12 @@ def mueveHumano(self, partida): # Estamos en la misma linea ? # recno = self.glines.recno() # Buscamos en las lineas si hay alguna que el pv sea parcial o totalmente igual + partida.pendienteApertura = True siNueva, num_linea, siAppend = self.dbop.posPartida(partida) siBlancas = partida.jugada(-1).siBlancas() - ncol = (partida.numJugadas() - self.num_jg_inicial) // 2 + 1 + ncol = (partida.numJugadas() - self.num_jg_inicial + 1) // 2 + if self.num_jg_inicial%2 == 1 and siBlancas: + ncol += 1 if siNueva: self.dbop.append(partida) else: @@ -504,6 +861,86 @@ def mueveHumano(self, partida): self.glines.refresh() +class WStaticTraining(QTVarios.WDialogo): + def __init__(self, procesador, dbop): + self.training = dbop.training() + self.ligames = self.training["LIGAMES_STATIC"] + self.num_games = len(self.ligames) + self.elems_fila = 10 + if self.num_games < self.elems_fila: + self.elems_fila = self.num_games + self.num_filas = (self.num_games-1) / self.elems_fila + 1 + self.seleccionado = None + + titulo = "%s - %s" % (_("Opening lines"), _("Static training")) + + extparam = "openlines_static_%s" % dbop.nomFichero + + QTVarios.WDialogo.__init__(self, procesador.pantalla, titulo, Iconos.TrainStatic(), extparam) + + lb = Controles.LB(self, dbop.gettitle()) + lb.ponFondoN("#BDDBE8").alinCentrado().ponTipoLetra(puntos=14) + + # Toolbar + tb = Controles.TBrutina(self) + tb.new(_("Close"), Iconos.MainMenu(), self.terminar) + + # Lista + ancho = 42 + oColumnas = Columnas.ListaColumnas() + oColumnas.nueva("FILA", "", 36, siCentrado=True) + for x in range(self.elems_fila): + oColumnas.nueva("COL%d" % x, "%d" % (x+1,), ancho, siCentrado=True, edicion=Delegados.PmIconosWeather()) + + self.grid = Grid.Grid(self, oColumnas, altoFila=ancho, background="white") + self.grid.setAlternatingRowColors(False) + self.grid.tipoLetra(puntos=10, peso=500) + nAnchoPgn = self.grid.anchoColumnas() + 20 + self.grid.setMinimumWidth(nAnchoPgn) + + ly = Colocacion.V().control(lb).control(tb).control(self.grid) + self.setLayout(ly) + + alto = self.num_filas*ancho + 146 + self.recuperarVideo(siTam=True, altoDefecto=alto, anchoDefecto=nAnchoPgn) + + def terminar(self): + + self.guardarVideo() + self.reject() + + def gridNumDatos(self, grid): + return self.num_filas + + def gridDato(self, grid, fila, oColumna): + col = oColumna.clave + if col == "FILA": + return "%d" % (fila + 1) + elif col.startswith("COL"): + num = fila*self.elems_fila + int(col[3:]) + if num >= self.num_games: + return None + game = self.ligames[num] + sinerror = game["NOERROR"] + return str(sinerror) if sinerror < 4 else "4" + + def gridDobleClick(self, grid, fila, oColumna): + col = oColumna.clave + if col.startswith("COL"): + num = fila*self.elems_fila + int(col[3:]) + if num >= self.num_games: + return + self.seleccionado = num + self.guardarVideo() + self.accept() + + +def selectLine(procesador, dbop): + w = WStaticTraining(procesador, dbop) + w.exec_() + return w.seleccionado + + def openingLines(procesador): w = WOpeningLines(procesador) return w.resultado if w.exec_() else None @@ -512,7 +949,8 @@ def openingLines(procesador): def study(procesador, fichero): with QTUtil.EscondeWindow(procesador.pantalla): dbop = OpeningLines.Opening(os.path.join(procesador.configuracion.folderOpenings, fichero)) - w = WStudy(procesador, dbop) + w = WLines(procesador, dbop) w.exec_() dbop.close() + return w.resultado diff --git a/Code/QT/PantallaAnalisis.py b/Code/QT/PantallaAnalisis.py index daca169..1ecc15c 100644 --- a/Code/QT/PantallaAnalisis.py +++ b/Code/QT/PantallaAnalisis.py @@ -74,7 +74,7 @@ def xcol(): confTablero = VarGen.configuracion.confTablero("ANALISISGRAPH", 48) self.tablero = Tablero.Tablero(self, confTablero) self.tablero.crea() - self.tablero.ponerPiezasAbajo(True) + self.tablero.ponerPiezasAbajo(alm.siBlancasAbajo) self.tablero.dispatchSize(self.tableroSizeChanged) self.capturas = WCapturas.CapturaLista(self, self.tablero) @@ -431,7 +431,8 @@ def grabarTodos(self): if resp: for pos, tp in enumerate(self.um.listaRM): rm = tp[0] - partida = Partida.Partida(self.um.jg.posicionBase).leerPV(rm.pv) + partida = Partida.Partida(self.um.jg.posicionBase) + partida.leerPV(rm.pv) self.um.grabarBase(partida, rm, resp) self.um.ponVistaGestor() diff --git a/Code/QT/PantallaAnalisisParam.py b/Code/QT/PantallaAnalisisParam.py index 5dd4ea8..ef3439c 100644 --- a/Code/QT/PantallaAnalisisParam.py +++ b/Code/QT/PantallaAnalisisParam.py @@ -6,7 +6,7 @@ from Code import Util from Code import EngineThread -SEPARADOR = (None, None) +SEPARADOR = FormLayout.separador def leeDicParametros(configuracion): diff --git a/Code/QT/PantallaAperturas.py b/Code/QT/PantallaAperturas.py index 6614d1f..de00cfb 100644 --- a/Code/QT/PantallaAperturas.py +++ b/Code/QT/PantallaAperturas.py @@ -150,7 +150,7 @@ def ponActivas(self): self.tablero.ponPosicion(self.partida.ultPosicion) - self.apStd.asignaApertura(self.partida) + self.partida.asignaApertura() txt = self.partida.pgnSP() if self.partida.apertura: txt = '%s
%s' % (self.partida.apertura.nombre, txt) @@ -333,7 +333,7 @@ def leeBloques(self, liPV): for pv in liPV: p = Partida.Partida() p.leerPV(pv) - self.listaAperturasStd.asignaApertura(p) + p.asignaApertura() ap = p.apertura if ap is None: ap = AperturasStd.AperturasStd(_("Unknown")) diff --git a/Code/QT/PantallaArbol.py b/Code/QT/PantallaArbol.py index 015dc15..ea4699b 100644 --- a/Code/QT/PantallaArbol.py +++ b/Code/QT/PantallaArbol.py @@ -1,6 +1,6 @@ import collections -import LCEngine +import LCEngineV1 as LCEngine from PyQt4 import QtGui, QtCore diff --git a/Code/QT/PantallaColores.py b/Code/QT/PantallaColores.py index f7641b1..56b0da2 100644 --- a/Code/QT/PantallaColores.py +++ b/Code/QT/PantallaColores.py @@ -438,18 +438,13 @@ def l2mas1(lyG, fila, a, b, c): self.tablero.ponPosicion(cp) self.rehazFlechas() - liAcciones = [(_("Accept"), Iconos.Aceptar(), "aceptar"), - None, - (_("Cancel"), Iconos.Cancelar(), "cancelar"), - None, - (_("Your themes"), Iconos.Temas(), "temas"), - None, - (_("Import"), Iconos.Mezclar(), "importar"), - None, - (_("Export"), Iconos.Grabar(), "exportar"), - None, + liAcciones = [(_("Accept"), Iconos.Aceptar(), self.aceptar), None, + (_("Cancel"), Iconos.Cancelar(), self.cancelar), None, + (_("Your themes"), Iconos.Temas(), self.temas), None, + (_("Import"), Iconos.Mezclar(), self.importar), None, + (_("Export"), Iconos.Grabar(), self.exportar), None, ] - tb = Controles.TB(self, liAcciones) + tb = Controles.TBrutina(self, liAcciones) # tam tablero self.lbTamTablero = Controles.LB(self, "%d px" % self.tablero.width()) @@ -495,10 +490,10 @@ def extendedColor(self): def rehazFlechas(self): self.tablero.quitaFlechas() - self.tablero.creaFlechaTmp("b8", "b4", True) - self.tablero.creaFlechaTmp("f5", "c2", False) - self.tablero.creaFlechaMov("d1", "h5", "ms100") - self.tablero.creaFlechaMov("d8", "d5", "mt100") + self.tablero.creaFlechaTmp("f2", "f4", True) + self.tablero.creaFlechaTmp("d1", "d4", False) + self.tablero.creaFlechaMov("f5", "d7", "ms100") + self.tablero.creaFlechaMov("d6", "b4", "mt100") def cambiadoTema(self): fichTema = self.cbTemas.valor() @@ -573,27 +568,16 @@ def defectoTemas(self): self.actualizaTablero() - def procesarTB(self): - accion = self.sender().clave - if accion == "aceptar": + def aceptar(self): + self.confTablero.guardaEnDisco() + self.tableroOriginal.reset(self.confTablero) - self.confTablero.guardaEnDisco() - self.tableroOriginal.reset(self.confTablero) + self.guardarVideo() + self.accept() - self.guardarVideo() - self.accept() - elif accion == "cancelar": - self.guardarVideo() - self.reject() - - elif accion == "temas": - self.temas() - - elif accion == "importar": - self.importar() - - elif accion == "exportar": - self.exportar() + def cancelar(self): + self.guardarVideo() + self.reject() def importar(self): # import os diff --git a/Code/QT/PantallaConfig.py b/Code/QT/PantallaConfig.py index 049caf1..9e76ee9 100644 --- a/Code/QT/PantallaConfig.py +++ b/Code/QT/PantallaConfig.py @@ -116,6 +116,16 @@ def opciones(parent, configuracion): liTT.append(separador) liTT.append((_("Tutor enabled"), configuracion.tutorActivoPorDefecto)) liTT.append(separador) + + # Mostrando el tutor + # kTutorH, kTutorH2_1, kTutorH1_2, kTutorV + liPosTutor = [configuracion.vistaTutor, (kTutorH, _("Horizontal")), + (kTutorH2_1, _("Horizontal") + " 2+1"), + (kTutorH1_2, _("Horizontal") + " 1+2"), + (kTutorV, _("Vertical"))] + liTT.append((_("Tutor boards position") + ":", liPosTutor)) + liTT.append(separador) + liTT.append(separador) liTT.append((None, _("Sensitivity"))) liTT.append((FormLayout.Spinbox(_("Minimum difference in points"), 0, 1000, 70), configuracion.tutorDifPts)) liTT.append((FormLayout.Spinbox(_("Minimum difference in %"), 0, 1000, 70), configuracion.tutorDifPorc)) @@ -158,56 +168,49 @@ def d(num): liSA.append((config, configuracion.salvarCSV)) # Boards - liT = [separador] + liB = [separador] - # Mostrando el tutor - # kTutorH, kTutorH2_1, kTutorH1_2, kTutorV - liPosTutor = [configuracion.vistaTutor, (kTutorH, _("Horizontal")), - (kTutorH2_1, _("Horizontal") + " 2+1"), - (kTutorH1_2, _("Horizontal") + " 1+2"), - (kTutorV, _("Vertical"))] - liT.append((_("Tutor boards position") + ":", liPosTutor)) - liT.append(separador) - liT.append((_("Visual effects") + ":", configuracion.efectosVisuales)) + liB.append((_("Visual effects") + ":", configuracion.efectosVisuales)) drap = {1: 100, 2: 150, 3: 200, 4: 250, 5: 300, 6: 350, 7: 400, 8: 450, 9: 500} drapV = {} for x in drap: drapV[drap[x]] = x - liT.append((FormLayout.Dial("%s (%s=1)" % (_("Speed"), _("Default")), 1, len(drap), siporc=False), + liB.append((FormLayout.Dial("%s (%s=1)" % (_("Speed"), _("Default")), 1, len(drap), siporc=False), drapV.get(configuracion.rapidezMovPiezas, 100))) - liT.append(separador) + liB.append(separador) liMouseSH = [configuracion.siAtajosRaton, (False, _("Type fixed: you must always indicate origin and destination")), (True, _("Type predictive: program tries to guess your intention"))] - liT.append((_("Mouse shortcuts") + ":", liMouseSH)) - liT.append((_("Show candidates") + ":", configuracion.showCandidates)) - liT.append((_("Show arrows of variants") + ":", configuracion.showVariantes)) - liT.append((_("Always promote to queen\nALT key allows to change") + ":", configuracion.autocoronacion)) - liT.append((_("Show cursor when engine is thinking") + ":", configuracion.cursorThinking)) - liT.append(separador) - liT.append((_("Enable captured material window by default") + ":", configuracion.siActivarCapturas)) + liB.append((_("Mouse shortcuts") + ":", liMouseSH)) + liB.append((_("Show candidates") + ":", configuracion.showCandidates)) + liB.append((_("Show arrows of variants") + ":", configuracion.showVariantes)) + liB.append((_("Always promote to queen\nALT key allows to change") + ":", configuracion.autocoronacion)) + liB.append((_("Show cursor when engine is thinking") + ":", configuracion.cursorThinking)) + liB.append(separador) + liB.append((_("Enable captured material window by default") + ":", configuracion.siActivarCapturas)) liMat = [configuracion.tipoMaterial, ("D", _("Difference material")), ("C", _("Captured material at beginning")), ("M", _("Material advantage"))] - liT.append((_("Show material") + ":", liMat)) - liT.append(separador) - liT.append((_("Enable information panel by default") + ":", configuracion.siActivarInformacion)) - liT.append(separador) - liT.append((_X(_("Enable %1"), _("DGT board")) + ":", configuracion.siDGT)) - liT.append(separador) + liB.append((_("Show material") + ":", liMat)) + liB.append(separador) + liB.append((_("Enable information panel by default") + ":", configuracion.siActivarInformacion)) + liB.append(separador) + liB.append((_X(_("Enable %1"), _("DGT board")) + ":", configuracion.siDGT)) + liB.append(separador) # liT.append((FormLayout.Dial(_("Opacity of tool icon"), 1, 9, siporc=False), configuracion.opacityToolBoard)) - liT.append((_("Show configuration icon"), configuracion.opacityToolBoard > 6)) + liB.append((_("Show configuration icon"), configuracion.opacityToolBoard > 6)) liPos = [configuracion.positionToolBoard, ("B", _("Bottom")), ("T", _("Top"))] - liT.append((_("Configuration icon position") + ":", liPos)) - liT.append(separador) - liT.append((_("Show icon when position has graphic information"), configuracion.directorIcon)) - liT.append(separador) + liB.append((_("Configuration icon position") + ":", liPos)) + liB.append(separador) + liB.append((_("Show icon when position has graphic information"), configuracion.directorIcon)) + + liB.append(separador) lista = [] lista.append((liGen, _("General"), "")) lista.append((liSon, _("Sounds"), "")) lista.append((liTT, _("Tutor"), "")) - lista.append((liT, _("Boards"), "")) + lista.append((liB, _("Boards"), "")) lista.append((liEng, _("Engines"), "")) lista.append((liAsp, _("Appearance"), "")) lista.append((liPR, _("Performance"), "")) @@ -220,7 +223,7 @@ def d(num): if resultado: accion, resp = resultado - liGen, liSon, liTT, liT, liEng, liAsp, liPR, liSA, liNC = resp + liGen, liSon, liTT, liB, liEng, liAsp, liPR, liSA, liNC = resp (configuracion.jugador, configuracion.estilo, configuracion.traductor, configuracion.checkforupdate) = liGen @@ -237,23 +240,25 @@ def d(num): if configuracion.familia == "System": configuracion.familia = "" - (configuracion.siSuenaBeep, configuracion.siSuenaResultados, configuracion.siSuenaJugada, configuracion.siSuenaNuestro) = liSon + (configuracion.siSuenaBeep, configuracion.siSuenaResultados, + configuracion.siSuenaJugada, configuracion.siSuenaNuestro) = liSon (configuracion.tutor.clave, tiempoTutor, configuracion.depthTutor, configuracion.tutorMultiPV, - configuracion.tutorActivoPorDefecto, configuracion.tutorDifPts, configuracion.tutorDifPorc) = liTT + configuracion.tutorActivoPorDefecto, configuracion.vistaTutor, + configuracion.tutorDifPts, configuracion.tutorDifPorc ) = liTT configuracion.tiempoTutor = int(tiempoTutor * 1000) - (configuracion.eloNC, configuracion.micheloNC, configuracion.ficsNC, configuracion.fideNC, configuracion.lichessNC) = liNC + (configuracion.eloNC, configuracion.micheloNC, configuracion.ficsNC, + configuracion.fideNC, configuracion.lichessNC) = liNC (configuracion.centipawns, configuracion.bmi2, configuracion.notbackground, configuracion.siLogEngines) = liEng - (configuracion.vistaTutor, - configuracion.efectosVisuales, rapidezMovPiezas, + (configuracion.efectosVisuales, rapidezMovPiezas, configuracion.siAtajosRaton, configuracion.showCandidates, configuracion.showVariantes, configuracion.autocoronacion, configuracion.cursorThinking, configuracion.siActivarCapturas, configuracion.tipoMaterial, configuracion.siActivarInformacion, siDGT, toolIcon, configuracion.positionToolBoard, - configuracion.directorIcon) = liT + configuracion.directorIcon) = liB configuracion.opacityToolBoard = 10 if toolIcon else 1 configuracion.rapidezMovPiezas = drap[rapidezMovPiezas] if configuracion.siDGT != siDGT: diff --git a/Code/QT/PantallaDailyTest.py b/Code/QT/PantallaDailyTest.py index 5349c87..9fc0a17 100644 --- a/Code/QT/PantallaDailyTest.py +++ b/Code/QT/PantallaDailyTest.py @@ -62,7 +62,7 @@ def __init__(self, procesador): def leeParametros(self): param = Util.DicSQL(self.configuracion.ficheroDailyTest, tabla="parametros") - motor = param.get("MOTOR", "stockfish") + motor = param.get("MOTOR", "mcbrain") segundos = param.get("SEGUNDOS", 7) pruebas = param.get("PRUEBAS", 5) fns = param.get("FNS", "") @@ -216,7 +216,7 @@ def __init__(self, owner, liFens, motor, segundos, fns): if motor.startswith("*"): motor = motor[1:] - confMotor = self.configuracion.buscaTutor(motor, "stockfish") + confMotor = self.configuracion.buscaTutor(motor, "mcbrain") self.xtutor = self.procesador.creaGestorMotor(confMotor, segundos * 1000, None) self.xtutor.maximizaMultiPV() diff --git a/Code/QT/WBDatabaseFEN.py b/Code/QT/PantallaDatabaseFEN.py similarity index 100% rename from Code/QT/WBDatabaseFEN.py rename to Code/QT/PantallaDatabaseFEN.py diff --git a/Code/QT/PantallaEverest.py b/Code/QT/PantallaEverest.py index de5f0c8..75f14aa 100644 --- a/Code/QT/PantallaEverest.py +++ b/Code/QT/PantallaEverest.py @@ -1,7 +1,7 @@ import os.path import random -import LCEngine +import LCEngineV1 as LCEngine from PyQt4 import QtSvg, QtCore from Code import Everest diff --git a/Code/QT/PantallaGM.py b/Code/QT/PantallaGM.py index 2a61bd7..533ca73 100644 --- a/Code/QT/PantallaGM.py +++ b/Code/QT/PantallaGM.py @@ -192,7 +192,10 @@ def __init__(self, procesador, siWoman): self.recuperarVideo(anchoDefecto=450) def cambiadoDepth(self, num): - self.edJtiempo.ponFloat(0.0 if num > 0 else 3.0) + tiempo = self.edJtiempo.textoFloat() + if int(tiempo)*10 == 0: + tiempo = 3.0 + self.edJtiempo.ponFloat(0.0 if num > 0 else tiempo) self.edJtiempo.setEnabled(num == 0) def closeEvent(self, event): @@ -606,7 +609,7 @@ def importarGM(ownerGM, siWoman): # Primero nos tenemos que traer la lista de la web fichz = "_listaGM.zip" ficht = "_listaGM.txt" - fichtg = "gm/listaGM.txt" + fichtg = "GM/listaGM.txt" if siWoman: fichtg = "w" + fichtg try: @@ -647,7 +650,7 @@ def importarGM(ownerGM, siWoman): linea = linea.strip() if linea: gm, nombre, ctam, cpart = linea.split(VarGen.XSEP) - fichero = "gm/%s.xgm" % gm + fichero = "GM/%s.xgm" % gm if siWoman: fichero = "w" + fichero if Util.tamFichero(fichero) != int(ctam): # si no existe tam = -1 @@ -673,7 +676,7 @@ def importarGM(ownerGM, siWoman): zfobj = zipfile.ZipFile(fzip) for name in zfobj.namelist(): - fichero = "gm/%s" % name + fichero = "GM/%s" % name if siWoman: fichero = "w" + fichero outfile = open(fichero, 'wb') diff --git a/Code/QT/PantallaHorses.py b/Code/QT/PantallaHorses.py index a6adbe8..24d64db 100644 --- a/Code/QT/PantallaHorses.py +++ b/Code/QT/PantallaHorses.py @@ -3,7 +3,7 @@ import random import time -import LCEngine +import LCEngineV1 as LCEngine from Code import ControlPosicion from Code.QT import Colocacion diff --git a/Code/QT/PantallaJuicio.py b/Code/QT/PantallaJuicio.py index 74b0382..025c74d 100644 --- a/Code/QT/PantallaJuicio.py +++ b/Code/QT/PantallaJuicio.py @@ -180,7 +180,8 @@ def gridColorFondo(self, grid, fila, oColumna): return None def gridCambiadoRegistro(self, grid, fila, columna): - self.partida = Partida.Partida(self.posicion).leerPV(self.listaRM[fila].rm.pv) + self.partida = Partida.Partida(self.posicion) + self.partida.leerPV(self.listaRM[fila].rm.pv) self.maxMoves = self.partida.numJugadas() self.mueve(siInicio=True) diff --git a/Code/QT/PantallaManualSave.py b/Code/QT/PantallaManualSave.py index 0e308b6..7165a7a 100644 --- a/Code/QT/PantallaManualSave.py +++ b/Code/QT/PantallaManualSave.py @@ -193,7 +193,7 @@ def inicializa(self): self.sb_number.ponValor(dic_vars.get("NUMBER",0)) - self.cb_engine.ponValor(dic_vars.get("ENGINE", "stockfish")) + self.cb_engine.ponValor(dic_vars.get("ENGINE", "mcbrain")) self.sb_multipv.ponValor(dic_vars.get("MULTIPV", 1)) diff --git a/Code/QT/PantallaMotores.py b/Code/QT/PantallaMotores.py index 07b95a6..8eacbdf 100644 --- a/Code/QT/PantallaMotores.py +++ b/Code/QT/PantallaMotores.py @@ -297,7 +297,7 @@ def __init__(self, wParent, listaMotores, motorExterno, siTorneo=False): # # Comprobamos que todos esten accesibles self.listaLibros.comprueba() li = [(x.nombre, x.path) for x in self.listaLibros.lista] - li.insert(0, ("* " + _("Engine book"), "-")) + li.insert(0, ("* " + _("None"), "-")) li.insert(0, ("* " + _("Default"), "*")) self.cbBooks = Controles.CB(self, li, motorExterno.book()) btNuevoBook = Controles.PB(self, "", self.nuevoBook, plano=False).ponIcono(Iconos.Nuevo(), tamIcon=16) diff --git a/Code/QT/PantallaTabDirVisual.py b/Code/QT/PantallaTabDirVisual.py index 8d930eb..c080673 100644 --- a/Code/QT/PantallaTabDirVisual.py +++ b/Code/QT/PantallaTabDirVisual.py @@ -44,19 +44,21 @@ def __init__(self, owner, tablero): self.guion = TabVisual.Guion(tablero, self) # Guion - liAcciones = [(_("Close"), Iconos.MainMenu(), self.terminar), - (_("Cancel"), Iconos.Cancelar(), self.cancelar), - (_("Save"), Iconos.Grabar(), self.grabar), - (_("New"), Iconos.Nuevo(), self.gnuevo), - (_("Insert"), Iconos.Insertar(), self.ginsertar), - (_("Remove"), Iconos.Borrar(), self.gborrar), None, - (_("Up"), Iconos.Arriba(), self.garriba), - (_("Down"), Iconos.Abajo(), self.gabajo), None, - (_("Mark"), Iconos.Marcar(), self.gmarcar), None, - (_("File"), Iconos.Recuperar(), self.gfile), None - ] + liAcciones = [ + (_("Close"), Iconos.MainMenu(), self.terminar), + (_("Cancel"), Iconos.Cancelar(), self.cancelar), + (_("Save"), Iconos.Grabar(), self.grabar), + (_("New"), Iconos.Nuevo(), self.gnuevo), + (_("Insert"), Iconos.Insertar(), self.ginsertar), + (_("Remove"), Iconos.Borrar(), self.gborrar), None, + (_("Up"), Iconos.Arriba(), self.garriba), + (_("Down"), Iconos.Abajo(), self.gabajo), None, + (_("Mark"), Iconos.Marcar(), self.gmarcar), None, + (_("File"), Iconos.Recuperar(), self.gfile), None + ] self.tb = Controles.TBrutina(self, liAcciones, siTexto=False, tamIcon=24) self.tb.setAccionVisible(self.grabar, False) + oColumnas = Columnas.ListaColumnas() oColumnas.nueva("NUMERO", _("N."), 20, siCentrado=True) oColumnas.nueva("MARCADO", "", 20, siCentrado=True, siChecked=True) @@ -74,9 +76,9 @@ def __init__(self, owner, tablero): self.selectBanda = PantallaTab.SelectBanda(self) lyG = Colocacion.V().control(self.g_guion).control(self.chbSaveWhenFinished) - lySG = Colocacion.H().control(self.selectBanda).otro(lyG).relleno(1) layout = Colocacion.V().control(self.tb).otro(lySG).margen(3) + self.setLayout(layout) self.recuperarVideo() @@ -247,11 +249,11 @@ def creaTarea(self, tp, xid, a1h8, fila): if tarea is None: return None, None tarea.registro((tp, xid, a1h8)) + self.g_guion.goto(fila, 0) self.ponMarcado(fila, True) - self.refresh_guion() return tarea, fila def editaNombre(self, nombre): @@ -637,22 +639,6 @@ def editarBanda(self, cid): if len(self.guion): self.ponSiGrabar() - def cierraRecursos(self): - if self.guion is not None: - self.guion.cierraPizarra() - self.dbConfig["SELECTBANDA"] = self.selectBanda.guardar() - self.dbConfig["SELECTBANDANUM"] = self.selectBanda.numSeleccionada() - self.dbConfig["SAVEWHENFINISHED"] = self.chbSaveWhenFinished.valor() - self.dbConfig.close() - self.dbFlechas.close() - self.dbMarcos.close() - self.dbSVGs.close() - self.dbMarkers.close() - - self.guardarVideo() - self.guion.restoreTablero() - self.guion = None - def test_siGrabar(self): if self.siGrabar: if self.chbSaveWhenFinished.valor(): @@ -743,6 +729,22 @@ def leeRecursos(self): self.dbSVGs = Util.DicSQL(fdb, tabla="SVGs") self.dbMarkers = Util.DicSQL(fdb, tabla="Markers") + def cierraRecursos(self): + if self.guion is not None: + self.guion.cierraPizarra() + self.dbConfig["SELECTBANDA"] = self.selectBanda.guardar() + self.dbConfig["SELECTBANDANUM"] = self.selectBanda.numSeleccionada() + self.dbConfig["SAVEWHENFINISHED"] = self.chbSaveWhenFinished.valor() + self.dbConfig.close() + self.dbFlechas.close() + self.dbMarcos.close() + self.dbSVGs.close() + self.dbMarkers.close() + + self.guardarVideo() + self.guion.restoreTablero() + self.guion = None + def actualizaBandas(self): self.selectBanda.iniActualizacion() @@ -855,7 +857,7 @@ def tableroRemove(self, itemSC): self.gborrar() -class DirVisual(): +class DirVisual: def __init__(self, tablero): self.tablero = tablero self.ultTareaSelect = None @@ -905,72 +907,50 @@ def keyPressEvent(self, event): return False def mousePressEvent(self, event): + siRight = event.button() == QtCore.Qt.RightButton p = event.pos() a1h8 = self.punto2a1h8(p) - if event.button() == QtCore.Qt.LeftButton: - m = int(event.modifiers()) - siCtrl = (m & QtCore.Qt.ControlModifier) > 0 - if siCtrl: - li_tareas = self.guion.tareasPosicion(p) - if li_tareas: - pos_guion, tarea = li_tareas[0] - self.w.g_guion.goto(pos_guion, 0) - self.w.gborrar([pos_guion,]) - return - a1h8 = self.punto2a1h8(p) - pz_borrar = self.tablero.dameNomPiezaEn(a1h8) + m = int(event.modifiers()) + if siRight and (m & QtCore.Qt.ControlModifier) > 0: + self.terminar() + return True + + li_tareas = self.guion.tareasPosicion(p) + + if siRight: + pz_borrar = self.tablero.dameNomPiezaEn(a1h8) + menu = Controles.Menu(self.tablero) + dicPieces = TrListas.dicNomPiezas() + icoPiece = self.tablero.piezas.icono + + if pz_borrar or len(li_tareas): + mrem = menu.submenu(_("Remove"), Iconos.Delete()) if pz_borrar: + rotulo = dicPieces[pz_borrar.upper()] + mrem.opcion(("rem_pz", None), rotulo, icoPiece(pz_borrar)) + mrem.separador() + for pos_guion, tarea in li_tareas: + rotulo = "%s - %s - %s" % (tarea.txt_tipo(), tarea.nombre(), tarea.info()) + mrem.opcion(("rem_gr", pos_guion), rotulo, Iconos.Delete()) + mrem.separador() + menu.separador() + + for pz in "KQRBNPkqrbnp": + if pz != pz_borrar: + if pz == "k": + menu.separador() + menu.opcion(("create", pz), dicPieces[pz.upper()], icoPiece(pz)) + resp = menu.lanza() + if resp is not None: + orden, arg = resp + if orden == "rem_gr": + self.w.g_guion.goto(arg, 0) + self.w.gborrar() + elif orden == "rem_pz": self.w.creaTarea("B", pz_borrar, a1h8, -1) - return - - elif event.button() == QtCore.Qt.RightButton: - m = int(event.modifiers()) - siCtrl = (m & QtCore.Qt.ControlModifier) > 0 - li_tareas = self.guion.tareasPosicion(p) - if siCtrl and len(li_tareas) > 0: - pos_guion, tarea = li_tareas[0] - self.w.gborrar([pos_guion,]) - return - - siAlt = (m & QtCore.Qt.AltModifier) > 0 - - if siAlt: - pz_borrar = self.tablero.dameNomPiezaEn(a1h8) - menu = Controles.Menu(self.tablero) - dicPieces = TrListas.dicNomPiezas() - icoPiece = self.tablero.piezas.icono - - if pz_borrar or len(li_tareas): - mrem = menu.submenu(_("Remove"), Iconos.Delete()) - if pz_borrar: - rotulo = dicPieces[pz_borrar.upper()] - mrem.opcion(("rem_pz", None), rotulo, icoPiece(pz_borrar)) - mrem.separador() - for pos_guion, tarea in li_tareas: - rotulo = "%s - %s - %s" % (tarea.txt_tipo(), tarea.nombre(), tarea.info()) - mrem.opcion(("rem_gr", pos_guion), rotulo, Iconos.Delete()) - mrem.separador() - menu.separador() - - for pz in "KQRBNPkqrbnp": - if pz != pz_borrar: - if pz == "k": - menu.separador() - menu.opcion(("create", pz), dicPieces[pz.upper()], icoPiece(pz)) - resp = menu.lanza() - if resp is not None: - orden, arg = resp - if orden == "rem_gr": - self.w.g_guion.goto(arg, 0) - self.w.gborrar() - elif orden == "rem_pz": - self.w.creaTarea("B", pz_borrar, a1h8, -1) - - elif orden == "create": - self.w.creaTarea("C", arg, a1h8, -1) - else: - self.terminar() + elif orden == "create": + self.w.creaTarea("C", arg, a1h8, -1) return True if self.director: @@ -1059,5 +1039,4 @@ def mouseReleaseEvent(self, event): def terminar(self): if self.w: self.w.terminar() - self.w = None - + self.w = None \ No newline at end of file diff --git a/Code/QT/PantallaTorneos.py b/Code/QT/PantallaTorneos.py index 17a8bc1..01562e3 100644 --- a/Code/QT/PantallaTorneos.py +++ b/Code/QT/PantallaTorneos.py @@ -132,7 +132,7 @@ def __init__(self, wParent, torneo): titulo = _("Competition") icono = Iconos.Torneos() - extparam = "untorneo" + extparam = "untorneo_v1" QTVarios.WDialogo.__init__(self, wParent, titulo, icono, extparam) self.configuracion = VarGen.configuracion @@ -175,7 +175,7 @@ def __init__(self, wParent, torneo): # Comprobamos que todos esten accesibles self.listaLibros.comprueba() li = [(x.nombre, x.path) for x in self.listaLibros.lista] - li.insert(0, ("* " + _("Default"), "")) + li.insert(0, ("* " + _("None"), "-")) self.cbBooks = Controles.CB(self, li, torneo.book()) btNuevoBook = Controles.PB(self, "", self.nuevoBook, plano=False).ponIcono(Iconos.Nuevo(), tamIcon=16) lyBook = Colocacion.H().control(self.cbBooks).control(btNuevoBook).relleno() @@ -291,8 +291,8 @@ def __init__(self, wParent, torneo): oColumnas.nueva("NUMERO", _("N."), 35, siCentrado=True) oColumnas.nueva("MOTOR", _("Engine"), 190, siCentrado=True) oColumnas.nueva("GANADOS", _("Wins"), 120, siCentrado=True) - oColumnas.nueva("PERDIDOS", _("Lost"), 120, siCentrado=True) oColumnas.nueva("TABLAS", _("Draw"), 120, siCentrado=True) + oColumnas.nueva("PERDIDOS", _("Lost"), 120, siCentrado=True) oColumnas.nueva("PUNTOS", _("Points"), 120, siCentrado=True) self.gridResult = Grid.Grid(self, oColumnas, siSelecFilas=True, xid="R") self.registrarGrid(self.gridResult) @@ -402,6 +402,11 @@ def gridDatoEnginesValores(self, fila, columna): def borraResult(self): self.liResult = None + def resultLabel(self, lirs): + w, b = lirs + t = w + b + return "0" if t == 0 else "%d (%s:%d - %s:%d)" % (t, _("White"), w, _("Black"), b) + def gridDatoResult(self, fila, columna): if self.liResult is None: self.liResult = self.torneo.rehacerResult() @@ -410,21 +415,15 @@ def gridDatoResult(self, fila, columna): return str(fila + 1) elif columna == "MOTOR": return rs["EN"].alias - elif columna == "GANADOS": - w, b = rs["WIN"] - t = w + b - return "0" if t == 0 else "%d (%d-%d)" % (t, w, b) - elif columna == "PERDIDOS": - w, b = rs["LOST"] - t = w + b - return "0" if t == 0 else "%d (%d-%d)" % (t, w, b) - elif columna == "TABLAS": - w, b = rs["DRAW"] - t = w + b - return "0" if t == 0 else "%d (%d-%d)" % (t, w, b) elif columna == "PUNTOS": p = rs["PTS"] return "%d.%d" % (p / 10, p % 10) + elif columna == "GANADOS": + return self.resultLabel(rs["WIN"]) + elif columna == "PERDIDOS": + return self.resultLabel(rs["LOST"]) + elif columna == "TABLAS": + return self.resultLabel(rs["DRAW"]) def gridDatoGames(self, fila, columna): gm = self.torneo.liGames()[fila] diff --git a/Code/QT/PantallaVisualiza.py b/Code/QT/PantallaVisualiza.py index 21b8afc..07b8d2c 100644 --- a/Code/QT/PantallaVisualiza.py +++ b/Code/QT/PantallaVisualiza.py @@ -1,7 +1,7 @@ import os.path import time -import LCEngine +import LCEngineV1 as LCEngine from PyQt4 import QtCore from Code import ControlPosicion diff --git a/Code/QT/TabElementos.py b/Code/QT/TabElementos.py index 576b597..0740461 100644 --- a/Code/QT/TabElementos.py +++ b/Code/QT/TabElementos.py @@ -1,3 +1,5 @@ +import base64 + from PyQt4 import QtCore, QtGui from Code.QT import Controles @@ -384,9 +386,8 @@ def __init__(self, escena, bloqueImagen, pixmap=None, rutina = None): self.pixmap = pixmap else: self.pixmap = QtGui.QPixmap() - import base64 - self.pixmap.loadFromData(base64.b64decode(bloqueImagen.pixmap), "PNG") + r = self.pixmap.rect() self.pmRect = QtCore.QRectF(0, 0, r.width(), r.height()) diff --git a/Code/QT/Tablero.py b/Code/QT/Tablero.py index db168b4..da765b1 100644 --- a/Code/QT/Tablero.py +++ b/Code/QT/Tablero.py @@ -664,7 +664,7 @@ def lanzaMenuVisual(self, siIzquierdo=False): menu.separador() if self.siDirector: - menu.opcion("director", _("Director") + " [F1..F10]", Iconos.Director()) + menu.opcion("director", _("Director") + " [%s] " %_("F1-F10 or Ctrl Right button"), Iconos.Director()) menu.separador() if self.siPosibleRotarTablero: @@ -830,6 +830,10 @@ def mousePressEvent(self, event): siDentro = (minimo < x < maximo) and (minimo < y < maximo) if event.button() == QtCore.Qt.RightButton: if siDentro: + if not self.dirvisual: + m = int(event.modifiers()) + if (m & QtCore.Qt.ControlModifier) == 0: + return self.lanzaDirector() # if siDentro and hasattr(self.pantalla, "boardRightMouse") and not self.dirvisual: # m = int(event.modifiers()) @@ -1000,7 +1004,7 @@ def dbVisual_open(self): return self.dbVisual def dbVisual_close(self): - if self.dbVisual: + if self.dbVisual is not None: self.dbVisual.close() self.dbVisual = None @@ -1013,6 +1017,30 @@ def dbVisual_lista(self, fenM2): def dbVisual_save(self, fenM2, lista): self.dbVisual_open()[fenM2] = lista + def saveVisual(self): + alm = self.almSaveVisual = Util.Almacen() + alm.siMenuVisual = self.siMenuVisual + alm.siDirector = self.siDirector + alm.siDirectorIcon = self.siDirectorIcon + alm.dirvisual = self.dirvisual + alm.guion = self.guion + alm.lastFenM2 = self.lastFenM2 + alm.dbVisual = self.dbVisual + alm.nomdbVisual = self.nomdbVisual + alm.dbVisual_showAllways = self.dbVisual_showAllways + + def restoreVisual(self): + alm = self.almSaveVisual + self.siMenuVisual = alm.siMenuVisual + self.siDirector = alm.siDirector + self.siDirectorIcon = alm.siDirectorIcon + self.dirvisual = alm.dirvisual + self.guion = alm.guion + self.lastFenM2 = alm.lastFenM2 + self.dbVisual = alm.dbVisual + self.nomdbVisual = alm.nomdbVisual + self.dbVisual_showAllways = alm.dbVisual_showAllways + def setUltPosicion(self, posicion): self.cierraGuion() self.ultPosicion = posicion diff --git a/Code/QT/WBG_InfoMove.py b/Code/QT/WBG_InfoMove.py index 538f287..4289b7b 100644 --- a/Code/QT/WBG_InfoMove.py +++ b/Code/QT/WBG_InfoMove.py @@ -243,7 +243,7 @@ def colocatePartida(self, pos): pgn += '%d.' % (style_number, numJugada) numJugada += 1 - xp = jg.pgnHTML() if self.siFigurines else jg.pgnSP() + xp = jg.pgnHTML(self.siFigurines) if n == pos: xp = '%s' % (style_select, xp) else: diff --git a/Code/QT/WBG_Summary.py b/Code/QT/WBG_Summary.py index f735277..e0aabcf 100644 --- a/Code/QT/WBG_Summary.py +++ b/Code/QT/WBG_Summary.py @@ -502,7 +502,7 @@ def cambiaInfoMove(self): p = Partida.Partida() p.leerPV(pv) p.siTerminada() - self.aperturasStd.asignaApertura(p) + p.asignaApertura() self.infoMove.modoPartida(p, 9999) self.setFocus() self.grid.setFocus() diff --git a/Code/Torneo.py b/Code/Torneo.py index 86b821c..d1d1480 100644 --- a/Code/Torneo.py +++ b/Code/Torneo.py @@ -16,7 +16,7 @@ def __init__(self): self._depth = 0 self._time = 0 - self._book = "*" # "*":por defecto "-":el propio del motor otro:path to libro polyglot + self._book = "-" # "*":por defecto "-":el propio del motor otro:path to libro polyglot self._bookRR = "ap" def ponHuella(self, liEngines): diff --git a/Code/TurnOnLights.py b/Code/TurnOnLights.py index 48e8ed5..0c1d954 100644 --- a/Code/TurnOnLights.py +++ b/Code/TurnOnLights.py @@ -3,6 +3,7 @@ import random import datetime +from Code import ControlPosicion from Code import PGNreader from Code import Util from Code import VarGen @@ -58,6 +59,17 @@ def penaltyHelp(self, think_mode): else: return 10.0 + def factorDistancia(self): + nummoves = 0 + distancia = 0.0 + for line in self.lines: + d, n = line.distancia_moves() + nummoves += n + distancia += d + base_dist = ControlPosicion.distancia("a1", "a4") + + return (distancia/nummoves)/base_dist + def add_line(self, line): self.lines.append(line) @@ -136,6 +148,10 @@ def get_move(self, num_move): def total_moves(self): return len(self.limoves) + def distancia_moves(self): + dt = sum( ControlPosicion.distancia(pv[:2], pv[2:4]) for pv in self.limoves ) + return dt, len(self.limoves) + class TOL_level: def __init__(self, lines_per_block, num_level): diff --git a/Code/Tutor.py b/Code/Tutor.py index ac5fdb0..4fb426a 100644 --- a/Code/Tutor.py +++ b/Code/Tutor.py @@ -1,7 +1,7 @@ import codecs import os -import LCEngine +import LCEngineV1 as LCEngine from Code import Analisis from Code import Partida @@ -97,7 +97,8 @@ def elegir(self, siPuntos, liApPosibles=None): pvBloque = "" if pvBloque: - self.partidaRival = Partida.Partida(self.ultPosicion).leerPV(pvBloque) + self.partidaRival = Partida.Partida(self.ultPosicion) + self.partidaRival.leerPV(pvBloque) self.posRival = 0 self.maxRival = len(self.partidaRival.liJugadas) - 1 if self.maxRival >= 0: @@ -165,7 +166,8 @@ def hazListaRM(self, posUsuario): def cambiadoRM(self, pos): self.posRM = pos rm = self.listaRM[pos][0] - self.partidaTutor = Partida.Partida(self.ultPosicion).leerPV(rm.getPV()) + self.partidaTutor = Partida.Partida(self.ultPosicion) + self.partidaTutor.leerPV(rm.getPV()) self.w.ponPuntuacionTutor(rm.texto()) @@ -319,7 +321,8 @@ def ponTablerosGUI(self, tableroTutor, tableroUsuario, tableroRival, tableroAper self.tableroAperturas = tableroAperturas def cambiarApertura(self, numero): - self.partidaAperturas = Partida.Partida(self.ultPosicion).leerPV(self.liApPosibles[numero].a1h8) + self.partidaAperturas = Partida.Partida(self.ultPosicion) + self.partidaAperturas.leerPV(self.liApPosibles[numero].a1h8) self.tableroAperturas.ponPosicion(self.partidaAperturas.jugada(0).posicion) self.maxApertura = len(self.partidaAperturas) self.mueveApertura(siInicio=True) diff --git a/Code/Util.py b/Code/Util.py index 2c7b282..aa219f3 100644 --- a/Code/Util.py +++ b/Code/Util.py @@ -566,6 +566,28 @@ def validNomFichero(nombre): return nombre +def asciiNomFichero(nombre): + nombre = validNomFichero(nombre) + li = [] + for x in nombre: + if not(31 < ord(x) < 127): + li.append("_") + else: + li.append(x) + nombre = "".join(li) + while "__" in nombre: + nombre = nombre.replace("__", "_") + return nombre + + +def datefile(pathfile): + try: + mtime = os.path.getmtime(pathfile) + return datetime.datetime.fromtimestamp(mtime) + except: + return None + + class Timer: def __init__(self, tiempoPendiente): diff --git a/Code/XGestorMotor.py b/Code/XGestorMotor.py index 91bf1ce..e3cd47b 100644 --- a/Code/XGestorMotor.py +++ b/Code/XGestorMotor.py @@ -1,6 +1,6 @@ import os -import LCEngine +import LCEngineV1 as LCEngine from Code import VarGen from Code import XMotor diff --git a/Code/XMotorRespuesta.py b/Code/XMotorRespuesta.py index 9e0b55c..657c7c4 100644 --- a/Code/XMotorRespuesta.py +++ b/Code/XMotorRespuesta.py @@ -624,6 +624,9 @@ def bestmoves(self): break return li + def getdepth0(self): + return self.liMultiPV[0].depth if self.liMultiPV else 0 + def mejorMovDetectaBlunders(self, fdbg, mindifpuntos, maxmate): rm0 = self.liMultiPV[0] if maxmate: @@ -688,7 +691,8 @@ def x(clave): # Miramos todas las propuestas for num, rm in enumerate(self.liMultiPV): - partida = Partida.Partida(cp).leerPV(rm.pv) + partida = Partida.Partida(cp) + partida.leerPV(rm.pv) jg0 = partida.jugada(0) ps0 = partida.iniPosicion psZ = partida.ultPosicion @@ -802,7 +806,8 @@ def x(clave): if dbg: fdbg.write("Result :\n") for num, rm in enumerate(self.liMultiPV): - partida = Partida.Partida(cp).leerPV(rm.pv) + partida = Partida.Partida(cp) + partida.leerPV(rm.pv) pgn = "" si = False diff --git a/Engines/Linux32/mcbrain/.DS_Store b/Engines/Linux32/mcbrain/.DS_Store deleted file mode 100644 index 01c2e2c2b9c0361a271400fb84fe635c61724f75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10244 zcmeHMYitx%6uze|Fw0PSTROCbEv^(Ok6O1tc^T+-TOuuBD=oC8rDb+!S|-fSEHkrP zN~!jr4-CJIMA7(4G>D0RL=qn)`om|U5t=9_#uyWSijSBW|LD2*&bFlm{uq*)%uVK= zJNKM3_uTJ%b9e6@LI}h&S{)$~LWqPHlXMYQwIZ=IG|Jn#gF~#%$d>v|V`Gw3wz_U-%hA-xsnOG8k31))1pcx> zie^ml{M7t3H)$p?LT2hu*+^#nBMZ2aNQ)`|K1G_>jZGZ?a9>iJKXHfEKw3PfOCa+8sTMlkfKQlU|2$3RNXD91iGO|5R7! zNE&TQr#kpUA9Qrx>K$?nt!;47)xGX%?H)E-(y>jm-F6Mnu&tgxKDwu;TC71EM`RJS zrJ2e-q&qIkSw7u8s^h5EkRBg7VyX$-l182b^=Rku?1P8l0Q3s~yj+?qbE66g8cIK>rkiaN$543}ayk7Dax`8j z%Z19GmOZttdj}}ZxcULzR6QfBH>;lR&Q4)h(l#?G3pK?_)l6p4SZ_2<1`W5qIR(=a zJ|jEbhh5w8Fs=BoNpNqOq)_PM;Ia7n%{$hk zx=G#AFe!)e{j)q{(9oSwao%OA(^6CVL=Sx*I2ymhP6-!J7E_zz#iBSZP1PcJPf^X1o|NfCOF_h2D0!d zJO)p|lW+!}h8N%^co|-Si|{VI4AO$d=W6&3TT}G) zm!!P2x2A6x>08>mZqCy8x>zxhvt^Oh>uWb{+ZmtC`HU>zM8xUbqIp6W4Q~t~ z*J-}c)yrEYWHp^PvAkkg`Su-QnHC`VLqgjiH%drvI-hHsno&#GYZ$r{Pw&Xm&&XBs zBQo@FToC6WJ4=w65oBd8Y~!qqLlf+Vhme_UVeI6*JPIo3W(q7w!w8&$(=dh%eHKn#?Qks9wuZ1L zw;=mgfd~)?5C{+m5C{+m5SZf#MD git_sig + # Obtain bench reference from git log + - git log HEAD | grep "\b[Bb]ench[ :]\+[0-9]\{7\}" | head -n 1 | sed "s/[^0-9]*\([0-9]*\).*/\1/g" > git_sig - export benchref=$(cat git_sig) - echo "Reference bench:" $benchref - # verify against reference - - make clean && make ARCH=x86-64 build > /dev/null && ../tests/signature.sh $benchref - - make clean && make ARCH=x86-32 build > /dev/null && ../tests/signature.sh $benchref - # - # perft - # - - make clean && make ARCH=x86-64 build > /dev/null && ../tests/perft.sh # - # reproducible search + # Verify bench number against various builds + - export CXXFLAGS=-Werror + - make clean && make -j2 ARCH=x86-64 optimize=no debug=yes build && ../tests/signature.sh $benchref + - make clean && make -j2 ARCH=x86-32 optimize=no debug=yes build && ../tests/signature.sh $benchref + - make clean && make -j2 ARCH=x86-32 build && ../tests/signature.sh $benchref + - make clean && make -j2 ARCH=x86-64 build && ../tests/signature.sh $benchref # - - make clean && make ARCH=x86-64 build > /dev/null && ../tests/reprosearch.sh + # Check perft and reproducible search + - ../tests/perft.sh + - ../tests/reprosearch.sh # - # valgrind + # Valgrind # - - if [ -x "$(command -v valgrind )" ]; then make clean && make ARCH=x86-64 debug=yes optimize=no build > /dev/null && ../tests/instrumented.sh --valgrind; fi + - export CXXFLAGS=-O1 + - if [ -x "$(command -v valgrind )" ]; then make clean && make -j2 ARCH=x86-64 debug=yes optimize=no build > /dev/null && ../tests/instrumented.sh --valgrind; fi + - if [ -x "$(command -v valgrind )" ]; then ../tests/instrumented.sh --valgrind-thread; fi # - # sanitizer + # Sanitizer # - # use g++-6 as a proxy for having sanitizers, might need revision as they become available for more recent versions of clang/gcc - - if [[ "$COMPILER" == "g++-6" ]]; then make clean && make ARCH=x86-64 sanitize=yes build > /dev/null && ../tests/instrumented.sh --sanitizer; fi + # Use g++-6 as a proxy for having sanitizers, might need revision as they become available for more recent versions of clang/gcc + - if [[ "$COMPILER" == "g++-6" ]]; then make clean && make -j2 ARCH=x86-64 sanitize=undefined optimize=no debug=yes build > /dev/null && ../tests/instrumented.sh --sanitizer-undefined; fi + - if [[ "$COMPILER" == "g++-6" ]]; then make clean && make -j2 ARCH=x86-64 sanitize=thread optimize=no debug=yes build > /dev/null && ../tests/instrumented.sh --sanitizer-thread; fi diff --git a/Engines/Linux32/mcbrain/AUTHORS b/Engines/Linux32/mcbrain/AUTHORS index 3095efc..9b91b93 100644 --- a/Engines/Linux32/mcbrain/AUTHORS +++ b/Engines/Linux32/mcbrain/AUTHORS @@ -1,6 +1,5 @@ # Generated with 'git shortlog -sn | cut -c8-', which sorts by commits, manually ordered the first four authors, merged duplicates -Michael Byrne (McBrain) Tord Romstad Marco Costalba (mcostalba) Joona Kiiski (zamar) @@ -95,4 +94,5 @@ ppigazzini renouve sf-x thaspel +unknown diff --git a/Engines/Linux32/mcbrain/McBrain-9_x32_linux b/Engines/Linux32/mcbrain/McBrain-9_x32_linux new file mode 100644 index 0000000000000000000000000000000000000000..241f2bba066a68b54cbf12ffeb9895271d8d4b6a GIT binary patch literal 325788 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 z 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�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 literal 0 HcmV?d00001 diff --git a/Engines/Linux32/mcbrain/Readme.md b/Engines/Linux32/mcbrain/Readme.md index e3b36cc..46f2609 100644 --- a/Engines/Linux32/mcbrain/Readme.md +++ b/Engines/Linux32/mcbrain/Readme.md @@ -98,9 +98,9 @@ for a quick reference. ### Resource For Understanding the Code Base -* [Chessprogramingwiki](https://chessprogramming.wikispaces.com) has good overall chess engines explanations +* [Chess Programming Wiki](https://chessprogramming.wikispaces.com) has good overall chess engines explanations (techniques used here are well explained like hash maps etc), it was -also recommended by the [support at stockfish.](http://support.stockfishchess.org/discussions/questions/1132-how-to-understand-stockfish-sources) +also recommended by the [support team at stockfish.](http://support.stockfishchess.org/discussions/questions/1132-how-to-understand-stockfish-sources) * [Here](https://chessprogramming.wikispaces.com/Stockfish) you can find a set of features and techniques used by stockfish and each of them is explained at the wiki, however, it's a generic way rather than focusing on stockfish's own implementation, but it will still help you. diff --git a/Engines/Linux32/mcbrain/Top CPU Contributors.txt b/Engines/Linux32/mcbrain/Top CPU Contributors.txt index 0bb2a92..4c2aa47 100644 --- a/Engines/Linux32/mcbrain/Top CPU Contributors.txt +++ b/Engines/Linux32/mcbrain/Top CPU Contributors.txt @@ -1,93 +1,132 @@ -Contributors with >10,000 CPU hours as of November 3, 2016 +Contributors with >10,000 CPU hours as of January 23, 2018 Thank you! -Username CPU Hours Games played -cw 220301 16924200 -glinscott 186639 13936027 -fastgm 184045 14608140 -mibere 165859 13563572 -crunchy 160974 14091929 -spams 143806 10956698 -bking_US 136938 10558137 -dsmith 103332 7622414 -BrunoBanani 100008 7448565 -ctoks 99216 7989224 -JojoM 96528 8138437 -vdbergh 88372 6322455 -drabel 75214 6034715 -velislav 71485 5483953 -sqrt2 70825 5471595 -BRAVONE 66265 5356681 -malala 57618 4480635 -psk 54292 4337164 -leszek 52415 4254611 -marrco 51573 4132787 -Freja 48348 3773248 -Thanar 47723 4062940 -Fisherman 46361 3865994 -renouve 46003 3544864 -CSU_Dynasty 45136 4096148 -rap 44619 3219490 -dv8silencer 44175 3961325 -tinker 43975 3261777 -tvijlbrief 42291 2965762 -sunu 41289 3172937 -mhunt 38278 2697512 -Antihistamine 37735 2795761 -finfish 36001 2734928 -brabos 32630 2566008 -jromang 32044 2166097 -robnjr 31781 2726352 -CoffeeOne 29940 2597953 -sterni1971 28924 2737221 -EthanOConnor 28429 2143255 -Pyafue 27266 1986098 -jkiiski 27009 1925255 -biffhero 26557 2033420 -nssy 25231 2037166 -mgrabiak 24000 1974653 -slakovv 23548 2031279 -Sharaf_DG 22175 1790697 -homyur 21415 1705644 -team-oh 20347 1653708 -Zirie 20204 1493227 -nabildanial 19538 1586321 -nesoneg 19306 1493435 -cuistot 19105 1387031 -Patrick_G 19027 1406466 -mhoram 18304 1396701 -rkl 17566 1409460 -ville 17541 1540130 -oryx 17480 1578240 -rstoesser 17264 1335177 -xor12 16786 1492708 -jundery 16786 1115855 -bigpen0r 16700 1287118 -iisiraider 16366 1089410 -davar 16266 1328093 -vdv 16072 1629971 -VoyagerOne 16049 1485459 -Bobo1239 15837 1550883 -DragonLord 15791 1251348 -purplefishies 15602 1106850 -Isidor 14598 1317485 -speedycpu 14215 874201 -OssumOpossum 14078 1029265 -enedene 13378 935618 -bpfliegel 12944 886523 -AdrianSA 12921 924980 -JanErik 12782 1106788 -dju 12600 901552 -jpulman 12015 854815 -ttruscott 11929 976348 -fatmurphy 11726 901134 -ElbertoOne 11641 1082697 -j3corre 11638 973654 -chris 11450 1228430 -pb00067 11248 1021031 -modolief 11185 926456 -Dark_wizzie 10933 1017910 -SC 10637 925516 -Thomas A. 10485 736094 -mschmidt 10354 818594 -infinity 10020 746397 +Username CPU Hours Games played +mibere 518300 41835669 +crunchy 375564 29121434 +cw 371664 28748719 +fastgm 299773 20765374 +JojoM 220590 15299913 +glinscott 204517 13932027 +bking_US 187568 12233168 +ctoks 169342 13475495 +spams 149531 10940322 +Thanar 137015 11714855 +velislav 127305 10047749 +vdbergh 121741 9056874 +malala 117291 8126488 +vdv 117218 8289983 +leszek 114825 8331897 +dsmith 114010 7622414 +CSU_Dynasty 113516 9582758 +sqrt2 112407 8782694 +marrco 111143 8222921 +drabel 108168 9061580 +BrunoBanani 104938 7448565 +Data 94621 8433010 +CoffeeOne 90394 3964243 +BRAVONE 80811 5341681 +psk 77195 6156031 +brabos 70284 5685893 +Fisherman 66650 5572406 +nssy 64587 5369140 +Pking_cda 64499 5704075 +sterni1971 63488 5070004 +mgrabiak 62385 5420812 +tvijlbrief 58957 4154234 +jromang 58854 4704502 +dv8silencer 57421 3961325 +sunu 56620 4609155 +tinker 56039 4204914 +biffhero 55743 4810039 +teddybaer 52982 4740444 +bcross 50548 5071599 +renouve 50318 3544864 +Freja 50296 3805120 +robnjr 47504 4131742 +eva42 46542 4044694 +davar 46538 4030604 +finfish 46244 3481661 +rap 46201 3219490 +ttruscott 45037 3645430 +solarlight 44155 4074841 +TueRens 41372 3891510 +ElbertoOne 41321 3920894 +Antihistamine 39218 2792761 +mhunt 38991 2697512 +bigpen0r 37820 3149955 +homyur 35569 3009637 +VoyagerOne 35137 3302650 +mhoram 34770 2684128 +racerschmacer 33022 3231055 +speedycpu 32043 2531964 +EthanOConnor 31638 2143255 +oryx 29574 2767730 +Pyafue 28885 1986098 +jkiiski 28014 1923255 +Garf 27579 2770144 +slakovv 27017 2031279 +Bobo1239 27000 2488707 +pb00067 26817 2306694 +robal 26337 2316795 +hyperbolic.tom 26248 2200777 +rkl 24898 2236013 +SC 23988 2126825 +nabildanial 23524 1586321 +achambord 23495 1942546 +Sharaf_DG 22975 1790697 +chriswk 22876 1947731 +anst 22568 2013953 +Patrick_G 22435 1682293 +cuistot 22201 1383031 +gri 21901 1820968 +Prcuvu 21182 1890546 +Zirie 21171 1493227 +JanErik 20596 1791991 +Isidor 20560 1730290 +xor12 20535 1819280 +team-oh 20364 1653708 +nesoneg 20264 1493435 +rstoesser 19802 1335177 +grandphish2 19402 1834196 +sg4032 18427 1671742 +dew 18263 1423326 +ianh2105 18133 1668562 +MazeOfGalious 18022 1644593 +ville 17900 1539130 +j3corre 17607 975954 +eudhan 17502 1424648 +iisiraider 17175 1118788 +jundery 17172 1115855 +SFTUser 16635 1363975 +purplefishies 16621 1106850 +DragonLord 16599 1252348 +chris 15274 1575333 +xoto 14900 1486261 +dju 14861 901552 +dex 14647 1228763 +nordlandia 14551 1369718 +ronaldjerum 14361 1210607 +OssumOpossum 14149 1029265 +IgorLeMasson 13844 1228391 +enedene 13762 935618 +ako027ako 13442 1250249 +AdrianSA 13324 924980 +bpfliegel 13318 886523 +ncfish1 13056 932344 +wei 12863 1369596 +jpulman 12776 854815 +horst.prack 12436 1151505 +joster 12424 986622 +cisco2015 12265 1205019 +fatmurphy 12015 901134 +modolief 11228 926456 +Dark_wizzie 11214 1017910 +mschmidt 10973 818594 +eastorwest 10970 1117836 +infinity 10762 746397 +SapphireBrand 10692 1024604 +Thomas A. 10553 736094 +pgontarz 10294 878746 +Andrew Grant 10195 922933 +stocky 10083 718114 diff --git a/Engines/Linux32/mcbrain/appveyor.yml b/Engines/Linux32/mcbrain/appveyor.yml index a46a0f3..c711dd6 100644 --- a/Engines/Linux32/mcbrain/appveyor.yml +++ b/Engines/Linux32/mcbrain/appveyor.yml @@ -1,5 +1,5 @@ version: 1.0.{build} -clone_depth: 5 +clone_depth: 50 branches: only: @@ -13,10 +13,11 @@ os: Visual Studio 2015 platform: - x86 - x64 - - Any CPU # build Configuration, i.e. Debug, Release, etc. -configuration: Debug +configuration: + - Debug + - Release matrix: # The build fail immediately once one of the job fails @@ -28,18 +29,43 @@ init: - msbuild /version before_build: - - cd src - - echo project (Stockfish) >> CMakeLists.txt - - echo add_executable(stockfish benchmark.cpp bitbase.cpp bitboard.cpp endgame.cpp evaluate.cpp >> CMakeLists.txt - - echo main.cpp material.cpp misc.cpp movegen.cpp movepick.cpp pawns.cpp position.cpp psqt.cpp >> CMakeLists.txt - - echo search.cpp thread.cpp timeman.cpp tt.cpp uci.cpp ucioption.cpp syzygy/tbprobe.cpp) >> CMakeLists.txt - - echo set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/src) >> CMakeLists.txt -# - echo target_compile_options(stockfish PUBLIC "/Ox") >> CMakeLists.txt + - ps: | + # Get sources + $src = get-childitem -Path *.cpp -Recurse | select -ExpandProperty FullName + $src = $src -join ' ' + $src = $src.Replace("\", "/") + + # Build CMakeLists.txt + $t = 'cmake_minimum_required(VERSION 3.8)', + 'project(Stockfish)', + 'set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/src)', + 'set(source_files', $src, ')', + 'add_executable(stockfish ${source_files})' + + # Write CMakeLists.txt withouth BOM + $MyPath = (Get-Item -Path "." -Verbose).FullName + '\CMakeLists.txt' + $Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $False + [System.IO.File]::WriteAllLines($MyPath, $t, $Utf8NoBomEncoding) + + # Obtain bench reference from git log + $b = git log HEAD | sls "\b[Bb]ench[ :]+[0-9]{7}" | select -first 1 + $bench = $b -match '\D+(\d+)' | % { $matches[1] } + Write-Host "Reference bench:" $bench + $g = "Visual Studio 14 2015" + If (${env:PLATFORM} -eq 'x64') { $g = $g + ' Win64' } + cmake -G "${g}" . + Write-Host "Generated files for: " $g build_script: - - cmake -G "Visual Studio 14 2015 Win64" . - - cmake --build . + - cmake --build . --config %CONFIGURATION% -- /verbosity:minimal before_test: - - cd Debug - - stockfish.exe bench > null + - cd src/%CONFIGURATION% + - ps: | + # Verify bench number + ./stockfish bench 2> out.txt 1> null + $s = (gc "./out.txt" | out-string) + $r = ($s -match 'Nodes searched \D+(\d+)' | % { $matches[1] }) + Write-Host "Engine bench:" $r + Write-Host "Reference bench:" $bench + If ($r -ne $bench) { exit 1 } diff --git a/Engines/Linux32/mcbrain/src/Makefile b/Engines/Linux32/mcbrain/src/Makefile index afd2f7c..6e66fbb 100644 --- a/Engines/Linux32/mcbrain/src/Makefile +++ b/Engines/Linux32/mcbrain/src/Makefile @@ -1,22 +1,24 @@ -# Stockfish, a UCI chess playing engine derived from Glaurung 2.1 -# Copyright (C) 2004-2008 Tord Romstad (Glaurung author) -# Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad -# Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad -# -# Stockfish is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Stockfish is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - - +### ========================================================================== +### Copyright Notice and License Information +### ========================================================================== +# McBrain, a UCI chess playing engine derived from Stockfish and Glaurung 2.1 +# Copyright (C) 2004-2008 Tord Romstad (Glaurung Author) +# Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) +# Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) +# Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + +# McBrain is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# McBrain is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . ### ========================================================================== ### Section 1. General Configuration ### ========================================================================== @@ -28,8 +30,8 @@ ifeq ($(KERNEL),Linux) endif ### Executable name -EXE = SF-McBrain-27 -# bench = 5127083 +EXE = McBrain-9 +### bench nodes -> Nodes searched : 6871658 ### Installation dir definitions PREFIX = /usr/local @@ -42,7 +44,7 @@ PGOBENCH2 = ./$(EXE) bench 16 2 10 ### Object files OBJS = benchmark.o bitbase.o bitboard.o endgame.o evaluate.o main.o \ material.o misc.o movegen.o movepick.o pawns.o position.o psqt.o \ - search.o thread.o timeman.o tt.o uci.o ucioption.o tbprobe.o tzbook.o + search.o thread.o timeman.o tt.o uci.o ucioption.o polybook.o tbprobe.o ### ========================================================================== ### Section 2. High-level Configuration @@ -143,7 +145,7 @@ endif ### 3.1 Selecting compiler (default = gcc) -CXXFLAGS += -Wall -Wcast-qual -fno-exceptions -fno-rtti -std=c++11 $(EXTRACXXFLAGS) +CXXFLAGS += -Wall -Wcast-qual -fno-exceptions -std=c++11 $(EXTRACXXFLAGS) DEPENDFLAGS += -std=c++11 LDFLAGS += $(EXTRALDFLAGS) @@ -154,7 +156,7 @@ endif ifeq ($(COMP),gcc) comp=gcc CXX=g++ - CXXFLAGS += -pedantic -Wextra -Wshadow -static-libstdc++ + CXXFLAGS += -pedantic -Wextra -Wshadow ifeq ($(ARCH),armv7) ifeq ($(OS),Android) @@ -207,7 +209,9 @@ ifeq ($(COMP),clang) CXX=clang++ CXXFLAGS += -pedantic -Wextra -Wshadow ifneq ($(KERNEL),Darwin) +ifneq ($(KERNEL),OpenBSD) LDFLAGS += -latomic +endif endif ifeq ($(ARCH),armv7) @@ -276,7 +280,7 @@ endif ### 3.3 Optimization ifeq ($(optimize),yes) - CXXFLAGS += -O3 + CXXFLAGS += -O3 -mtune=native ifeq ($(comp),gcc) @@ -302,8 +306,6 @@ ifeq ($(optimize),yes) ifeq ($(comp),clang) ifeq ($(KERNEL),Darwin) - CXXFLAGS += -flto - LDFLAGS += $(CXXFLAGS) ifeq ($(arch),i386) CXXFLAGS += -mdynamic-no-pic endif @@ -349,24 +351,20 @@ endif ### 3.8 Link Time Optimization, it works since gcc 4.5 but not on mingw under Windows. ### This is a mix of compile and link time options because the lto link phase ### needs access to the optimization flags. -ifeq ($(comp),gcc) - ifeq ($(optimize),yes) - ifeq ($(debug),no) - CXXFLAGS += -flto -fno-rtti +ifeq ($(optimize),yes) +ifeq ($(debug), no) + ifeq ($(comp),$(filter $(comp),gcc clang)) + CXXFLAGS += -flto LDFLAGS += $(CXXFLAGS) endif - endif -endif -ifeq ($(comp),mingw) + ifeq ($(comp),mingw) ifeq ($(KERNEL),Linux) - ifeq ($(optimize),yes) - ifeq ($(debug),no) CXXFLAGS += -flto LDFLAGS += $(CXXFLAGS) endif endif - endif +endif endif ### 3.9 Android 5 can only run position independent executables. Note that this @@ -434,7 +432,6 @@ help: build: config-sanity $(MAKE) ARCH=$(ARCH) COMP=$(COMP) all strip $(EXE) - cp $(EXE) /Users/michaelbyrne/cluster.mfb/$(EXE) profile-build: config-sanity objclean profileclean @echo "" @@ -454,7 +451,12 @@ profile-build: config-sanity objclean profileclean @echo "Step 5/5. Deleting profile data ..." $(MAKE) ARCH=$(ARCH) COMP=$(COMP) profileclean strip $(EXE) - cp $(EXE) /Users/michaelbyrne/cluster.mfb/$(EXE) + +cprom: + make -j profile-build ARCH=x86-64-modern COMP=clang + +cprob: + make -j profile-build ARCH=x86-64-bmi2 COMP=clang strip: strip $(EXE) diff --git a/Engines/Linux32/mcbrain/src/benchmark.cpp b/Engines/Linux32/mcbrain/src/benchmark.cpp index 75c7d1a..807f9de 100644 --- a/Engines/Linux32/mcbrain/src/benchmark.cpp +++ b/Engines/Linux32/mcbrain/src/benchmark.cpp @@ -1,22 +1,23 @@ /* - Stockfish, a UCI chess playing engine derived from Glaurung 2.1 - Copyright (C) 2004-2008 Tord Romstad (Glaurung author) - Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2017 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad - - Stockfish is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Stockfish is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ + McBrain, a UCI chess playing engine derived from Stockfish and Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) + Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + + McBrain is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + McBrain is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ #include #include diff --git a/Engines/Linux32/mcbrain/src/bitbase.cpp b/Engines/Linux32/mcbrain/src/bitbase.cpp index d206210..a651e27 100644 --- a/Engines/Linux32/mcbrain/src/bitbase.cpp +++ b/Engines/Linux32/mcbrain/src/bitbase.cpp @@ -1,22 +1,23 @@ /* - Stockfish, a UCI chess playing engine derived from Glaurung 2.1 - Copyright (C) 2004-2008 Tord Romstad (Glaurung author) - Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2017 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad - - Stockfish is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Stockfish is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ + McBrain, a UCI chess playing engine derived from Stockfish and Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) + Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + + McBrain is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + McBrain is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ #include #include @@ -111,7 +112,7 @@ namespace { ksq[WHITE] = Square((idx >> 0) & 0x3F); ksq[BLACK] = Square((idx >> 6) & 0x3F); us = Color ((idx >> 12) & 0x01); - psq = make_square(File((idx >> 13) & 0x3), RANK_7 - Rank((idx >> 15) & 0x7)); + psq = make_square(File((idx >> 13) & 0x3), Rank(RANK_7 - ((idx >> 15) & 0x7))); // Check if two pieces are on the same square or if a king can be captured if ( distance(ksq[WHITE], ksq[BLACK]) <= 1 diff --git a/Engines/Linux32/mcbrain/src/bitboard.cpp b/Engines/Linux32/mcbrain/src/bitboard.cpp index e3c9140..9dd637b 100644 --- a/Engines/Linux32/mcbrain/src/bitboard.cpp +++ b/Engines/Linux32/mcbrain/src/bitboard.cpp @@ -1,22 +1,23 @@ /* - Stockfish, a UCI chess playing engine derived from Glaurung 2.1 - Copyright (C) 2004-2008 Tord Romstad (Glaurung author) - Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2017 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad - - Stockfish is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Stockfish is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ + McBrain, a UCI chess playing engine derived from Stockfish and Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) + Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + + McBrain is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + McBrain is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ #include @@ -54,7 +55,7 @@ namespace { Bitboard RookTable[0x19000]; // To store rook attacks Bitboard BishopTable[0x1480]; // To store bishop attacks - void init_magics(Bitboard table[], Magic magics[], Square deltas[]); + void init_magics(Bitboard table[], Magic magics[], Direction directions[]); // bsf_index() returns the index into BSFTable[] to look up the bitscan. Uses // Matt Taylor's folding for 32 bit case, extended to 64 bit by Kim Walisch. @@ -188,7 +189,7 @@ void Bitboards::init() { for (Square s = SQ_A1; s <= SQ_H8; ++s) for (int i = 0; steps[pt][i]; ++i) { - Square to = s + Square(c == WHITE ? steps[pt][i] : -steps[pt][i]); + Square to = s + Direction(c == WHITE ? steps[pt][i] : -steps[pt][i]); if (is_ok(to) && distance(s, to) < 3) { @@ -199,11 +200,11 @@ void Bitboards::init() { } } - Square RookDeltas[] = { NORTH, EAST, SOUTH, WEST }; - Square BishopDeltas[] = { NORTH_EAST, SOUTH_EAST, SOUTH_WEST, NORTH_WEST }; + Direction RookDirections[] = { NORTH, EAST, SOUTH, WEST }; + Direction BishopDirections[] = { NORTH_EAST, SOUTH_EAST, SOUTH_WEST, NORTH_WEST }; - init_magics(RookTable, RookMagics, RookDeltas); - init_magics(BishopTable, BishopMagics, BishopDeltas); + init_magics(RookTable, RookMagics, RookDirections); + init_magics(BishopTable, BishopMagics, BishopDirections); for (Square s1 = SQ_A1; s1 <= SQ_H8; ++s1) { @@ -225,14 +226,14 @@ void Bitboards::init() { namespace { - Bitboard sliding_attack(Square deltas[], Square sq, Bitboard occupied) { + Bitboard sliding_attack(Direction directions[], Square sq, Bitboard occupied) { Bitboard attack = 0; for (int i = 0; i < 4; ++i) - for (Square s = sq + deltas[i]; - is_ok(s) && distance(s, s - deltas[i]) == 1; - s += deltas[i]) + for (Square s = sq + directions[i]; + is_ok(s) && distance(s, s - directions[i]) == 1; + s += directions[i]) { attack |= s; @@ -249,7 +250,7 @@ namespace { // chessprogramming.wikispaces.com/Magic+Bitboards. In particular, here we // use the so called "fancy" approach. - void init_magics(Bitboard table[], Magic magics[], Square deltas[]) { + void init_magics(Bitboard table[], Magic magics[], Direction directions[]) { // Optimal PRNG seeds to pick the correct magics in the shortest time int seeds[][RANK_NB] = { { 8977, 44560, 54343, 38998, 5731, 95205, 104912, 17020 }, @@ -269,7 +270,7 @@ namespace { // the number of 1s of the mask. Hence we deduce the size of the shift to // apply to the 64 or 32 bits word to get the index. Magic& m = magics[s]; - m.mask = sliding_attack(deltas, s, 0) & ~edges; + m.mask = sliding_attack(directions, s, 0) & ~edges; m.shift = (Is64Bit ? 64 : 32) - popcount(m.mask); // Set the offset for the attacks table of the square. We have individual @@ -281,7 +282,7 @@ namespace { b = size = 0; do { occupancy[size] = b; - reference[size] = sliding_attack(deltas, s, b); + reference[size] = sliding_attack(directions, s, b); if (HasPext) m.attacks[pext(b, m.mask)] = reference[size]; diff --git a/Engines/Linux32/mcbrain/src/bitboard.h b/Engines/Linux32/mcbrain/src/bitboard.h index c9f199e..c964d1e 100644 --- a/Engines/Linux32/mcbrain/src/bitboard.h +++ b/Engines/Linux32/mcbrain/src/bitboard.h @@ -1,22 +1,23 @@ /* - Stockfish, a UCI chess playing engine derived from Glaurung 2.1 - Copyright (C) 2004-2008 Tord Romstad (Glaurung author) - Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2017 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad - - Stockfish is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Stockfish is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ + McBrain, a UCI chess playing engine derived from Stockfish and Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) + Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + + McBrain is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + McBrain is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ #ifndef BITBOARD_H_INCLUDED #define BITBOARD_H_INCLUDED @@ -126,11 +127,10 @@ inline Bitboard& operator^=(Bitboard& b, Square s) { return b ^= SquareBB[s]; } -inline bool more_than_one(Bitboard b) { +constexpr bool more_than_one(Bitboard b) { return b & (b - 1); } - /// rank_bb() and file_bb() return a bitboard representing all the squares on /// the given file or rank. @@ -153,8 +153,8 @@ inline Bitboard file_bb(Square s) { /// shift() moves a bitboard one step along direction D. Mainly for pawns -template -inline Bitboard shift(Bitboard b) { +template +constexpr Bitboard shift(Bitboard b) { return D == NORTH ? b << 8 : D == SOUTH ? b >> 8 : D == NORTH_EAST ? (b & ~FileHBB) << 9 : D == SOUTH_EAST ? (b & ~FileHBB) >> 7 : D == NORTH_WEST ? (b & ~FileABB) << 7 : D == SOUTH_WEST ? (b & ~FileABB) >> 9 diff --git a/Engines/Linux32/mcbrain/src/endgame.cpp b/Engines/Linux32/mcbrain/src/endgame.cpp index ca17f6a..3d568f5 100644 --- a/Engines/Linux32/mcbrain/src/endgame.cpp +++ b/Engines/Linux32/mcbrain/src/endgame.cpp @@ -1,23 +1,23 @@ /* - Stockfish, a UCI chess playing engine derived from Glaurung 2.1 - Copyright (C) 2004-2008 Tord Romstad (Glaurung author) - Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2017 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad - - Stockfish is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Stockfish is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - + McBrain, a UCI chess playing engine derived from Stockfish and Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) + Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + + McBrain is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + McBrain is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ #include #include @@ -524,7 +524,7 @@ ScaleFactor Endgame::operator()(const Position& pos) const { Square bsq = pos.square(weakSide); Square psq = pos.square(strongSide); Rank rk = relative_rank(strongSide, psq); - Square push = pawn_push(strongSide); + Direction push = pawn_push(strongSide); // If the pawn is on the 5th rank and the pawn (currently) is on // the same color square as the bishop then there is a chance of diff --git a/Engines/Linux32/mcbrain/src/endgame.h b/Engines/Linux32/mcbrain/src/endgame.h index 3d61207..3bace6f 100644 --- a/Engines/Linux32/mcbrain/src/endgame.h +++ b/Engines/Linux32/mcbrain/src/endgame.h @@ -1,22 +1,24 @@ /* - Stockfish, a UCI chess playing engine derived from Glaurung 2.1 - Copyright (C) 2004-2008 Tord Romstad (Glaurung author) - Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2017 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad - - Stockfish is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Stockfish is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ + McBrain, a UCI chess playing engine derived from Stockfish and Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) + Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + + + McBrain is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + McBrain is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ #ifndef ENDGAME_H_INCLUDED #define ENDGAME_H_INCLUDED diff --git a/Engines/Linux32/mcbrain/src/evaluate.cpp b/Engines/Linux32/mcbrain/src/evaluate.cpp index 7ee3652..e420d3d 100644 --- a/Engines/Linux32/mcbrain/src/evaluate.cpp +++ b/Engines/Linux32/mcbrain/src/evaluate.cpp @@ -1,22 +1,23 @@ /* - Stockfish, a UCI chess playing engine derived from Glaurung 2.1 - Copyright (C) 2004-2008 Tord Romstad (Glaurung author) - Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2017 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad - - Stockfish is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Stockfish is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ + McBrain, a UCI chess playing engine derived from Stockfish and Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) + Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + + McBrain is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + McBrain is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ #include #include @@ -31,12 +32,21 @@ namespace { + const Bitboard Center = (FileDBB | FileEBB) & (Rank4BB | Rank5BB); + const Bitboard QueenSide = FileABB | FileBBB | FileCBB | FileDBB; + const Bitboard CenterFiles = FileCBB | FileDBB | FileEBB | FileFBB; + const Bitboard KingSide = FileEBB | FileFBB | FileGBB | FileHBB; + + const Bitboard KingFlank[FILE_NB] = { + QueenSide, QueenSide, QueenSide, CenterFiles, CenterFiles, KingSide, KingSide, KingSide + }; + namespace Trace { enum Tracing {NO_TRACE, TRACE}; enum Term { // The first 8 entries are for PieceType - MATERIAL = 8, IMBALANCE, MOBILITY, THREAT, PASSED, SPACE, TOTAL, TERM_NB + MATERIAL = 8, IMBALANCE, MOBILITY, THREAT, PASSED, SPACE, INITIATIVE, TOTAL, TERM_NB }; double scores[TERM_NB][COLOR_NB][PHASE_NB]; @@ -54,7 +64,7 @@ namespace { std::ostream& operator<<(std::ostream& os, Term t) { - if (t == MATERIAL || t == IMBALANCE || t == Term(PAWN) || t == TOTAL) + if (t == MATERIAL || t == IMBALANCE || t == Term(PAWN) || t == INITIATIVE || t == TOTAL) os << " --- --- | --- --- | "; else os << std::setw(5) << scores[t][WHITE][MG] << " " @@ -88,6 +98,7 @@ namespace { template void initialize(); template Score evaluate_king(); template Score evaluate_threats(); + int king_distance(Color c, Square s); template Score evaluate_passed_pawns(); template Score evaluate_space(); template Score evaluate_pieces(); @@ -102,7 +113,8 @@ namespace { Score mobility[COLOR_NB] = { SCORE_ZERO, SCORE_ZERO }; // attackedBy[color][piece type] is a bitboard representing all squares - // attacked by a given color and piece type (can be also ALL_PIECES). + // attacked by a given color and piece type. Special "piece types" which are + // also calculated are QUEEN_DIAGONAL and ALL_PIECES. Bitboard attackedBy[COLOR_NB][PIECE_TYPE_NB]; // attackedBy2[color] are the squares attacked by 2 pieces of a given color, @@ -162,8 +174,8 @@ namespace { // supported by a pawn. If the minor piece occupies an outpost square // then score is doubled. const Score Outpost[][2] = { - { S(22, 6), S(33, 9) }, // Knight - { S( 9, 2), S(14, 4) } // Bishop + { S(22, 6), S(36,12) }, // Knight + { S( 9, 2), S(15, 5) } // Bishop }; // RookOnFile[semiopen/open] contains bonuses for each rook when there is no @@ -174,23 +186,23 @@ namespace { // which piece type attacks which one. Attacks on lesser pieces which are // pawn-defended are not considered. const Score ThreatByMinor[PIECE_TYPE_NB] = { - S(0, 0), S(0, 33), S(45, 43), S(46, 47), S(72, 107), S(48, 118) - }; + S(0, 0), S(0, 31), S(39, 42), S(57, 44), S(68, 112), S(47, 120) + }; //Fauzi Akram const Score ThreatByRook[PIECE_TYPE_NB] = { - S(0, 0), S(0, 25), S(40, 62), S(40, 59), S(0, 34), S(35, 48) - }; + S(0, 0), S(0, 24), S(38, 71), S(38, 61), S(0, 38), S(36, 38) + }; //Fauzi Akram // ThreatByKing[on one/on many] contains bonuses for king attacks on // pawns or pieces which are not pawn-defended. - const Score ThreatByKing[] = { S(3, 62), S(9, 138) }; + const Score ThreatByKing[] = { S(3, 65), S(9, 145) }; //Fauzi Akram // Passed[mg/eg][Rank] contains midgame and endgame bonuses for passed pawns. // We don't use a Score because we process the two components independently. const Value Passed[][RANK_NB] = { - { V(5), V( 5), V(31), V(73), V(166), V(252) }, - { V(7), V(14), V(38), V(73), V(166), V(252) } - }; + { V(0), V(5), V( 5), V(32), V(70), V(172), V(217) }, + { V(0), V(7), V(13), V(42), V(70), V(170), V(269) } + }; //Fauzi Akram // PassedFile[File] contains a bonus according to the file of a passed pawn const Score PassedFile[FILE_NB] = { @@ -198,25 +210,29 @@ namespace { S(-20,-12), S( 1, -8), S( 2, 10), S( 9, 10) }; + // Rank factor applied on some bonus for passed pawn on rank 4 or beyond + const int RankFactor[RANK_NB] = {0, 0, 0, 2, 7, 12, 19}; //Fauzi Akram + // KingProtector[PieceType-2] contains a bonus according to distance from king const Score KingProtector[] = { S(-3, -5), S(-4, -3), S(-3, 0), S(-1, 1) }; // Assorted bonuses and penalties used by evaluation - const Score MinorBehindPawn = S( 16, 0); - const Score BishopPawns = S( 8, 12); - const Score RookOnPawn = S( 8, 24); - const Score TrappedRook = S( 92, 0); - const Score WeakQueen = S( 50, 10); - const Score OtherCheck = S( 10, 10); - const Score CloseEnemies = S( 7, 0); - const Score PawnlessFlank = S( 20, 80); - const Score ThreatByHangingPawn = S( 71, 61); - const Score ThreatBySafePawn = S(182,175); - const Score ThreatByRank = S( 16, 3); - const Score Hanging = S( 48, 27); - const Score ThreatByPawnPush = S( 38, 22); - const Score HinderPassedPawn = S( 7, 0); - const Score TrappedBishopA1H1 = S( 50, 50); + const Score MinorBehindPawn = S( 16, 0); + const Score BishopPawns = S( 8, 12); + const Score LongRangedBishop = S( 22, 0); + const Score RookOnPawn = S( 8, 24); + const Score TrappedRook = S( 92, 0); + const Score WeakQueen = S( 50, 10); + const Score CloseEnemies = S( 7, 0); + const Score PawnlessFlank = S( 20, 80); + const Score ThreatBySafePawn = S(175,168); //Fauzi Akram + const Score ThreatByRank = S( 16, 3); + const Score Hanging = S( 52, 30); //Fauzi Akram + const Score WeakUnopposedPawn = S( 5, 25); + const Score ThreatByPawnPush = S( 47, 26); //Fauzi Akram + const Score ThreatByAttackOnQueen = S( 42, 21); //Fauzi Akram + const Score HinderPassedPawn = S( 8, 1); //Fauzi Akram + const Score TrappedBishopA1H1 = S( 50, 50); #undef S #undef V @@ -225,10 +241,10 @@ namespace { const int KingAttackWeights[PIECE_TYPE_NB] = { 0, 0, 78, 56, 45, 11 }; // Penalties for enemy's safe checks - const int QueenCheck = 780; - const int RookCheck = 880; - const int BishopCheck = 435; - const int KnightCheck = 790; + const int QueenSafeCheck = 780; + const int RookSafeCheck = 880; + const int BishopSafeCheck = 435; + const int KnightSafeCheck = 790; // Threshold for lazy and space evaluation const Value LazyThreshold = Value(1500); @@ -241,9 +257,9 @@ namespace { template template void Evaluation::initialize() { - const Color Them = (Us == WHITE ? BLACK : WHITE); - const Square Up = (Us == WHITE ? NORTH : SOUTH); - const Square Down = (Us == WHITE ? SOUTH : NORTH); + const Color Them = (Us == WHITE ? BLACK : WHITE); + const Direction Up = (Us == WHITE ? NORTH : SOUTH); + const Direction Down = (Us == WHITE ? SOUTH : NORTH); const Bitboard LowRanks = (Us == WHITE ? Rank2BB | Rank3BB: Rank7BB | Rank6BB); // Find our pawns on the first two ranks, and those which are blocked @@ -284,6 +300,7 @@ namespace { const Color Them = (Us == WHITE ? BLACK : WHITE); const Bitboard OutpostRanks = (Us == WHITE ? Rank4BB | Rank5BB | Rank6BB : Rank5BB | Rank4BB | Rank3BB); + const Bitboard TRank8BB = (Us == WHITE ? Rank8BB : Rank1BB); const Square* pl = pos.squares(Us); Bitboard b, bb; @@ -292,11 +309,14 @@ namespace { attackedBy[Us][Pt] = 0; + if (Pt == QUEEN) + attackedBy[Us][QUEEN_DIAGONAL] = 0; + while ((s = *pl++) != SQ_NONE) { // Find attacked squares, including x-ray attacks for bishops and rooks - b = Pt == BISHOP ? attacks_bb(s, pos.pieces() ^ pos.pieces(Us, QUEEN)) - : Pt == ROOK ? attacks_bb< ROOK>(s, pos.pieces() ^ pos.pieces(Us, ROOK, QUEEN)) + b = Pt == BISHOP ? attacks_bb(s, pos.pieces() ^ pos.pieces(QUEEN)) + : Pt == ROOK ? attacks_bb< ROOK>(s, pos.pieces() ^ pos.pieces(QUEEN) ^ pos.pieces(Us, ROOK)) : pos.attacks_from(s); if (pos.pinned_pieces(Us) & s) @@ -305,6 +325,9 @@ namespace { attackedBy2[Us] |= attackedBy[Us][ALL_PIECES] & b; attackedBy[Us][ALL_PIECES] |= attackedBy[Us][Pt] |= b; + if (Pt == QUEEN) + attackedBy[Us][QUEEN_DIAGONAL] |= b & PseudoAttacks[BISHOP][s]; + if (b & kingRing[Them]) { kingAttackersCount[Us]++; @@ -324,12 +347,12 @@ namespace { // Bonus for outpost squares bb = OutpostRanks & ~pe->pawn_attacks_span(Them); if (bb & s) - score += Outpost[Pt == BISHOP][!!(attackedBy[Us][PAWN] & s)] * 2; + score += Outpost[Pt == BISHOP][bool(attackedBy[Us][PAWN] & s)] * 2; else { bb &= b & ~pos.pieces(Us); if (bb) - score += Outpost[Pt == BISHOP][!!(attackedBy[Us][PAWN] & bb)]; + score += Outpost[Pt == BISHOP][bool(attackedBy[Us][PAWN] & bb)]; } // Bonus when behind a pawn @@ -337,10 +360,16 @@ namespace { && (pos.pieces(PAWN) & (s + pawn_push(Us)))) score += MinorBehindPawn; - // Penalty for pawns on the same color square as the bishop if (Pt == BISHOP) + { + // Penalty for pawns on the same color square as the bishop score -= BishopPawns * pe->pawns_on_same_color_squares(Us, s); + // Bonus for bishop on a long diagonal which can "see" both center squares + if (more_than_one(Center & (attacks_bb(s, pos.pieces(PAWN)) | s))) + score += LongRangedBishop; + } + // An important Chess960 pattern: A cornered bishop blocked by a friendly // pawn diagonally in front of it is a very serious problem, especially // when that pawn is also blocked. @@ -348,7 +377,7 @@ namespace { && pos.is_chess960() && (s == relative_square(Us, SQ_A1) || s == relative_square(Us, SQ_H1))) { - Square d = pawn_push(Us) + (file_of(s) == FILE_A ? EAST : WEST); + Direction d = pawn_push(Us) + (file_of(s) == FILE_A ? EAST : WEST); if (pos.piece_on(s + d) == make_piece(Us, PAWN)) score -= !pos.empty(s + d + pawn_push(Us)) ? TrappedBishopA1H1 * 4 : pos.piece_on(s + d + d) == make_piece(Us, PAWN) ? TrappedBishopA1H1 * 2 @@ -364,7 +393,7 @@ namespace { // Bonus when on an open or semi-open file if (pe->semiopen_file(Us, file_of(s))) - score += RookOnFile[!!pe->semiopen_file(Them, file_of(s))]; + score += RookOnFile[bool(pe->semiopen_file(Them, file_of(s)))]; // Penalty when trapped by the king, even more if the king cannot castle else if (mob <= 3) @@ -375,6 +404,9 @@ namespace { && !pe->semiopen_side(Us, file_of(ksq), file_of(s) < file_of(ksq))) score -= (TrappedRook - make_score(mob * 22, 0)) * (1 + !pos.can_castle(Us)); } + // Bonus when rook can see the enemy back rank and has enough mobility. + else if (relative_rank(Us, s) <= RANK_5 && (pos.attacks_from(s) & TRank8BB)) + score += RookOnFile[0]; } if (Pt == QUEEN) @@ -395,119 +427,98 @@ namespace { // evaluate_king() assigns bonuses and penalties to a king of a given color - const Bitboard QueenSide = FileABB | FileBBB | FileCBB | FileDBB; - const Bitboard CenterFiles = FileCBB | FileDBB | FileEBB | FileFBB; - const Bitboard KingSide = FileEBB | FileFBB | FileGBB | FileHBB; - - const Bitboard KingFlank[FILE_NB] = { - QueenSide, QueenSide, QueenSide, CenterFiles, CenterFiles, KingSide, KingSide, KingSide - }; - template template Score Evaluation::evaluate_king() { - const Color Them = (Us == WHITE ? BLACK : WHITE); - const Square Up = (Us == WHITE ? NORTH : SOUTH); - const Bitboard Camp = (Us == WHITE ? AllSquares ^ Rank6BB ^ Rank7BB ^ Rank8BB - : AllSquares ^ Rank1BB ^ Rank2BB ^ Rank3BB); + const Color Them = (Us == WHITE ? BLACK : WHITE); + const Bitboard Camp = (Us == WHITE ? AllSquares ^ Rank6BB ^ Rank7BB ^ Rank8BB + : AllSquares ^ Rank1BB ^ Rank2BB ^ Rank3BB); const Square ksq = pos.square(Us); - Bitboard kingOnlyDefended, undefended, b, b1, b2, safe, other; - int kingDanger; + Bitboard weak, b, b1, b2, safe, unsafeChecks; // King shelter and enemy pawns storm Score score = pe->king_safety(pos, ksq); + // King tropism: firstly, find squares that opponent attacks in our king flank + File kf = file_of(ksq); + b = attackedBy[Them][ALL_PIECES] & KingFlank[kf] & Camp; + + assert(((Us == WHITE ? b << 4 : b >> 4) & b) == 0); + assert(popcount(Us == WHITE ? b << 4 : b >> 4) == popcount(b)); + + // Secondly, add the squares which are attacked twice in that flank and + // which are not defended by our pawns. + b = (Us == WHITE ? b << 4 : b >> 4) + | (b & attackedBy2[Them] & ~attackedBy[Us][PAWN]); + + int tropism = popcount(b); + // Main king safety evaluation if (kingAttackersCount[Them] > (1 - pos.count(Them))) { - // Find the attacked squares which are defended only by our king... - kingOnlyDefended = attackedBy[Them][ALL_PIECES] - & attackedBy[Us][KING] - & ~attackedBy2[Us]; - - // ... and those which are not defended at all in the larger king ring - undefended = attackedBy[Them][ALL_PIECES] - & ~attackedBy[Us][ALL_PIECES] - & kingRing[Us] - & ~pos.pieces(Them); - - // Initialize the 'kingDanger' variable, which will be transformed - // later into a king danger score. The initial value is based on the - // number and types of the enemy's attacking pieces, the number of - // attacked and weak squares around our king, the absence of queen and - // the quality of the pawn shelter (current 'score' value). - kingDanger = kingAttackersCount[Them] * kingAttackersWeight[Them] - + 102 * kingAdjacentZoneAttacksCount[Them] - + 191 * popcount(kingOnlyDefended | undefended) - + 143 * !!pos.pinned_pieces(Us) - - 848 * !pos.count(Them) - - 9 * mg_value(score) / 8 - + 40; + // Attacked squares defended at most once by our queen or king + weak = attackedBy[Them][ALL_PIECES] + & ~attackedBy2[Us] + & (attackedBy[Us][KING] | attackedBy[Us][QUEEN] | ~attackedBy[Us][ALL_PIECES]); + + int kingDanger = unsafeChecks = 0; // Analyse the safe enemy's checks which are possible on next move safe = ~pos.pieces(Them); - safe &= ~attackedBy[Us][ALL_PIECES] | (kingOnlyDefended & attackedBy2[Them]); + safe &= ~attackedBy[Us][ALL_PIECES] | (weak & attackedBy2[Them]); - b1 = pos.attacks_from< ROOK>(ksq); - b2 = pos.attacks_from(ksq); + b1 = attacks_bb(ksq, pos.pieces() ^ pos.pieces(Us, QUEEN)); + b2 = attacks_bb(ksq, pos.pieces() ^ pos.pieces(Us, QUEEN)); // Enemy queen safe checks - if ((b1 | b2) & attackedBy[Them][QUEEN] & safe) - kingDanger += QueenCheck; - - // For minors and rooks, also consider the square safe if attacked twice, - // and only defended by our queen. - safe |= attackedBy2[Them] - & ~(attackedBy2[Us] | pos.pieces(Them)) - & attackedBy[Us][QUEEN]; - - // Some other potential checks are also analysed, even from squares - // currently occupied by the opponent own pieces, as long as the square - // is not attacked by our pawns, and is not occupied by a blocked pawn. - other = ~( attackedBy[Us][PAWN] - | (pos.pieces(Them, PAWN) & shift(pos.pieces(PAWN)))); + if ((b1 | b2) & attackedBy[Them][QUEEN] & safe & ~attackedBy[Us][QUEEN]) + kingDanger += QueenSafeCheck; - // Enemy rooks safe and other checks - if (b1 & attackedBy[Them][ROOK] & safe) - kingDanger += RookCheck; + b1 &= attackedBy[Them][ROOK]; + b2 &= attackedBy[Them][BISHOP]; - else if (b1 & attackedBy[Them][ROOK] & other) - score -= OtherCheck; + // Enemy rooks checks + if (b1 & safe) + kingDanger += RookSafeCheck; + else + unsafeChecks |= b1; - // Enemy bishops safe and other checks - if (b2 & attackedBy[Them][BISHOP] & safe) - kingDanger += BishopCheck; + // Enemy bishops checks + if (b2 & safe) + kingDanger += BishopSafeCheck; + else + unsafeChecks |= b2; - else if (b2 & attackedBy[Them][BISHOP] & other) - score -= OtherCheck; - - // Enemy knights safe and other checks + // Enemy knights checks b = pos.attacks_from(ksq) & attackedBy[Them][KNIGHT]; if (b & safe) - kingDanger += KnightCheck; - - else if (b & other) - score -= OtherCheck; - - // Transform the kingDanger units into a Score, and substract it from the evaluation + kingDanger += KnightSafeCheck; + else + unsafeChecks |= b; + + // Unsafe or occupied checking squares will also be considered, as long as + // the square is in the attacker's mobility area. + unsafeChecks &= mobilityArea[Them]; + + kingDanger += kingAttackersCount[Them] * kingAttackersWeight[Them] + + 102 * kingAdjacentZoneAttacksCount[Them] + + 191 * popcount(kingRing[Us] & weak) + + 143 * popcount(pos.pinned_pieces(Us) | unsafeChecks) + - 848 * !pos.count(Them) + - 9 * mg_value(score) / 8 + + 4 * tropism; + + // Transform the kingDanger units into a Score, and subtract it from the evaluation if (kingDanger > 0) + { + int mobilityDanger = (mg_value(mobility[Them] - mobility[Us])) * 2; + kingDanger = std::max(0, kingDanger + mobilityDanger); score -= make_score(kingDanger * kingDanger / 4096, kingDanger / 16); + } } - // King tropism: firstly, find squares that opponent attacks in our king flank - File kf = file_of(ksq); - b = attackedBy[Them][ALL_PIECES] & KingFlank[kf] & Camp; - - assert(((Us == WHITE ? b << 4 : b >> 4) & b) == 0); - assert(popcount(Us == WHITE ? b << 4 : b >> 4) == popcount(b)); - - // Secondly, add the squares which are attacked twice in that flank and - // which are not defended by our pawns. - b = (Us == WHITE ? b << 4 : b >> 4) - | (b & attackedBy2[Them] & ~attackedBy[Us][PAWN]); - - score -= CloseEnemies * popcount(b); + score -= CloseEnemies * tropism; // Penalty when our king is on a pawnless flank if (!(pos.pieces(PAWN) & KingFlank[kf])) @@ -526,11 +537,11 @@ namespace { template template Score Evaluation::evaluate_threats() { - const Color Them = (Us == WHITE ? BLACK : WHITE); - const Square Up = (Us == WHITE ? NORTH : SOUTH); - const Square Left = (Us == WHITE ? NORTH_WEST : SOUTH_EAST); - const Square Right = (Us == WHITE ? NORTH_EAST : SOUTH_WEST); - const Bitboard TRank3BB = (Us == WHITE ? Rank3BB : Rank6BB); + const Color Them = (Us == WHITE ? BLACK : WHITE); + const Direction Up = (Us == WHITE ? NORTH : SOUTH); + const Direction Left = (Us == WHITE ? NORTH_WEST : SOUTH_EAST); + const Direction Right = (Us == WHITE ? NORTH_EAST : SOUTH_WEST); + const Bitboard TRank3BB = (Us == WHITE ? Rank3BB : Rank6BB); Bitboard b, weak, defended, stronglyProtected, safeThreats; Score score = SCORE_ZERO; @@ -546,9 +557,6 @@ namespace { safeThreats = (shift(b) | shift(b)) & weak; score += ThreatBySafePawn * popcount(safeThreats); - - if (weak ^ safeThreats) - score += ThreatByHangingPawn; } // Squares strongly protected by the opponent, either because they attack the @@ -593,6 +601,10 @@ namespace { score += ThreatByKing[more_than_one(b)]; } + // Bonus for opponent unopposed weak pawns + if (pos.pieces(Us, ROOK, QUEEN)) + score += WeakUnopposedPawn * pe->weak_unopposed(Them); + // Find squares where our pawns can push on the next move b = shift(pos.pieces(Us, PAWN)) & ~pos.pieces(); b |= shift(b & TRank3BB) & ~pos.pieces(); @@ -608,12 +620,24 @@ namespace { score += ThreatByPawnPush * popcount(b); + // Add a bonus for safe slider attack threats on opponent queen + safeThreats = ~pos.pieces(Us) & ~attackedBy2[Them] & attackedBy2[Us]; + b = (attackedBy[Us][BISHOP] & attackedBy[Them][QUEEN_DIAGONAL]) + | (attackedBy[Us][ROOK ] & attackedBy[Them][QUEEN] & ~attackedBy[Them][QUEEN_DIAGONAL]); + + score += ThreatByAttackOnQueen * popcount(b & safeThreats); + if (T) Trace::add(THREAT, Us, score); return score; } + // helper used by evaluate_passed_pawns to cap the distance + template + int Evaluation::king_distance(Color c, Square s) { + return std::min(distance(pos.square(c), s), 5); + } // evaluate_passed_pawns() evaluates the passed pawns and candidate passed // pawns of the given color. @@ -621,8 +645,8 @@ namespace { template template Score Evaluation::evaluate_passed_pawns() { - const Color Them = (Us == WHITE ? BLACK : WHITE); - const Square Up = (Us == WHITE ? NORTH : SOUTH); + const Color Them = (Us == WHITE ? BLACK : WHITE); + const Direction Up = (Us == WHITE ? NORTH : SOUTH); Bitboard b, bb, squaresToQueen, defendedSquares, unsafeSquares; Score score = SCORE_ZERO; @@ -638,8 +662,8 @@ namespace { bb = forward_file_bb(Us, s) & (attackedBy[Them][ALL_PIECES] | pos.pieces(Them)); score -= HinderPassedPawn * popcount(bb); - int r = relative_rank(Us, s) - RANK_2; - int rr = r * (r - 1); + int r = relative_rank(Us, s); + int rr = RankFactor[r]; Value mbonus = Passed[MG][r], ebonus = Passed[EG][r]; @@ -648,12 +672,11 @@ namespace { Square blockSq = s + Up; // Adjust bonus based on the king's proximity - ebonus += distance(pos.square(Them), blockSq) * 5 * rr - - distance(pos.square( Us), blockSq) * 2 * rr; + ebonus += (king_distance(Them, blockSq) * 5 - king_distance(Us, blockSq) * 2) * rr; // If blockSq is not the queening square then consider also a second push - if (relative_rank(Us, blockSq) != RANK_8) - ebonus -= distance(pos.square(Us), blockSq + Up) * rr; + if (r != RANK_7) + ebonus -= king_distance(Us, blockSq + Up) * rr; // If the pawn is free to advance, then increase the bonus if (pos.empty(blockSq)) @@ -673,7 +696,7 @@ namespace { // If there aren't any enemy attacks, assign a big bonus. Otherwise // assign a smaller bonus if the block square isn't attacked. - int k = !unsafeSquares ? 18 : !(unsafeSquares & blockSq) ? 8 : 0; + int k = !unsafeSquares ? 20 : !(unsafeSquares & blockSq) ? 9 : 0; //Fauzi Akram // If the path to the queen is fully defended, assign a big bonus. // Otherwise assign a smaller bonus if the block square is defended. @@ -762,6 +785,9 @@ namespace { // that the endgame score will never change sign after the bonus. int v = ((eg > 0) - (eg < 0)) * std::max(initiative, -abs(eg)); + if (T) + Trace::add(INITIATIVE, make_score(0, v)); + return make_score(0, v); } @@ -822,7 +848,7 @@ namespace { // Initialize score by reading the incrementally updated scores included in // the position object (material + piece square tables) and the material // imbalance. Score is computed internally from the white point of view. - Score score = pos.psq_score() + me->imbalance(); + Score score = pos.psq_score() + me->imbalance() + Eval::Contempt; // Probe the pawn hash table pe = Pawns::probe(pos); @@ -880,18 +906,19 @@ namespace { Trace::add(TOTAL, score); } - return (pos.side_to_move() == WHITE ? v : -v) + Eval::Tempo; // Side to move point of view + return pos.side_to_move() == WHITE ? v : -v; // Side to move point of view } } // namespace +Score Eval::Contempt = SCORE_ZERO; /// evaluate() is the evaluator for the outer world. It returns a static evaluation /// of the position from the point of view of the side to move. Value Eval::evaluate(const Position& pos) { - return Evaluation<>(pos).value(); + return Evaluation<>(pos).value() + Eval::Tempo; } /// trace() is like evaluate(), but instead of returning a value, it returns @@ -902,7 +929,7 @@ std::string Eval::trace(const Position& pos) { std::memset(scores, 0, sizeof(scores)); - Value v = Evaluation(pos).value(); + Value v = Evaluation(pos).value() + Eval::Tempo; v = pos.side_to_move() == WHITE ? v : -v; // White's point of view std::stringstream ss; @@ -922,6 +949,7 @@ std::string Eval::trace(const Position& pos) { << " Threats | " << Term(THREAT) << " Passed pawns | " << Term(PASSED) << " Space | " << Term(SPACE) + << " Initiative | " << Term(INITIATIVE) << "----------------+-------------+-------------+-------------\n" << " Total | " << Term(TOTAL); diff --git a/Engines/Linux32/mcbrain/src/evaluate.h b/Engines/Linux32/mcbrain/src/evaluate.h index 95a1f19..8d388fa 100644 --- a/Engines/Linux32/mcbrain/src/evaluate.h +++ b/Engines/Linux32/mcbrain/src/evaluate.h @@ -1,22 +1,23 @@ /* - Stockfish, a UCI chess playing engine derived from Glaurung 2.1 - Copyright (C) 2004-2008 Tord Romstad (Glaurung author) - Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2017 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad - - Stockfish is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Stockfish is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ + McBrain, a UCI chess playing engine derived from Stockfish and Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) + Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) + Copyright (C) 2017 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + + McBrain is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + McBrain is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ #ifndef EVALUATE_H_INCLUDED #define EVALUATE_H_INCLUDED @@ -31,6 +32,8 @@ namespace Eval { const Value Tempo = Value(20); // Must be visible to search +extern Score Contempt; + std::string trace(const Position& pos); Value evaluate(const Position& pos); diff --git a/Engines/Linux32/mcbrain/src/main.cpp b/Engines/Linux32/mcbrain/src/main.cpp index 5c2810e..637dc3b 100644 --- a/Engines/Linux32/mcbrain/src/main.cpp +++ b/Engines/Linux32/mcbrain/src/main.cpp @@ -1,22 +1,23 @@ /* - Stockfish, a UCI chess playing engine derived from Glaurung 2.1 - Copyright (C) 2004-2008 Tord Romstad (Glaurung author) - Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2017 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad - - Stockfish is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Stockfish is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ + McBrain, a UCI chess playing engine derived from Stockfish and Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) + Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + + McBrain is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + McBrain is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ #include @@ -27,7 +28,7 @@ #include "tt.h" #include "uci.h" #include "tbprobe.h" -#include "tzbook.h" +#include "polybook.h" namespace PSQT { void init(); @@ -44,13 +45,14 @@ int main(int argc, char* argv[]) { Bitbases::init(); Search::init(); Pawns::init(); + polybook.init(Options["BookFile"]); Tablebases::init(Options["SyzygyPath"]); TT.resize(Options["Hash"]); - Threads.init(Options["Threads"]); + Threads.set(Options["Threads"]); Search::clear(); // After threads are up UCI::loop(argc, argv); - Threads.exit(); + Threads.set(0); return 0; } diff --git a/Engines/Linux32/mcbrain/src/material.cpp b/Engines/Linux32/mcbrain/src/material.cpp index d67b95c..2b28837 100644 --- a/Engines/Linux32/mcbrain/src/material.cpp +++ b/Engines/Linux32/mcbrain/src/material.cpp @@ -1,22 +1,23 @@ /* - Stockfish, a UCI chess playing engine derived from Glaurung 2.1 - Copyright (C) 2004-2008 Tord Romstad (Glaurung author) - Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2017 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad - - Stockfish is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Stockfish is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ + McBrain, a UCI chess playing engine derived from Stockfish and Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) + Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + + McBrain is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + McBrain is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ #include // For std::min #include @@ -39,7 +40,7 @@ namespace { { 32, 255, -3 }, // Knight OUR PIECES { 0, 104, 4, 0 }, // Bishop { -26, -2, 47, 105, -149 }, // Rook - {-185, 24, 122, 137, -134, 0 } // Queen + {-189, 24, 117, 133, -134, -10 } // Queen }; const int QuadraticTheirs[][PIECE_TYPE_NB] = { @@ -50,18 +51,7 @@ namespace { { 9, 63, 0 }, // Knight OUR PIECES { 59, 65, 42, 0 }, // Bishop { 46, 39, 24, -24, 0 }, // Rook - { 101, 100, -37, 141, 268, 0 } // Queen - }; - - // PawnSet[pawn count] contains a bonus/malus indexed by number of pawns - const int PawnSet[] = { - 24, -32, 107, -51, 117, -9, -126, -21, 31 - }; - - // QueenMinorsImbalance[opp_minor_count] is applied when only one side has a queen. - // It contains a bonus/malus for the side with the queen. - const int QueenMinorsImbalance[13] = { - 31, -8, -15, -25, -5 + { 97, 100, -42, 137, 268, 0 } // Queen }; // Endgame evaluation and scaling functions are accessed directly and not through @@ -100,9 +90,9 @@ namespace { const Color Them = (Us == WHITE ? BLACK : WHITE); - int bonus = PawnSet[pieceCount[Us][PAWN]]; + int bonus = 0; - // Second-degree polynomial material imbalance by Tord Romstad + // Second-degree polynomial material imbalance, by Tord Romstad for (int pt1 = NO_PIECE_TYPE; pt1 <= QUEEN; ++pt1) { if (!pieceCount[Us][pt1]) @@ -117,10 +107,6 @@ namespace { bonus += pieceCount[Us][pt1] * v; } - // Special handling of Queen vs. Minors - if (pieceCount[Us][QUEEN] == 1 && pieceCount[Them][QUEEN] == 0) - bonus += QueenMinorsImbalance[pieceCount[Them][KNIGHT] + pieceCount[Them][BISHOP]]; - return bonus; } diff --git a/Engines/Linux32/mcbrain/src/material.h b/Engines/Linux32/mcbrain/src/material.h index ccf97b7..95d6c84 100644 --- a/Engines/Linux32/mcbrain/src/material.h +++ b/Engines/Linux32/mcbrain/src/material.h @@ -1,22 +1,23 @@ /* - Stockfish, a UCI chess playing engine derived from Glaurung 2.1 - Copyright (C) 2004-2008 Tord Romstad (Glaurung author) - Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2017 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad - - Stockfish is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Stockfish is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ + McBrain, a UCI chess playing engine derived from Stockfish and Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) + Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + + McBrain is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + McBrain is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ #ifndef MATERIAL_H_INCLUDED #define MATERIAL_H_INCLUDED diff --git a/Engines/Linux32/mcbrain/src/misc.cpp b/Engines/Linux32/mcbrain/src/misc.cpp index 16dc981..a14d9c4 100644 --- a/Engines/Linux32/mcbrain/src/misc.cpp +++ b/Engines/Linux32/mcbrain/src/misc.cpp @@ -1,22 +1,23 @@ /* - Stockfish, a UCI chess playing engine derived from Glaurung 2.1 - Copyright (C) 2004-2008 Tord Romstad (Glaurung author) - Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2017 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad - - Stockfish is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Stockfish is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ + McBrain, a UCI chess playing engine derived from Stockfish and Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) + Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + + McBrain is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + McBrain is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ #ifdef _WIN32 #if _WIN32_WINNT < 0x0601 @@ -51,7 +52,7 @@ namespace { /// Version number. If Version is left empty, then compile date in the format /// DD-MM-YY and show in engine_info. -const string Version = "v2.7"; +const string Version = "9"; /// Our fancy logging facility. The trick here is to replace cin.rdbuf() and /// cout.rdbuf() with two Tie objects that tie cin and cout to a file stream. We @@ -122,7 +123,7 @@ const string engine_info(bool to_uci) { string month, day, year; stringstream ss, date(__DATE__); // From compiler, format is "Sep 21 2008" - ss << "SF-McBrain " << Version << setfill('0'); + ss << "McBrain " << Version << setfill('0'); if (Version.empty()) { @@ -133,7 +134,7 @@ const string engine_info(bool to_uci) { ss << (Is64Bit ? " 64" : "") << (HasPext ? " BMI2" : (HasPopCnt ? " POPCNT" : "")) << (to_uci ? "\nid author ": " by ") - << "M. Byrne based on Stockfish"; + << "M. Byrne, Stockfish authors and others"; return ss.str(); } @@ -293,14 +294,6 @@ int get_group(size_t idx) { void bindThisThread(size_t idx) { - // If OS already scheduled us on a different group than 0 then don't overwrite - // the choice, eventually we are one of many one-threaded processes running on - // some Windows NUMA hardware, for instance in fishtest. To make it simple, - // just check if running threads are below a threshold, in this case all this - // NUMA machinery is not needed. - if (Threads.size() < 8) - return; - // Use only local variables to be thread-safe int group = get_group(idx); diff --git a/Engines/Linux32/mcbrain/src/misc.h b/Engines/Linux32/mcbrain/src/misc.h index b63e613..98b5202 100644 --- a/Engines/Linux32/mcbrain/src/misc.h +++ b/Engines/Linux32/mcbrain/src/misc.h @@ -1,22 +1,23 @@ /* - Stockfish, a UCI chess playing engine derived from Glaurung 2.1 - Copyright (C) 2004-2008 Tord Romstad (Glaurung author) - Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2017 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad - - Stockfish is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Stockfish is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ + McBrain, a UCI chess playing engine derived from Stockfish and Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) + Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + + McBrain is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + McBrain is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ #ifndef MISC_H_INCLUDED #define MISC_H_INCLUDED diff --git a/Engines/Linux32/mcbrain/src/movegen.cpp b/Engines/Linux32/mcbrain/src/movegen.cpp index 465d616..d06bc86 100644 --- a/Engines/Linux32/mcbrain/src/movegen.cpp +++ b/Engines/Linux32/mcbrain/src/movegen.cpp @@ -1,22 +1,23 @@ /* - Stockfish, a UCI chess playing engine derived from Glaurung 2.1 - Copyright (C) 2004-2008 Tord Romstad (Glaurung author) - Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2017 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad - - Stockfish is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Stockfish is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ + McBrain, a UCI chess playing engine derived from Stockfish and Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) + Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + + McBrain is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + McBrain is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ #include @@ -42,8 +43,8 @@ namespace { assert(!pos.checkers()); - const Square K = Chess960 ? kto > kfrom ? WEST : EAST - : KingSide ? WEST : EAST; + const Direction K = Chess960 ? kto > kfrom ? WEST : EAST + : KingSide ? WEST : EAST; for (Square s = kto; s != kfrom; s += K) if (pos.attackers_to(s) & enemies) @@ -65,7 +66,7 @@ namespace { } - template + template ExtMove* make_promotions(ExtMove* moveList, Square to, Square ksq) { if (Type == CAPTURES || Type == EVASIONS || Type == NON_EVASIONS) @@ -94,13 +95,13 @@ namespace { // Compute our parametrized parameters at compile time, named according to // the point of view of white side. - const Color Them = (Us == WHITE ? BLACK : WHITE); - const Bitboard TRank8BB = (Us == WHITE ? Rank8BB : Rank1BB); - const Bitboard TRank7BB = (Us == WHITE ? Rank7BB : Rank2BB); - const Bitboard TRank3BB = (Us == WHITE ? Rank3BB : Rank6BB); - const Square Up = (Us == WHITE ? NORTH : SOUTH); - const Square Right = (Us == WHITE ? NORTH_EAST : SOUTH_WEST); - const Square Left = (Us == WHITE ? NORTH_WEST : SOUTH_EAST); + const Color Them = (Us == WHITE ? BLACK : WHITE); + const Bitboard TRank8BB = (Us == WHITE ? Rank8BB : Rank1BB); + const Bitboard TRank7BB = (Us == WHITE ? Rank7BB : Rank2BB); + const Bitboard TRank3BB = (Us == WHITE ? Rank3BB : Rank6BB); + const Direction Up = (Us == WHITE ? NORTH : SOUTH); + const Direction Right = (Us == WHITE ? NORTH_EAST : SOUTH_WEST); + const Direction Left = (Us == WHITE ? NORTH_WEST : SOUTH_EAST); Bitboard emptySquares; diff --git a/Engines/Linux32/mcbrain/src/movegen.h b/Engines/Linux32/mcbrain/src/movegen.h index 8256057..666e4ef 100644 --- a/Engines/Linux32/mcbrain/src/movegen.h +++ b/Engines/Linux32/mcbrain/src/movegen.h @@ -1,22 +1,23 @@ /* - Stockfish, a UCI chess playing engine derived from Glaurung 2.1 - Copyright (C) 2004-2008 Tord Romstad (Glaurung author) - Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2017 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad - - Stockfish is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Stockfish is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ + McBrain, a UCI chess playing engine derived from Stockfish and Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) + Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) + Copyright (C) 2017 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + + McBrain is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + McBrain is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ #ifndef MOVEGEN_H_INCLUDED #define MOVEGEN_H_INCLUDED @@ -45,7 +46,7 @@ struct ExtMove { // Inhibit unwanted implicit conversions to Move // with an ambiguity that yields to a compile error. - operator float() const; + operator float() const = delete; }; inline bool operator<(const ExtMove& f, const ExtMove& s) { diff --git a/Engines/Linux32/mcbrain/src/movepick.cpp b/Engines/Linux32/mcbrain/src/movepick.cpp index 1c0de69..f62ca2b 100644 --- a/Engines/Linux32/mcbrain/src/movepick.cpp +++ b/Engines/Linux32/mcbrain/src/movepick.cpp @@ -1,22 +1,23 @@ /* - Stockfish, a UCI chess playing engine derived from Glaurung 2.1 - Copyright (C) 2004-2008 Tord Romstad (Glaurung author) - Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2017 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad - - Stockfish is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Stockfish is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ + McBrain, a UCI chess playing engine derived from Stockfish and Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) + Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + + McBrain is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + McBrain is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ #include @@ -28,8 +29,7 @@ namespace { MAIN_SEARCH, CAPTURES_INIT, GOOD_CAPTURES, KILLERS, COUNTERMOVE, QUIET_INIT, QUIET, BAD_CAPTURES, EVASION, EVASIONS_INIT, ALL_EVASIONS, PROBCUT, PROBCUT_INIT, PROBCUT_CAPTURES, - QSEARCH_WITH_CHECKS, QCAPTURES_1_INIT, QCAPTURES_1, QCHECKS, - QSEARCH_NO_CHECKS, QCAPTURES_2_INIT, QCAPTURES_2, + QSEARCH, QCAPTURES_INIT, QCAPTURES, QCHECKS, QSEARCH_RECAPTURES, QRECAPTURES }; @@ -68,8 +68,8 @@ namespace { /// MovePicker constructor for the main search MovePicker::MovePicker(const Position& p, Move ttm, Depth d, const ButterflyHistory* mh, - const PieceToHistory** ch, Move cm, Move* killers_p) - : pos(p), mainHistory(mh), contHistory(ch), countermove(cm), + const CapturePieceToHistory* cph, const PieceToHistory** ch, Move cm, Move* killers_p) + : pos(p), mainHistory(mh), captureHistory(cph), contHistory(ch), countermove(cm), killers{killers_p[0], killers_p[1]}, depth(d){ assert(d > DEPTH_ZERO); @@ -80,19 +80,16 @@ MovePicker::MovePicker(const Position& p, Move ttm, Depth d, const ButterflyHist } /// MovePicker constructor for quiescence search -MovePicker::MovePicker(const Position& p, Move ttm, Depth d, const ButterflyHistory* mh, Square s) - : pos(p), mainHistory(mh) { +MovePicker::MovePicker(const Position& p, Move ttm, Depth d, const ButterflyHistory* mh, const CapturePieceToHistory* cph, Square s) + : pos(p), mainHistory(mh), captureHistory(cph), depth(d) { assert(d <= DEPTH_ZERO); if (pos.checkers()) stage = EVASION; - else if (d > DEPTH_QS_NO_CHECKS) - stage = QSEARCH_WITH_CHECKS; - else if (d > DEPTH_QS_RECAPTURES) - stage = QSEARCH_NO_CHECKS; + stage = QSEARCH; else { @@ -107,8 +104,8 @@ MovePicker::MovePicker(const Position& p, Move ttm, Depth d, const ButterflyHist /// MovePicker constructor for ProbCut: we generate captures with SEE higher /// than or equal to the given threshold. -MovePicker::MovePicker(const Position& p, Move ttm, Value th) - : pos(p), threshold(th) { +MovePicker::MovePicker(const Position& p, Move ttm, Value th, const CapturePieceToHistory* cph) + : pos(p), captureHistory(cph), threshold(th) { assert(!pos.checkers()); @@ -123,7 +120,7 @@ MovePicker::MovePicker(const Position& p, Move ttm, Value th) /// score() assigns a numerical value to each move in a list, used for sorting. /// Captures are ordered by Most Valuable Victim (MVV), preferring captures -/// near our home rank. Quiets are ordered using the histories. +/// with a good history. Quiets are ordered using the histories. template void MovePicker::score() { @@ -132,7 +129,7 @@ void MovePicker::score() { for (auto& m : *this) if (Type == CAPTURES) m.value = PieceValue[MG][pos.piece_on(to_sq(m))] - - Value(200 * relative_rank(pos.side_to_move(), to_sq(m))); + + Value((*captureHistory)[pos.moved_piece(m)][to_sq(m)][type_of(pos.piece_on(to_sq(m)))]); else if (Type == QUIETS) m.value = (*mainHistory)[pos.side_to_move()][from_to(m)] @@ -161,8 +158,7 @@ Move MovePicker::next_move(bool skipQuiets) { switch (stage) { - case MAIN_SEARCH: case EVASION: case QSEARCH_WITH_CHECKS: - case QSEARCH_NO_CHECKS: case PROBCUT: + case MAIN_SEARCH: case EVASION: case QSEARCH: case PROBCUT: ++stage; return ttMove; @@ -179,7 +175,7 @@ Move MovePicker::next_move(bool skipQuiets) { move = pick_best(cur++, endMoves); if (move != ttMove) { - if (pos.see_ge(move)) + if (pos.see_ge(move, Value(-55 * (cur-1)->value / 1024))) return move; // Losing capture, move it to the beginning of the array @@ -280,21 +276,21 @@ Move MovePicker::next_move(bool skipQuiets) { } break; - case QCAPTURES_1_INIT: case QCAPTURES_2_INIT: + case QCAPTURES_INIT: cur = moves; endMoves = generate(pos, cur); score(); ++stage; /* fallthrough */ - case QCAPTURES_1: case QCAPTURES_2: + case QCAPTURES: while (cur < endMoves) { move = pick_best(cur++, endMoves); if (move != ttMove) return move; } - if (stage == QCAPTURES_2) + if (depth <= DEPTH_QS_NO_CHECKS) break; cur = moves; endMoves = generate(pos, cur); @@ -313,14 +309,13 @@ Move MovePicker::next_move(bool skipQuiets) { case QSEARCH_RECAPTURES: cur = moves; endMoves = generate(pos, cur); - score(); ++stage; /* fallthrough */ case QRECAPTURES: while (cur < endMoves) { - move = pick_best(cur++, endMoves); + move = *cur++; if (to_sq(move) == recaptureSquare) return move; } diff --git a/Engines/Linux32/mcbrain/src/movepick.h b/Engines/Linux32/mcbrain/src/movepick.h index 66fc1bd..26e2a14 100644 --- a/Engines/Linux32/mcbrain/src/movepick.h +++ b/Engines/Linux32/mcbrain/src/movepick.h @@ -1,27 +1,29 @@ /* - Stockfish, a UCI chess playing engine derived from Glaurung 2.1 - Copyright (C) 2004-2008 Tord Romstad (Glaurung author) - Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2017 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad - - Stockfish is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Stockfish is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ + McBrain, a UCI chess playing engine derived from Stockfish and Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) + Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + + McBrain is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + McBrain is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ #ifndef MOVEPICK_H_INCLUDED #define MOVEPICK_H_INCLUDED #include +#include #include "movegen.h" #include "position.h" @@ -39,7 +41,7 @@ struct StatBoards : public std::array, Size1> { void update(T& entry, int bonus, const int D) { assert(abs(bonus) <= D); // Ensure range is [-32 * D, 32 * D] - assert(abs(32 * D) < INT16_MAX); // Ensure we don't overflow + assert(abs(32 * D) < (std::numeric_limits::max)()); // Ensure we don't overflow entry += bonus * 32 - entry * abs(bonus) / D; @@ -47,6 +49,26 @@ struct StatBoards : public std::array, Size1> { } }; +/// StatCubes is a generic 3-dimensional array used to store various statistics +template +struct StatCubes : public std::array, Size2>, Size1> { + + void fill(const T& v) { + T* p = &(*this)[0][0][0]; + std::fill(p, p + sizeof(*this) / sizeof(*p), v); + } + + void update(T& entry, int bonus, const int D, const int W) { + + assert(abs(bonus) <= D); // Ensure range is [-W * D, W * D] + assert(abs(W * D) < (std::numeric_limits::max)()); // Ensure we don't overflow + + entry += bonus * W - entry * abs(bonus) / D; + + assert(abs(entry) <= W * D); + } +}; + /// ButterflyBoards are 2 tables (one for each color) indexed by the move's from /// and to squares, see chessprogramming.wikispaces.com/Butterfly+Boards typedef StatBoards ButterflyBoards; @@ -54,6 +76,9 @@ typedef StatBoards ButterflyBoards; /// PieceToBoards are addressed by a move's [piece][to] information typedef StatBoards PieceToBoards; +/// CapturePieceToBoards are addressed by a move's [piece][to][captured piece type] information +typedef StatCubes CapturePieceToBoards; + /// ButterflyHistory records how often quiet moves have been successful or /// unsuccessful during the current search, and is used for reduction and move /// ordering decisions. It uses ButterflyBoards as backing store. @@ -72,6 +97,14 @@ struct PieceToHistory : public PieceToBoards { } }; +/// CapturePieceToHistory is like PieceToHistory, but is based on CapturePieceToBoards +struct CapturePieceToHistory : public CapturePieceToBoards { + + void update(Piece pc, Square to, PieceType captured, int bonus) { + StatCubes::update((*this)[pc][to][captured], bonus, 324, 2); + } +}; + /// CounterMoveHistory stores counter moves indexed by [piece][to] of the previous /// move, see chessprogramming.wikispaces.com/Countermove+Heuristic typedef StatBoards CounterMoveHistory; @@ -93,9 +126,9 @@ class MovePicker { public: MovePicker(const MovePicker&) = delete; MovePicker& operator=(const MovePicker&) = delete; - MovePicker(const Position&, Move, Value); - MovePicker(const Position&, Move, Depth, const ButterflyHistory*, Square); - MovePicker(const Position&, Move, Depth, const ButterflyHistory*, const PieceToHistory**, Move, Move*); + MovePicker(const Position&, Move, Value, const CapturePieceToHistory*); + MovePicker(const Position&, Move, Depth, const ButterflyHistory*, const CapturePieceToHistory*, Square); + MovePicker(const Position&, Move, Depth, const ButterflyHistory*, const CapturePieceToHistory*, const PieceToHistory**, Move, Move*); Move next_move(bool skipQuiets = false); private: @@ -105,8 +138,9 @@ class MovePicker { const Position& pos; const ButterflyHistory* mainHistory; + const CapturePieceToHistory* captureHistory; const PieceToHistory** contHistory; - Move ttMove, countermove, killers[2]; + Move ttMove, countermove, killers[4]; ExtMove *cur, *endMoves, *endBadCaptures; int stage; Square recaptureSquare; diff --git a/Engines/Linux32/mcbrain/src/pawns.cpp b/Engines/Linux32/mcbrain/src/pawns.cpp index 98811e7..3e5c2ed 100644 --- a/Engines/Linux32/mcbrain/src/pawns.cpp +++ b/Engines/Linux32/mcbrain/src/pawns.cpp @@ -1,22 +1,23 @@ /* - Stockfish, a UCI chess playing engine derived from Glaurung 2.1 - Copyright (C) 2004-2008 Tord Romstad (Glaurung author) - Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2017 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad - - Stockfish is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Stockfish is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ + McBrain, a UCI chess playing engine derived from Stockfish and Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) + Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + + McBrain is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + McBrain is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ #include #include @@ -31,11 +32,11 @@ namespace { #define V Value #define S(mg, eg) make_score(mg, eg) - // Isolated pawn penalty by opposed flag - const Score Isolated[] = { S(27, 30), S(13, 18) }; + // Isolated pawn penalty + const Score Isolated = S(13, 18); - // Backward pawn penalty by opposed flag - const Score Backward[] = { S(40, 26), S(24, 12) }; + // Backward pawn penalty + const Score Backward = S(24, 12); // Connected pawn bonus by opposed, phalanx, #support and rank Score Connected[2][2][3][RANK_NB]; @@ -43,38 +44,36 @@ namespace { // Doubled pawn penalty const Score Doubled = S(18, 38); - // Lever bonus by rank - const Score Lever[RANK_NB] = { - S( 0, 0), S( 0, 0), S(0, 0), S(0, 0), - S(17, 16), S(33, 32), S(0, 0), S(0, 0) - }; - - // Weakness of our pawn shelter in front of the king by [distance from edge][rank]. + // Weakness of our pawn shelter in front of the king by [isKingFile][distance from edge][rank]. // RANK_1 = 0 is used for files where we have no pawns or our pawn is behind our king. - const Value ShelterWeakness[][RANK_NB] = { - { V(100), V(20), V(10), V(46), V(82), V( 86), V( 98) }, - { V(116), V( 4), V(28), V(87), V(94), V(108), V(104) }, - { V(109), V( 1), V(59), V(87), V(62), V( 91), V(116) }, - { V( 75), V(12), V(43), V(59), V(90), V( 84), V(112) } + const Value ShelterWeakness[][int(FILE_NB) / 2][RANK_NB] = { + { { V( 97), V(17), V( 9), V(44), V( 84), V( 87), V( 99) }, // Not On King file + { V(106), V( 6), V(33), V(86), V( 87), V(104), V(112) }, + { V(101), V( 2), V(65), V(98), V( 58), V( 89), V(115) }, + { V( 73), V( 7), V(54), V(73), V( 84), V( 83), V(111) } }, + { { V(104), V(20), V( 6), V(27), V( 86), V( 93), V( 82) }, // On King file + { V(123), V( 9), V(34), V(96), V(112), V( 88), V( 75) }, + { V(120), V(25), V(65), V(91), V( 66), V( 78), V(117) }, + { V( 81), V( 2), V(47), V(63), V( 94), V( 93), V(104) } } }; // Danger of enemy pawns moving toward our king by [type][distance from edge][rank]. - // For the unopposed and unblocked cases, RANK_1 = 0 is used when opponent has no pawn - // on the given file, or their pawn is behind our king. + // For the unopposed and unblocked cases, RANK_1 = 0 is used when opponent has + // no pawn on the given file, or their pawn is behind our king. const Value StormDanger[][4][RANK_NB] = { - { { V( 0), V(-290), V(-274), V(57), V(41) }, //BlockedByKing + { { V( 0), V(-290), V(-274), V(57), V(41) }, // BlockedByKing { V( 0), V( 60), V( 144), V(39), V(13) }, { V( 0), V( 65), V( 141), V(41), V(34) }, { V( 0), V( 53), V( 127), V(56), V(14) } }, - { { V( 4), V( 73), V( 132), V(46), V(31) }, //Unopposed + { { V( 4), V( 73), V( 132), V(46), V(31) }, // Unopposed { V( 1), V( 64), V( 143), V(26), V(13) }, { V( 1), V( 47), V( 110), V(44), V(24) }, { V( 0), V( 72), V( 127), V(50), V(31) } }, - { { V( 0), V( 0), V( 79), V(23), V( 1) }, //BlockedByPawn + { { V( 0), V( 0), V( 79), V(23), V( 1) }, // BlockedByPawn { V( 0), V( 0), V( 148), V(27), V( 2) }, { V( 0), V( 0), V( 161), V(16), V( 1) }, { V( 0), V( 0), V( 171), V(22), V(15) } }, - { { V(22), V( 45), V( 104), V(62), V( 6) }, //Unblocked + { { V(22), V( 45), V( 104), V(62), V( 6) }, // Unblocked { V(31), V( 30), V( 99), V(39), V(19) }, { V(23), V( 29), V( 96), V(41), V(15) }, { V(21), V( 23), V( 116), V(41), V(15) } } @@ -90,10 +89,10 @@ namespace { template Score evaluate(const Position& pos, Pawns::Entry* e) { - const Color Them = (Us == WHITE ? BLACK : WHITE); - const Square Up = (Us == WHITE ? NORTH : SOUTH); - const Square Right = (Us == WHITE ? NORTH_EAST : SOUTH_WEST); - const Square Left = (Us == WHITE ? NORTH_WEST : SOUTH_EAST); + const Color Them = (Us == WHITE ? BLACK : WHITE); + const Direction Up = (Us == WHITE ? NORTH : SOUTH); + const Direction Right = (Us == WHITE ? NORTH_EAST : SOUTH_WEST); + const Direction Left = (Us == WHITE ? NORTH_WEST : SOUTH_EAST); Bitboard b, neighbours, stoppers, doubled, supported, phalanx; Bitboard lever, leverPush; @@ -105,7 +104,7 @@ namespace { Bitboard ourPawns = pos.pieces( Us, PAWN); Bitboard theirPawns = pos.pieces(Them, PAWN); - e->passedPawns[Us] = e->pawnAttacksSpan[Us] = 0; + e->passedPawns[Us] = e->pawnAttacksSpan[Us] = e->weakUnopposed[Us] = 0; e->semiopenFiles[Us] = 0xFF; e->kingSquares[Us] = SQ_NONE; e->pawnAttacks[Us] = shift(ourPawns) | shift(ourPawns); @@ -160,7 +159,7 @@ namespace { e->passedPawns[Us] |= s; else if ( stoppers == SquareBB[s + Up] - && relative_rank(Us, s) >= RANK_4) + && relative_rank(Us, s) >= RANK_5) { b = shift(supported) & ~theirPawns; while (b) @@ -170,19 +169,16 @@ namespace { // Score this pawn if (supported | phalanx) - score += Connected[opposed][!!phalanx][popcount(supported)][relative_rank(Us, s)]; + score += Connected[opposed][bool(phalanx)][popcount(supported)][relative_rank(Us, s)]; else if (!neighbours) - score -= Isolated[opposed]; + score -= Isolated, e->weakUnopposed[Us] += !opposed; else if (backward) - score -= Backward[opposed]; + score -= Backward, e->weakUnopposed[Us] += !opposed; if (doubled && !supported) score -= Doubled; - - if (lever) - score += Lever[relative_rank(Us, s)]; } return score; @@ -250,7 +246,7 @@ Value Entry::shelter_storm(const Position& pos, Square ksq) { Value safety = MaxSafetyBonus; File center = std::max(FILE_B, std::min(FILE_G, file_of(ksq))); - for (File f = center - File(1); f <= center + File(1); ++f) + for (File f = File(center - 1); f <= File(center + 1); ++f) { b = ourPawns & file_bb(f); Rank rkUs = b ? relative_rank(Us, backmost_sq(Us, b)) : RANK_1; @@ -258,8 +254,8 @@ Value Entry::shelter_storm(const Position& pos, Square ksq) { b = theirPawns & file_bb(f); Rank rkThem = b ? relative_rank(Us, frontmost_sq(Them, b)) : RANK_1; - int d = std::min(f, FILE_H - f); - safety -= ShelterWeakness[d][rkUs] + int d = std::min(f, ~f); + safety -= ShelterWeakness[f == file_of(ksq)][d][rkUs] + StormDanger [f == file_of(ksq) && rkThem == relative_rank(Us, ksq) + 1 ? BlockedByKing : rkUs == RANK_1 ? Unopposed : diff --git a/Engines/Linux32/mcbrain/src/pawns.h b/Engines/Linux32/mcbrain/src/pawns.h index 15b0b77..e834e18 100644 --- a/Engines/Linux32/mcbrain/src/pawns.h +++ b/Engines/Linux32/mcbrain/src/pawns.h @@ -1,22 +1,23 @@ /* - Stockfish, a UCI chess playing engine derived from Glaurung 2.1 - Copyright (C) 2004-2008 Tord Romstad (Glaurung author) - Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2017 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad - - Stockfish is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Stockfish is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ + McBrain, a UCI chess playing engine derived from Stockfish and Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) + Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) + Copyright (C) 2017-218 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + + McBrain is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + McBrain is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ #ifndef PAWNS_H_INCLUDED #define PAWNS_H_INCLUDED @@ -37,6 +38,7 @@ struct Entry { Bitboard pawn_attacks(Color c) const { return pawnAttacks[c]; } Bitboard passed_pawns(Color c) const { return passedPawns[c]; } Bitboard pawn_attacks_span(Color c) const { return pawnAttacksSpan[c]; } + int weak_unopposed(Color c) const { return weakUnopposed[c]; } int pawn_asymmetry() const { return asymmetry; } int open_files() const { return openFiles; } @@ -49,7 +51,7 @@ struct Entry { } int pawns_on_same_color_squares(Color c, Square s) const { - return pawnsOnSquares[c][!!(DarkSquares & s)]; + return pawnsOnSquares[c][bool(DarkSquares & s)]; } template @@ -71,6 +73,7 @@ struct Entry { Bitboard pawnAttacksSpan[COLOR_NB]; Square kingSquares[COLOR_NB]; Score kingSafety[COLOR_NB]; + int weakUnopposed[COLOR_NB]; int castlingRights[COLOR_NB]; int semiopenFiles[COLOR_NB]; int pawnsOnSquares[COLOR_NB][COLOR_NB]; // [color][light/dark squares] diff --git a/Engines/Linux32/mcbrain/src/polybook.cpp b/Engines/Linux32/mcbrain/src/polybook.cpp new file mode 100644 index 0000000..9aaacb4 --- /dev/null +++ b/Engines/Linux32/mcbrain/src/polybook.cpp @@ -0,0 +1,737 @@ +/* + McBrain, a UCI chess playing engine derived from Stockfish and Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) + Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + + McBrain is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + McBrain is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ +// polybook.cpp was written by Thomas Ziproth +/* +BrainFish, a UCI chess playing engine derived from Stockfish +Copyright (C) 2016-2017 Thomas Zipproth + +BrainFish is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +BrainFish is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "polybook.h" +#include "uci.h" +#include "movegen.h" +#include "thread.h" +#include +#include "misc.h" +#include + +PolyBook polybook; // global PolyBook + +using namespace std; + +// Random numbers from PolyGlot, used to compute book hash keys +const union { + uint64_t PolyGlotRandoms[781]; + struct { + uint64_t psq[12][64]; // [piece][square] + uint64_t castle[4]; // [castle right] + uint64_t enpassant[8]; // [file] + uint64_t turn; + } Zobrist; +} PG = { { + 0x9D39247E33776D41ULL, 0x2AF7398005AAA5C7ULL, 0x44DB015024623547ULL, + 0x9C15F73E62A76AE2ULL, 0x75834465489C0C89ULL, 0x3290AC3A203001BFULL, + 0x0FBBAD1F61042279ULL, 0xE83A908FF2FB60CAULL, 0x0D7E765D58755C10ULL, + 0x1A083822CEAFE02DULL, 0x9605D5F0E25EC3B0ULL, 0xD021FF5CD13A2ED5ULL, + 0x40BDF15D4A672E32ULL, 0x011355146FD56395ULL, 0x5DB4832046F3D9E5ULL, + 0x239F8B2D7FF719CCULL, 0x05D1A1AE85B49AA1ULL, 0x679F848F6E8FC971ULL, + 0x7449BBFF801FED0BULL, 0x7D11CDB1C3B7ADF0ULL, 0x82C7709E781EB7CCULL, + 0xF3218F1C9510786CULL, 0x331478F3AF51BBE6ULL, 0x4BB38DE5E7219443ULL, + 0xAA649C6EBCFD50FCULL, 0x8DBD98A352AFD40BULL, 0x87D2074B81D79217ULL, + 0x19F3C751D3E92AE1ULL, 0xB4AB30F062B19ABFULL, 0x7B0500AC42047AC4ULL, + 0xC9452CA81A09D85DULL, 0x24AA6C514DA27500ULL, 0x4C9F34427501B447ULL, + 0x14A68FD73C910841ULL, 0xA71B9B83461CBD93ULL, 0x03488B95B0F1850FULL, + 0x637B2B34FF93C040ULL, 0x09D1BC9A3DD90A94ULL, 0x3575668334A1DD3BULL, + 0x735E2B97A4C45A23ULL, 0x18727070F1BD400BULL, 0x1FCBACD259BF02E7ULL, + 0xD310A7C2CE9B6555ULL, 0xBF983FE0FE5D8244ULL, 0x9F74D14F7454A824ULL, + 0x51EBDC4AB9BA3035ULL, 0x5C82C505DB9AB0FAULL, 0xFCF7FE8A3430B241ULL, + 0x3253A729B9BA3DDEULL, 0x8C74C368081B3075ULL, 0xB9BC6C87167C33E7ULL, + 0x7EF48F2B83024E20ULL, 0x11D505D4C351BD7FULL, 0x6568FCA92C76A243ULL, + 0x4DE0B0F40F32A7B8ULL, 0x96D693460CC37E5DULL, 0x42E240CB63689F2FULL, + 0x6D2BDCDAE2919661ULL, 0x42880B0236E4D951ULL, 0x5F0F4A5898171BB6ULL, + 0x39F890F579F92F88ULL, 0x93C5B5F47356388BULL, 0x63DC359D8D231B78ULL, + 0xEC16CA8AEA98AD76ULL, 0x5355F900C2A82DC7ULL, 0x07FB9F855A997142ULL, + 0x5093417AA8A7ED5EULL, 0x7BCBC38DA25A7F3CULL, 0x19FC8A768CF4B6D4ULL, + 0x637A7780DECFC0D9ULL, 0x8249A47AEE0E41F7ULL, 0x79AD695501E7D1E8ULL, + 0x14ACBAF4777D5776ULL, 0xF145B6BECCDEA195ULL, 0xDABF2AC8201752FCULL, + 0x24C3C94DF9C8D3F6ULL, 0xBB6E2924F03912EAULL, 0x0CE26C0B95C980D9ULL, + 0xA49CD132BFBF7CC4ULL, 0xE99D662AF4243939ULL, 0x27E6AD7891165C3FULL, + 0x8535F040B9744FF1ULL, 0x54B3F4FA5F40D873ULL, 0x72B12C32127FED2BULL, + 0xEE954D3C7B411F47ULL, 0x9A85AC909A24EAA1ULL, 0x70AC4CD9F04F21F5ULL, + 0xF9B89D3E99A075C2ULL, 0x87B3E2B2B5C907B1ULL, 0xA366E5B8C54F48B8ULL, + 0xAE4A9346CC3F7CF2ULL, 0x1920C04D47267BBDULL, 0x87BF02C6B49E2AE9ULL, + 0x092237AC237F3859ULL, 0xFF07F64EF8ED14D0ULL, 0x8DE8DCA9F03CC54EULL, + 0x9C1633264DB49C89ULL, 0xB3F22C3D0B0B38EDULL, 0x390E5FB44D01144BULL, + 0x5BFEA5B4712768E9ULL, 0x1E1032911FA78984ULL, 0x9A74ACB964E78CB3ULL, + 0x4F80F7A035DAFB04ULL, 0x6304D09A0B3738C4ULL, 0x2171E64683023A08ULL, + 0x5B9B63EB9CEFF80CULL, 0x506AACF489889342ULL, 0x1881AFC9A3A701D6ULL, + 0x6503080440750644ULL, 0xDFD395339CDBF4A7ULL, 0xEF927DBCF00C20F2ULL, + 0x7B32F7D1E03680ECULL, 0xB9FD7620E7316243ULL, 0x05A7E8A57DB91B77ULL, + 0xB5889C6E15630A75ULL, 0x4A750A09CE9573F7ULL, 0xCF464CEC899A2F8AULL, + 0xF538639CE705B824ULL, 0x3C79A0FF5580EF7FULL, 0xEDE6C87F8477609DULL, + 0x799E81F05BC93F31ULL, 0x86536B8CF3428A8CULL, 0x97D7374C60087B73ULL, + 0xA246637CFF328532ULL, 0x043FCAE60CC0EBA0ULL, 0x920E449535DD359EULL, + 0x70EB093B15B290CCULL, 0x73A1921916591CBDULL, 0x56436C9FE1A1AA8DULL, + 0xEFAC4B70633B8F81ULL, 0xBB215798D45DF7AFULL, 0x45F20042F24F1768ULL, + 0x930F80F4E8EB7462ULL, 0xFF6712FFCFD75EA1ULL, 0xAE623FD67468AA70ULL, + 0xDD2C5BC84BC8D8FCULL, 0x7EED120D54CF2DD9ULL, 0x22FE545401165F1CULL, + 0xC91800E98FB99929ULL, 0x808BD68E6AC10365ULL, 0xDEC468145B7605F6ULL, + 0x1BEDE3A3AEF53302ULL, 0x43539603D6C55602ULL, 0xAA969B5C691CCB7AULL, + 0xA87832D392EFEE56ULL, 0x65942C7B3C7E11AEULL, 0xDED2D633CAD004F6ULL, + 0x21F08570F420E565ULL, 0xB415938D7DA94E3CULL, 0x91B859E59ECB6350ULL, + 0x10CFF333E0ED804AULL, 0x28AED140BE0BB7DDULL, 0xC5CC1D89724FA456ULL, + 0x5648F680F11A2741ULL, 0x2D255069F0B7DAB3ULL, 0x9BC5A38EF729ABD4ULL, + 0xEF2F054308F6A2BCULL, 0xAF2042F5CC5C2858ULL, 0x480412BAB7F5BE2AULL, + 0xAEF3AF4A563DFE43ULL, 0x19AFE59AE451497FULL, 0x52593803DFF1E840ULL, + 0xF4F076E65F2CE6F0ULL, 0x11379625747D5AF3ULL, 0xBCE5D2248682C115ULL, + 0x9DA4243DE836994FULL, 0x066F70B33FE09017ULL, 0x4DC4DE189B671A1CULL, + 0x51039AB7712457C3ULL, 0xC07A3F80C31FB4B4ULL, 0xB46EE9C5E64A6E7CULL, + 0xB3819A42ABE61C87ULL, 0x21A007933A522A20ULL, 0x2DF16F761598AA4FULL, + 0x763C4A1371B368FDULL, 0xF793C46702E086A0ULL, 0xD7288E012AEB8D31ULL, + 0xDE336A2A4BC1C44BULL, 0x0BF692B38D079F23ULL, 0x2C604A7A177326B3ULL, + 0x4850E73E03EB6064ULL, 0xCFC447F1E53C8E1BULL, 0xB05CA3F564268D99ULL, + 0x9AE182C8BC9474E8ULL, 0xA4FC4BD4FC5558CAULL, 0xE755178D58FC4E76ULL, + 0x69B97DB1A4C03DFEULL, 0xF9B5B7C4ACC67C96ULL, 0xFC6A82D64B8655FBULL, + 0x9C684CB6C4D24417ULL, 0x8EC97D2917456ED0ULL, 0x6703DF9D2924E97EULL, + 0xC547F57E42A7444EULL, 0x78E37644E7CAD29EULL, 0xFE9A44E9362F05FAULL, + 0x08BD35CC38336615ULL, 0x9315E5EB3A129ACEULL, 0x94061B871E04DF75ULL, + 0xDF1D9F9D784BA010ULL, 0x3BBA57B68871B59DULL, 0xD2B7ADEEDED1F73FULL, + 0xF7A255D83BC373F8ULL, 0xD7F4F2448C0CEB81ULL, 0xD95BE88CD210FFA7ULL, + 0x336F52F8FF4728E7ULL, 0xA74049DAC312AC71ULL, 0xA2F61BB6E437FDB5ULL, + 0x4F2A5CB07F6A35B3ULL, 0x87D380BDA5BF7859ULL, 0x16B9F7E06C453A21ULL, + 0x7BA2484C8A0FD54EULL, 0xF3A678CAD9A2E38CULL, 0x39B0BF7DDE437BA2ULL, + 0xFCAF55C1BF8A4424ULL, 0x18FCF680573FA594ULL, 0x4C0563B89F495AC3ULL, + 0x40E087931A00930DULL, 0x8CFFA9412EB642C1ULL, 0x68CA39053261169FULL, + 0x7A1EE967D27579E2ULL, 0x9D1D60E5076F5B6FULL, 0x3810E399B6F65BA2ULL, + 0x32095B6D4AB5F9B1ULL, 0x35CAB62109DD038AULL, 0xA90B24499FCFAFB1ULL, + 0x77A225A07CC2C6BDULL, 0x513E5E634C70E331ULL, 0x4361C0CA3F692F12ULL, + 0xD941ACA44B20A45BULL, 0x528F7C8602C5807BULL, 0x52AB92BEB9613989ULL, + 0x9D1DFA2EFC557F73ULL, 0x722FF175F572C348ULL, 0x1D1260A51107FE97ULL, + 0x7A249A57EC0C9BA2ULL, 0x04208FE9E8F7F2D6ULL, 0x5A110C6058B920A0ULL, + 0x0CD9A497658A5698ULL, 0x56FD23C8F9715A4CULL, 0x284C847B9D887AAEULL, + 0x04FEABFBBDB619CBULL, 0x742E1E651C60BA83ULL, 0x9A9632E65904AD3CULL, + 0x881B82A13B51B9E2ULL, 0x506E6744CD974924ULL, 0xB0183DB56FFC6A79ULL, + 0x0ED9B915C66ED37EULL, 0x5E11E86D5873D484ULL, 0xF678647E3519AC6EULL, + 0x1B85D488D0F20CC5ULL, 0xDAB9FE6525D89021ULL, 0x0D151D86ADB73615ULL, + 0xA865A54EDCC0F019ULL, 0x93C42566AEF98FFBULL, 0x99E7AFEABE000731ULL, + 0x48CBFF086DDF285AULL, 0x7F9B6AF1EBF78BAFULL, 0x58627E1A149BBA21ULL, + 0x2CD16E2ABD791E33ULL, 0xD363EFF5F0977996ULL, 0x0CE2A38C344A6EEDULL, + 0x1A804AADB9CFA741ULL, 0x907F30421D78C5DEULL, 0x501F65EDB3034D07ULL, + 0x37624AE5A48FA6E9ULL, 0x957BAF61700CFF4EULL, 0x3A6C27934E31188AULL, + 0xD49503536ABCA345ULL, 0x088E049589C432E0ULL, 0xF943AEE7FEBF21B8ULL, + 0x6C3B8E3E336139D3ULL, 0x364F6FFA464EE52EULL, 0xD60F6DCEDC314222ULL, + 0x56963B0DCA418FC0ULL, 0x16F50EDF91E513AFULL, 0xEF1955914B609F93ULL, + 0x565601C0364E3228ULL, 0xECB53939887E8175ULL, 0xBAC7A9A18531294BULL, + 0xB344C470397BBA52ULL, 0x65D34954DAF3CEBDULL, 0xB4B81B3FA97511E2ULL, + 0xB422061193D6F6A7ULL, 0x071582401C38434DULL, 0x7A13F18BBEDC4FF5ULL, + 0xBC4097B116C524D2ULL, 0x59B97885E2F2EA28ULL, 0x99170A5DC3115544ULL, + 0x6F423357E7C6A9F9ULL, 0x325928EE6E6F8794ULL, 0xD0E4366228B03343ULL, + 0x565C31F7DE89EA27ULL, 0x30F5611484119414ULL, 0xD873DB391292ED4FULL, + 0x7BD94E1D8E17DEBCULL, 0xC7D9F16864A76E94ULL, 0x947AE053EE56E63CULL, + 0xC8C93882F9475F5FULL, 0x3A9BF55BA91F81CAULL, 0xD9A11FBB3D9808E4ULL, + 0x0FD22063EDC29FCAULL, 0xB3F256D8ACA0B0B9ULL, 0xB03031A8B4516E84ULL, + 0x35DD37D5871448AFULL, 0xE9F6082B05542E4EULL, 0xEBFAFA33D7254B59ULL, + 0x9255ABB50D532280ULL, 0xB9AB4CE57F2D34F3ULL, 0x693501D628297551ULL, + 0xC62C58F97DD949BFULL, 0xCD454F8F19C5126AULL, 0xBBE83F4ECC2BDECBULL, + 0xDC842B7E2819E230ULL, 0xBA89142E007503B8ULL, 0xA3BC941D0A5061CBULL, + 0xE9F6760E32CD8021ULL, 0x09C7E552BC76492FULL, 0x852F54934DA55CC9ULL, + 0x8107FCCF064FCF56ULL, 0x098954D51FFF6580ULL, 0x23B70EDB1955C4BFULL, + 0xC330DE426430F69DULL, 0x4715ED43E8A45C0AULL, 0xA8D7E4DAB780A08DULL, + 0x0572B974F03CE0BBULL, 0xB57D2E985E1419C7ULL, 0xE8D9ECBE2CF3D73FULL, + 0x2FE4B17170E59750ULL, 0x11317BA87905E790ULL, 0x7FBF21EC8A1F45ECULL, + 0x1725CABFCB045B00ULL, 0x964E915CD5E2B207ULL, 0x3E2B8BCBF016D66DULL, + 0xBE7444E39328A0ACULL, 0xF85B2B4FBCDE44B7ULL, 0x49353FEA39BA63B1ULL, + 0x1DD01AAFCD53486AULL, 0x1FCA8A92FD719F85ULL, 0xFC7C95D827357AFAULL, + 0x18A6A990C8B35EBDULL, 0xCCCB7005C6B9C28DULL, 0x3BDBB92C43B17F26ULL, + 0xAA70B5B4F89695A2ULL, 0xE94C39A54A98307FULL, 0xB7A0B174CFF6F36EULL, + 0xD4DBA84729AF48ADULL, 0x2E18BC1AD9704A68ULL, 0x2DE0966DAF2F8B1CULL, + 0xB9C11D5B1E43A07EULL, 0x64972D68DEE33360ULL, 0x94628D38D0C20584ULL, + 0xDBC0D2B6AB90A559ULL, 0xD2733C4335C6A72FULL, 0x7E75D99D94A70F4DULL, + 0x6CED1983376FA72BULL, 0x97FCAACBF030BC24ULL, 0x7B77497B32503B12ULL, + 0x8547EDDFB81CCB94ULL, 0x79999CDFF70902CBULL, 0xCFFE1939438E9B24ULL, + 0x829626E3892D95D7ULL, 0x92FAE24291F2B3F1ULL, 0x63E22C147B9C3403ULL, + 0xC678B6D860284A1CULL, 0x5873888850659AE7ULL, 0x0981DCD296A8736DULL, + 0x9F65789A6509A440ULL, 0x9FF38FED72E9052FULL, 0xE479EE5B9930578CULL, + 0xE7F28ECD2D49EECDULL, 0x56C074A581EA17FEULL, 0x5544F7D774B14AEFULL, + 0x7B3F0195FC6F290FULL, 0x12153635B2C0CF57ULL, 0x7F5126DBBA5E0CA7ULL, + 0x7A76956C3EAFB413ULL, 0x3D5774A11D31AB39ULL, 0x8A1B083821F40CB4ULL, + 0x7B4A38E32537DF62ULL, 0x950113646D1D6E03ULL, 0x4DA8979A0041E8A9ULL, + 0x3BC36E078F7515D7ULL, 0x5D0A12F27AD310D1ULL, 0x7F9D1A2E1EBE1327ULL, + 0xDA3A361B1C5157B1ULL, 0xDCDD7D20903D0C25ULL, 0x36833336D068F707ULL, + 0xCE68341F79893389ULL, 0xAB9090168DD05F34ULL, 0x43954B3252DC25E5ULL, + 0xB438C2B67F98E5E9ULL, 0x10DCD78E3851A492ULL, 0xDBC27AB5447822BFULL, + 0x9B3CDB65F82CA382ULL, 0xB67B7896167B4C84ULL, 0xBFCED1B0048EAC50ULL, + 0xA9119B60369FFEBDULL, 0x1FFF7AC80904BF45ULL, 0xAC12FB171817EEE7ULL, + 0xAF08DA9177DDA93DULL, 0x1B0CAB936E65C744ULL, 0xB559EB1D04E5E932ULL, + 0xC37B45B3F8D6F2BAULL, 0xC3A9DC228CAAC9E9ULL, 0xF3B8B6675A6507FFULL, + 0x9FC477DE4ED681DAULL, 0x67378D8ECCEF96CBULL, 0x6DD856D94D259236ULL, + 0xA319CE15B0B4DB31ULL, 0x073973751F12DD5EULL, 0x8A8E849EB32781A5ULL, + 0xE1925C71285279F5ULL, 0x74C04BF1790C0EFEULL, 0x4DDA48153C94938AULL, + 0x9D266D6A1CC0542CULL, 0x7440FB816508C4FEULL, 0x13328503DF48229FULL, + 0xD6BF7BAEE43CAC40ULL, 0x4838D65F6EF6748FULL, 0x1E152328F3318DEAULL, + 0x8F8419A348F296BFULL, 0x72C8834A5957B511ULL, 0xD7A023A73260B45CULL, + 0x94EBC8ABCFB56DAEULL, 0x9FC10D0F989993E0ULL, 0xDE68A2355B93CAE6ULL, + 0xA44CFE79AE538BBEULL, 0x9D1D84FCCE371425ULL, 0x51D2B1AB2DDFB636ULL, + 0x2FD7E4B9E72CD38CULL, 0x65CA5B96B7552210ULL, 0xDD69A0D8AB3B546DULL, + 0x604D51B25FBF70E2ULL, 0x73AA8A564FB7AC9EULL, 0x1A8C1E992B941148ULL, + 0xAAC40A2703D9BEA0ULL, 0x764DBEAE7FA4F3A6ULL, 0x1E99B96E70A9BE8BULL, + 0x2C5E9DEB57EF4743ULL, 0x3A938FEE32D29981ULL, 0x26E6DB8FFDF5ADFEULL, + 0x469356C504EC9F9DULL, 0xC8763C5B08D1908CULL, 0x3F6C6AF859D80055ULL, + 0x7F7CC39420A3A545ULL, 0x9BFB227EBDF4C5CEULL, 0x89039D79D6FC5C5CULL, + 0x8FE88B57305E2AB6ULL, 0xA09E8C8C35AB96DEULL, 0xFA7E393983325753ULL, + 0xD6B6D0ECC617C699ULL, 0xDFEA21EA9E7557E3ULL, 0xB67C1FA481680AF8ULL, + 0xCA1E3785A9E724E5ULL, 0x1CFC8BED0D681639ULL, 0xD18D8549D140CAEAULL, + 0x4ED0FE7E9DC91335ULL, 0xE4DBF0634473F5D2ULL, 0x1761F93A44D5AEFEULL, + 0x53898E4C3910DA55ULL, 0x734DE8181F6EC39AULL, 0x2680B122BAA28D97ULL, + 0x298AF231C85BAFABULL, 0x7983EED3740847D5ULL, 0x66C1A2A1A60CD889ULL, + 0x9E17E49642A3E4C1ULL, 0xEDB454E7BADC0805ULL, 0x50B704CAB602C329ULL, + 0x4CC317FB9CDDD023ULL, 0x66B4835D9EAFEA22ULL, 0x219B97E26FFC81BDULL, + 0x261E4E4C0A333A9DULL, 0x1FE2CCA76517DB90ULL, 0xD7504DFA8816EDBBULL, + 0xB9571FA04DC089C8ULL, 0x1DDC0325259B27DEULL, 0xCF3F4688801EB9AAULL, + 0xF4F5D05C10CAB243ULL, 0x38B6525C21A42B0EULL, 0x36F60E2BA4FA6800ULL, + 0xEB3593803173E0CEULL, 0x9C4CD6257C5A3603ULL, 0xAF0C317D32ADAA8AULL, + 0x258E5A80C7204C4BULL, 0x8B889D624D44885DULL, 0xF4D14597E660F855ULL, + 0xD4347F66EC8941C3ULL, 0xE699ED85B0DFB40DULL, 0x2472F6207C2D0484ULL, + 0xC2A1E7B5B459AEB5ULL, 0xAB4F6451CC1D45ECULL, 0x63767572AE3D6174ULL, + 0xA59E0BD101731A28ULL, 0x116D0016CB948F09ULL, 0x2CF9C8CA052F6E9FULL, + 0x0B090A7560A968E3ULL, 0xABEEDDB2DDE06FF1ULL, 0x58EFC10B06A2068DULL, + 0xC6E57A78FBD986E0ULL, 0x2EAB8CA63CE802D7ULL, 0x14A195640116F336ULL, + 0x7C0828DD624EC390ULL, 0xD74BBE77E6116AC7ULL, 0x804456AF10F5FB53ULL, + 0xEBE9EA2ADF4321C7ULL, 0x03219A39EE587A30ULL, 0x49787FEF17AF9924ULL, + 0xA1E9300CD8520548ULL, 0x5B45E522E4B1B4EFULL, 0xB49C3B3995091A36ULL, + 0xD4490AD526F14431ULL, 0x12A8F216AF9418C2ULL, 0x001F837CC7350524ULL, + 0x1877B51E57A764D5ULL, 0xA2853B80F17F58EEULL, 0x993E1DE72D36D310ULL, + 0xB3598080CE64A656ULL, 0x252F59CF0D9F04BBULL, 0xD23C8E176D113600ULL, + 0x1BDA0492E7E4586EULL, 0x21E0BD5026C619BFULL, 0x3B097ADAF088F94EULL, + 0x8D14DEDB30BE846EULL, 0xF95CFFA23AF5F6F4ULL, 0x3871700761B3F743ULL, + 0xCA672B91E9E4FA16ULL, 0x64C8E531BFF53B55ULL, 0x241260ED4AD1E87DULL, + 0x106C09B972D2E822ULL, 0x7FBA195410E5CA30ULL, 0x7884D9BC6CB569D8ULL, + 0x0647DFEDCD894A29ULL, 0x63573FF03E224774ULL, 0x4FC8E9560F91B123ULL, + 0x1DB956E450275779ULL, 0xB8D91274B9E9D4FBULL, 0xA2EBEE47E2FBFCE1ULL, + 0xD9F1F30CCD97FB09ULL, 0xEFED53D75FD64E6BULL, 0x2E6D02C36017F67FULL, + 0xA9AA4D20DB084E9BULL, 0xB64BE8D8B25396C1ULL, 0x70CB6AF7C2D5BCF0ULL, + 0x98F076A4F7A2322EULL, 0xBF84470805E69B5FULL, 0x94C3251F06F90CF3ULL, + 0x3E003E616A6591E9ULL, 0xB925A6CD0421AFF3ULL, 0x61BDD1307C66E300ULL, + 0xBF8D5108E27E0D48ULL, 0x240AB57A8B888B20ULL, 0xFC87614BAF287E07ULL, + 0xEF02CDD06FFDB432ULL, 0xA1082C0466DF6C0AULL, 0x8215E577001332C8ULL, + 0xD39BB9C3A48DB6CFULL, 0x2738259634305C14ULL, 0x61CF4F94C97DF93DULL, + 0x1B6BACA2AE4E125BULL, 0x758F450C88572E0BULL, 0x959F587D507A8359ULL, + 0xB063E962E045F54DULL, 0x60E8ED72C0DFF5D1ULL, 0x7B64978555326F9FULL, + 0xFD080D236DA814BAULL, 0x8C90FD9B083F4558ULL, 0x106F72FE81E2C590ULL, + 0x7976033A39F7D952ULL, 0xA4EC0132764CA04BULL, 0x733EA705FAE4FA77ULL, + 0xB4D8F77BC3E56167ULL, 0x9E21F4F903B33FD9ULL, 0x9D765E419FB69F6DULL, + 0xD30C088BA61EA5EFULL, 0x5D94337FBFAF7F5BULL, 0x1A4E4822EB4D7A59ULL, + 0x6FFE73E81B637FB3ULL, 0xDDF957BC36D8B9CAULL, 0x64D0E29EEA8838B3ULL, + 0x08DD9BDFD96B9F63ULL, 0x087E79E5A57D1D13ULL, 0xE328E230E3E2B3FBULL, + 0x1C2559E30F0946BEULL, 0x720BF5F26F4D2EAAULL, 0xB0774D261CC609DBULL, + 0x443F64EC5A371195ULL, 0x4112CF68649A260EULL, 0xD813F2FAB7F5C5CAULL, + 0x660D3257380841EEULL, 0x59AC2C7873F910A3ULL, 0xE846963877671A17ULL, + 0x93B633ABFA3469F8ULL, 0xC0C0F5A60EF4CDCFULL, 0xCAF21ECD4377B28CULL, + 0x57277707199B8175ULL, 0x506C11B9D90E8B1DULL, 0xD83CC2687A19255FULL, + 0x4A29C6465A314CD1ULL, 0xED2DF21216235097ULL, 0xB5635C95FF7296E2ULL, + 0x22AF003AB672E811ULL, 0x52E762596BF68235ULL, 0x9AEBA33AC6ECC6B0ULL, + 0x944F6DE09134DFB6ULL, 0x6C47BEC883A7DE39ULL, 0x6AD047C430A12104ULL, + 0xA5B1CFDBA0AB4067ULL, 0x7C45D833AFF07862ULL, 0x5092EF950A16DA0BULL, + 0x9338E69C052B8E7BULL, 0x455A4B4CFE30E3F5ULL, 0x6B02E63195AD0CF8ULL, + 0x6B17B224BAD6BF27ULL, 0xD1E0CCD25BB9C169ULL, 0xDE0C89A556B9AE70ULL, + 0x50065E535A213CF6ULL, 0x9C1169FA2777B874ULL, 0x78EDEFD694AF1EEDULL, + 0x6DC93D9526A50E68ULL, 0xEE97F453F06791EDULL, 0x32AB0EDB696703D3ULL, + 0x3A6853C7E70757A7ULL, 0x31865CED6120F37DULL, 0x67FEF95D92607890ULL, + 0x1F2B1D1F15F6DC9CULL, 0xB69E38A8965C6B65ULL, 0xAA9119FF184CCCF4ULL, + 0xF43C732873F24C13ULL, 0xFB4A3D794A9A80D2ULL, 0x3550C2321FD6109CULL, + 0x371F77E76BB8417EULL, 0x6BFA9AAE5EC05779ULL, 0xCD04F3FF001A4778ULL, + 0xE3273522064480CAULL, 0x9F91508BFFCFC14AULL, 0x049A7F41061A9E60ULL, + 0xFCB6BE43A9F2FE9BULL, 0x08DE8A1C7797DA9BULL, 0x8F9887E6078735A1ULL, + 0xB5B4071DBFC73A66ULL, 0x230E343DFBA08D33ULL, 0x43ED7F5A0FAE657DULL, + 0x3A88A0FBBCB05C63ULL, 0x21874B8B4D2DBC4FULL, 0x1BDEA12E35F6A8C9ULL, + 0x53C065C6C8E63528ULL, 0xE34A1D250E7A8D6BULL, 0xD6B04D3B7651DD7EULL, + 0x5E90277E7CB39E2DULL, 0x2C046F22062DC67DULL, 0xB10BB459132D0A26ULL, + 0x3FA9DDFB67E2F199ULL, 0x0E09B88E1914F7AFULL, 0x10E8B35AF3EEAB37ULL, + 0x9EEDECA8E272B933ULL, 0xD4C718BC4AE8AE5FULL, 0x81536D601170FC20ULL, + 0x91B534F885818A06ULL, 0xEC8177F83F900978ULL, 0x190E714FADA5156EULL, + 0xB592BF39B0364963ULL, 0x89C350C893AE7DC1ULL, 0xAC042E70F8B383F2ULL, + 0xB49B52E587A1EE60ULL, 0xFB152FE3FF26DA89ULL, 0x3E666E6F69AE2C15ULL, + 0x3B544EBE544C19F9ULL, 0xE805A1E290CF2456ULL, 0x24B33C9D7ED25117ULL, + 0xE74733427B72F0C1ULL, 0x0A804D18B7097475ULL, 0x57E3306D881EDB4FULL, + 0x4AE7D6A36EB5DBCBULL, 0x2D8D5432157064C8ULL, 0xD1E649DE1E7F268BULL, + 0x8A328A1CEDFE552CULL, 0x07A3AEC79624C7DAULL, 0x84547DDC3E203C94ULL, + 0x990A98FD5071D263ULL, 0x1A4FF12616EEFC89ULL, 0xF6F7FD1431714200ULL, + 0x30C05B1BA332F41CULL, 0x8D2636B81555A786ULL, 0x46C9FEB55D120902ULL, + 0xCCEC0A73B49C9921ULL, 0x4E9D2827355FC492ULL, 0x19EBB029435DCB0FULL, + 0x4659D2B743848A2CULL, 0x963EF2C96B33BE31ULL, 0x74F85198B05A2E7DULL, + 0x5A0F544DD2B1FB18ULL, 0x03727073C2E134B1ULL, 0xC7F6AA2DE59AEA61ULL, + 0x352787BAA0D7C22FULL, 0x9853EAB63B5E0B35ULL, 0xABBDCDD7ED5C0860ULL, + 0xCF05DAF5AC8D77B0ULL, 0x49CAD48CEBF4A71EULL, 0x7A4C10EC2158C4A6ULL, + 0xD9E92AA246BF719EULL, 0x13AE978D09FE5557ULL, 0x730499AF921549FFULL, + 0x4E4B705B92903BA4ULL, 0xFF577222C14F0A3AULL, 0x55B6344CF97AAFAEULL, + 0xB862225B055B6960ULL, 0xCAC09AFBDDD2CDB4ULL, 0xDAF8E9829FE96B5FULL, + 0xB5FDFC5D3132C498ULL, 0x310CB380DB6F7503ULL, 0xE87FBB46217A360EULL, + 0x2102AE466EBB1148ULL, 0xF8549E1A3AA5E00DULL, 0x07A69AFDCC42261AULL, + 0xC4C118BFE78FEAAEULL, 0xF9F4892ED96BD438ULL, 0x1AF3DBE25D8F45DAULL, + 0xF5B4B0B0D2DEEEB4ULL, 0x962ACEEFA82E1C84ULL, 0x046E3ECAAF453CE9ULL, + 0xF05D129681949A4CULL, 0x964781CE734B3C84ULL, 0x9C2ED44081CE5FBDULL, + 0x522E23F3925E319EULL, 0x177E00F9FC32F791ULL, 0x2BC60A63A6F3B3F2ULL, + 0x222BBFAE61725606ULL, 0x486289DDCC3D6780ULL, 0x7DC7785B8EFDFC80ULL, + 0x8AF38731C02BA980ULL, 0x1FAB64EA29A2DDF7ULL, 0xE4D9429322CD065AULL, + 0x9DA058C67844F20CULL, 0x24C0E332B70019B0ULL, 0x233003B5A6CFE6ADULL, + 0xD586BD01C5C217F6ULL, 0x5E5637885F29BC2BULL, 0x7EBA726D8C94094BULL, + 0x0A56A5F0BFE39272ULL, 0xD79476A84EE20D06ULL, 0x9E4C1269BAA4BF37ULL, + 0x17EFEE45B0DEE640ULL, 0x1D95B0A5FCF90BC6ULL, 0x93CBE0B699C2585DULL, + 0x65FA4F227A2B6D79ULL, 0xD5F9E858292504D5ULL, 0xC2B5A03F71471A6FULL, + 0x59300222B4561E00ULL, 0xCE2F8642CA0712DCULL, 0x7CA9723FBB2E8988ULL, + 0x2785338347F2BA08ULL, 0xC61BB3A141E50E8CULL, 0x150F361DAB9DEC26ULL, + 0x9F6A419D382595F4ULL, 0x64A53DC924FE7AC9ULL, 0x142DE49FFF7A7C3DULL, + 0x0C335248857FA9E7ULL, 0x0A9C32D5EAE45305ULL, 0xE6C42178C4BBB92EULL, + 0x71F1CE2490D20B07ULL, 0xF1BCC3D275AFE51AULL, 0xE728E8C83C334074ULL, + 0x96FBF83A12884624ULL, 0x81A1549FD6573DA5ULL, 0x5FA7867CAF35E149ULL, + 0x56986E2EF3ED091BULL, 0x917F1DD5F8886C61ULL, 0xD20D8C88C8FFE65FULL, + 0x31D71DCE64B2C310ULL, 0xF165B587DF898190ULL, 0xA57E6339DD2CF3A0ULL, + 0x1EF6E6DBB1961EC9ULL, 0x70CC73D90BC26E24ULL, 0xE21A6B35DF0C3AD7ULL, + 0x003A93D8B2806962ULL, 0x1C99DED33CB890A1ULL, 0xCF3145DE0ADD4289ULL, + 0xD0E4427A5514FB72ULL, 0x77C621CC9FB3A483ULL, 0x67A34DAC4356550BULL, + 0xF8D626AAAF278509ULL + } }; + + +PolyBook::PolyBook() +{ + keycount = 0; + polyhash = NULL; + + use_best_book_move = true; + max_book_depth = 255; + book_depth_count = 0; + + last_position = 0; + akt_position = 0; + last_anz_pieces = 0; + akt_anz_pieces = 0; + search_counter = 0; + + do_search = true; + enabled = false; +} + + +PolyBook::~PolyBook() +{ + if (polyhash != NULL) + delete[]polyhash; +} + + +void PolyBook::init(const std::string& bookfile) +{ + if (bookfile.length() == 0) return; + const char *fnam = bookfile.c_str(); + + if (strcmp(fnam, "") == 0) + { + enabled = false; + return; + } + + FILE *fpt = fopen(fnam, "rb"); + if (fpt == NULL) + { + sync_cout << "info string Could not open " << bookfile << sync_endl; + enabled = false; + return; + } + + if (polyhash != NULL) + { + free(polyhash); + polyhash = NULL; + } + + fseek(fpt, 0L, SEEK_END); + int filesize = ftell(fpt); + fseek(fpt, 0L, SEEK_SET); + + keycount = filesize / 16; + polyhash = new PolyHash[keycount]; + + fread(polyhash, 1, filesize, fpt); + fclose(fpt); + + for (int i = 0; i= max_book_depth) + return m1; + + Key key = polyglot_key(pos); + + int n = find_first_key(key); + + if (n < 1) + { + search_counter++; + if (search_counter > 4) + { + // stop searching after 4 times not in the book till position changes + // according to check_do_search() + do_search = false; + search_counter = 0; + book_depth_count = 0; + } + + return m1; + } + + book_depth_count++; + + int idx1; + if (use_best_book_move) + idx1 = index_best; + else + idx1 = index_rand; + + m1 = pg_move_to_sf_move(pos, polyhash[idx1].move); + + if (!pos.is_draw(64)) return m1; + if (n == 1) return m1; + + // special case draw position and 2 moves available + + if (!check_draw(m1, pos)) + return m1; + + int idx2 = index_first; + if (idx1 == idx2) + idx2 = index_first + 1; + Move m2 = pg_move_to_sf_move(pos, polyhash[idx2].move); + + if (!check_draw(m2, pos)) + return m2; + + return MOVE_NONE; +} + + +Key PolyBook::polyglot_key(const Position & pos) +{ + Key key = 0; + Bitboard b = pos.pieces(); + + while (b) + { + Square s = pop_lsb(&b); + Piece p = pos.piece_on(s); + + // PolyGlot pieces are: BP = 0, WP = 1, BN = 2, ... BK = 10, WK = 11 + key ^= PG.Zobrist.psq[2 * (type_of(p) - 1) + (color_of(p) == WHITE)][s]; + } + + b = pos.can_castle(ANY_CASTLING); + + while (b) + key ^= PG.Zobrist.castle[pop_lsb(&b)]; + + if (pos.ep_square() != SQ_NONE) + key ^= PG.Zobrist.enpassant[file_of(pos.ep_square())]; + + if (pos.side_to_move() == WHITE) + key ^= PG.Zobrist.turn; + + return key; +} + +// A PolyGlot book move is encoded as follows: +// +// bit 0- 5: destination square (from 0 to 63) +// bit 6-11: origin square (from 0 to 63) +// bit 12-14: promotion piece (from KNIGHT == 1 to QUEEN == 4) +// +// Castling moves follow "king captures rook" representation. So in case book +// move is a promotion we have to convert to our representation, in all the +// other cases we can directly compare with a Move after having masked out +// the special Move's flags (bit 14-15) that are not supported by PolyGlot. +// +// SF: +// bit 0- 5: destination square (from 0 to 63) +// bit 6-11: origin square (from 0 to 63) +// bit 12-13: promotion piece type - 2 (from KNIGHT-2 to QUEEN-2) +// bit 14-15: special move flag: promotion (1), en passant (2), castling (3) +Move PolyBook::pg_move_to_sf_move(const Position & pos, unsigned short pg_move) +{ + Move move = Move(pg_move); + + int pt = (move >> 12) & 7; + if (pt) + return make(from_sq(move), to_sq(move), PieceType(pt + 1)); + + // Add 'special move' flags and verify it is legal + for (const auto& m : MoveList(pos)) + { + if (move == (m.move & (~(3 << 14)))) // compare with MoveType (bit 14-15) masked out + return m; + } + + return MOVE_NONE; +} + + +int PolyBook::find_first_key(uint64_t key) +{ + index_first = -1; + index_count = 0; + index_weight_count = 0; + index_best = -1; + index_rand = -1; + + int start = 0; + int end = keycount; + + for (;;) + { + int mid = (end + start) / 2; + + if (polyhash[mid].key < key) + start = mid; + else + { + if (polyhash[mid].key > key) + end = mid; + else + { + start = max(mid - 4, 0); + end = min(mid + 4, keycount); + } + } + + if (end - start < 9) + break; + } + + for (int i = start; i < end; i++) + { + if (key == polyhash[i].key) + { + index_first = i; + while ((index_first>0) && (key == polyhash[index_first - 1].key)) + index_first--; + return get_key_data(); + } + } + + return -1; +} + + +int PolyBook::get_key_data() +{ + int best_weight = polyhash[index_first].weight; + index_weight_count = best_weight; + uint64_t key = polyhash[index_first].key; + + index_count = 1; + index_best = index_first; + + for (int i = index_first + 1; i best_weight) + { + best_weight = polyhash[i].weight; + index_best = i; + } + } + + int rand_pos = (rand64() % index_weight_count); + int weight_count = 0; + index_rand = index_best; + + for (int i = index_first; i < index_first + index_count; i++) + { + if ((rand_pos >= weight_count) && (rand_pos < weight_count + polyhash[i].weight)) + { + index_rand = i; + break; + } + weight_count += polyhash[i].weight; + } + + return index_count; +} + + +bool PolyBook::check_do_search(const Position & pos) +{ + akt_position = pos.pieces(); + akt_anz_pieces = popcount(akt_position); + + bool pos_changed = false; + + Bitboard b = akt_position ^ last_position; + int n2 = popcount(b); + + if (n2 > 6) pos_changed = true; + if (akt_position == last_position) pos_changed = true; + if (akt_anz_pieces > last_anz_pieces) pos_changed = true; + if (akt_anz_pieces < last_anz_pieces - 2) pos_changed = true; + if (pos.key() == 0xB4D30CD15A43432D) pos_changed = true; + + // reset do_search and book depth counter if + // postion changed more than one move can do or in initial position + if (pos_changed) + { + book_depth_count = 0; + do_search = true; + } + + last_position = akt_position; + last_anz_pieces = akt_anz_pieces; + + return do_search; +} + + +bool PolyBook::check_draw(Move m, Position & pos) +{ + StateInfo st; + + pos.do_move(m, st, pos.gives_check(m)); + bool draw = pos.is_draw(64); + pos.undo_move(m); + + return draw; +} + + +void PolyBook::byteswap_polyhash(PolyHash *ph) +{ + if (is_little_endian()) + { + ph->key = swap_uint64(ph->key); + ph->move = swap_uint16(ph->move); + ph->weight = swap_uint16(ph->weight); + ph->learn = swap_uint32(ph->learn); + } +} + + +uint64_t PolyBook::rand64() +{ + sr ^= sr >> 12, sr ^= sr << 25, sr ^= sr >> 27; + return sr * 2685821657736338717LL; +} + + +bool PolyBook::is_little_endian() +{ + int num = 1; + return (*(uint8_t *)&num == 1); +} + + +uint64_t PolyBook::swap_uint64(uint64_t d) +{ + uint64_t a; + uint8_t *dst = (uint8_t *)&a; + uint8_t *src = (uint8_t *)&d; + + dst[0] = src[7]; + dst[1] = src[6]; + dst[2] = src[5]; + dst[3] = src[4]; + dst[4] = src[3]; + dst[5] = src[2]; + dst[6] = src[1]; + dst[7] = src[0]; + + return a; +} + + +uint32_t PolyBook::swap_uint32(uint32_t d) +{ + uint32_t a; + uint8_t *dst = (uint8_t *)&a; + uint8_t *src = (uint8_t *)&d; + + dst[0] = src[3]; + dst[1] = src[2]; + dst[2] = src[1]; + dst[3] = src[0]; + + return a; +} + + +uint16_t PolyBook::swap_uint16(uint16_t d) +{ + uint16_t a; + uint8_t *dst = (uint8_t *)&a; + uint8_t *src = (uint8_t *)&d; + + dst[0] = src[1]; + dst[1] = src[0]; + + return a; +} + diff --git a/Engines/Linux32/mcbrain/src/polybook.h b/Engines/Linux32/mcbrain/src/polybook.h new file mode 100644 index 0000000..8696eda --- /dev/null +++ b/Engines/Linux32/mcbrain/src/polybook.h @@ -0,0 +1,113 @@ +/* + McBrain, a UCI chess playing engine derived from Stockfish and Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) + Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + + McBrain is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + McBrain is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ +//polybook.h was wriiten by Thomas Zipproth +/* +polybook.h was written by Thomas Zipproth +BrainFish, a UCI chess playing engine derived from Stockfish +Copyright (C) 2016-2018 Thomas Zipproth + +BrainFish is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +BrainFish is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#ifndef POLYBOOK_H_INCLUDED +#define POLYBOOK_H_INCLUDED + +#include "bitboard.h" +#include "position.h" +#include "string.h" + +typedef struct { + uint64_t key; + uint16_t move; + uint16_t weight; + uint32_t learn; +} PolyHash; + +class PolyBook +{ +public: + + PolyBook(); + ~PolyBook(); + + void init(const std::string& bookfile); + void set_best_book_move(bool best_book_move); + void set_book_depth(int book_depth); + + Move probe(Position& pos); + +private: + + Key polyglot_key(const Position& pos); + Move pg_move_to_sf_move(const Position & pos, unsigned short pg_move); + + int find_first_key(uint64_t key); + int get_key_data(); + + bool check_do_search(const Position & pos); + bool check_draw(Move m, Position& pos); + + void byteswap_polyhash(PolyHash *ph); + uint64_t rand64(); + + bool is_little_endian(); + uint64_t swap_uint64(uint64_t d); + uint32_t swap_uint32(uint32_t d); + uint16_t swap_uint16(uint16_t d); + + int keycount; + PolyHash *polyhash; + + bool use_best_book_move; + int max_book_depth; + int book_depth_count; + + int index_first; + int index_count; + int index_best; + int index_rand; + int index_weight_count; + + uint64_t sr; + + Bitboard last_position; + Bitboard akt_position; + int last_anz_pieces; + int akt_anz_pieces; + int search_counter; + + bool enabled, do_search; +}; + +extern PolyBook polybook; + +#endif // #ifndef POLYBOOK_H_INCLUDED diff --git a/Engines/Linux32/mcbrain/src/position.cpp b/Engines/Linux32/mcbrain/src/position.cpp index aa43740..acef66b 100644 --- a/Engines/Linux32/mcbrain/src/position.cpp +++ b/Engines/Linux32/mcbrain/src/position.cpp @@ -1,22 +1,23 @@ /* - Stockfish, a UCI chess playing engine derived from Glaurung 2.1 - Copyright (C) 2004-2008 Tord Romstad (Glaurung author) - Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2017 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad - - Stockfish is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Stockfish is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ + McBrain, a UCI chess playing engine derived from Stockfish and Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) + Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + + McBrain is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + McBrain is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ #include #include @@ -211,10 +212,10 @@ Position& Position::set(const string& fenStr, bool isChess960, StateInfo* si, Th while ((ss >> token) && !isspace(token)) { if (isdigit(token)) - sq += Square(token - '0'); // Advance the given number of files + sq += (token - '0') * EAST; // Advance the given number of files else if (token == '/') - sq -= Square(16); + sq += 2 * SOUTH; else if ((idx = PieceToChar.find(token)) != string::npos) { @@ -272,7 +273,7 @@ Position& Position::set(const string& fenStr, bool isChess960, StateInfo* si, Th // 5-6. Halfmove clock and fullmove number ss >> std::skipws >> st->rule50 >> gamePly; - // Convert from fullmove starting from 1 to ply starting from 0, + // Convert from fullmove starting from 1 to gamePly starting from 0, // handle also common incorrect FEN with fullmove = 0. gamePly = std::max(2 * (gamePly - 1), 0) + (sideToMove == BLACK); @@ -787,7 +788,7 @@ void Position::do_move(Move m, StateInfo& newSt, bool givesCheck) { if ( (int(to) ^ int(from)) == 16 && (attacks_from(to - pawn_push(us), us) & pieces(them, PAWN))) { - st->epSquare = (from + to) / 2; + st->epSquare = to - pawn_push(us); k ^= Zobrist::enpassant[file_of(st->epSquare)]; } @@ -1003,22 +1004,22 @@ bool Position::see_ge(Move m, Value threshold) const { Value balance; // Values of the pieces taken by us minus opponent's ones Bitboard occupied, stmAttackers; - balance = PieceValue[MG][piece_on(to)]; - occupied = 0; + // The opponent may be able to recapture so this is the best result + // we can hope for. + balance = PieceValue[MG][piece_on(to)] - threshold; - if (balance < threshold) + if (balance < VALUE_ZERO) return false; - if (nextVictim == KING) - return true; - + // Now assume the worst possible result: that the opponent can + // capture our piece for free. balance -= PieceValue[MG][nextVictim]; - if (balance >= threshold) + if (balance >= VALUE_ZERO) // Always true if nextVictim == KING return true; - bool relativeStm = true; // True if the opponent is to move - occupied ^= pieces() ^ from ^ to; + bool opponentToMove = true; + occupied = pieces() ^ from ^ to; // Find all attackers to the destination square, with the moving piece removed, // but possibly an X-ray attacker added behind it. @@ -1026,6 +1027,12 @@ bool Position::see_ge(Move m, Value threshold) const { while (true) { + // The balance is negative only because we assumed we could win + // the last piece for free. We are truly winning only if we can + // win the last piece _cheaply enough_. Test if we can actually + // do this otherwise "give up". + assert(balance < VALUE_ZERO); + stmAttackers = attackers & pieces(stm); // Don't allow pinned pieces to attack pieces except the king as long all @@ -1033,25 +1040,40 @@ bool Position::see_ge(Move m, Value threshold) const { if (!(st->pinnersForKing[stm] & ~occupied)) stmAttackers &= ~st->blockersForKing[stm]; + // If we have no more attackers we must give up if (!stmAttackers) - return relativeStm; + break; // Locate and remove the next least valuable attacker nextVictim = min_attacker(byTypeBB, to, stmAttackers, occupied, attackers); if (nextVictim == KING) - return relativeStm == bool(attackers & pieces(~stm)); - - balance += relativeStm ? PieceValue[MG][nextVictim] - : -PieceValue[MG][nextVictim]; + { + // Our only attacker is the king. If the opponent still has + // attackers we must give up. Otherwise we make the move and + // (having no more attackers) the opponent must give up. + if (!(attackers & pieces(~stm))) + opponentToMove = !opponentToMove; + break; + } - relativeStm = !relativeStm; + // Assume the opponent can win the next piece for free and switch sides + balance += PieceValue[MG][nextVictim]; + opponentToMove = !opponentToMove; - if (relativeStm == (balance >= threshold)) - return relativeStm; + // If balance is negative after receiving a free piece then give up + if (balance < VALUE_ZERO) + break; + // Complete the process of switching sides. The first line swaps + // all negative numbers with non-negative numbers. The compiler + // probably knows that it is just the bitwise negation ~balance. + balance = -balance-1; stm = ~stm; } + + // If the opponent gave up we win, otherwise we lose. + return opponentToMove; } @@ -1075,18 +1097,16 @@ bool Position::is_draw(int ply) const { { stp = stp->previous->previous; - // At root position ply is 1, so return a draw score if a position - // repeats once earlier but strictly after the root, or repeats twice - // before or at the root. + // Return a draw score if a position repeats once earlier but strictly + // after the root, or repeats twice before or at the root. if ( stp->key == st->key - && ++cnt + (ply - 1 > i) == 2) + && ++cnt + (ply > i) == 2) return true; } return false; } - /// Position::flip() flips position with the white and black sides reversed. This /// is only useful for debugging e.g. for finding evaluation symmetry bugs. diff --git a/Engines/Linux32/mcbrain/src/position.h b/Engines/Linux32/mcbrain/src/position.h index fa812ef..c809549 100644 --- a/Engines/Linux32/mcbrain/src/position.h +++ b/Engines/Linux32/mcbrain/src/position.h @@ -1,22 +1,23 @@ /* - Stockfish, a UCI chess playing engine derived from Glaurung 2.1 - Copyright (C) 2004-2008 Tord Romstad (Glaurung author) - Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2017 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad - - Stockfish is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Stockfish is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ + McBrain, a UCI chess playing engine derived from Stockfish and Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) + Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + + McBrain is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + McBrain is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ #ifndef POSITION_H_INCLUDED #define POSITION_H_INCLUDED diff --git a/Engines/Linux32/mcbrain/src/psqt.cpp b/Engines/Linux32/mcbrain/src/psqt.cpp index 0d16b1c..55a2e72 100644 --- a/Engines/Linux32/mcbrain/src/psqt.cpp +++ b/Engines/Linux32/mcbrain/src/psqt.cpp @@ -1,22 +1,23 @@ /* - Stockfish, a UCI chess playing engine derived from Glaurung 2.1 - Copyright (C) 2004-2008 Tord Romstad (Glaurung author) - Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2017 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad - - Stockfish is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Stockfish is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ + McBrain, a UCI chess playing engine derived from Stockfish and Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) + Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + + McBrain is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + McBrain is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ #include @@ -116,7 +117,7 @@ void init() { for (Square s = SQ_A1; s <= SQ_H8; ++s) { - File f = std::min(file_of(s), FILE_H - file_of(s)); + File f = std::min(file_of(s), ~file_of(s)); psq[ pc][ s] = v + Bonus[pc][rank_of(s)][f]; psq[~pc][~s] = -psq[pc][s]; } diff --git a/Engines/Linux32/mcbrain/src/search.cpp b/Engines/Linux32/mcbrain/src/search.cpp index 7805768..92753c0 100644 --- a/Engines/Linux32/mcbrain/src/search.cpp +++ b/Engines/Linux32/mcbrain/src/search.cpp @@ -1,35 +1,38 @@ /* - Stockfish, a UCI chess playing engine derived from Glaurung 2.1 - Copyright (C) 2004-2008 Tord Romstad (Glaurung author) - Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2017 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad - - Stockfish is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Stockfish is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ + McBrain, a UCI chess playing engine derived from Stockfish and Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) + Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + + McBrain is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + McBrain is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ #include #include #include #include // For std::memset +#include //for sleep //MichaelB7 #include #include -#include +#include // ELO MichaelB7 #include "evaluate.h" #include "misc.h" #include "movegen.h" #include "movepick.h" +#include "polybook.h" // Cerebellum #include "position.h" #include "search.h" #include "timeman.h" @@ -37,7 +40,6 @@ #include "tt.h" #include "uci.h" #include "tbprobe.h" -#include "tzbook.h" namespace Search { @@ -69,19 +71,16 @@ namespace { const int skipPhase[] = { 0, 1, 0, 1, 2, 3, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 7 }; // Razoring and futility margin based on depth - // razor_margin[0] is unused as long as depth >= ONE_PLY in search - const int razor_margin[] = { 0, 570, 603, 554 }; - Value futility_margin(Depth d) { return Value(150 * d / ONE_PLY); } + const int razor_margin = 600; + //Value futility_margin(Depth d) { return Value(150 * d / ONE_PLY); } + Value futility_margin(Depth d) { return Value(16 * d^2 / ONE_PLY + 200 * d / ONE_PLY);} // idea from JD Watson, code modfied by MichaelB7 // Futility and reductions lookup tables, initialized at startup int FutilityMoveCounts[2][16]; // [improving][depth] - int Reductions[2][2][64][64]; // [pv][improving][depth][moveNumber] - - // Threshold used for countermoves based pruning - const int CounterMovePruneThreshold = 0; + int Reductions[2][2][128][96]; // [pv][improving][depth][moveNumber] //MichaelB7 template Depth reduction(bool i, Depth d, int mn) { - return Reductions[PvNode][i][std::min(d / ONE_PLY, 63)][std::min(mn, 63)] * ONE_PLY; + return Reductions[PvNode][i][std::min(d / ONE_PLY, 127)][std::min(mn, 95)] * ONE_PLY; //MichaelB7 } // History and stats update bonus, based on depth @@ -92,61 +91,18 @@ namespace { // Skill structure is used to implement strength limit struct Skill { - Skill(int l) : level(l) {} + explicit Skill(int l) : level(l) {} bool enabled() const { return level < 20; } bool time_to_pick(Depth depth) const { return depth / ONE_PLY == 1 + level; } - Move best_move(size_t multiPV) { return best ? best : pick_best(multiPV); } Move pick_best(size_t multiPV); int level; Move best = MOVE_NONE; }; - - // EasyMoveManager structure is used to detect an 'easy move'. When the PV is stable - // across multiple search iterations, we can quickly return the best move. - struct EasyMoveManager { - - void clear() { - stableCnt = 0; - expectedPosKey = 0; - pv[0] = pv[1] = pv[2] = MOVE_NONE; - } - - Move get(Key key) const { - return expectedPosKey == key ? pv[2] : MOVE_NONE; - } - - void update(Position& pos, const std::vector& newPv) { - - assert(newPv.size() >= 3); - - // Keep track of how many times in a row the 3rd ply remains stable - stableCnt = (newPv[2] == pv[2]) ? stableCnt + 1 : 0; - - if (!std::equal(newPv.begin(), newPv.begin() + 3, pv)) - { - std::copy(newPv.begin(), newPv.begin() + 3, pv); - - StateInfo st[2]; - pos.do_move(newPv[0], st[0]); - pos.do_move(newPv[1], st[1]); - expectedPosKey = pos.key(); - pos.undo_move(newPv[1]); - pos.undo_move(newPv[0]); - } - } - - Key expectedPosKey; - int stableCnt; - Move pv[3]; - }; - - EasyMoveManager EasyMove; - Value DrawValue[COLOR_NB]; int tactical; - bool bruteForce, limitStrength, noNULL; + bool bookEnabled, bruteForce, limitStrength, noNULL; template Value search(Position& pos, Stack* ss, Value alpha, Value beta, Depth depth, bool cutNode, bool skipEarlyPruning); @@ -159,6 +115,8 @@ namespace { void update_pv(Move* pv, Move move, Move* childPv); void update_continuation_histories(Stack* ss, Piece pc, Square to, int bonus); void update_stats(const Position& pos, Stack* ss, Move move, Move* quiets, int quietsCnt, int bonus); + void update_capture_stats(const Position& pos, Move move, Move* captures, int captureCnt, int bonus); + bool pv_is_draw(Position& pos); // perft() is our utility to verify move generation. All the leaf nodes up // to the given depth are generated and counted, and the sum is returned. @@ -194,10 +152,10 @@ namespace { void Search::init() { for (int imp = 0; imp <= 1; ++imp) - for (int d = 1; d < 64; ++d) - for (int mc = 1; mc < 64; ++mc) + for (int d = 1; d < 128; ++d) // MichaelB7 + for (int mc = 1; mc < 96; ++mc) // MichaelB7 { - double r = 0.2 * d * (1.0 - exp(-9.0 / d)) * log(mc); + double r = log(d) * log(mc) / 1.89 ; Reductions[NonPV][imp][d][mc] = int(std::round(r)); Reductions[PV][imp][d][mc] = std::max(Reductions[NonPV][imp][d][mc] - 1, 0); @@ -223,21 +181,7 @@ void Search::clear() { Time.availableNodes = 0; TT.clear(); - - for (Thread* th : Threads) - { - th->counterMoves.fill(MOVE_NONE); - th->mainHistory.fill(0); - - for (auto& to : th->contHistory) - for (auto& h : to) - h.fill(0); - - th->contHistory[NO_PIECE][0].fill(CounterMovePruneThreshold - 1); - } - - Threads.main()->callsCnt = 0; - Threads.main()->previousScore = VALUE_INFINITE; + Threads.clear(); } @@ -257,20 +201,24 @@ void MainThread::search() { limitStrength = Options["UCI_LimitStrength"]; noNULL = Options["No_Null_Moves"]; tactical = Options["Tactical"]; + bookEnabled = Options["Book_Enabled"]; Color us = rootPos.side_to_move(); Time.init(Limits, us, rootPos.game_ply()); TT.new_search(); - if (Options["Respect"]){ - int respect = Options["Respect"] * PawnValueEg / 100; // From centipawns - DrawValue[ us] = VALUE_DRAW + Value(respect); - DrawValue[~us] = VALUE_DRAW - Value(respect);} - - else if (Options["Respect White POV"]) { - int respectPOV = Options["Respect White POV"] * PawnValueEg / 100; // From centipawns - DrawValue[WHITE] = VALUE_DRAW + Value(respectPOV); - DrawValue[BLACK] = VALUE_DRAW - Value(respectPOV);} + int contempt = Options["Contempt"] * PawnValueEg / 100; // From centipawns + + // In analysis mode, adjust contempt in accordance with user preference + if (Limits.infinite || Options["UCI_AnalyseMode"]) + contempt = Options["Analysis Contempt"] == "Off" ? 0 + : Options["Analysis Contempt"] == "White" && us == BLACK ? -contempt + : Options["Analysis Contempt"] == "Black" && us == WHITE ? -contempt + : contempt; // contempt remains with the side to move + + // Eval::Contempt is from white's point of view + Eval::Contempt = (us == WHITE ? make_score(contempt, contempt / 2) + : -make_score(contempt, contempt / 2)); if (rootMoves.empty()) { @@ -280,26 +228,22 @@ void MainThread::search() { << sync_endl; } else - { - Move bookMove = MOVE_NONE; - - if (!Limits.infinite && !Limits.mate) - bookMove = tzbook.probe2(rootPos); - - if (bookMove && std::count(rootMoves.begin(), rootMoves.end(), bookMove)) - { - std::swap(rootMoves[0], *std::find(rootMoves.begin(), rootMoves.end(), bookMove)); - for (Thread* th : Threads) - if (th != this) - std::swap(th->rootMoves[0], *std::find(th->rootMoves.begin(), th->rootMoves.end(), bookMove)); - } - else - { + { + Move bookMove = MOVE_NONE; + + if (!Limits.infinite && !Limits.mate) + bookMove = polybook.probe(rootPos); + + if (bookEnabled && bookMove && std::count(rootMoves.begin(), rootMoves.end(), bookMove)) + { + for (Thread* th : Threads) + std::swap(th->rootMoves[0], *std::find(th->rootMoves.begin(), th->rootMoves.end(), bookMove)); + } + else + { if (limitStrength) { - int uci_elo = (Options["UCI_ELO"]); - std::mt19937 gen(now()); std::uniform_int_distribution dis(-33, 33); int rand = dis(gen); @@ -311,18 +255,13 @@ void MainThread::search() { Limits.nodes *= std::max(1,Time.optimum()/1000 ); std::this_thread::sleep_for (std::chrono::seconds(Time.optimum()/1000) * (1 - Limits.nodes/724000)); } - for (Thread* th : Threads) - if (th != this) - th->start_searching(); - - Thread::search(); // Let's start searching! - } - } - - // When playing in 'nodes as time' mode, subtract the searched nodes from - // the available ones before exiting. - if (Limits.npmsec) - Time.availableNodes += Limits.inc[us] - Threads.nodes_searched(); + for (Thread* th : Threads) + if (th != this) + th->start_searching(); + + Thread::search(); // Let's start searching! + } + } // When we reach the maximum depth, we can arrive here without a raise of // Threads.stop. However, if we are pondering or in an infinite search, @@ -343,10 +282,14 @@ void MainThread::search() { if (th != this) th->wait_for_search_finished(); + // When playing in 'nodes as time' mode, subtract the searched nodes from + // the available ones before exiting. + if (Limits.npmsec) + Time.availableNodes += Limits.inc[us] - Threads.nodes_searched(); + // Check if there are threads with a better score than main thread Thread* bestThread = this; - if ( !this->easyMovePlayed - && Options["MultiPV"] == 1 + if ( Options["MultiPV"] == 1 && !Limits.depth && !Skill(Options["Skill Level"]).enabled() && rootMoves[0].pv[0] != MOVE_NONE) @@ -384,28 +327,30 @@ void MainThread::search() { void Thread::search() { - Stack stack[MAX_PLY+7], *ss = stack+4; // To allow referencing (ss-4) and (ss+2) - Value bestValue, alpha, beta, delta; - Move easyMove = MOVE_NONE; + Stack stack[MAX_PLY+7], *ss = stack+4; // To reference from (ss-4) to (ss+2) + Value bestValue, alpha, beta, delta1, delta2; + Move lastBestMove = MOVE_NONE; + Depth lastBestMoveDepth = DEPTH_ZERO; MainThread* mainThread = (this == Threads.main() ? Threads.main() : nullptr); + double timeReduction = 1.0; std::memset(ss-4, 0, 7 * sizeof(Stack)); for (int i = 4; i > 0; i--) (ss-i)->contHistory = &this->contHistory[NO_PIECE][0]; // Use as sentinel - bestValue = delta = alpha = -VALUE_INFINITE; + bestValue = delta1 = delta2 = alpha = -VALUE_INFINITE; beta = VALUE_INFINITE; if (mainThread) { - easyMove = EasyMove.get(rootPos.key()); - EasyMove.clear(); - mainThread->easyMovePlayed = mainThread->failedLow = false; + mainThread->failedLow = false; mainThread->bestMoveChanges = 0; } - size_t multiPV = Options["MultiPV"]; + multiPV = Options["MultiPV"]; Skill skill(Options["Skill Level"]); + if (tactical) multiPV = pow(2, tactical); + // When playing with strength handicap enable MultiPV search that we will // use behind the scenes to retrieve a set of possible moves. @@ -413,19 +358,25 @@ void Thread::search() { multiPV = std::max(multiPV, (size_t)4); multiPV = std::min(multiPV, rootMoves.size()); + + // UCI options specify 256 as the max MultiPv option + int consecutiveEarlyExits[257] = {0}; // Iterative deepening loop until requested to stop or the target depth is reached while ( (rootDepth += ONE_PLY) < DEPTH_MAX && !Threads.stop && !(Limits.depth && mainThread && rootDepth / ONE_PLY > Limits.depth)) { - // Distribute search depths across the threads - if (idx) - { - int i = (idx - 1) % 20; - if (((rootDepth / ONE_PLY + rootPos.game_ply() + skipPhase[i]) / skipSize[i]) % 2) - continue; - } + // Distribute search depths across the threads + if (idx) + { + int i = (idx - 1) % 20; + if (idx == Threads.size() - 1 && !ss->excludedMove && rootDepth < 14 * ONE_PLY && rootMoves.size() > 1 && rootPos.see_ge(rootMoves[0].pv[0], VALUE_ZERO + 1)) + ss->excludedMove = rootMoves[0].pv[0]; //lazy_or_stubborn by pb00068 + else + if (((rootDepth / ONE_PLY + rootPos.game_ply() + skipPhase[i]) / skipSize[i]) % 2) + continue; + } // Age out PV variability metric if (mainThread) @@ -445,10 +396,11 @@ void Thread::search() { // Reset aspiration window starting size if (rootDepth >= 5 * ONE_PLY) { - Value prevScore = rootMoves[PVIdx].previousScore; - delta = std::max(Value(int(8.0 + 0.1 * abs(prevScore))), Value(18)); - alpha = std::max(rootMoves[PVIdx].previousScore - delta,-VALUE_INFINITE); - beta = std::min(rootMoves[PVIdx].previousScore + delta, VALUE_INFINITE); + Value prevScore = rootMoves[PVIdx].previousScore; + delta1 = (prevScore < 0) ? Value(int(8.0 + 0.1 * abs(prevScore))) : Value(18); + delta2 = (prevScore > 0) ? Value(int(8.0 + 0.1 * abs(prevScore))) : Value(18); + alpha = std::max(prevScore - delta1,-VALUE_INFINITE); + beta = std::min(prevScore + delta2, VALUE_INFINITE); } // Start with a small aspiration window and, in the case of a fail @@ -464,7 +416,8 @@ void Thread::search() { // and we want to keep the same order for all the moves except the // new PV that goes to the front. Note that in case of MultiPV // search the already searched PV lines are preserved. - std::stable_sort(rootMoves.begin() + PVIdx, rootMoves.end()); + if (PVIdx + 1 == multiPV) + std::stable_sort(rootMoves.begin() + PVIdx, rootMoves.end()); // If search has been stopped, we break immediately. Sorting and // writing PV back to TT is safe because RootMoves is still @@ -485,7 +438,7 @@ void Thread::search() { if (bestValue <= alpha) { beta = (alpha + beta) / 2; - alpha = std::max(bestValue - delta, -VALUE_INFINITE); + alpha = std::max(bestValue - delta1, -VALUE_INFINITE); if (mainThread) { @@ -493,14 +446,20 @@ void Thread::search() { Threads.stopOnPonderhit = false; } } - else if (bestValue >= beta) - beta = std::min(bestValue + delta, VALUE_INFINITE); + + else if ( bestValue >= beta) + beta = std::min(bestValue + delta2, VALUE_INFINITE); //Ivan Ivec + else + { + delta1 += delta1 / 4 + 5; //Ivan Ivec + delta2 += delta2 / 4 + 5; //Ivan Ivec + + assert(alpha >= -VALUE_INFINITE && beta <= VALUE_INFINITE); + + consecutiveEarlyExits[PVIdx] = (bestValue >= beta) ? consecutiveEarlyExits[PVIdx] + 1 : 0; break; - - delta += delta / 4 + 5; - - assert(alpha >= -VALUE_INFINITE && beta <= VALUE_INFINITE); + } } // Sort the PV lines searched so far and update the GUI @@ -514,7 +473,12 @@ void Thread::search() { if (!Threads.stop) completedDepth = rootDepth; - // Has any of the threads found a "mate in x"? + if (rootMoves[0].pv[0] != lastBestMove) { + lastBestMove = rootMoves[0].pv[0]; + lastBestMoveDepth = rootDepth; + } + + // Have we found a "mate in x"? if ( Limits.mate && bestValue >= VALUE_MATE_IN_MAX_PLY && VALUE_MATE - bestValue <= 2 * Limits.mate) @@ -522,14 +486,14 @@ void Thread::search() { if (!mainThread) continue; - +//BEGINS MichaelB7 if (Options["FastPlay"]) - { - if ( Time.elapsed() > Time.optimum() / 256 - && ( abs(bestValue) > 12300 || abs(bestValue) >= VALUE_MATE_IN_MAX_PLY )) - Threads.stop = true; - } - + { + if ( Time.elapsed() > Time.optimum() / 256 + && ( abs(bestValue) > 12300 || abs(bestValue) >= VALUE_MATE_IN_MAX_PLY )) + Threads.stop = true; + } +//ENDS MichaelB7 // If skill level is enabled and time is up, pick a sub-optimal best move if (skill.enabled() && skill.time_to_pick(rootDepth)) skill.pick_best(multiPV); @@ -540,21 +504,29 @@ void Thread::search() { if (!Threads.stop && !Threads.stopOnPonderhit) { // Stop the search if only one legal move is available, or if all - // of the available time has been used, or if we matched an easyMove - // from the previous search and just did a fast verification. + // of the available time has been used const int F[] = { mainThread->failedLow, bestValue - mainThread->previousScore }; - int improvingFactor = std::max(229, std::min(715, 357 + 119 * F[0] - 6 * F[1])); - double unstablePvFactor = 1 + mainThread->bestMoveChanges; - bool doEasyMove = rootMoves[0].pv[0] == easyMove - && mainThread->bestMoveChanges < 0.03 - && Time.elapsed() > Time.optimum() * 5 / 44; + Color us = rootPos.side_to_move(); + bool thinkHard = bestValue == VALUE_DRAW + && Limits.time[us] - Time.elapsed() > Limits.time[~us] + && ::pv_is_draw(rootPos); + + double unstablePvFactor = 1 + mainThread->bestMoveChanges + thinkHard; + + // if the bestMove is stable over several iterations, reduce time for this move, + // the longer the move has been stable, the more. + // Use part of the gained time from a previous stable move for the current move. + timeReduction = 1; + for (int i : {3, 4, 5}) + if (lastBestMoveDepth * i < completedDepth && !thinkHard) + timeReduction *= 1.3; + unstablePvFactor *= std::pow(mainThread->previousTimeReduction, 0.51) / timeReduction; if ( rootMoves.size() == 1 - || Time.elapsed() > Time.optimum() * unstablePvFactor * improvingFactor / 628 - || (mainThread->easyMovePlayed = doEasyMove, doEasyMove)) + || Time.elapsed() > Time.optimum() * unstablePvFactor * improvingFactor / 628) { // If we are allowed to ponder do not stop the search now but // keep pondering until the GUI sends "ponderhit" or "stop". @@ -564,26 +536,18 @@ void Thread::search() { Threads.stop = true; } } - - if (rootMoves[0].pv.size() >= 3) - EasyMove.update(rootPos, rootMoves[0].pv); - else - EasyMove.clear(); } } if (!mainThread) return; - // Clear any candidate easy move that wasn't stable for the last search - // iterations; the second condition prevents consecutive fast moves. - if (EasyMove.stableCnt < 6 || mainThread->easyMovePlayed) - EasyMove.clear(); + mainThread->previousTimeReduction = timeReduction; // If skill level is enabled, swap best PV line with the sub-optimal one if (skill.enabled()) - std::swap(rootMoves[0], *std::find(rootMoves.begin(), - rootMoves.end(), skill.best_move(multiPV))); + std::swap(rootMoves[0], *std::find(rootMoves.begin(), rootMoves.end(), + skill.best ? skill.best : skill.pick_best(multiPV))); } @@ -595,7 +559,7 @@ namespace { Value search(Position& pos, Stack* ss, Value alpha, Value beta, Depth depth, bool cutNode, bool skipEarlyPruning) { const bool PvNode = NT == PV; - const bool rootNode = PvNode && (ss-1)->ply == 0; + const bool rootNode = PvNode && ss->ply == 0; assert(-VALUE_INFINITE <= alpha && alpha < beta && beta <= VALUE_INFINITE); assert(PvNode || (alpha == beta - 1)); @@ -603,7 +567,7 @@ namespace { assert(!(PvNode && cutNode)); assert(depth / ONE_PLY * ONE_PLY == depth); - Move pv[MAX_PLY+1], quietsSearched[64]; + Move pv[MAX_PLY+1], capturesSearched[32], quietsSearched[64]; StateInfo st; TTEntry* tte; Key posKey; @@ -611,19 +575,19 @@ namespace { Depth extension, newDepth; Value bestValue, value, ttValue, eval, maxValue; bool ttHit, inCheck, givesCheck, singularExtensionNode, improving; - bool captureOrPromotion, doFullDepthSearch, moveCountPruning, skipQuiets, ttCapture; + bool captureOrPromotion, doFullDepthSearch, moveCountPruning, skipQuiets, ttCapture, goodCap, pvExact; Piece movedPiece; - int moveCount, quietCount; + int moveCount, captureCount, quietCount; // Step 1. Initialize node Thread* thisThread = pos.this_thread(); inCheck = pos.checkers(); - moveCount = quietCount = ss->moveCount = 0; + moveCount = captureCount = quietCount = ss->moveCount = 0; ss->statScore = 0; bestValue = -VALUE_INFINITE; maxValue = VALUE_INFINITE; - ss->ply = (ss-1)->ply + 1; + (ss + 1)->ply = (ss)->ply + 1; ss->forcedMove = 0; ss->forcingTree = ((ss - 2)->forcingTree && (ss - 2)->forcedMove) // Recursive forcing tree. || (ss->ply == 2 && (ss - 1)->moveCount > 1) // Offensive forcing tree @@ -633,16 +597,15 @@ namespace { if (thisThread == Threads.main()) static_cast(thisThread)->check_time(); - // Used to send selDepth info to GUI - if (PvNode && thisThread->selDepth < ss->ply) - thisThread->selDepth = ss->ply; + // Used to send selDepth info to GUI (selDepth counts from 1, ply from 0) + if (PvNode && thisThread->selDepth < ss->ply + 1) + thisThread->selDepth = ss->ply + 1; if (!rootNode) { // Step 2. Check for aborted search and immediate draw if (Threads.stop.load(std::memory_order_relaxed) || pos.is_draw(ss->ply) || ss->ply >= MAX_PLY) - return ss->ply >= MAX_PLY && !inCheck ? evaluate(pos) - : DrawValue[pos.side_to_move()]; + return ss->ply >= MAX_PLY && !inCheck ? evaluate(pos) : VALUE_DRAW; // Step 3. Mate distance pruning. Even if we mate at the next move our score // would be at best mate_in(ss->ply+1), but if alpha is already bigger because @@ -658,16 +621,17 @@ namespace { assert(0 <= ss->ply && ss->ply < MAX_PLY); + (ss+1)->ply = ss->ply + 1; ss->currentMove = (ss+1)->excludedMove = bestMove = MOVE_NONE; ss->contHistory = &thisThread->contHistory[NO_PIECE][0]; - (ss+2)->killers[0] = (ss+2)->killers[1] = MOVE_NONE; + (ss+2)->killers[0] = (ss+2)->killers[1] = (ss+2)->killers[2] = (ss+2)->killers[3] = MOVE_NONE; Square prevSq = to_sq((ss-1)->currentMove); // Step 4. Transposition table lookup. We don't want the score of a partial // search to overwrite a previous full search TT value, so we use a different // position key in case of an excluded move. excludedMove = ss->excludedMove; - posKey = pos.key() ^ Key(excludedMove); + posKey = pos.key() ^ Key(excludedMove << 16); // isn't a very good hash tte = TT.probe(posKey, ttHit); ttValue = ttHit ? value_from_tt(tte->value(), ss->ply) : VALUE_NONE; ttMove = rootNode ? thisThread->rootMoves[thisThread->PVIdx].pv[0] @@ -688,7 +652,16 @@ namespace { { if (!pos.capture_or_promotion(ttMove)) update_stats(pos, ss, ttMove, nullptr, 0, stat_bonus(depth)); - + else update_capture_stats(pos, ttMove, nullptr, 0, stat_bonus(depth)); + if(type_of(ttMove) == PROMOTION || !pos.see_ge(ttMove, VALUE_ZERO)) + { + if (ss->killers[2] != ttMove) + { + ss->killers[3] = ss->killers[2]; + ss->killers[2] = ttMove; + } + } + // Extra penalty for a quiet TT move in previous ply when it gets refuted if ((ss-1)->moveCount == 1 && !pos.captured_piece()) update_continuation_histories(ss-1, pos.piece_on(prevSq), prevSq, -stat_bonus(depth + ONE_PLY)); @@ -715,7 +688,7 @@ namespace { && !pos.can_castle(ANY_CASTLING)) { TB::ProbeState err; - TB::WDLScore v = Tablebases::probe_wdl(pos, &err); + TB::WDLScore wdl = Tablebases::probe_wdl(pos, &err); if (err != TB::ProbeState::FAIL) { @@ -723,36 +696,30 @@ namespace { int drawScore = TB::UseRule50 ? 1 : 0; - value = v < -drawScore ? -VALUE_MATE + MAX_PLY + ss->ply - : v > drawScore ? VALUE_MATE - MAX_PLY - ss->ply - : VALUE_DRAW + 2 * v * drawScore; + value = wdl < -drawScore ? -VALUE_MATE + MAX_PLY + ss->ply + 1 + : wdl > drawScore ? VALUE_MATE - MAX_PLY - ss->ply - 1 + : VALUE_DRAW + 2 * wdl * drawScore; + + Bound b = wdl < -drawScore ? BOUND_UPPER + : wdl > drawScore ? BOUND_LOWER : BOUND_EXACT; + + if ( b == BOUND_EXACT + || (b == BOUND_LOWER ? value >= beta : value <= alpha)) + { + tte->save(posKey, value_to_tt(value, ss->ply), b, + std::min(DEPTH_MAX - ONE_PLY, depth + 6 * ONE_PLY), + MOVE_NONE, VALUE_NONE, TT.generation()); - if (abs(v) <= drawScore) { - tte->save(posKey, value_to_tt(value, ss->ply), BOUND_EXACT, - depth, MOVE_NONE, VALUE_NONE, TT.generation()); return value; } - else if (v < -drawScore) { - if (alpha >= value) { - tte->save(posKey, value_to_tt(value, ss->ply), - BOUND_UPPER, depth, MOVE_NONE, VALUE_NONE, - TT.generation()); - return value; - } - maxValue = value; - } - else { - if (beta <= value) { - tte->save(posKey, value_to_tt(value, ss->ply), - BOUND_LOWER, depth, MOVE_NONE, VALUE_NONE, - TT.generation()); - return value; - } - bestValue = value; - if (PvNode && bestValue > alpha) - alpha = bestValue; - } + if (PvNode) + { + if (b == BOUND_LOWER) + bestValue = value, alpha = std::max(alpha, bestValue); + else + maxValue = value; + } } } } @@ -785,18 +752,18 @@ namespace { ss->staticEval, TT.generation()); } - if (skipEarlyPruning) + if (skipEarlyPruning || !pos.non_pawn_material(pos.side_to_move())) goto moves_loop; // Step 6. Razoring (skipped when in check) if ( !bruteForce && !PvNode && depth < 4 * ONE_PLY - && eval + razor_margin[depth / ONE_PLY] <= alpha) + && eval + razor_margin <= alpha) { if (depth <= ONE_PLY) return qsearch(pos, ss, alpha, alpha+1); - Value ralpha = alpha - razor_margin[depth / ONE_PLY]; + Value ralpha = alpha - razor_margin; Value v = qsearch(pos, ss, ralpha, ralpha+1); if (v <= ralpha) return v; @@ -806,22 +773,23 @@ namespace { if ( !bruteForce && !rootNode && depth < 7 * ONE_PLY && eval - futility_margin(depth) >= beta - && eval < VALUE_KNOWN_WIN // Do not return unproven wins - && pos.non_pawn_material(pos.side_to_move())) + && eval < VALUE_KNOWN_WIN) // Do not return unproven wins return eval; // Step 8. Null move search with verification search (is omitted in PV nodes) - if ( !noNULL && !PvNode + if ( !PvNode && eval >= beta - && (ss->staticEval >= beta - 35 * (depth / ONE_PLY - 6) || depth >= 13 * ONE_PLY) - && thisThread->selDepth + 3 * ONE_PLY > thisThread->rootDepth - && pos.non_pawn_material(pos.side_to_move()) > (depth > 12 * ONE_PLY) * BishopValueMg) + && ss->staticEval >= beta - int(320 * log(depth / ONE_PLY)) + 500 //Corchess/IIvec + && (((ss-2)->currentMove != MOVE_NULL) || (ss-2)->staticEval >= beta - 36 * depth / ONE_PLY + 225) + && thisThread->selDepth + 3 > thisThread->rootDepth / ONE_PLY // idea from Corchess/IIvec + && (ss->ply >= thisThread->nmp_ply || ss->ply % 2 != thisThread->pair) + && !(MoveList(pos).size() < 4)) //MichaelB7 { assert(eval - beta >= 0); // Null move dynamic reduction based on depth and value - Depth R = ((823 + 67 * depth / ONE_PLY) / 256 + std::min((eval - beta) / PawnValueMg, 3)) * ONE_PLY; + Depth R = (int(2.6 * log(depth / ONE_PLY)) + std::min((eval - beta) / Value(170), 3)) * ONE_PLY; ss->currentMove = MOVE_NULL; ss->contHistory = &thisThread->contHistory[NO_PIECE][0]; @@ -841,8 +809,16 @@ namespace { return nullValue; // Do verification search when searching for mate + R += ONE_PLY; + // disable null move pruning for side to move for the first part of the remaining search tree + int nmp_ply = thisThread->nmp_ply; + int pair = thisThread->pair; + thisThread->nmp_ply = ss->ply + 3 * (depth-R) / 4; + thisThread->pair = (ss->ply % 2) == 0; Value v = depth-R < ONE_PLY ? qsearch(pos, ss, beta-1, beta) : search(pos, ss, beta-1, beta, depth-R, false, true); + thisThread->pair = pair; + thisThread->nmp_ply = nmp_ply; if (v >= beta) return nullValue; @@ -852,7 +828,8 @@ namespace { // Step 9. ProbCut (skipped when in check) // If we have a good enough capture and a reduced search returns a value // much above beta, we can (almost) safely prune the previous move. - if ( !bruteForce && !PvNode + if ( !bruteForce + && !PvNode && depth >= 5 * ONE_PLY && abs(beta) < VALUE_MATE_IN_MAX_PLY) { @@ -860,7 +837,7 @@ namespace { assert(is_ok((ss-1)->currentMove)); - MovePicker mp(pos, ttMove, rbeta - ss->staticEval); + MovePicker mp(pos, ttMove, rbeta - ss->staticEval, &thisThread->captureHistory); while ((move = mp.next_move()) != MOVE_NONE) if (pos.legal(move)) @@ -894,7 +871,7 @@ namespace { const PieceToHistory* contHist[] = { (ss-1)->contHistory, (ss-2)->contHistory, nullptr, (ss-4)->contHistory }; Move countermove = thisThread->counterMoves[pos.piece_on(prevSq)][prevSq]; - MovePicker mp(pos, ttMove, depth, &thisThread->mainHistory, contHist, countermove, ss->killers); + MovePicker mp(pos, ttMove, depth, &thisThread->mainHistory, &thisThread->captureHistory, contHist, countermove, ss->killers); value = bestValue; // Workaround a bogus 'uninitialized' warning under gcc improving = ss->staticEval >= (ss-2)->staticEval /* || ss->staticEval == VALUE_NONE Already implicit in the previous condition */ @@ -909,6 +886,8 @@ namespace { && tte->depth() >= depth - 3 * ONE_PLY; skipQuiets = false; ttCapture = false; + goodCap = false; + pvExact = PvNode && ttHit && tte->bound() == BOUND_EXACT; // Step 11. Loop through moves // Loop through all pseudo-legal moves until no moves remain or a beta cutoff occurs @@ -919,12 +898,20 @@ namespace { if (move == excludedMove) continue; - // At root obey the "searchmoves" option and skip moves not listed in Root - // Move List. As a consequence any illegal move is also skipped. In MultiPV - // mode we also skip PV moves which have been already searched. - if (rootNode && !std::count(thisThread->rootMoves.begin() + thisThread->PVIdx, - thisThread->rootMoves.end(), move)) - continue; + if (rootNode) + { + // At root obey the "searchmoves" option and skip moves not listed in Root + // Move List. As a consequence any illegal move is also skipped. + if (!std::count(thisThread->rootMoves.begin() + thisThread->PVIdx, + thisThread->rootMoves.end(), move)) + continue; + + // In MultiPV mode we not only skip PV moves which have already been searched, + // but also any other move except we have reached the last PV line. + if ( thisThread->PVIdx + 1 < thisThread->multiPV + && move != ttMove) + continue; + } ss->moveCount = ++moveCount; @@ -941,7 +928,7 @@ namespace { movedPiece = pos.moved_piece(move); givesCheck = type_of(move) == NORMAL && !pos.discovered_check_candidates() - ? pos.check_squares(type_of(pos.piece_on(from_sq(move)))) & to_sq(move) + ? pos.check_squares(type_of(movedPiece)) & to_sq(move) : pos.gives_check(move); moveCountPruning = depth < 16 * ONE_PLY @@ -956,6 +943,7 @@ namespace { // ttValue minus a margin then we will extend the ttMove. if ( singularExtensionNode && move == ttMove + && !extension && pos.legal(move)) { Value rBeta = std::max(ttValue - 2 * depth / ONE_PLY, -VALUE_MATE); @@ -965,22 +953,22 @@ namespace { ss->excludedMove = MOVE_NONE; if (value < rBeta) - extension = ONE_PLY; + extension = ONE_PLY; } - else if ( givesCheck - && !moveCountPruning - && pos.see_ge(move)) - extension = ONE_PLY; + else if (!moveCountPruning) + { + if ( givesCheck + && (pos.see_ge(move) || PvNode )) + extension = ONE_PLY; + + else if ( PvNode + && depth < 13 * ONE_PLY + && ( givesCheck || pos.advanced_pawn_push(move) + || ( ss->forcingTree && (ss)->newDepth - depth > 1))) + extension = ONE_PLY; + } - else if ( pos.advanced_pawn_push(move) - && !moveCountPruning - && pos.non_pawn_material(pos.side_to_move()) <= RookValueEg) - extension = ONE_PLY; - else if ( ss->forcingTree && (ss - 1)->newDepth - depth > 1 - && !moveCountPruning) - extension = ONE_PLY; - // Calculate new depth for this move newDepth = depth - ONE_PLY + extension; @@ -1001,8 +989,7 @@ namespace { } // Reduced depth of the next LMR search - int mch = std::max(1, moveCount - (ss-1)->moveCount / 16); - int lmrDepth = std::max(newDepth - reduction(improving, depth, mch), DEPTH_ZERO) / ONE_PLY; + int lmrDepth = std::max(newDepth - reduction(improving, depth, moveCount), DEPTH_ZERO) / ONE_PLY; // Countermoves based pruning if ( lmrDepth < 3 @@ -1013,7 +1000,7 @@ namespace { // Futility pruning: parent node if ( lmrDepth < 7 && !inCheck - && ss->staticEval + 256 + 200 * lmrDepth <= alpha) + && ss->staticEval + 256 + futility_margin(lmrDepth * ONE_PLY) <= alpha)// idea from JD Watson, modifed by MichaelB7 continue; // Prune moves with negative SEE @@ -1039,11 +1026,13 @@ namespace { if (move == ttMove && captureOrPromotion) ttCapture = true; + else if (to_sq(move) == to_sq((ss - 1)->currentMove)) + goodCap = true; // Update the current move (this must be done after singular extension search) ss->currentMove = move; ss->contHistory = &thisThread->contHistory[movedPiece][to_sq(move)]; - ss->forcedMove = (extension || inCheck || captureOrPromotion) && -(ss - 1)->staticEval < alpha - PawnValueEg / 2 && ss->staticEval > alpha - PawnValueEg / 2; + ss->forcedMove = (extension || inCheck || captureOrPromotion) && (ss)->staticEval < alpha - PawnValueEg / 2 && ss->staticEval > alpha - PawnValueEg / 2; // Step 14. Make the move pos.do_move(move, st, givesCheck); @@ -1052,18 +1041,29 @@ namespace { // re-searched at full depth. if ( !bruteForce && depth >= 3 * ONE_PLY && moveCount > 1 - && (!captureOrPromotion || moveCountPruning)) + && (!captureOrPromotion || moveCountPruning) + && (ss+2)->killers[0] != move + && (ss+2)->killers[1] != move) { - int mch = std::max(1, moveCount - (ss-1)->moveCount / 16); - Depth r = reduction(improving, depth, mch); + Depth r = reduction(improving, depth, moveCount); if (captureOrPromotion) r -= r ? ONE_PLY : DEPTH_ZERO; else { + // Decrease reduction if opponent's move count is high + if ((ss-1)->moveCount > 13 ) + r -= ONE_PLY; + + // Decrease reduction for exact PV nodes + if (pvExact) + r -= ONE_PLY; + // Increase reduction if ttMove is a capture - if (ttCapture) + if (ttCapture || (!pvExact && depth > 13 * ONE_PLY)) r += ONE_PLY; + else if(goodCap && !inCheck && !givesCheck) + r += ONE_PLY; // Increase reduction for cut nodes if (cutNode) @@ -1079,18 +1079,18 @@ namespace { ss->statScore = thisThread->mainHistory[~pos.side_to_move()][from_to(move)] + (*contHist[0])[movedPiece][to_sq(move)] + (*contHist[1])[movedPiece][to_sq(move)] - + (*contHist[3])[movedPiece][to_sq(move)] + + (*contHist[3])[movedPiece][to_sq(move)] - 4000; // Decrease/increase reduction by comparing opponent's stat score - if (ss->statScore > 0 && ss->statScore > (ss-1)->statScore) + if (ss->statScore >= 0 && (ss-1)->statScore < 0) r -= ONE_PLY; - else if (ss->statScore < 0 && ss->statScore < (ss-1)->statScore ) + else if ((ss-1)->statScore >= 0 && ss->statScore < 0) r += ONE_PLY; // Decrease/increase reduction for moves with a good/bad history - r = std::max(DEPTH_ZERO, (r / ONE_PLY - ss->statScore / 32768) * ONE_PLY); + r = std::max(DEPTH_ZERO, (r / ONE_PLY - ss->statScore / 20000) * ONE_PLY); } Depth d = std::max(newDepth - r, ONE_PLY); @@ -1188,6 +1188,8 @@ namespace { if (!captureOrPromotion && move != bestMove && quietCount < 64) quietsSearched[quietCount++] = move; + else if (captureOrPromotion && move != bestMove && captureCount < 32) + capturesSearched[captureCount++] = move; } // The following condition would detect a stop only after move loop has been @@ -1207,12 +1209,22 @@ namespace { if (!moveCount) bestValue = excludedMove ? alpha - : inCheck ? mated_in(ss->ply) : DrawValue[pos.side_to_move()]; + : inCheck ? mated_in(ss->ply) : VALUE_DRAW; else if (bestMove) { // Quiet best move: update move sorting heuristics if (!pos.capture_or_promotion(bestMove)) update_stats(pos, ss, bestMove, quietsSearched, quietCount, stat_bonus(depth)); + else update_capture_stats(pos, bestMove, capturesSearched, captureCount, stat_bonus(depth)); + if(type_of(bestMove) == PROMOTION || quietCount > 3) + { + if (ss->killers[2] != bestMove) + { + ss->killers[3] = ss->killers[2]; + ss->killers[2] = bestMove; + } + } + // Extra penalty for a quiet TT move in previous ply when it gets refuted if ((ss-1)->moveCount == 1 && !pos.captured_piece()) @@ -1224,8 +1236,8 @@ namespace { && is_ok((ss-1)->currentMove)) update_continuation_histories(ss-1, pos.piece_on(prevSq), prevSq, stat_bonus(depth)); - if (PvNode && bestValue > maxValue) - bestValue = maxValue; + if (PvNode) + bestValue = std::min(bestValue, maxValue); if (!excludedMove) tte->save(posKey, value_to_tt(bestValue, ss->ply), @@ -1247,7 +1259,7 @@ namespace { const bool PvNode = NT == PV; - assert(InCheck == !!pos.checkers()); + assert(InCheck == bool(pos.checkers())); assert(alpha >= -VALUE_INFINITE && alpha < beta && beta <= VALUE_INFINITE); assert(PvNode || (alpha == beta - 1)); assert(depth <= DEPTH_ZERO); @@ -1271,13 +1283,12 @@ namespace { } ss->currentMove = bestMove = MOVE_NONE; - ss->ply = (ss-1)->ply + 1; + (ss+1)->ply = ss->ply + 1; moveCount = 0; // Check for an instant draw or if the maximum ply has been reached if (pos.is_draw(ss->ply) || ss->ply >= MAX_PLY) - return ss->ply >= MAX_PLY && !InCheck ? evaluate(pos) - : DrawValue[pos.side_to_move()]; + return ss->ply >= MAX_PLY && !InCheck ? evaluate(pos) : VALUE_DRAW; assert(0 <= ss->ply && ss->ply < MAX_PLY); @@ -1286,7 +1297,6 @@ namespace { // only two types of depth in TT: DEPTH_QS_CHECKS or DEPTH_QS_NO_CHECKS. ttDepth = InCheck || depth >= DEPTH_QS_CHECKS ? DEPTH_QS_CHECKS : DEPTH_QS_NO_CHECKS; - // Transposition table lookup posKey = pos.key(); tte = TT.probe(posKey, ttHit); @@ -1329,7 +1339,7 @@ namespace { if (bestValue >= beta) { if (!ttHit) - tte->save(pos.key(), value_to_tt(bestValue, ss->ply), BOUND_LOWER, + tte->save(posKey, value_to_tt(bestValue, ss->ply), BOUND_LOWER, DEPTH_NONE, MOVE_NONE, ss->staticEval, TT.generation()); return bestValue; @@ -1345,7 +1355,7 @@ namespace { // to search the moves. Because the depth is <= 0 here, only captures, // queen promotions and checks (only if depth >= DEPTH_QS_CHECKS) will // be generated. - MovePicker mp(pos, ttMove, depth, &pos.this_thread()->mainHistory, to_sq((ss-1)->currentMove)); + MovePicker mp(pos, ttMove, depth, &pos.this_thread()->mainHistory, &pos.this_thread()->captureHistory, to_sq((ss-1)->currentMove)); // Loop through the moves until no moves remain or a beta cutoff occurs while ((move = mp.next_move()) != MOVE_NONE) @@ -1353,7 +1363,7 @@ namespace { assert(is_ok(move)); givesCheck = type_of(move) == NORMAL && !pos.discovered_check_candidates() - ? pos.check_squares(type_of(pos.piece_on(from_sq(move)))) & to_sq(move) + ? pos.check_squares(type_of(pos.moved_piece(move))) & to_sq(move) : pos.gives_check(move); moveCount++; @@ -1389,7 +1399,6 @@ namespace { // Don't search moves with negative SEE values if ( (!InCheck || evasionPrunable) - && type_of(move) != PROMOTION && !pos.see_ge(move)) continue; @@ -1500,6 +1509,26 @@ namespace { } + // update_capture_stats() updates move sorting heuristics when a new capture best move is found + + void update_capture_stats(const Position& pos, Move move, + Move* captures, int captureCnt, int bonus) { + + CapturePieceToHistory& captureHistory = pos.this_thread()->captureHistory; + Piece moved_piece = pos.moved_piece(move); + PieceType captured = type_of(pos.piece_on(to_sq(move))); + captureHistory.update(moved_piece, to_sq(move), captured, bonus); + + // Decrease all the other played capture moves + for (int i = 0; i < captureCnt; ++i) + { + moved_piece = pos.moved_piece(captures[i]); + captured = type_of(pos.piece_on(to_sq(captures[i]))); + captureHistory.update(moved_piece, to_sq(captures[i]), captured, -bonus); + } + } + + // update_stats() updates move sorting heuristics when a new quiet best move is found void update_stats(const Position& pos, Stack* ss, Move move, @@ -1531,6 +1560,24 @@ namespace { } + // Is the PV leading to a draw position? Assumes all pv moves are legal + bool pv_is_draw(Position& pos) { + + StateInfo st[MAX_PLY]; + auto& pv = pos.this_thread()->rootMoves[0].pv; + + for (size_t i = 0; i < pv.size(); ++i) + pos.do_move(pv[i], st[i]); + + bool isDraw = pos.is_draw(pv.size()); + + for (size_t i = pv.size(); i > 0; --i) + pos.undo_move(pv[i-1]); + + return isDraw; + } + + // When playing with strength handicap, choose best move among a set of RootMoves // using a statistical rule dependent on 'level'. Idea by Heinz van Saanen. @@ -1554,7 +1601,7 @@ namespace { int push = ( weakness * int(topScore - rootMoves[i].score) + delta * (rng.rand() % weakness)) / 128; - if (rootMoves[i].score + push > maxScore) + if (rootMoves[i].score + push >= maxScore) { maxScore = rootMoves[i].score + push; best = rootMoves[i].pv[0]; @@ -1593,7 +1640,7 @@ namespace { if (Threads.ponder) return; - if ( (Limits.use_time_management() && elapsed > Time.maximum()) + if ( (Limits.use_time_management() && elapsed > Time.maximum() - 10) || (Limits.movetime && elapsed >= Limits.movetime) || (Limits.nodes && Threads.nodes_searched() >= (uint64_t)Limits.nodes)) Threads.stop = true; @@ -1606,12 +1653,19 @@ namespace { string UCI::pv(const Position& pos, Depth depth, Value alpha, Value beta) { std::stringstream ss; + int temp = 0; int elapsed = Time.elapsed() + 1; const RootMoves& rootMoves = pos.this_thread()->rootMoves; size_t PVIdx = pos.this_thread()->PVIdx; - size_t multiPV = std::min((size_t)Options["MultiPV"], rootMoves.size()); + size_t multiPV = pos.this_thread()->multiPV; uint64_t nodesSearched = Threads.nodes_searched(); uint64_t tbHits = Threads.tb_hits() + (TB::RootInTB ? rootMoves.size() : 0); + + if (tactical) + { + temp = multiPV; + multiPV = 1; + } for (size_t i = 0; i < multiPV; ++i) { @@ -1651,11 +1705,10 @@ string UCI::pv(const Position& pos, Depth depth, Value alpha, Value beta) { for (Move m : rootMoves[i].pv) ss << " " << UCI::move(m, pos.is_chess960()); } - + if (tactical) multiPV = temp; return ss.str(); } - /// RootMove::extract_ponder_from_tt() is called in case we have no ponder move /// before exiting the search, for instance, in case we stop the search during a /// fail high at root. We try hard to have a ponder move to return to the GUI, @@ -1702,6 +1755,10 @@ void Tablebases::filter_root_moves(Position& pos, Search::RootMoves& rootMoves) if (Cardinality < popcount(pos.pieces()) || pos.can_castle(ANY_CASTLING)) return; + // Don't filter any moves if the user requested analysis on multiple + if (Options["MultiPV"] != 1) + return; + // If the current root position is in the tablebases, then RootMoves // contains only moves that preserve the draw or the win. RootInTB = root_probe(pos, rootMoves, TB::Score); @@ -1723,8 +1780,9 @@ void Tablebases::filter_root_moves(Position& pos, Search::RootMoves& rootMoves) TB::Score = TB::Score > VALUE_DRAW ? VALUE_MATE - MAX_PLY - 1 : TB::Score < VALUE_DRAW ? -VALUE_MATE + MAX_PLY + 1 : VALUE_DRAW; - // Since root_probe() and root_probe_wdl() dirty the root move scores, - // we reset them to -VALUE_INFINITE - for (size_t i = 0; i < rootMoves.size(); ++i) - rootMoves[i].score = -VALUE_INFINITE; + + // Since root_probe() and root_probe_wdl() dirty the root move scores, + // we reset them to -VALUE_INFINITE + for (RootMove& rm : rootMoves) + rm.score = -VALUE_INFINITE; } diff --git a/Engines/Linux32/mcbrain/src/search.h b/Engines/Linux32/mcbrain/src/search.h index 5fe6d32..f1ac439 100644 --- a/Engines/Linux32/mcbrain/src/search.h +++ b/Engines/Linux32/mcbrain/src/search.h @@ -1,22 +1,23 @@ /* - Stockfish, a UCI chess playing engine derived from Glaurung 2.1 - Copyright (C) 2004-2008 Tord Romstad (Glaurung author) - Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2017 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad - - Stockfish is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Stockfish is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ + McBrain, a UCI chess playing engine derived from Stockfish and Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) + Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + + McBrain is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + McBrain is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ #ifndef SEARCH_H_INCLUDED #define SEARCH_H_INCLUDED @@ -31,6 +32,10 @@ class Position; namespace Search { +/// Threshold used for countermoves based pruning +const int CounterMovePruneThreshold = 0; + + /// Stack struct keeps track of the information we need to remember from nodes /// shallower and deeper in the tree during the search. Each search thread has /// its own array of Stack objects, indexed by the current ply. @@ -41,14 +46,13 @@ struct Stack { int ply; Move currentMove; Move excludedMove; - Move killers[2]; + Move killers[4]; Value staticEval; int statScore; int moveCount; Depth newDepth; uint8_t forcedMove; uint8_t forcingTree; - }; diff --git a/Engines/Linux32/mcbrain/src/tbprobe.cpp b/Engines/Linux32/mcbrain/src/tbprobe.cpp index 90a016b..09e031c 100644 --- a/Engines/Linux32/mcbrain/src/tbprobe.cpp +++ b/Engines/Linux32/mcbrain/src/tbprobe.cpp @@ -1,21 +1,23 @@ /* - Stockfish, a UCI chess playing engine derived from Glaurung 2.1 - Copyright (c) 2013 Ronald de Man - Copyright (C) 2016-2017 Marco Costalba, Lucas Braesch - - Stockfish is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Stockfish is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ + McBrain, a UCI chess playing engine derived from Stockfish and Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) + Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + + McBrain is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + McBrain is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ #include #include @@ -133,16 +135,16 @@ struct Atomic { std::atomic_bool ready; }; -// We define types for the different parts of the WLDEntry and DTZEntry with +// We define types for the different parts of the WDLEntry and DTZEntry with // corresponding specializations for pieces or pawns. -struct WLDEntryPiece { +struct WDLEntryPiece { PairsData* precomp; }; struct WDLEntryPawn { uint8_t pawnCount[2]; // [Lead color / other color] - WLDEntryPiece file[2][4]; // [wtm / btm][FILE_A..FILE_D] + WDLEntryPiece file[2][4]; // [wtm / btm][FILE_A..FILE_D] }; struct DTZEntryPiece { @@ -172,7 +174,7 @@ struct WDLEntry : public TBEntry { WDLEntry(const std::string& code); ~WDLEntry(); union { - WLDEntryPiece pieceTable[2]; // [wtm / btm] + WDLEntryPiece pieceTable[2]; // [wtm / btm] WDLEntryPawn pawnTable; }; }; @@ -341,6 +343,10 @@ class TBFile : public std::ifstream { #ifndef _WIN32 struct stat statbuf; int fd = ::open(fname.c_str(), O_RDONLY); + + if (fd == -1) + return *baseAddress = nullptr, nullptr; + fstat(fd, &statbuf); *mapping = statbuf.st_size; *baseAddress = mmap(nullptr, statbuf.st_size, PROT_READ, MAP_SHARED, fd, 0); @@ -353,6 +359,10 @@ class TBFile : public std::ifstream { #else HANDLE fd = CreateFile(fname.c_str(), GENERIC_READ, FILE_SHARE_READ, nullptr, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, nullptr); + + if (fd == INVALID_HANDLE_VALUE) + return *baseAddress = nullptr, nullptr; + DWORD size_high; DWORD size_low = GetFileSize(fd, &size_high); HANDLE mmap = CreateFileMapping(fd, nullptr, PAGE_READONLY, size_high, size_low, nullptr); @@ -380,8 +390,7 @@ class TBFile : public std::ifstream { || *data++ != *TB_MAGIC) { std::cerr << "Corrupted table in file " << fname << std::endl; unmap(*baseAddress, *mapping); - *baseAddress = nullptr; - return nullptr; + return *baseAddress = nullptr, nullptr; } return data; @@ -482,7 +491,7 @@ void HashTable::insert(const std::vector& pieces) { TBFile file(code.insert(code.find('K', 1), "v") + ".rtbw"); // KRK -> KRvK - if (!file.is_open()) + if (!file.is_open()) // Only WDL file is checked return; file.close(); @@ -1385,7 +1394,7 @@ void Tablebases::init(const std::string& paths) { } } - sync_cout << "info string Found " << EntryTable.size() << " tablebases" << sync_endl; + sync_cout << "Info string found: " << EntryTable.size() << " tablebases" << sync_endl; } // Probe the WDL table for a particular position. diff --git a/Engines/Linux32/mcbrain/src/tbprobe.h b/Engines/Linux32/mcbrain/src/tbprobe.h index 0c16662..97ec7b1 100644 --- a/Engines/Linux32/mcbrain/src/tbprobe.h +++ b/Engines/Linux32/mcbrain/src/tbprobe.h @@ -1,21 +1,23 @@ /* - Stockfish, a UCI chess playing engine derived from Glaurung 2.1 - Copyright (c) 2013 Ronald de Man - Copyright (C) 2016-2017 Marco Costalba, Lucas Braesch - - Stockfish is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Stockfish is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ + McBrain, a UCI chess playing engine derived from Stockfish and Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) + Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + + McBrain is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + McBrain is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ #ifndef TBPROBE_H #define TBPROBE_H diff --git a/Engines/Linux32/mcbrain/src/thread.cpp b/Engines/Linux32/mcbrain/src/thread.cpp index 6b24521..47a21c1 100644 --- a/Engines/Linux32/mcbrain/src/thread.cpp +++ b/Engines/Linux32/mcbrain/src/thread.cpp @@ -1,22 +1,23 @@ /* - Stockfish, a UCI chess playing engine derived from Glaurung 2.1 - Copyright (C) 2004-2008 Tord Romstad (Glaurung author) - Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2017 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad - - Stockfish is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Stockfish is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ + McBrain, a UCI chess playing engine derived from Stockfish and Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) + Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) + Copyright (C) 2017*2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + + McBrain is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + McBrain is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ #include // For std::count #include @@ -24,6 +25,7 @@ #include "movegen.h" #include "search.h" #include "thread.h" +#include "uci.h" #include "tbprobe.h" ThreadPool Threads; // Global object @@ -51,6 +53,21 @@ Thread::~Thread() { } +/// Thread::clear() reset histories, usually before a new game + +void Thread::clear() { + + counterMoves.fill(MOVE_NONE); + mainHistory.fill(0); + captureHistory.fill(0); + + for (auto& to : contHistory) + for (auto& h : to) + h.fill(0); + + contHistory[NO_PIECE][0].fill(Search::CounterMovePruneThreshold - 1); +} + /// Thread::start_searching() wakes up the thread that will start the search void Thread::start_searching() { @@ -76,7 +93,13 @@ void Thread::wait_for_search_finished() { void Thread::idle_loop() { - WinProcGroup::bindThisThread(idx); + // If OS already scheduled us on a different group than 0 then don't overwrite + // the choice, eventually we are one of many one-threaded processes running on + // some Windows NUMA hardware, for instance in fishtest. To make it simple, + // just check if running threads are below a threshold, in this case all this + // NUMA machinery is not needed. + if (Options["Threads"] >= 8) + WinProcGroup::bindThisThread(idx); while (true) { @@ -94,42 +117,40 @@ void Thread::idle_loop() { } } +/// ThreadPool::set() creates/destroys threads to match the requested number. +/// Created and launced threads wil go immediately to sleep in idle_loop. +/// Upon resizing, threads are recreated to allow for binding if necessary. -/// ThreadPool::init() creates and launches the threads that will go -/// immediately to sleep in idle_loop. We cannot use the c'tor because -/// Threads is a static object and we need a fully initialized engine at -/// this point due to allocation of Endgames in the Thread constructor. - -void ThreadPool::init(size_t requested) { - - push_back(new MainThread(0)); - set(requested); -} +void ThreadPool::set(size_t requested) { + if (size() > 0) { // destroy any existing thread(s) + main()->wait_for_search_finished(); -/// ThreadPool::exit() terminates threads before the program exits. Cannot be -/// done in the destructor because threads must be terminated before deleting -/// any static object, so before main() returns. + while (size() > 0) + delete back(), pop_back(); + } -void ThreadPool::exit() { + if (requested > 0) { // create new thread(s) + push_back(new MainThread(0)); - main()->wait_for_search_finished(); - set(0); + while (size() < requested) + push_back(new Thread(size())); + clear(); + } } +/// ThreadPool::clear() sets threadPool data to initial values. -/// ThreadPool::set() creates/destroys threads to match the requested number - -void ThreadPool::set(size_t requested) { +void ThreadPool::clear() { - while (size() < requested) - push_back(new Thread(size())); + for (Thread* th : *this) + th->clear(); - while (size() > requested) - delete back(), pop_back(); + main()->callsCnt = 0; + main()->previousScore = VALUE_INFINITE; + main()->previousTimeReduction = 1; } - /// ThreadPool::start_thinking() wakes up main thread waiting in idle_loop() and /// returns immediately. Main thread will wake up other threads and start the search. @@ -165,12 +186,14 @@ void ThreadPool::start_thinking(Position& pos, StateListPtr& states, // is shared by threads but is accessed in read-only mode. StateInfo tmp = setupStates->back(); - for (Thread* th : Threads) + for (Thread* th : *this) { th->nodes = th->tbHits = 0; th->rootDepth = th->completedDepth = DEPTH_ZERO; th->rootMoves = rootMoves; th->rootPos.set(pos.fen(), pos.is_chess960(), &setupStates->back(), th); + th->nmp_ply = 0; + th->pair = -1; } setupStates->back() = tmp; diff --git a/Engines/Linux32/mcbrain/src/thread.h b/Engines/Linux32/mcbrain/src/thread.h index 8c0a666..25a6511 100644 --- a/Engines/Linux32/mcbrain/src/thread.h +++ b/Engines/Linux32/mcbrain/src/thread.h @@ -1,22 +1,23 @@ /* - Stockfish, a UCI chess playing engine derived from Glaurung 2.1 - Copyright (C) 2004-2008 Tord Romstad (Glaurung author) - Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2017 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad - - Stockfish is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Stockfish is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ + McBrain, a UCI chess playing engine derived from Stockfish and Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) + Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + + McBrain is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + McBrain is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ #ifndef THREAD_H_INCLUDED #define THREAD_H_INCLUDED @@ -52,6 +53,7 @@ class Thread { explicit Thread(size_t); virtual ~Thread(); virtual void search(); + void clear(); void idle_loop(); void start_searching(); void wait_for_search_finished(); @@ -59,8 +61,8 @@ class Thread { Pawns::Table pawnsTable; Material::Table materialTable; Endgames endgames; - size_t PVIdx; - int selDepth; + size_t PVIdx, multiPV; + int selDepth, nmp_ply, pair; std::atomic nodes, tbHits; Position rootPos; @@ -68,6 +70,7 @@ class Thread { Depth rootDepth, completedDepth; CounterMoveHistory counterMoves; ButterflyHistory mainHistory; + CapturePieceToHistory captureHistory; ContinuationHistory contHistory; }; @@ -81,8 +84,8 @@ struct MainThread : public Thread { void search() override; void check_time(); - bool easyMovePlayed, failedLow; - double bestMoveChanges; + bool failedLow; + double bestMoveChanges, previousTimeReduction; Value previousScore; int callsCnt; }; @@ -97,11 +100,19 @@ struct ThreadPool : public std::vector { void init(size_t); // No constructor and destructor, threads rely on globals that should void exit(); // be initialized and valid during the whole thread lifetime. void start_thinking(Position&, StateListPtr&, const Search::LimitsType&, bool = false); + void clear(); void set(size_t); MainThread* main() const { return static_cast(front()); } uint64_t nodes_searched() const { return accumulate(&Thread::nodes); } uint64_t tb_hits() const { return accumulate(&Thread::tbHits); } + + Depth lowestDepth(){ + Depth lowest = DEPTH_MAX; + for (Thread* th: *this) + lowest = std::min(lowest, th->rootDepth); + return lowest; + } std::atomic_bool stop, ponder, stopOnPonderhit; diff --git a/Engines/Linux32/mcbrain/src/thread_win32.h b/Engines/Linux32/mcbrain/src/thread_win32.h index 917563a..d69e817 100644 --- a/Engines/Linux32/mcbrain/src/thread_win32.h +++ b/Engines/Linux32/mcbrain/src/thread_win32.h @@ -1,22 +1,23 @@ /* - Stockfish, a UCI chess playing engine derived from Glaurung 2.1 - Copyright (C) 2004-2008 Tord Romstad (Glaurung author) - Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2017 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad - - Stockfish is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Stockfish is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ + McBrain, a UCI chess playing engine derived from Stockfish and Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) + Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + + McBrain is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + McBrain is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ #ifndef THREAD_WIN32_H_INCLUDED #define THREAD_WIN32_H_INCLUDED diff --git a/Engines/Linux32/mcbrain/src/timeman.cpp b/Engines/Linux32/mcbrain/src/timeman.cpp index 330709b..6a854c9 100644 --- a/Engines/Linux32/mcbrain/src/timeman.cpp +++ b/Engines/Linux32/mcbrain/src/timeman.cpp @@ -1,24 +1,27 @@ /* - Stockfish, a UCI chess playing engine derived from Glaurung 2.1 - Copyright (C) 2004-2008 Tord Romstad (Glaurung author) - Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2017 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad - - Stockfish is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Stockfish is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ + McBrain, a UCI chess playing engine derived from Stockfish and Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) + Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + + McBrain is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + McBrain is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ #include +#include +#include #include "search.h" #include "timeman.h" @@ -30,43 +33,41 @@ namespace { enum TimeType { OptimumTime, MaxTime }; - int remaining(int myTime, int myInc, int moveOverhead, int movesToGo, - int moveNum, bool ponder, TimeType type) { + const int MoveHorizon = 50; // Plan time management at most this many moves ahead + const double MaxRatio = 7.09; // When in trouble, we can step over reserved time with this ratio + const double StealRatio = 0.35; // However we must not steal time from remaining moves over this ratio + - if (myTime <= 0) - return 0; + // move_importance() is a skew-logistic function based on naive statistical + // analysis of "how many games are still undecided after n half-moves". Game + // is considered "undecided" as long as neither side has >275cp advantage. + // Data was extracted from the CCRL game database with some simple filtering criteria. - double ratio; // Which ratio of myTime we are going to use + double move_importance(int ply) { - // Usage of increment follows quadratic distribution with the maximum at move 25 - double inc = myInc * std::max(55.0, 120 - 0.12 * (moveNum - 25) * (moveNum - 25)); + const double XScale = 7.64; + const double XShift = 58.4; + const double Skew = 0.183; - // In moves-to-go we distribute time according to a quadratic function with - // the maximum around move 20 for 40 moves in y time case. - if (movesToGo) - { - ratio = (type == OptimumTime ? 1.0 : 6.0) / std::min(50, movesToGo); + return pow((1 + exp((ply - XShift) / XScale)), -Skew) + DBL_MIN; // Ensure non-zero + } + + template + int remaining(int myTime, int movesToGo, int ply, int slowMover) { - if (moveNum <= 40) - ratio *= 1.1 - 0.001 * (moveNum - 20) * (moveNum - 20); - else - ratio *= 1.5; + const double TMaxRatio = (T == OptimumTime ? 1 : MaxRatio); + const double TStealRatio = (T == OptimumTime ? 0 : StealRatio); - ratio *= 1 + inc / (myTime * 8.5); - } - // Otherwise we increase usage of remaining time as the game goes on - else - { - double k = 1 + 20 * moveNum / (500.0 + moveNum); - ratio = (type == OptimumTime ? 0.017 : 0.07) * (k + inc / myTime); - } + double moveImportance = (move_importance(ply) * slowMover) / 100; + double otherMovesImportance = 0; - int time = int(std::min(1.0, ratio) * std::max(0, myTime - moveOverhead)); + for (int i = 1; i < movesToGo; ++i) + otherMovesImportance += move_importance(ply + 2 * i); - if (type == OptimumTime && ponder) - time *= 1.25; + double ratio1 = (TMaxRatio * moveImportance) / (TMaxRatio * moveImportance + otherMovesImportance); + double ratio2 = (moveImportance + TStealRatio * otherMovesImportance) / (moveImportance + otherMovesImportance); - return time; + return int(myTime * std::min(ratio1, ratio2)); // Intel C++ asks for an explicit cast } } // namespace @@ -81,11 +82,12 @@ namespace { /// inc > 0 && movestogo == 0 means: x basetime + z increment /// inc > 0 && movestogo != 0 means: x moves in y minutes + z increment -void TimeManagement::init(Search::LimitsType& limits, Color us, int ply) -{ - int moveOverhead = Options["Move Overhead"]; - int npmsec = Options["nodestime"]; - bool ponder = Options["Ponder"]; +void TimeManagement::init(Search::LimitsType& limits, Color us, int ply) { + + int minThinkingTime = Options["Minimum Thinking Time"]; + int moveOverhead = Options["Move Overhead"]; + int slowMover = Options["Slow Mover"]; + int npmsec = Options["nodestime"]; // If we have to play in 'nodes as time' mode, then convert from time // to nodes, and use resulting values in time management formulas. @@ -102,11 +104,30 @@ void TimeManagement::init(Search::LimitsType& limits, Color us, int ply) limits.npmsec = npmsec; } - int moveNum = (ply + 1) / 2; - startTime = limits.startTime; - optimumTime = remaining(limits.time[us], limits.inc[us], moveOverhead, - limits.movestogo, moveNum, ponder, OptimumTime); - maximumTime = remaining(limits.time[us], limits.inc[us], moveOverhead, - limits.movestogo, moveNum, ponder, MaxTime); + optimumTime = maximumTime = std::max(limits.time[us], minThinkingTime); + + const int MaxMTG = limits.movestogo ? std::min(limits.movestogo, MoveHorizon) : MoveHorizon; + + // We calculate optimum time usage for different hypothetical "moves to go"-values + // and choose the minimum of calculated search time values. Usually the greatest + // hypMTG gives the minimum values. + for (int hypMTG = 1; hypMTG <= MaxMTG; ++hypMTG) + { + // Calculate thinking time for hypothetical "moves to go"-value + int hypMyTime = limits.time[us] + + limits.inc[us] * (hypMTG - 1) + - moveOverhead * (2 + std::min(hypMTG, 40)); + + hypMyTime = std::max(hypMyTime, 0); + + int t1 = minThinkingTime + remaining(hypMyTime, hypMTG, ply, slowMover); + int t2 = minThinkingTime + remaining(hypMyTime, hypMTG, ply, slowMover); + + optimumTime = std::min(t1, optimumTime); + maximumTime = std::min(t2, maximumTime); + } + + if (Options["Ponder"]) + optimumTime += optimumTime / 4; } diff --git a/Engines/Linux32/mcbrain/src/timeman.h b/Engines/Linux32/mcbrain/src/timeman.h index c22c8c2..4d3172b 100644 --- a/Engines/Linux32/mcbrain/src/timeman.h +++ b/Engines/Linux32/mcbrain/src/timeman.h @@ -1,22 +1,23 @@ /* - Stockfish, a UCI chess playing engine derived from Glaurung 2.1 - Copyright (C) 2004-2008 Tord Romstad (Glaurung author) - Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2017 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad - - Stockfish is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Stockfish is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ + McBrain, a UCI chess playing engine derived from Stockfish and Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) + Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + + McBrain is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + McBrain is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ #ifndef TIMEMAN_H_INCLUDED #define TIMEMAN_H_INCLUDED diff --git a/Engines/Linux32/mcbrain/src/tt.cpp b/Engines/Linux32/mcbrain/src/tt.cpp index f283d0c..1aed0f3 100644 --- a/Engines/Linux32/mcbrain/src/tt.cpp +++ b/Engines/Linux32/mcbrain/src/tt.cpp @@ -1,22 +1,23 @@ /* - Stockfish, a UCI chess playing engine derived from Glaurung 2.1 - Copyright (C) 2004-2008 Tord Romstad (Glaurung author) - Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2017 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad - - Stockfish is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Stockfish is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ + McBrain, a UCI chess playing engine derived from Stockfish and Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) + Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + + McBrain is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + McBrain is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ #include // For std::memset #include @@ -33,7 +34,7 @@ TranspositionTable TT; // Our global transposition table void TranspositionTable::resize(size_t mbSize) { - size_t newClusterCount = size_t(1) << msb((mbSize * 1024 * 1024) / sizeof(Cluster)); + size_t newClusterCount = mbSize * 1024 * 1024 / sizeof(Cluster); if (newClusterCount == clusterCount) return; @@ -41,7 +42,7 @@ void TranspositionTable::resize(size_t mbSize) { clusterCount = newClusterCount; free(mem); - mem = calloc(clusterCount * sizeof(Cluster) + CacheLineSize - 1, 1); + mem = malloc(clusterCount * sizeof(Cluster) + CacheLineSize - 1); if (!mem) { @@ -51,6 +52,7 @@ void TranspositionTable::resize(size_t mbSize) { } table = (Cluster*)((uintptr_t(mem) + CacheLineSize - 1) & ~(CacheLineSize - 1)); + clear(); } diff --git a/Engines/Linux32/mcbrain/src/tt.h b/Engines/Linux32/mcbrain/src/tt.h index 24045ed..e0dc386 100644 --- a/Engines/Linux32/mcbrain/src/tt.h +++ b/Engines/Linux32/mcbrain/src/tt.h @@ -1,22 +1,23 @@ /* - Stockfish, a UCI chess playing engine derived from Glaurung 2.1 - Copyright (C) 2004-2008 Tord Romstad (Glaurung author) - Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2017 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad - - Stockfish is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Stockfish is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ + McBrain, a UCI chess playing engine derived from Stockfish and Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) + Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + + McBrain is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + McBrain is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ #ifndef TT_H_INCLUDED #define TT_H_INCLUDED @@ -104,9 +105,9 @@ class TranspositionTable { void resize(size_t mbSize); void clear(); - // The lowest order bits of the key are used to get the index of the cluster + // The 32 lowest order bits of the key are used to get the index of the cluster TTEntry* first_entry(const Key key) const { - return &table[(size_t)key & (clusterCount - 1)].entry[0]; + return &table[(uint32_t(key) * uint64_t(clusterCount)) >> 32].entry[0]; } private: diff --git a/Engines/Linux32/mcbrain/src/types.h b/Engines/Linux32/mcbrain/src/types.h index acca874..7b4318e 100644 --- a/Engines/Linux32/mcbrain/src/types.h +++ b/Engines/Linux32/mcbrain/src/types.h @@ -1,22 +1,23 @@ /* - Stockfish, a UCI chess playing engine derived from Glaurung 2.1 - Copyright (C) 2004-2008 Tord Romstad (Glaurung author) - Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2017 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad - - Stockfish is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Stockfish is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ + McBrain, a UCI chess playing engine derived from Stockfish and Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) + Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + + McBrain is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + McBrain is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ #ifndef TYPES_H_INCLUDED #define TYPES_H_INCLUDED @@ -146,7 +147,7 @@ enum CastlingRight { }; template struct MakeCastling { - static const CastlingRight + static constexpr CastlingRight right = C == WHITE ? S == QUEEN_SIDE ? WHITE_OOO : WHITE_OO : S == QUEEN_SIDE ? BLACK_OOO : BLACK_OO; }; @@ -187,7 +188,7 @@ enum Value : int { KnightValueMg = 764, KnightValueEg = 848, BishopValueMg = 826, BishopValueEg = 891, RookValueMg = 1282, RookValueEg = 1373, - QueenValueMg = 2526, QueenValueEg = 2646, + QueenValueMg = 2560, QueenValueEg = 2680, MidgameLimit = 15258, EndgameLimit = 3915 }; @@ -195,6 +196,7 @@ enum Value : int { enum PieceType { NO_PIECE_TYPE, PAWN, KNIGHT, BISHOP, ROOK, QUEEN, KING, ALL_PIECES = 0, + QUEEN_DIAGONAL = 7, PIECE_TYPE_NB = 8 }; @@ -222,7 +224,7 @@ enum Depth : int { static_assert(!(ONE_PLY & (ONE_PLY - 1)), "ONE_PLY is not a power of 2"); -enum Square { +enum Square : int { SQ_A1, SQ_B1, SQ_C1, SQ_D1, SQ_E1, SQ_F1, SQ_G1, SQ_H1, SQ_A2, SQ_B2, SQ_C2, SQ_D2, SQ_E2, SQ_F2, SQ_G2, SQ_H2, SQ_A3, SQ_B3, SQ_C3, SQ_D3, SQ_E3, SQ_F3, SQ_G3, SQ_H3, @@ -233,8 +235,10 @@ enum Square { SQ_A8, SQ_B8, SQ_C8, SQ_D8, SQ_E8, SQ_F8, SQ_G8, SQ_H8, SQ_NONE, - SQUARE_NB = 64, + SQUARE_NB = 64 +}; +enum Direction : int { NORTH = 8, EAST = 1, SOUTH = -NORTH, @@ -261,7 +265,7 @@ enum Rank : int { /// care to avoid left-shifting a signed int to avoid undefined behavior. enum Score : int { SCORE_ZERO }; -inline Score make_score(int mg, int eg) { +constexpr Score make_score(int mg, int eg) { return Score((int)((unsigned int)eg << 16) + mg); } @@ -269,58 +273,68 @@ inline Score make_score(int mg, int eg) { /// according to the standard a simple cast to short is implementation defined /// and so is a right shift of a signed integer. inline Value eg_value(Score s) { - union { uint16_t u; int16_t s; } eg = { uint16_t(unsigned(s + 0x8000) >> 16) }; return Value(eg.s); } inline Value mg_value(Score s) { - union { uint16_t u; int16_t s; } mg = { uint16_t(unsigned(s)) }; return Value(mg.s); } -#define ENABLE_BASE_OPERATORS_ON(T) \ -inline T operator+(T d1, T d2) { return T(int(d1) + int(d2)); } \ -inline T operator-(T d1, T d2) { return T(int(d1) - int(d2)); } \ -inline T operator-(T d) { return T(-int(d)); } \ -inline T& operator+=(T& d1, T d2) { return d1 = d1 + d2; } \ -inline T& operator-=(T& d1, T d2) { return d1 = d1 - d2; } \ - -#define ENABLE_FULL_OPERATORS_ON(T) \ -ENABLE_BASE_OPERATORS_ON(T) \ -inline T operator*(int i, T d) { return T(i * int(d)); } \ -inline T operator*(T d, int i) { return T(int(d) * i); } \ -inline T& operator++(T& d) { return d = T(int(d) + 1); } \ -inline T& operator--(T& d) { return d = T(int(d) - 1); } \ -inline T operator/(T d, int i) { return T(int(d) / i); } \ -inline int operator/(T d1, T d2) { return int(d1) / int(d2); } \ -inline T& operator*=(T& d, int i) { return d = T(int(d) * i); } \ +#define ENABLE_BASE_OPERATORS_ON(T) \ +constexpr T operator+(T d1, T d2) { return T(int(d1) + int(d2)); } \ +constexpr T operator-(T d1, T d2) { return T(int(d1) - int(d2)); } \ +constexpr T operator-(T d) { return T(-int(d)); } \ +inline T& operator+=(T& d1, T d2) { return d1 = d1 + d2; } \ +inline T& operator-=(T& d1, T d2) { return d1 = d1 - d2; } + +#define ENABLE_INCR_OPERATORS_ON(T) \ +inline T& operator++(T& d) { return d = T(int(d) + 1); } \ +inline T& operator--(T& d) { return d = T(int(d) - 1); } + +#define ENABLE_FULL_OPERATORS_ON(T) \ +ENABLE_BASE_OPERATORS_ON(T) \ +ENABLE_INCR_OPERATORS_ON(T) \ +constexpr T operator*(int i, T d) { return T(i * int(d)); } \ +constexpr T operator*(T d, int i) { return T(int(d) * i); } \ +constexpr T operator/(T d, int i) { return T(int(d) / i); } \ +constexpr int operator/(T d1, T d2) { return int(d1) / int(d2); } \ +inline T& operator*=(T& d, int i) { return d = T(int(d) * i); } \ inline T& operator/=(T& d, int i) { return d = T(int(d) / i); } ENABLE_FULL_OPERATORS_ON(Value) -ENABLE_FULL_OPERATORS_ON(PieceType) -ENABLE_FULL_OPERATORS_ON(Piece) -ENABLE_FULL_OPERATORS_ON(Color) ENABLE_FULL_OPERATORS_ON(Depth) -ENABLE_FULL_OPERATORS_ON(Square) -ENABLE_FULL_OPERATORS_ON(File) -ENABLE_FULL_OPERATORS_ON(Rank) +ENABLE_FULL_OPERATORS_ON(Direction) + +ENABLE_INCR_OPERATORS_ON(PieceType) +ENABLE_INCR_OPERATORS_ON(Piece) +ENABLE_INCR_OPERATORS_ON(Color) +ENABLE_INCR_OPERATORS_ON(Square) +ENABLE_INCR_OPERATORS_ON(File) +ENABLE_INCR_OPERATORS_ON(Rank) ENABLE_BASE_OPERATORS_ON(Score) #undef ENABLE_FULL_OPERATORS_ON +#undef ENABLE_INCR_OPERATORS_ON #undef ENABLE_BASE_OPERATORS_ON /// Additional operators to add integers to a Value -inline Value operator+(Value v, int i) { return Value(int(v) + i); } -inline Value operator-(Value v, int i) { return Value(int(v) - i); } +constexpr Value operator+(Value v, int i) { return Value(int(v) + i); } +constexpr Value operator-(Value v, int i) { return Value(int(v) - i); } inline Value& operator+=(Value& v, int i) { return v = v + i; } inline Value& operator-=(Value& v, int i) { return v = v - i; } +/// Additional operators to add a Direction to a Square +inline Square operator+(Square s, Direction d) { return Square(int(s) + int(d)); } +inline Square operator-(Square s, Direction d) { return Square(int(s) - int(d)); } +inline Square& operator+=(Square &s, Direction d) { return s = s + d; } +inline Square& operator-=(Square &s, Direction d) { return s = s - d; } + /// Only declared but not defined. We don't want to multiply two scores due to /// a very high risk of overflow. So user should explicitly convert to integer. -inline Score operator*(Score s1, Score s2); +Score operator*(Score, Score) = delete; /// Division of a Score must be handled separately for each term inline Score operator/(Score s, int i) { @@ -339,39 +353,43 @@ inline Score operator*(Score s, int i) { return result; } -inline Color operator~(Color c) { +constexpr Color operator~(Color c) { return Color(c ^ BLACK); // Toggle color } -inline Square operator~(Square s) { +constexpr Square operator~(Square s) { return Square(s ^ SQ_A8); // Vertical flip SQ_A1 -> SQ_A8 } -inline Piece operator~(Piece pc) { +constexpr File operator~(File f) { + return File(f ^ FILE_H); // Horizontal flip FILE_A -> FILE_H +} + +constexpr Piece operator~(Piece pc) { return Piece(pc ^ 8); // Swap color of piece B_KNIGHT -> W_KNIGHT } -inline CastlingRight operator|(Color c, CastlingSide s) { +constexpr CastlingRight operator|(Color c, CastlingSide s) { return CastlingRight(WHITE_OO << ((s == QUEEN_SIDE) + 2 * c)); } -inline Value mate_in(int ply) { +constexpr Value mate_in(int ply) { return VALUE_MATE - ply; } -inline Value mated_in(int ply) { +constexpr Value mated_in(int ply) { return -VALUE_MATE + ply; } -inline Square make_square(File f, Rank r) { +constexpr Square make_square(File f, Rank r) { return Square((r << 3) + f); } -inline Piece make_piece(Color c, PieceType pt) { +constexpr Piece make_piece(Color c, PieceType pt) { return Piece((c << 3) + pt); } -inline PieceType type_of(Piece pc) { +constexpr PieceType type_of(Piece pc) { return PieceType(pc & 7); } @@ -380,27 +398,27 @@ inline Color color_of(Piece pc) { return Color(pc >> 3); } -inline bool is_ok(Square s) { +constexpr bool is_ok(Square s) { return s >= SQ_A1 && s <= SQ_H8; } -inline File file_of(Square s) { +constexpr File file_of(Square s) { return File(s & 7); } -inline Rank rank_of(Square s) { +constexpr Rank rank_of(Square s) { return Rank(s >> 3); } -inline Square relative_square(Color c, Square s) { +constexpr Square relative_square(Color c, Square s) { return Square(s ^ (c * 56)); } -inline Rank relative_rank(Color c, Rank r) { +constexpr Rank relative_rank(Color c, Rank r) { return Rank(r ^ (c * 7)); } -inline Rank relative_rank(Color c, Square s) { +constexpr Rank relative_rank(Color c, Square s) { return relative_rank(c, rank_of(s)); } @@ -409,27 +427,27 @@ inline bool opposite_colors(Square s1, Square s2) { return ((s >> 3) ^ s) & 1; } -inline Square pawn_push(Color c) { +constexpr Direction pawn_push(Color c) { return c == WHITE ? NORTH : SOUTH; } -inline Square from_sq(Move m) { +constexpr Square from_sq(Move m) { return Square((m >> 6) & 0x3F); } -inline Square to_sq(Move m) { +constexpr Square to_sq(Move m) { return Square(m & 0x3F); } -inline int from_to(Move m) { +constexpr int from_to(Move m) { return m & 0xFFF; } -inline MoveType type_of(Move m) { +constexpr MoveType type_of(Move m) { return MoveType(m & (3 << 14)); } -inline PieceType promotion_type(Move m) { +constexpr PieceType promotion_type(Move m) { return PieceType(((m >> 12) & 3) + KNIGHT); } @@ -438,11 +456,11 @@ inline Move make_move(Square from, Square to) { } template -inline Move make(Square from, Square to, PieceType pt = KNIGHT) { +constexpr Move make(Square from, Square to, PieceType pt = KNIGHT) { return Move(T + ((pt - KNIGHT) << 12) + (from << 6) + to); } -inline bool is_ok(Move m) { +constexpr bool is_ok(Move m) { return from_sq(m) != to_sq(m); // Catch MOVE_NULL and MOVE_NONE } diff --git a/Engines/Linux32/mcbrain/src/tzbook.cpp b/Engines/Linux32/mcbrain/src/tzbook.cpp deleted file mode 100644 index 4052256..0000000 --- a/Engines/Linux32/mcbrain/src/tzbook.cpp +++ /dev/null @@ -1,221 +0,0 @@ -#include "tzbook.h" -#include "uci.h" -#include "movegen.h" -#include "thread.h" -#include -#include "misc.h" -#include - -TZBook tzbook; // global TZBook - -using namespace std; - -int qsort_compare_int(const void* a, const void* b) -{ - const int int_a = *((const int*)a); - const int int_b = *((const int*)b); - - if (int_a == int_b) return 0; - else if (int_a < int_b) return -1; - else return 1; -} - -TZBook::TZBook() -{ - keycount = 0; - book_move2_probability = 0; - last_position = 0; - akt_position = 0; - last_anz_pieces = 0; - akt_anz_pieces = 0; - search_counter = 0; - tzhash2 = NULL; - do_search = true; - enabled = false; -} - -TZBook::~TZBook() -{ -} - - -void TZBook::init(const std::string& path) -{ - if (path.length() == 0) return; - - const char *p = path.c_str(); - if (strcmp(p, "") == 0) - return; - - FILE *fpt = fopen(p, "rb"); - if (fpt == NULL) - { - sync_cout << "info string Could not open " << path << sync_endl; - return; - } - - if (tzhash2 != NULL) - { - free(tzhash2); - tzhash2 = NULL; - } - - fseek(fpt, 0L, SEEK_END); - int filesize = ftell(fpt); - fseek(fpt, 0L, SEEK_SET); - - keycount = filesize / 8; - tzhash2 = new TZHash2[keycount]; - - fread(tzhash2, 1, filesize, fpt); - fclose(fpt); - - sync_cout << "info string Book loaded: " << path << sync_endl; - - srand((int)time(NULL)); - enabled = true; -} - - -void TZBook::set_book_move2_probability(int book_move2_prob) -{ - book_move2_probability = book_move2_prob; -} - - -Move TZBook::probe2(Position& pos) -{ - Move m = MOVE_NONE; - if (!enabled) return m; - - akt_position = pos.pieces(); - akt_anz_pieces = popcount(akt_position); - - if (do_search == false) - { - Bitboard b = akt_position ^ last_position; - int n2 = popcount(b); - - if (n2 > 4) do_search = true; - if (akt_anz_pieces > last_anz_pieces) do_search = true; - if (akt_anz_pieces < last_anz_pieces - 2) do_search = true; - } - - last_position = akt_position; - last_anz_pieces = akt_anz_pieces; - - if (do_search) - { - TZHash2 *tz = probe2(pos.key()); - if (tz == NULL) - { - search_counter++; - if (search_counter > 2) - { - do_search = false; - search_counter = 0; - } - } - else - { - if (pos.is_draw(64)) - m = get_move_from_draw_position(pos, tz); - else - m = get_move(pos, tz); - } - } - - return m; -} - - -TZHash2 *TZBook::probe2(Key key) -{ - uint32_t key1 = key >> 32; - unsigned short key2 = key >> 16 & 0xFFFF; - - int start = 0; - int end = keycount; - - for (;;) - { - int mid = (end + start) / 2; - - if (tzhash2[mid].key1 < key1) - start = mid; - else - { - if (tzhash2[mid].key1 > key1) - end = mid; - else - { - start = max(mid - 4, 0); - end = min(mid + 4, keycount); - } - } - - if (end - start < 9) - break; - } - - for (int i = start; i < end; i++) - if ((key1 == tzhash2[i].key1) && (key2 == tzhash2[i].key2)) - return &(tzhash2[i]); - - return NULL; -} - -Move TZBook::movenumber_to_move(Position& pos, int n) -{ - const ExtMove *m = MoveList(pos).begin(); - size_t size = MoveList(pos).size(); - Move *mv = new Move[size]; - for (unsigned int i = 0; i < size; i++) - mv[i] = m[i].move; - - qsort(mv, size, sizeof(mv[0]), qsort_compare_int); - - return mv[n]; -} - -bool TZBook::check_draw(Move m, Position& pos) -{ - StateInfo st; - - pos.do_move(m, st, pos.gives_check(m)); - bool draw = pos.is_draw(64); - pos.undo_move(m); - - return draw; -} - - -Move TZBook::get_move_from_draw_position(Position& pos, TZHash2 *tz) -{ - Move m = movenumber_to_move(pos, tz->move_number); - if (!check_draw(m, pos)) - return m; - - if (tz->move_number2 == 255) - return m; - - m = movenumber_to_move(pos, tz->move_number2); - if (!check_draw(m, pos)) - return m; - - return MOVE_NONE; -} - - -Move TZBook::get_move(Position& pos, TZHash2 *tz) -{ - Move m1 = movenumber_to_move(pos, tz->move_number); - if ((book_move2_probability == 0) || (tz->move_number2 == 255)) - return m1; - - Move m2 = movenumber_to_move(pos, tz->move_number2); - if ((book_move2_probability == 100) || (rand() % 100 < book_move2_probability)) - return m2; - - return m1; -} \ No newline at end of file diff --git a/Engines/Linux32/mcbrain/src/tzbook.h b/Engines/Linux32/mcbrain/src/tzbook.h deleted file mode 100644 index 744618a..0000000 --- a/Engines/Linux32/mcbrain/src/tzbook.h +++ /dev/null @@ -1,50 +0,0 @@ -#ifndef TZBOOK_H_INCLUDED -#define TZBOOK_H_INCLUDED - -#include "bitboard.h" -#include "position.h" -#include "string.h" - -struct TZHash2 -{ - uint32_t key1; - uint16_t key2; - unsigned char move_number; - unsigned char move_number2; -}; - -class TZBook -{ - public: - - Bitboard last_position; - Bitboard akt_position; - int last_anz_pieces; - int akt_anz_pieces; - int search_counter; - - bool enabled, do_search; - int book_move2_probability; - - TZBook(); - ~TZBook(); - - void init(const std::string& path); - void set_book_move2_probability(int book_move2_prob); - - Move probe2(Position& pos); - TZHash2 *probe2(Key key); - -private: - - int keycount; - TZHash2 *tzhash2; - bool check_draw(Move m, Position& pos); - Move get_move_from_draw_position(Position& pos, TZHash2 *tz); - Move get_move(Position& pos, TZHash2 *tz); - Move movenumber_to_move(Position& pos, int n); -}; - -extern TZBook tzbook; - -#endif // #ifndef TZBOOK_H_INCLUDED \ No newline at end of file diff --git a/Engines/Linux32/mcbrain/src/uci.cpp b/Engines/Linux32/mcbrain/src/uci.cpp index 0b9c680..40efb6d 100644 --- a/Engines/Linux32/mcbrain/src/uci.cpp +++ b/Engines/Linux32/mcbrain/src/uci.cpp @@ -1,22 +1,23 @@ /* - Stockfish, a UCI chess playing engine derived from Glaurung 2.1 - Copyright (C) 2004-2008 Tord Romstad (Glaurung author) - Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2017 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad - - Stockfish is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Stockfish is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ + McBrain, a UCI chess playing engine derived from Stockfish and Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) + Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + + McBrain is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + McBrain is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ #include #include @@ -103,7 +104,33 @@ namespace { else sync_cout << "No such option: " << name << sync_endl; } - + + // set() is called by typing "s" from the terminal when the user wants to use abbreviated + // non-UCI comamnds and avoid the uci option protocol "setoption name (option name) value (xxx) ", + // e.g., instead of typing "setoption name threads value 8" to set cores to 8 at the terminal, + // the user simply types "s threads 8" - restricted to option names that do not contain + // any white spaces - see ucioption.cpp. The argument can take white spaces e.g., + // "s syzygypath /endgame tablebases/syzygy" will work + void set(istringstream& is) { + string token, name, value; + + // Read option name (no white spaces in option name) + is >> token; + name = token; + + // Read option value (can contain white spaces) + while (is >> token) + value += string(" ", value.empty() ? 0 : 1) + token; + + // provide user confirmation + if (Options.count(name)) { + Options[name] = value; + sync_cout << "Confirmation: "<< name << " set to " << value << sync_endl; + + } + else + sync_cout << "No such option: " << name << sync_endl; + } // go() is called when engine receives the "go" UCI command. The function sets // the thinking time and other parameters from the input string, then starts @@ -132,6 +159,7 @@ namespace { else if (token == "nodes") is >> limits.nodes; else if (token == "movetime") is >> limits.movetime; else if (token == "mate") is >> limits.mate; + else if (token == "perft") is >> limits.perft; else if (token == "infinite") limits.infinite = 1; else if (token == "i") limits.infinite = 1; else if (token == "ponder") ponderMode = true;; @@ -167,6 +195,7 @@ namespace { nodes += Threads.nodes_searched(); } else if (token == "setoption") setoption(is); + else if (token == "s") set(is); else if (token == "position") position(pos, is, states); else if (token == "ucinewgame") Search::clear(); } @@ -222,6 +251,7 @@ void UCI::loop(int argc, char* argv[]) { if ( token == "quit" || token == "q" || token == "stop" + || token == "?" || (token == "ponderhit" && Threads.stopOnPonderhit)) Threads.stop = true; @@ -235,19 +265,21 @@ void UCI::loop(int argc, char* argv[]) { else if (token == "setoption") setoption(is); else if (token == "so") setoption(is); + else if (token == "set") set(is); + else if (token == "s") set(is); else if (token == "go") go(pos, is, states); else if (token == "g") go(pos, is, states); else if (token == "q") cmd = "quit"; else if (token == "position") { position(pos, is, states); - if (Options["Clean Search"] == 1) + if (Options["Clean_Search"] == true) Search::clear(); } else if (token == "p") { position(pos, is, states); - if (Options["Clean Search"] == 1) + if (Options["Clean_Search"] == true) Search::clear(); } else if (token == "ucinewgame") Search::clear(); @@ -256,7 +288,7 @@ void UCI::loop(int argc, char* argv[]) { // Additional custom non-UCI commands, mainly for debugging else if (token == "flip") pos.flip(); else if (token == "bench") bench(pos, is, states); - else if (token == "b") bench(pos, is, states); + else if (token == "b") bench(pos, is, states); else if (token == "d") sync_cout << pos << sync_endl; else if (token == "eval") sync_cout << Eval::trace(pos) << sync_endl; else diff --git a/Engines/Linux32/mcbrain/src/uci.h b/Engines/Linux32/mcbrain/src/uci.h index e6b31c5..713468b 100644 --- a/Engines/Linux32/mcbrain/src/uci.h +++ b/Engines/Linux32/mcbrain/src/uci.h @@ -1,22 +1,23 @@ /* - Stockfish, a UCI chess playing engine derived from Glaurung 2.1 - Copyright (C) 2004-2008 Tord Romstad (Glaurung author) - Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2017 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad - - Stockfish is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Stockfish is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ + McBrain, a UCI chess playing engine derived from Stockfish and Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) + Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + + McBrain is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + McBrain is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ #ifndef UCI_H_INCLUDED #define UCI_H_INCLUDED @@ -50,11 +51,13 @@ class Option { Option(bool v, OnChange = nullptr); Option(const char* v, OnChange = nullptr); Option(int v, int minv, int maxv, OnChange = nullptr); + Option(const char* v, const char *cur, OnChange = nullptr); Option& operator=(const std::string&); void operator<<(const Option&); operator int() const; operator std::string() const; + bool operator==(const char*); private: friend std::ostream& operator<<(std::ostream&, const OptionsMap&); diff --git a/Engines/Linux32/mcbrain/src/ucioption.cpp b/Engines/Linux32/mcbrain/src/ucioption.cpp index abc5fba..3c31396 100644 --- a/Engines/Linux32/mcbrain/src/ucioption.cpp +++ b/Engines/Linux32/mcbrain/src/ucioption.cpp @@ -1,32 +1,33 @@ /* - Stockfish, a UCI chess playing engine derived from Glaurung 2.1 - Copyright (C) 2004-2008 Tord Romstad (Glaurung author) - Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2017 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad - - Stockfish is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Stockfish is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ + McBrain, a UCI chess playing engine derived from Stockfish and Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) + Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + + McBrain is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + McBrain is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ #include #include #include #include "misc.h" +#include "polybook.h" #include "search.h" #include "thread.h" #include "tt.h" -#include "tzbook.h" #include "uci.h" #include "tbprobe.h" @@ -42,8 +43,9 @@ void on_hash_size(const Option& o) { TT.resize(o); } void on_logger(const Option& o) { start_logger(o); } void on_threads(const Option& o) { Threads.set(o); } void on_tb_path(const Option& o) { Tablebases::init(o); } -void on_brainbook_path(const Option& o) { tzbook.init(o); } -void on_book_move2_prob(const Option& o) { tzbook.set_book_move2_probability(o); } +void on_book_file(const Option& o) { polybook.init(o); } +void on_best_book_move(const Option& o) { polybook.set_best_book_move(o); } +void on_book_depth(const Option& o) { polybook.set_book_depth(o); } /// Our case insensitive less() function as required by UCI protocol @@ -58,35 +60,46 @@ bool CaseInsensitiveLess::operator() (const string& s1, const string& s2) const void init(OptionsMap& o) { - const int MaxHashMB = Is64Bit ? 1024 * 1024 : 2048; + // at most 2^32 clusters. + const int MaxHashMB = Is64Bit ? 131072 : 2048; + o["Debug Log File"] << Option("", on_logger); + o["Contempt"] << Option(20, -100, 100); + o["Analysis Contempt"] << Option("Off var Off var White var Black var Both", "Off"); + o["UCI_AnalyseMode"] << Option(false); + o["Tactical"] << Option(0, 0, 8); + o["Threads"] << Option(1, 1, 512, on_threads); o["Hash"] << Option(16, 1, MaxHashMB, on_hash_size); o["Ponder"] << Option(false); o["Threads"] << Option(1, 1, 512, on_threads); - - o["Clear Hash"] << Option(on_clear_hash); - o["Clean Search"] << Option(false); + o["Clear_Hash"] << Option(on_clear_hash); + o["Clean_Search"] << Option(false); o["BruteForce"] << Option(false); o["FastPlay"] << Option(false); o["No_Null_Moves"] << Option(false); + o["UCI_Chess960"] << Option(false); o["UCI_LimitStrength"] << Option(false); - o["UCI_ELO"] << Option(1500, 1500, 2800); - o["Book Move2 Probability"]<< Option(0, 0, 100, on_book_move2_prob); - o["BookPath"] << Option("", on_brainbook_path); - o["Respect"] << Option(0, -300, 300); - o["Respect White POV"] << Option(0, -300, 300); - o["Tactical"] << Option(0, 0, 8); - o["MultiPV"] << Option(1, 1, 500); + o["UCI_ELO"] << Option(1500, 1500, 2800); o["Skill Level"] << Option(20, 0, 20); - o["Move Overhead"] << Option(60, 0, 5000); + + o["MultiPV"] << Option(1, 1, 256); + + + o["Move Overhead"] << Option(30, 0, 5000); + o["Minimum Thinking Time"] << Option(20, 0, 5000); + o["Slow Mover"] << Option(89, 10, 1000); o["nodestime"] << Option(0, 0, 10000); - o["UCI_Chess960"] << Option(false); + o["SyzygyPath"] << Option("", on_tb_path); o["SyzygyProbeDepth"] << Option(1, 1, 100); o["Syzygy50MoveRule"] << Option(true); o["SyzygyProbeLimit"] << Option(6, 0, 6); - o["Debug Log File"] << Option("", on_logger); + o["Book_Enabled"] << Option(false); + o["BookFile"] << Option("", on_book_file); + o["BestBookMove"] << Option(true, on_best_book_move); + o["BookDepth"] << Option(255, 1, 255, on_book_depth); + o["Debug"] << Option("", on_logger); } @@ -129,6 +142,9 @@ Option::Option(OnChange f) : type("button"), min(0), max(0), on_change(f) Option::Option(int v, int minv, int maxv, OnChange f) : type("spin"), min(minv), max(maxv), on_change(f) { defaultValue = currentValue = std::to_string(v); } +Option::Option(const char* v, const char* cur, OnChange f) : type("combo"), min(0), max(0), on_change(f) +{ defaultValue = v; currentValue = cur; } + Option::operator int() const { assert(type == "check" || type == "spin"); return (type == "spin" ? stoi(currentValue) : currentValue == "true"); @@ -139,6 +155,11 @@ Option::operator std::string() const { return currentValue; } +bool Option::operator==(const char* s) { + assert(type == "combo"); + return !CaseInsensitiveLess()(currentValue, s) && !CaseInsensitiveLess()(s, currentValue); +} + /// operator<<() inits options and assigns idx in the correct printing order diff --git a/Engines/Linux64/mcbrain/.travis.yml b/Engines/Linux64/mcbrain/.travis.yml index 87a3e7d..0a214d1 100644 --- a/Engines/Linux64/mcbrain/.travis.yml +++ b/Engines/Linux64/mcbrain/.travis.yml @@ -18,11 +18,12 @@ matrix: compiler: clang addons: apt: - sources: ['ubuntu-toolchain-r-test'] - packages: ['clang', 'g++-multilib', 'valgrind', 'expect'] + sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-5.0'] + packages: ['clang-5.0', 'llvm-5.0-dev', 'g++-multilib', 'valgrind', 'expect'] env: - - COMPILER=clang++ + - COMPILER=clang++-5.0 - COMP=clang + - LDFLAGS=-fuse-ld=gold - os: osx compiler: gcc @@ -44,30 +45,30 @@ before_script: - cd src script: - # - # checking bench for various build types - # - # obtain reference from git log - - git log HEAD | grep "\b[Bb]ench[ :]\+[0-9]\{7\}" | head -n 1 | sed "s/[^0-9]*\([0-9][0-9]*\)/\1/g" > git_sig + # Obtain bench reference from git log + - git log HEAD | grep "\b[Bb]ench[ :]\+[0-9]\{7\}" | head -n 1 | sed "s/[^0-9]*\([0-9]*\).*/\1/g" > git_sig - export benchref=$(cat git_sig) - echo "Reference bench:" $benchref - # verify against reference - - make clean && make ARCH=x86-64 build > /dev/null && ../tests/signature.sh $benchref - - make clean && make ARCH=x86-32 build > /dev/null && ../tests/signature.sh $benchref - # - # perft - # - - make clean && make ARCH=x86-64 build > /dev/null && ../tests/perft.sh # - # reproducible search + # Verify bench number against various builds + - export CXXFLAGS=-Werror + - make clean && make -j2 ARCH=x86-64 optimize=no debug=yes build && ../tests/signature.sh $benchref + - make clean && make -j2 ARCH=x86-32 optimize=no debug=yes build && ../tests/signature.sh $benchref + - make clean && make -j2 ARCH=x86-32 build && ../tests/signature.sh $benchref + - make clean && make -j2 ARCH=x86-64 build && ../tests/signature.sh $benchref # - - make clean && make ARCH=x86-64 build > /dev/null && ../tests/reprosearch.sh + # Check perft and reproducible search + - ../tests/perft.sh + - ../tests/reprosearch.sh # - # valgrind + # Valgrind # - - if [ -x "$(command -v valgrind )" ]; then make clean && make ARCH=x86-64 debug=yes optimize=no build > /dev/null && ../tests/instrumented.sh --valgrind; fi + - export CXXFLAGS=-O1 + - if [ -x "$(command -v valgrind )" ]; then make clean && make -j2 ARCH=x86-64 debug=yes optimize=no build > /dev/null && ../tests/instrumented.sh --valgrind; fi + - if [ -x "$(command -v valgrind )" ]; then ../tests/instrumented.sh --valgrind-thread; fi # - # sanitizer + # Sanitizer # - # use g++-6 as a proxy for having sanitizers, might need revision as they become available for more recent versions of clang/gcc - - if [[ "$COMPILER" == "g++-6" ]]; then make clean && make ARCH=x86-64 sanitize=yes build > /dev/null && ../tests/instrumented.sh --sanitizer; fi + # Use g++-6 as a proxy for having sanitizers, might need revision as they become available for more recent versions of clang/gcc + - if [[ "$COMPILER" == "g++-6" ]]; then make clean && make -j2 ARCH=x86-64 sanitize=undefined optimize=no debug=yes build > /dev/null && ../tests/instrumented.sh --sanitizer-undefined; fi + - if [[ "$COMPILER" == "g++-6" ]]; then make clean && make -j2 ARCH=x86-64 sanitize=thread optimize=no debug=yes build > /dev/null && ../tests/instrumented.sh --sanitizer-thread; fi diff --git a/Engines/Linux64/mcbrain/AUTHORS b/Engines/Linux64/mcbrain/AUTHORS index 3095efc..9b91b93 100644 --- a/Engines/Linux64/mcbrain/AUTHORS +++ b/Engines/Linux64/mcbrain/AUTHORS @@ -1,6 +1,5 @@ # Generated with 'git shortlog -sn | cut -c8-', which sorts by commits, manually ordered the first four authors, merged duplicates -Michael Byrne (McBrain) Tord Romstad Marco Costalba (mcostalba) Joona Kiiski (zamar) @@ -95,4 +94,5 @@ ppigazzini renouve sf-x thaspel +unknown diff --git a/Engines/Linux64/mcbrain/McBrain-9_x64_linux b/Engines/Linux64/mcbrain/McBrain-9_x64_linux new file mode 100644 index 0000000000000000000000000000000000000000..26fd9a34cbef871badd46e32022ac3156d91fe53 GIT binary patch literal 290136 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 AW&i*H literal 0 HcmV?d00001 diff --git a/Engines/Linux64/mcbrain/Readme.md b/Engines/Linux64/mcbrain/Readme.md index e3b36cc..46f2609 100644 --- a/Engines/Linux64/mcbrain/Readme.md +++ b/Engines/Linux64/mcbrain/Readme.md @@ -98,9 +98,9 @@ for a quick reference. ### Resource For Understanding the Code Base -* [Chessprogramingwiki](https://chessprogramming.wikispaces.com) has good overall chess engines explanations +* [Chess Programming Wiki](https://chessprogramming.wikispaces.com) has good overall chess engines explanations (techniques used here are well explained like hash maps etc), it was -also recommended by the [support at stockfish.](http://support.stockfishchess.org/discussions/questions/1132-how-to-understand-stockfish-sources) +also recommended by the [support team at stockfish.](http://support.stockfishchess.org/discussions/questions/1132-how-to-understand-stockfish-sources) * [Here](https://chessprogramming.wikispaces.com/Stockfish) you can find a set of features and techniques used by stockfish and each of them is explained at the wiki, however, it's a generic way rather than focusing on stockfish's own implementation, but it will still help you. diff --git a/Engines/Linux64/mcbrain/SF-McBrain-v40_x64_linux b/Engines/Linux64/mcbrain/SF-McBrain-v40_x64_linux deleted file mode 100644 index 0979c1e3c4f8dd9912d690717aabefeb6d0cd985..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1196376 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[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

8K(m6Elq5V|3K8k9*{y! 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

k= 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

03px7#ZB};c-Da&K-E~A`?i~5 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 z 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 H;|csPElow5 literal 0 HcmV?d00001 diff --git a/Engines/Windows/mcbrain/.travis.yml b/Engines/Windows/mcbrain/.travis.yml index 87a3e7d..0a214d1 100644 --- a/Engines/Windows/mcbrain/.travis.yml +++ b/Engines/Windows/mcbrain/.travis.yml @@ -18,11 +18,12 @@ matrix: compiler: clang addons: apt: - sources: ['ubuntu-toolchain-r-test'] - packages: ['clang', 'g++-multilib', 'valgrind', 'expect'] + sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-5.0'] + packages: ['clang-5.0', 'llvm-5.0-dev', 'g++-multilib', 'valgrind', 'expect'] env: - - COMPILER=clang++ + - COMPILER=clang++-5.0 - COMP=clang + - LDFLAGS=-fuse-ld=gold - os: osx compiler: gcc @@ -44,30 +45,30 @@ before_script: - cd src script: - # - # checking bench for various build types - # - # obtain reference from git log - - git log HEAD | grep "\b[Bb]ench[ :]\+[0-9]\{7\}" | head -n 1 | sed "s/[^0-9]*\([0-9][0-9]*\)/\1/g" > git_sig + # Obtain bench reference from git log + - git log HEAD | grep "\b[Bb]ench[ :]\+[0-9]\{7\}" | head -n 1 | sed "s/[^0-9]*\([0-9]*\).*/\1/g" > git_sig - export benchref=$(cat git_sig) - echo "Reference bench:" $benchref - # verify against reference - - make clean && make ARCH=x86-64 build > /dev/null && ../tests/signature.sh $benchref - - make clean && make ARCH=x86-32 build > /dev/null && ../tests/signature.sh $benchref - # - # perft - # - - make clean && make ARCH=x86-64 build > /dev/null && ../tests/perft.sh # - # reproducible search + # Verify bench number against various builds + - export CXXFLAGS=-Werror + - make clean && make -j2 ARCH=x86-64 optimize=no debug=yes build && ../tests/signature.sh $benchref + - make clean && make -j2 ARCH=x86-32 optimize=no debug=yes build && ../tests/signature.sh $benchref + - make clean && make -j2 ARCH=x86-32 build && ../tests/signature.sh $benchref + - make clean && make -j2 ARCH=x86-64 build && ../tests/signature.sh $benchref # - - make clean && make ARCH=x86-64 build > /dev/null && ../tests/reprosearch.sh + # Check perft and reproducible search + - ../tests/perft.sh + - ../tests/reprosearch.sh # - # valgrind + # Valgrind # - - if [ -x "$(command -v valgrind )" ]; then make clean && make ARCH=x86-64 debug=yes optimize=no build > /dev/null && ../tests/instrumented.sh --valgrind; fi + - export CXXFLAGS=-O1 + - if [ -x "$(command -v valgrind )" ]; then make clean && make -j2 ARCH=x86-64 debug=yes optimize=no build > /dev/null && ../tests/instrumented.sh --valgrind; fi + - if [ -x "$(command -v valgrind )" ]; then ../tests/instrumented.sh --valgrind-thread; fi # - # sanitizer + # Sanitizer # - # use g++-6 as a proxy for having sanitizers, might need revision as they become available for more recent versions of clang/gcc - - if [[ "$COMPILER" == "g++-6" ]]; then make clean && make ARCH=x86-64 sanitize=yes build > /dev/null && ../tests/instrumented.sh --sanitizer; fi + # Use g++-6 as a proxy for having sanitizers, might need revision as they become available for more recent versions of clang/gcc + - if [[ "$COMPILER" == "g++-6" ]]; then make clean && make -j2 ARCH=x86-64 sanitize=undefined optimize=no debug=yes build > /dev/null && ../tests/instrumented.sh --sanitizer-undefined; fi + - if [[ "$COMPILER" == "g++-6" ]]; then make clean && make -j2 ARCH=x86-64 sanitize=thread optimize=no debug=yes build > /dev/null && ../tests/instrumented.sh --sanitizer-thread; fi diff --git a/Engines/Windows/mcbrain/AUTHORS b/Engines/Windows/mcbrain/AUTHORS index 3095efc..9b91b93 100644 --- a/Engines/Windows/mcbrain/AUTHORS +++ b/Engines/Windows/mcbrain/AUTHORS @@ -1,6 +1,5 @@ # Generated with 'git shortlog -sn | cut -c8-', which sorts by commits, manually ordered the first four authors, merged duplicates -Michael Byrne (McBrain) Tord Romstad Marco Costalba (mcostalba) Joona Kiiski (zamar) @@ -95,4 +94,5 @@ ppigazzini renouve sf-x thaspel +unknown diff --git a/Engines/Windows/mcbrain/McBrain-9_x32_old.exe b/Engines/Windows/mcbrain/McBrain-9_x32_old.exe new file mode 100644 index 0000000000000000000000000000000000000000..b07cd429469676607a58952998bd54f4c7462dd6 GIT binary patch literal 1322510 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

}??aGSoSg{bI?GT%X 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 z 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ȕx?w}r^I)`9YuI0-p+4s7SF)`R(p2(G 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�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

^vwl~FPZ?1m-^oLU4-&g8)MBW+2$t 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� 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
chMNq#$*bJtWH-sRS`XSpH+iv} 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�<%XY1bu4Iiq(`_Dh&7YMd!AhiqiU{5+z-0zowU_ukC46P2CZS4ru9FaK_ZIFZ^jwqtn!$ zdZ#I+`ls<#!7X)Y3?APVd{c56+PV#oS07Yj3|W?0qIa3nFFNp$^iZ^Ci`9%>;ewBE zJ-W!qoKRdaXI$rSw7jK6&zus{=Z3LQ0PWlr|GY%+FhvFJJ2)ONer!%2KKQ-7svx8< zd7DO-B79Ub5>MZ{e$ICpMbQp-7pE^O?z*^kd2zINCJOdK##3+cr1sUAMJ)_>T|IbS zk-jj}*gLW| zPRgiWAAb|2t@wOdG(#5MUluG%%cPQD$M2jxS@O%F;Tm&GQzH;C-xq`>^V-(+8rTnm z{nGSBrCk?esszTvS+J$$tuP;OGp`+9r$rh!hoS@1I@$5(MBi>oDJEbuGTRY%-^5=A z8`0WX(W9|zCQKU@C2cO(CHspUU2T!u}6%Xib5 zpt~{J;n=hP)n;tK=%m_X%b(hV%^56Wvq9_P&qJzqA5ep20lPsHoz0ny$h+8LT00?Aj4m1R7>bgeUw2Oef&01Hr2gk7}!G5r*L=W9Gu^q0{ z_|XGH?Lhjfz>u6Ws6(#)aR_hWdMu~?7}4UEb8o%rWHM9V>|et87DK`2aa}@Pe+m~Y z_C?z9yk>4Xp6ZsxMQ>bLT7WmGE%0BZ6tVGPC^Cm`2jR!-(@P7MOe$%qj+b`*xOX)3 z@Y3{8u_nO2u$GppaydRt%0}Tcvb1PrdZ1>D@6P8zs3Y!m!&pexnZ*Qr7jb}Er-y-%g5Bef@GLL23;*%ia*wHv~b*GYd$Tu6K zktuWZp}v4#0>{!}pI?N#uF{t6!X$Ov>Cx(z!1!Ia-gJ@{JtNH&dRHZM6a}5kEUP@I z-1Y&B{}>cu@h^n<+Xa0yuiJ&`XFG_0m_BM(^>=X2?LuAWg_gzpMZ-t7Lth+Fn!ecT zi_2_(G7R%#)gkS;L*7WyAu~JlMkr%gYiIVz_s$-PhR8V57slvYO78A)pkkvaY~b-}gg=4b^CRR@qLf}gLB zxBGncnjh$D&}0@@q)={R7MjG_sFQ@k3kx%uNe#&`ZEg2YQSq8ZYh$0Ux#_^Q-9N+G zm$4h)UGu}5MPJ4~Uwz}zYrDURYpx0&xAkRh_ZQUNc%v<&`tu>9b$6pyhkTF%$*CWo zZe#h7e%wVrm3)>Ucauv$zT%smpL~Vo^Aw*c{peRDMU(rJQ$M<=P>*Z4vL?|T)ZOag zJH=B6(l>Sd37YX1e)&#Wc;jN6bbc8pq#!?$g5ZMZLApC|j_;zyzCjC7rKKGY*)4zn zJhc2IrHb(pUOwrqH+&y#&kmu{rpd(REqz+l<1@U_nt%rtjgo zHOqaqI>ca%03`JVtrH0yvvEU)<#@4(ud(~h#2`lB)de3_XPk5GXTC@4D4p47AVJ8J zem=oe`n3$~0bn9T2iOykg%Y4OFHtG|*Kk4HSF@ceJtuh1xjDX?k#N|)N9V@=fg`?B z8zAg~dQk!wev|}pL`bPjCB&J(!wMB|Vt>Fe09yydkyoUbbSnb69B~QAQ8hU0zgfKW3nY1J{3v744ob9#`O^=Xa*4UWu^%A8_%}iQ6s*`Yb)>=u{qRrbttl}(0AtrG#{z`y85cnoNeuZN9`)b)OFd;BBR5L z)GGi702^ZfT_Z+rMw=0)(LxZszY4o3q+dNaHQtK1fW4^Oqk=HkC%qj(2G z(1Lm~Dk)BjzmwoSObtk|=SmIu#ZpKrY`l}x$mZ~H&T1S(6hRF{s6JeZ(V{2&_!0`jXiVj;W&-mv21YNgQ}C=~UH7`{54r|D&( zStg{-i>w7&SANG4(wCO{rUB!|*HgnMtLc1zOuUSy;n6{;r4;W;?kc4pwQIwAV^t4x zGSDoR9q}>UPci*5A*;URYyt!A!~t2V{`JukQ^}1 zA@m*Bfg~H`-30sMI|_?Ad1OvN4kPqH89zWSOLIPj`ImSHrD+0D>2fkq65m}*poX09 z0V)dBXcm4j6E4{5t0||E0{iBXx^onUwN1J4EEC^=lH;|<4|vaWevxr%als~E?Hv$x zkufZ@sNnCUH+4ud=c^sh7l$G-!L6$`qg23};H!%_<1*e^6>n2Vj!wc$DWJlaHbQ5L z^wQ5Xy;vZ(B)q$Nk_-s7UpVdGjz0Yiv!D_r|E_%{wi$rD7d;3r@0-=G8hy*X$^ zUF;_E)%rE7i;Q00aP+FxM!!rgdNHagZbTI!q#nu=b@@L-Yjz^74a0+|CsL#M3m-4a5dek3u?ciS2v+hk#EM+jX1+9_xtz}lZz(#wMZ}*hygGKBg0qoBFZpzq$O@X#Q)~$w4p&!Sa`ABU%V`exjSXmV~(!m~$F%dzyI|H#&skdc`KWT5#m zE2g}9c<>!RsKjrlx&LD*qv3nd(ax(JMb6~-^7vy6n&@+?uM!VNNDc8x-*OS@<4@mG z*d@KHx0s9Bxxgk}te^1TTSOK_Tb3eV{&FzE7r;r&(x5&+h7Z=mI_HUN;C5)pKXWG1 z2f-nHekzuGqlwb#suKN6En~EZ^g}(px};YhDE>m8>H>&Fl%X7m#Ag$w<8V3tM&kPv z(|$11u9l%y@dmlyO#f82qUJB85)D1G&=|A^D;Sq=ng`z$z%m#!SNJAb zgWEU3pKQZe<@Qa$ualh9^DE$-04|T0H8HIu|Fl2(C#T$Qz*Dy5`8}ZYPi8QpuZE_p zXe?_wVzyOS9@HJrsQ_-JXR)Ph(nU0Ph2!O}J%rf$585W}dr{SC$+WO)Ng_22J_hoP z)!`^^B^C&9hM}G(Hr+-H?e8?8sy~avZ-;peq=GP;?~tb>bHMz&s(0Soy81k9C$JmUF$!s$*G%K=KFKl2?g4^YIuKNq#6yszp%MAko8 z*8lT@g!&J~ett1DRsFe$;P93jX<}4I32x=iv+<~NPlkLhhG-PqD2L)A26&k-N&H7& zA|en6-kKmGbJd@;x6)Rwc;}rLUV9U9BxM@G(A(2*>|`bNCTIpbPe`94>(Z-_)I5{9 zdongh##g{B(4DFX^qEKkHo}X+dhnp$#~3}t^0BCpHmv1sj@-^qiH~SMU}RpIrWe+U z)4m}+DO{+%nSS!gg@qUO?M2{I)U$Ze7P{^g%f=IdHIaZfU3g9+_y+TTD3q8Ku$ntL zc4UA11og+-yU#H_$p(Yf2gVOk_Km3tB8Y02SN}XuGx~eAb9!f2b%-Bj+8^ealpC#} zEW7F_tpK^bd_{B7h^4CAV=topO4f9+_3JchuhH?>nXF&;evbjfsb7U(p?}9=5OF-L zo)_Pu|BQea?(V)ih(6b$Vlp3DfP$wn?fYmJxg*gq21WvLa0>(m#sG^z>&wTVNKIZK?bvlV09|G$9OCz}1{7(`v?~Om6j0@x5##}qpl^HeT zZ$FeZm!f8_239jqJnF;DJL;*-B5aY!{y>eKYLoqtbRJ~yx5y^Y+sRvIz&6vn3xq(= zd$37wHqi^&^u{TAB?|j=cm?E02uy96q;`@;Z8A~&mFz$^I!{sCcB0*A>Q8Yo zZlFIBx`O3F@sx|IJKFkUguM9LV59&q_3o`JO0NUtRQ;XZfuw)fft-c>4aoVHU4{4A z8jwQdkwXSL?VJOvj#f&T1;7o7<1`)Nc6!hYrjF`U%r_h zF(uG)Jj-+R38p-Et%C%bL0C!P6qpnB&z2KR30V6T%J^&W&^SN15En7sd7?Y^Oa(En zAu@X!mCf-FNdpP{|vsNFOn=#^oN1!qF>pPURIG)_-F3|HIvz z$4615|Kl^{Ac15%NYEg-h9&MM0xMZz%?L;uW}pXpAb|IY8$}RyMVSDC3OI?cIUs~f!Xc+3hiEqg8g2+ezVCN+&txW&z~}e-{QmfT@nxpFy6Rm| zJ@q_wJoQvn6~B34T*a)Mf};6?mt!RxN!+I&`^Rv14WKX-xJv@MU9xp+Ee zL-uz9`>Xyd*k2aS{wz=u&Hg#mt;j)mm#+oea8jly^k+inj~LU$vId(di|=T!!1S|g z5OsS*z@a}dhrxYH=ucYX`ja8_2UV}2k{jwzI4B=9_Q{CWpNPC?!W;-y1i+WPD#bM< zL#}iX3Dp99XD_~7KZy{P7OPb5?F~}#B^;R*BY|xgfl5FHK-W> zA8C;z^ac7?3$p;2ML6XFMssw{)^>3A&(b3FXB<-76K~j$4Y@Kti$jrcJdE3N58Grd zBT44(Iksi)EYtH5X5%4>AK<*=Lhq^3QVO0}{Mbc)eCo(O%yD*6H&dJk7R{7kx`Rw{ zqU2-@)?4ZsBc>g939hir;LOIef;k{-FqkvA>$pK9a4aGg=@ktDf;j-{acjo7JEc#- zwsL&9HBI2O7A5G>FJs(mAV`q&&xQ;FsrCF3Q7+6No5`WKz$VC2BPxkIp56 z8A{GtW!l->nmHU(TA=YaK0Sb;@@Vhp5u<3?**H(`VXyST*PiJH%Q$)$d`&yIRq%mL z&|84#7k1yKF^{!D8}ttM^f54B<{08QfrBs}ty5q`f=~f!1+7P!#=GDrMjcTL;L+8G zFX8d-8{^3M)J|CSMx%VZ2yJEbc;v;e(RBO>Rg6g<9>1YO6(fy%2omW}W_3Hq{`vOq zVr-7~?A~tx@^7KfLbZ3}$PxA@Z)JwtvxfF7+T%Y&5pe#VFu~(Y1&maD@XRcBIguDX z(ZyZy;0?y-K#!Ugx!n4-ZdZ;!0p5*08KXu?6Wn8!|Ira_ZjgL#%Y_i{kE zOku-&sy8g$bgF|5?{v0UPZFKZDxdR|PdjbASmt!p8?<4&Lwn@S`Py6dGtGBk zkK)vCqU2zo;~B23O^4N5<$lNqV7PXk<$G^5GsbevYTVEHvwHj3;U1;KW>*EvbD7>8 zSTG?jeypdygh-T#1~W~oUSrmy@-dFJg*c}w;>AfbC6+&yL<%8&fCC875?L%WvQ<|V z7LI;DWwhuSjuuWu<(Qtysu^(JK z$8H_5K6W3>G)nNPY_IEQ*t`8#={LzeKF=~hfmHlwND$XQK$bZc&$E5n4=gc?XO&2r zbv=T8u3D-1V`R?ac!N`5lsiiAhN%eRN^8DU{8v1(d;srl`HqXCK2pELa}523-p?xL z_((CaN)uJg5e2h)mVlL==gyc@s`iZ<%xb4%4_FQ2da=ys`d-m3DU^a-KvP|i%p+)U zvK^{4XszfQy`wi`P01V>Y@el$KAWvNkNQR*&&Hyp@z!dNcdRQg6n%!s%*%EPYvZ+X zs`SA&IAlvR??VmwT>Atn?%DH6gSXhgo3ddgA=1lS7I587DPM?Ui6ts!^jdT)7InVS zKckO;R>GKB#ySW6Q&ssUkw1HZKBoK>ezMLc8vNNP&gU_{2n$-bS5vribi)>zh_i+FZ3!1@*oZxBJL_!TT> z8OufiJrZte2tz^ANVHWBihG!BRUd)&pCogvfu;d>JjCwO~8e@}ec_yGBNrkgLhJhp-NZ@2m+c&Zi;{laLi=0J~!_WHE09+@N54OB@CS z({qJz`LrDnEGEo1Zdy;qgKqO)7-U7(7HTB>y9G2!0?9T$Z~MWOPJ5t^LQf-#YbmS> zJtPZpjf$nURM_KJh7}fxMDbaa;bsYFjUEv;=zn~u-}>?3PyZDC&&anT{m)kPKQDz!bjZ(?)da6cUF03B=@MHCgBR7JoxO%GcY^od) zs_IKzKYsobLG{#jaIe6axA;FOWAylW|5pHgAKh_%T0VvESFoqr@cuE*jKEDU{gOZ- z?1;FK5lraEb!gf=ecP>}5T|a4Etoh8=~><(ZNS7~s(uHINw_qo zN-BPoT++QTa6^vNP?CNK3L1CCvvH{*r-ECS-*&wZpY&L%ry2Htw9>@g+)<7bYBq9xNC_B3{dGp-mkM>a7%1G-Ejy( zj$yjZz96W6yy?-2hs|bfK@O?1Xj35t7;Azzf}=8O68wvB^c6u^0m%eM=iyD!2Bgs- zNpmDw(Oh1|%?pmZDpYL%Qs16t;)=hz*{o%=1WzbQn#p0f3VEV~1q`G`%4|zI-X5whVVb6UhOdeHNPAY7^3#@g0#=@rfQHQZ6LPJ zLIAWo#0FgC;ntFE2BT)A5?s|>XZ{U;d|HLM6YY3-{hN|$o)7_3nYXIlNome7TOhI$ zn3#qVY%EGKpF&o&*YKVU)D=i9I*zhtfFG4ejp|4;af}=vGEAI*0*5z&gMCB|D;k>3 zibnaM4h<@renMXC-bF>De8=!cKvXnT8cgL*OjR42WZrL4mm#S8mAM%aEq%4pE-HzTalmbj9xfkFV$jOgIG5WqXZce(~J#Mk2v2q4zU!3Zw| z@Qw_Y6V*eWDNyMKd~c3?OyMno!=BA|MW=XYk~vV6Vy{;>tc1kgW#t4MkhTSOsc&=&0aM2X8(Y&R|bCvl*5`Lcc`ni-dh zGwX#qbMk0uqTSpSEeb29SieHf8OSrE=&xRASP1$@O1=l2m7ePj)`d5Xt~z*ocu^y4 z(zp)c?V$i50dHO{AI3gwt%1cbyOBHG*pD{#cYz*`qTkpwg4pO5QS2KD@ApD{l);ic zw9j^7Y?9FP(1Hueuvb7VS{8$Rn-)k%TZ@*ouqoGk87+#n#a-tC17nTaTx$ZjhR_%If9V)KCImsQ3A24P@AHzob$L<7;_I1USL-;D8pge4lb>#owG z(v$IhGI_0b4XicdwxHP}77v1ORgZ&TAnn&oRz6{kqQh{x!!kP;ePP+LBYq#vjKX)Q zgAt%`{f1M~-t7klz0s1hYABJMp}J&PcW#F@(!`B$^P3^ zU4oBE>5@#cgJ%X0NrS&fgYv`azsInQaRVae>0y?6x~(9-N8gOcJ_r{|5fEo>{DB{bgqj$%W4PrcQ=4)>YE-VSPD% z-1r=q-O5mP*>~M*R?IjH31j^md5_c2DsD*&rVFNynjH4Ws)9!=s<2vGUL9Iye6$;F zq~%W#&TcK{f_8SR{T*RD7Z~t0K{8n0jpgS!u4R_Ee&(aPpX-b<1c~~WyUBEcu1E;p zH6)6>M;oU$)z83=c-59215HW7SJ~9 zL*i)+#kvO^#@k`<1y&2jrD3;;eR&ziTre2PNhp8=Q@Jd7n7g$*YBc$H_>vE82~tX=5H|eEG(&QjgbRT9?U{xURgAJByn*vbC0w2TTXC*#x&Snkm-yjjrhQ{fS2H z9o7QF?PBw}IX}8~;9n7nt{tow-4aT{MFtGN=C8sy)d`4RXS>1$8gsvKh^+#3+tdh z48H#`|9*pcZM@j_-&}944a1%ckMdU2AC( zwFVfap{2&8UC|OBV}A`Cx}BER1%gxCJlYD6w7f>q=U5@|xgIPFW3X{@oN(|R>?rEJ z1SUW<$Hi70m|{d~-NB|6hshZ&{|TOjKL=Kz7Om0?*VqxWRlR?bbxd>l9c%(E9C&+v zN3%{C%jyQ4(cOUbj1$9pb_KYD62|#u=z92X3awpvCI?0w-%fXD-Jt4^U<}_}>4D_{ zU+_t|7>XH(ejCiD+oWelIfj9EQwHEzRY}aO| zhkio}yu#9kiw_Uml8#7X)?zRVFl#;}py+*DVjwuMCf?*Jr1kSfg-!K626*$!V~K+TmtsLQZbnn?t{(Aq&NIsG2uH9DQ|&!4`T*XgS}xD zF?Qn_9%X3xi`+)-Z74)oAh8Q)0SiTWt@on!w>8r5g#*dSP!-*Z475Phv*GdZZ997p zMl6dij!~3ie28@B7El@b#8`o3#CqArN(a{en*Ki)(SQFX=>N7R^k1R=&jv@ZN6oFR z^x#kxs6PV~sDE!;{ZBn2)W5f*C_ke9A`Vp6`i-c6%ImC^Vk@}enjrdn`dmX4xP^N! z`ZvSSm(t0_N{}xtf}2A<<^`JpuJ=LlyvuN4BLDT4rR5uPPkNW1w%^enbPi3l$I~)a zM3E(WW9&zG+^O`KSR*}i10c}2(ht1-lCzc{xQuSI94%P%s^sjA_?Fab{S~Q8foW$~HwB zT#K#uXa?>E(Xga;h8-GKcH_a%xw~|4eN!NLKqgLvIc+ps$l=pz#R>n@dcB_zh-d_; z7(Xpazi*|!P`|slR$A(f6>XfxV5|4I$0B8*`u0a`^Vj%OuhDJrMvYFzZ&=^;g45VQ zFpCSrW)=Q~bEm%gpAECgJRp)_eiQz#h&glktstbM36H4gZScMg%RqGfqe}^R;b)5r z1E8Xh-ic+&H6hp}D-6%Atic_|G6z)jc6=~eUmOF@@~KE?rhw;0Mpr1$@cEh} zg4`H9skX*>_WVqb{QDe5y&@VXl0iGH--yN?gfj=3CxRR7O{(x=%!U4zlKwQ>&qzG9 zgJBp;$(qOZwHfSdKgCj`J1Y%a-IiIZRoC0gis!%HTsz1QP4VeZaFB6=x#fAP^dNu%^^9BbyNA%G;Pvj{OUg&8Od=p&N2vR3Dlb)fauE8uuD&9zD zMS7$+s8HDQ_Gz~C>_>PW5jcl#f)?Eo+;F&@pRrE?>q$HkOUZ$EL#cv8Qa0j-+A3%r zrUIv-b^TBRdIxdt zkz_f4QiAa#IZ;(aH+(Ol!&6U?ilOK;*5;k5AWjfmlxcOqzoY(uI1sY&TxhPCZ?i!D z8%MatWT}?UUN3HsjW7V`3$ROu7ZUO=se|ztAm(=Vxgx!-z4)*iVbtC-ev90P`-}cq zw1Sn84Xc^t*>Zg|%%MR2tU2;Bdyz=HJO$>+s5j7U?gDuISFtxJn3|M_PPh==PFTbH z8AS!GMO#RtgfF@iZfDGbcIMWFszMm(R2cUUMH=Y%j-QWXKOR0A*TtZG91-DIfBYPz zGxvZ{qqk@!DvT>^q**`;E2jPX|61SMVP9DkW&?eX^sm(S-u3!E8?2?iceeHYmam1r zqlc~6cgAVZ8ghVL`vzIwNDs?OjOkt%{-M5mRls-)6u83B(m?CK5ek^?T?UIV|6L8$ zUk+QPcs8ejp4pa^D29s8R27}+b4Y|Pib^p!H{6**_t@h?%|~dRmE6@dQP^FoiY^rz zpE6Mj+$Zw0z3MEpg;ZQBiX9$;lHRbwFTk^<@Qe6Fg?|qZ)O4ZnP(ipQ{ZiYxJ{hC! zSJvwT_5H3WeYe%S`)|m$3#d1pG{OR}*y=qJVUhL&`Wx174zTO>`=8PJ-D6Bv=L_if zxWB~cHalSRP>lZ8>-P>@zcA`GRV@^E@z;tRrp{8VleE(bUEyf**o(j(wS-CpYfv5 z(F$X$YW;n*1Vg>rbx_ZX5kE(g{b%m!07 z(z?(dE2*`(ZU`!Z+4G0Ic&OblP#)g-@QdqCY&y5lM8n{Ln zcU?06k!s+p7saoQ=iv@uec?kFPeppZWzbO8s z2>w{&?;3Dv{0XKWSx5PQ@M8SAF@m2){K=P$|2pxAHE9wc9)EQWHsndxhVdC2z~+am-f3<{=827h4){K zKi5X^YhD5VU6+hMg!t-3@elqdT)(r4f7WxU^gD@vX!ynGzcNC9SK`mVWc-hCoR~4= zqWC)_^jE(O{2rH#e?Rd%UljlE5&W^l-$f($CG_vX)K79DUxEx2}Z(ITVL-(?Ljo^O~!S7D|1$_nUBKXyx1AlFg#_*>R ze@0XIuSM{``aAIR8{m&6{^&;WbBW)%Df}rB{37D-=@UzT8u42;iodr4`0MUzfZSpxi!t16xyoa?!;e^AIqQW&w#%+uQC2Oi9e$${MRD*U;PdE`3>;L5`T1~ z_#c%4zjIUgQzH09#NPwY8Z>$GdDg65O^A_Tl-W1E9noofr`eS4CKT7uzg;KR-qA+YoCZ#F-DKOYr?b|KHFGW`v&7T?^3}l3^zcBrJ>Z8P8cxw~ZRe&CBCBpepljmY7}24{-Il%p#SO!{oRSb09|b~f2#ir{I!3$ zFn@xnuYXSYZwmig7@RErfAu`@^BdrgCI09}@rMwmRpgzabNrtqZ*ei8Bapeu}~KaKb;8^wQ}`0Iu=!JiE<_*wGPhWJw( z;D7i5@ZbG?WBeH++W)5TKZxLe5(Iu`1N;Kw4{Q|QN&J+i@MlHvZy|muy25Dw)VvS; zP?yH&{|NV&84C-V;LqR){)rjDAKn0eHu3dF@$Vx8+I~w43C4Q$y@mmr9 z(BLNM?;XMKPW%PvYNPp6{T}ewc5aM6WuF3nMpO88Fu2<7zYhHT2KZx%Ke|!;M~UCL zDf}-Y_(jCugRU@|{xssZjK$ZTJp2&5!mu|}N%CLC^R$o#=OJDp{2}OnrDG?OeIBBm z5k3?#&EGtfMt}G4d5CHLW7v@#J_j-Ea%21N(2)zS^qc*einh^s?FD*M?}YO_4#PHF z^hg&wec*}@_~?U~?-?Kc4WJjq8ytgYz8Re+7BBUZ@amqArthUD@Rk)t=LPy;@5!@# zhNg?d74gTood7tIiJlU)2SvW;ao_K5El!fLj#0gq)&@YAE-@26n}Q0wuS%t+|_~FG-*y* z+1@xDek&mR7`PlZBe3t2Gkk9FuQzVJlAhg-uLFZA zS;qUn<+jl8aDNWZk83V1zs2?xo6+22$!h<2C3ufh#i`HE131_j7UABiJ@yWO2cVR2+A@B=hAcZBX1=&QDpsXhpopQbjsL#Q zlA;CJ%491=GH%kLk73b`MtU}IKuffX($&UI=*+MSAhgpsE}klklxrEX!zkVYN2RL~ zXzcu*mGT$o`tHqvZxRoVHBO<;r$^!jgfMY`BxYseU%kGKz>X(d;hwEmI7{Bc+VKB> zeTv$@6r)c2AVLoRWl*OPT3DT|LnQQ>VbMuP#R?sPL{vV*6wc6>#!iU0#Y_IBJ-I6d zfP#c;I+vrNsdvAIAHNVMG;6=NS~*n52>4O{-e~;~(Fk^hoqBo{Vp#u32|vD*||+!bvYHvZ!J zfczwuy)r)yvSA-ftY|G&?B~Zd%xR&`^@X#`mr18&ZLJS`anW0$Wi$SG&Hq=~3VzDm z0uJin&5rDbCSjXbDZNiKd3fNBX|Z{uq`1QoMMl|0k^43%GLDOCSY&X$ks?QS=Vihl zPi)Rp0;}tez7JPeTm>aK$2(2H^2)wsU~A>nMkV+tRGrH0jVnkpUiuB3lX(T#KI-1C z*4X}}d%(FJxDy-eQ`nOf=DT$)WemSX`wF$hs6$)p*06a1qSeBSlQ`ngFk^QzAQ$&+ zMkmrFY?$MLCxSB;%gCQAvCG=Z0C)aX*zzw%S&xG;NC2+lP}pWx_XNyxkrQZ)3}iQM>YeEtkvf+Kq(Z+e_j zjv|WDaS|V?FWks|k9@by7gjS4$~DFn@%s^D*O!sDmSoxWsW$^5Zap8HPT~5=y*)$H zJSC+QGiz`MDzmpTSuXNpCagQLzYI;sb*$D3;D^3qT`+_d!d%b!ty~`r=NhSx;1i6+ zs>of9Tbi`fxtomZ#xi!exMBxUxzkvUGmIcgE0)DcY8_T>@vpbi zsW0|1R8HswZL%uLIOnC5^tUAS3gbt-#wrv1YH#>8#`<%3UcC@puWKD-=H_2pGSjo3 zR3SBu>jxViH5gw&1^MkCVuW)-Otvu!a_A~6pDpVwmW1mA;@&_*M(~i41{(4db~RB$ zq)+Q23QZlM06uno3=PM~Dj|;$mHL`-Q9&NEi5P4Xaf$lzc1etW$VY0SF35TWk6s9r zV#CP6@HVqm`35_YD8-3u7Ogn{JXQ{GFT^Pw-{Isyob>%-HKPRY=6R(%jFvc_h`#}Y z<6RuhR%ui*i1Q6Gxc)eSq9V>7cJ<4Uo_Pz+40a#-aKLt5?k=(IumTZyS7UGq9(?+( zI69+RJ{dnW(=S&x7j)rx28>}0>;`I+hB%I*bZeU#_D$LQxcffD{IP|j!MU!gJ_y60 zz1GRnxC{$NlWJAooNA1dywcz*C2$7&tKI=5wnep2gMDxuY3cZu(xL%QP%t3Vf3FWa zGIO>SJ*GNqRc9Seo5ju5JX2W;`~#_Q)HRDx(hK|&4?GVmOf-(Mj-i@&m&fBsX48#G z*8V3iwktEomvDbnl9l5jD@XrK9Jb31)JLAi9!r!$oJ5WJdfoKq-QXLPgP)^uq?W>T%bD!>U$iz9KeFBtpMa|AvZ z&5;3f{kA=ScNn)JS6e5n_C!cM#ywkYso!aAx!#s~|8KeF#F_@$7j)t52pnfV{tDEs zb#cg$wCP}BxLdZy^k82RHtnJ3uD`V_(OC8X>5Rm*Z*pm8TyrHE7JKDVcVloS7}LW3 zr0tH`Ytr6mh0=tkvs}&Xa!siOH?L%(Hu%FYhsjlx_(6OTCH}u{{${t&*_>jpv3X*e*P#8J2ubp4Xg@bolJ0|Xz<3Uu$gHieoxM;AA-vq) zWw%T3{)vVIwo4OZj+Vf-MRBmi4rA06+{{SxjGre@{uJH%9-*$N`a|`t@88(^8gp?0 z5j)M){ggMD4J(bI*jOcCAj@9;bGy~;4_WSyR+r}yveni5*^O%fPQU#YP&_yVhxPOR zT4gzuiT|e5?>ECiMmTN>&FA0@Zw}5R*{Hf!qupF>wVO1=SncK{v|^{nx3b$!B~vPX z1K((Ws^KsWEvVPEN_uuM$PmpM&KtpoF5D!lI?pL_7L|(DKTUe37U{gMLm*aq=J!ta z2T>%88+=76OR)34!0?7U1gV6l%~>tSQ+NvRZ?iZO714@vmxuy?F)z0KfpX~?9^HU8 zSV9}DWcm$pj3Cd~(&nEyMZLV(b`Jq+*kW=dN8Bj*gL@WqGAVH)r+cDg1q= zr{`HoFof0Pa8ySgkLo}<_1oB5OMy?ATC~_Ke6{p+5(u#DQ@or2d-V>C`-5ns&w^G_ z44lIeQ|3r_62z7|`}_blOTB(sXt3R3jzF|u?x$t*@mq)>$P@=>S&1P-tK12quQhui zoptI(E6_-*6)6-u=;wyZWai-$&quPq@=gb-goOQ)m_!n@0~S5VoxP|2E+eiDDg#=e zqDzt4r^upH>1AAtCN8usgsTKFXGimY#2ESIIVMFjtJQ{=y5LC zDoj~tjm1vwCM(2PtmpcsS_KJmAzFn&cB?Q1t-@!hp4`K>JX!j`$I^d8=zr9>=}QW6 z)VL|E|6b_-3;2ffb69IfaB~F@uK#J2HHUWMj>Tw|KZK}Zm2W3hK8l{=$01pQ6TeV- z9=~nr^L#vs^_gEvTRgzUSuECfYrG{rQwUUh%;lxNQ~x2qAeYCSMQ<4XHvq(0Hb;zC z$D;uJ&cioWI;XdXJ|{-)6YgW3y%DA627qU?$UkqIu!SgYS zI{mVcLcjlt81{J=D&Wjp!kFw4BHBC!vBCrh9sVey!*@l~Cdk4W(Tyo^Ha^uW@L;1) zs|zY{F8Vhp@K^Ptw|}p()R*J8&=*i(XxlZdsdYPySC&C(^N_$ehPH?0r07Q($%|SW zXD&lrD(xp!+IdvkM5G|hZhivHt$?wVHugS;@a!i%4m@bgctvbv56^yF{XUk?uW588%Hik&-8+LV~*I> z8#v_5#cjwxNWsO(GqN5uLJpkA2@#xyvGgA4)5;~8c)^IGt^lX$`3Dgj%|uDv2<`Hi z*+mgnD6QcK)^x(dk0&7K*0dfgm;$SQO!*w60P#-A65^G#}StcBkzHkad& zrEz}&%`AX4V+f?hBDZ9u5FF5jaX}rn(Eloiut-0J!Es$~DOOf2{zT2^;3@$v<+O>LI|GG!TZ`)p%KIs z1gCLy<#`wO6l8C>4VZWzha70La0ySt`z(A|n&5dmrg2#}>r53Iw0Q(-xaI4u>W`t> zI|<`Yjos`iK^&QbV^DciC6;Bfjl>mHsWZmztrWI1URZl85M&*`!Rg41c*_WcWer@B zh3N4U&E_>>yK#F<47%+rNa9R!z)dUy}GP#G1 zm&z$T7|b8FtT`^xa8wwr?3^^@6lp*%NgqC)+oV2>yt{FI5S^}d-kT}L;q4C93OVLQ z^7&!i(EHFSh~gi1Ot_kdHSrD;>&#$FEq*G+eGizhtlG>BF-u=%EX46fqS`nn`-NI` zX`mKY;QX2k=tEB-^EkcKG;FQ&-$$@9Dx9o= zd|zQa!nl<0_bK1c<4PXDym9>4OR7@dI5$3I?X(FrZz0m;{Ar&*!Lgqj-2Q# zzCU|U?EAJcvF{W99Q%HS5&M2ygZCR2oR7(WTf_HHW4}*W9C=suR^GS)hS|+7LipX^ z;JsTX>yYB`_Xirhy9dX9_cwU|?k=kc;q=8eOTzD4M#p~l+bjuxPk%M`ySu^riZ5cn zA8+u!r8@Te0~=%C<9Elt&uRGneeCxw4c@;y68rsuqp|PD&&9s`&o_9-@kneGBjtUq z!8?Y=(ceFA@P2$v?05g#*!OrGNEV&GxWW6DW3k_FJ|6p?o@9+;!t~9t-y{Ajdh#my zb~IUz%4xItWBexxXJ2#ZTQIUR|8e-IOroz!HoxIFQ~ZiU-*Fo?79{n8yAj-#!CJv^ zt>6JzSh4A|ar{1=|2ObWbV@PnZEHux95HS#ZSanXVOZD5PZQRxnDmol-v#~R5M!>N z<61V!jh=Cb5f51Uu1Z!h(RdakA=uXGQ8aw`5DzcDt=7%$+YzqlZ93$On|PL>Ic854 zCIXl?$qOXkA6;T|#jSRwR-!Cm-A;Fl?LpGh|{*D$ZCSd|K__T;a!U=8hi%BNd zqpvqcN26Q*aTXU}K*ixcqtQ1BF2-l$E#^L>$H2wi=o+kYhX0Z}EB#O_eY+ka{l_?x zHYR=HgGm4CFVctQ*N6if)nMNbqwb!MqmLH{ZsXfRGKvPmn+qitVjqzQH?I2=jvVfs zO`eiXvbIqU4#i#D%0_M2_Q1#_7`w~-FyIcXMruszPh07Y2g)rbTlw=kz_tDi<1Z}3 zV#iloKL7lkj}|L&aXgN4e1h>u#KygPRmS0g4fbzG{67kSVEkV2pl=Q0mMZ#aLn$2h zH4c`o;_#@eQG>*gOan~=&Nqbx0LL7k%r9`N!37i;f1Ijk(ioG8Woljuy4`rH|4EFV z=43$z;iYp#IP&Z;ZdXp$VU}>EQ3qQeJKk+bZEV6H*7ksRk29_?{qWAmH6y_IYpf){ zx2o!2=((XVU2hasb*7G1$|!}I#}vl|_8H^sfS3}qzKz=;_dKE*YIrpZP?XF!2wnx| z+YY4*OA|UI<{P=C;hV56iD7zqF`QEz!V?(uy>lgU`|3fQ6I)#xCHS_0iTqBnXb=T# zgU^nZk0Aw=jtTAbA=xFHCT3GPa|5+?{(Nmnwjc-V3xTo%Wfjr`0R)AezbkQnZqnzXpN!F5UM_` zZ1}a>FR-oRW(pI})zfBUx-#cyGz)s_vd8iK_Jk94IPsuF0|k|Ru?`b#Q^eT8)SDP} zloj=9MqM_RQHx|G74N=D;vGK2JQu%033gw)FwS8~4cy0gyYF)|nQ>QuE*Q!?y~_-o zn}G9uUtln&IL2uOrKQ^yoPW!me#!XsZLqZbc}6G;g^VhgFvCTP_J_um$kHNbaVd52 z3b$B81QGV({9*fiu+8dWqAV}W0{yR?6~(Tci06;SlXe*gx|V!R-UoZVCSrCOiI{5e znn&>#x^e1cr^Ej^OtJJ7zZc0l$I-hN0|5-WilB-GdOw43%fM$AkA_U`;qaG%QFk!2 ztj7h9i)nL4PIKQ4b7^3$;L-y@mKKhUZ6*z|xby~;X2fjNhf`jLM@Q&mr0Wt%*V;;V zXht~QZ|rmrQ`w;8Z}b;jH6H#Km{~O2*2;)H{C6l5QXU?k3Hpj_1!LZufaiHdg4U85 z_44o_VpqoD4w%$VjD4#W`w_-|=PyD8C=%lR#);xRN+jOKxrvrY+>13Dh{OazG({p< zU=^0DeTD->+9GkFpCGW=KtzR3L# z;3V&%YLzO^+)%b@=B z6bmN2+Lr~yk|;9z(?6{YTQI`|OQXtb@$$0MY?M>m{ZTZ^#~;OvF1r5>JOnn}8`~Iw z3AVogY%1^6eRlkBcAYT*SyA&Q?vNJS4uqQEaI#DX&8kWe_q!&_HexP&-b3J4{JgALbuY>LO z<{QL-#E;U^zJ7Ze1XYeMI(8jt=p^w5Q_7=wPNbjGZ zIL1|cIt?2jDep?kk-t!fVZ;RW^WTV~e)epOrV8V`@u*OqyuN^97MuYy9mj_=vUvGB zuN28vaZQb$rU;Q%gKqd(@2Suwj|cO~X3`xhsht&ya}-F%BI?+#C3`k531t;%Pgd z{)H#Y?iXy+W&zsOq1d?xX)jQN6W|^UU->h}bCry7a^eOB+zig_%^^>b(E8fU7o@zLRe)b{K@6`T zW+1P+4cBJ%B-G}IPaXq>FAI(+`p7iiQT!nx|4c~O-UF3s#-c^MN9v66ektd?Gpzi{ zzTJpqC?su*pdfW!=Q!BtIAwywm%NI4Su%zVO>q|PmO+y^N5~Y~;eQ~a@hZM?gtKT4 zj$6lfhmn3)%y4gZ=vO27FLHi6^n2Q&sszHPPK-}<82Z(K5QF+)>IPQffM?Ml1>5wU zV|C|CA4f5Q12YkHJA#aNt@nJqPv`r5>wP%hOZl#gcYUf=f^Qf!(F$5%1+|!qpa-p> zQY)xGgN9l`d#s>h2KBar94vXT%|{ICYz1XnLAx2$)(T?nAXdx2A}G-c8g2#UG3eMt zmP4Ov1^t;pd#s=ZR?r&^T5koFT0t8aw8RS9V+H-ppnq9G;;P?Zo1DKPXpR+>$yrmd z&8-ZYW(DP2L6aHu7b|GE6|{gscUeJGt)TS`Qmmi_R?tBPb+>{_t)Myv{l*H~V+FOJ zhakxca$u?oB3ummd4ec*rWJHAgG?(3)(FN5Fleh4G~5cB$Dj%;XsQ+T34=bgf)-do zI~nwf6;x^k)iLNfD`<}ul>QQeCRjlZPT9aO20dT}Wm-WuF=&Vtly3zMW6(`j&~Phg zB!fCxK~t@uCmEDs1ud|GUSLpy6;x^k{fj|I#|uvEv4XZR=vynuA=IJG&kR~;1!Y=6 z34ce>XI4SN->p@8@ovwjmeq`=vzC-mnq8-?k7#v+Nl zsyRvbPFuAAKk}+)={LX-JYs|yeneXoexyCXj^M9#X&fhuq?>zhWW&3x5{rjf<%Z`@u7uvrc+P@#$zjW{5_s{L$Qu}v>{aa=KuCsru z?cXi-FRgh@&p8}__t?MR*}sPUd&vH+v44--zo+frpZV)`ZIDV{7HcJCxto?zMpSGt z!S1@!5{4bF4^Ha@z4+zcc^4~3%C39Zr=_r@qdGr z)qJ#8ZmmM*Eh>((vvGm5iB|uK2`{dwg*_qNtqtJ?d~QuX?baUsc^dpYwtS32Sjd#7l zd+U7C=aru1?E`~7r@C9Ji_^Rvc6+p{qVEFd6Q&Gt>klW%!AVK7X3E-mdD?2iX@L4Z z6>{QXrSDJlB(H_1)0ZCYdpT#fCwT|HN}l8+gM%qrzn1RlY2=nxCKZ24VL4eAFO~e4 zPmlwtxE4>ieHedH_lC_->SESw7Kl$bo ze#^$UX8g8J*1na?4&mDm{ga>gC%^T?w>WgWL!fyrm7T*Zw1NfHE z2 za)Ar8{kKq7Jh{6(P{Oj>IJs<3Dypc)qwR6Gd@SCRQw?=5+b_w3tbzbT7BW2$w zx|2^T!JdoUE$^ljm_^^oCo7s2-6aS1F66phKS{;d zA6h44or0NYUoqRV1F6VL`t$_yM_$J~$rXcx>GS)wRA;A|N0APt^Zkor(5nP~Ofvo?KAb;Yw9<0dvbUMa_sCJ*=j@pNbK0S|A=FaN$5{^X z`*{}Cz%Atzi%~lstob1x=7`w@9;`VA9^T9vZbe?0HP(9gSj-df2{))91XKNAf889e ziH}_K4Cox;mL9n(NP>fH62DFo?``tOSU00#A>a{Q6Zq{+?gYT;q{qJwBY@ zgPb=KcNKzkY{c8xf zmEfllzKP+x&JpvcaDwwkiA3aG8~F7EzY6}Iu({JTx$d7O`182}1pX;dYm-Y*J$ z3MubDjX$GmtS|t<0aSWugOsDxa1VpHZ&MBS`r&WQ9l5*2SYXAzy{EqPYAN4}t!ja@ z`9+6eAgw&t#_hMI@q1=xVx7*JX-t3;x4gib(HR+U23q+ zAOKrq3}vy?{^!%a3bpm=51#fpzk~B^k`H&=`qSA*djl(z5aKMt9k?DWz#!xGe{Jp% z%VW4$K6E7xZ&{iIDoEs`rxh*N-v;9q3|5k`j8e20mkD!J846)gt0JK=Q&X?6T8_6+ zJYB%OEqfjeoWp`zPt&XS3>AeGt=DjT%|$U&zn#k#=BhpTLCf|7cJB9X^9w??6O*`VUJ_zUACWAROQJ;$Kc?Y zRQ$>M)qr4U+-+Qn@|2y93+!#K%u}4(6+OKYo-Vi#JY|Dd+v@F5Iau?rbSTMH;_XYN zL-k;-+lm32dnI7{0mG@xQ=L`5p!411(b4zniLLeWxsstgQb)-OXyY#Vl(V+k4fkX$4Kg9^-bb@vu{J>Yu zA+>rlYaV{xQmdD!4tIYjB{j z0-o2w6dH!Gjj7CAwkOe}cYD!;;ZvSlt2wp33LlTFccl_ea45#pRqv9>H>suzIzv^ajAcrl+3Q+W>}u39N5&1Tnr+aWH{m^3=?r~ z+L{D=2EtLx%@CBkE4Orz?tYKy_YF;StaxMJiEjVK%Yi!+9one@di#HavsHLm@pSEp z^o0h%^&kpg?D}_BzXX4|nDO?TIc9HF*P6=+KO2j)7WFSU2f1sEeDvQ~QqqZsD&L z?OP7>6;zO-=$&`u?lMbIF=QxM{H;=ANG07d+)#tVoCEc4+mwLqK9A;6*E2tO=dXmx?If`DQ!p>vU-D{fAP zCc`K-M%*d5RMm4 z*g*t9I1wK)cA0U=3Ujhm(4Z9aH4KiBivT54^Nb@&%;@f{JVAz7f`=BXSWw6}zQVVG z$eJfDbObFN>EwHptAs5QCeY+keDP}WTUfQE)cA)$!(;@du*|@f#w-yAnn4jKDyYbA zRpx$->S8H*s0m62{*NhXdjU!kE=UQEOlUyKH_aR8Ng2NV&v-IRpvCfJvIuL)llOj6 zJHwiwpB*0U zXNO1o+2PSXV5XuOLu7ljKWzmk6VcN{`eVh+Hv)$;(5ffT=5XLU4`$oJUOxvhwgJnB z`+_5}yy4Cot7z$2ZcgC7SJ5tv^%WjR+dmi4I6nElIf|(;%{-spz6M*J*_ApRm|CS& z;8N_*rrG}n1>?D9?tl>nCoK6oti@ufH+d}%?b;f6uM_Gp0b##Op{3hpRH^>3n#C8;>KrG9;bL1SqX(H(t)?K1;s zdrugy6k@S_jl#aoc{K3ET!*trMTQ%E$vb={JB#v_!fFiB=6SJ+T&tkjh`pHCxmj`U zz*{q{fCX_Kckc;T1YEE+D0+JoWQXFc_9pM}mhAL@hY?%6&$Y5hXB(TeV&6L_U`XN? zuJkNbOQ})xKX`MFdOIAIO72CEpakNxGUdPuryTehGIT%MK-d8?Vk(*zz2P(jCYirN zlBhYf(QX?SixNk|q}z&5vmeG&b3Wb4r*m8Jl*OlGeEM+|o=iS1=F_))dYVsP@k!;= zT0ULQr!qe6A@ZkudWTQ%@yXApfAHxhKE1@JBtFgJ)24^;RKlm1@r1ES+h<@7FTR^Y zRZP#JrSxRkg6l@v*uiF5u3+@9YQ8ix2ZXw%MTzd|o-{$V+HuaBe25Ip7i+K(8}F5t zt?3s`7vnq6=v~b{!TdxRui`k+>!%ktv!=!Gh@Y|_67?r~IpkoUL~VW9xi|%J+_~Q< zg>yu-#gy#8IjqWm024S)0%^M|usuT09dGayQ6W%P%_< z=g!@bKlKM^k>r8j9&Ctzh2`YWhybhX0whri%e;kE9CtH6PwsYw@?RwfPABN;f7RPR zGo^*d*>o}2+Ga8iX?8dk<9~-N4c@$rRJnFa>Pj;M5pemtZ>5ZJ`K+xiU~>EllcC_S zHJJQJ&)$pY{F5u2OC>ksDYrCm?h0wC2{~|}xg0pxOq#U_0fFiZ*o_}{rv#!Q>cMgtrO>K!lRZrNG#JV`D6e42#BfgTCtFbhKx;zOH3+xAX z_BPjcy0tHJcDr-d$gUmI;H_e+i7JtN73Ky+o9!804({y8Efv*X7B~|x%{+pPV0ljf zysvN*$H$8P@=nUA&$(0S`1h`O8lYf-&D}0jDp?Nz4~(3`Vt5{N!=0YoV;%_H ztp5@^7l+kVL3Z7_Re?QD_>y|suEr+pGIK7|xz_kwdt6mg@k=1jlHw;3?#|sTUWDcJ zY@D3COP&gQV)6Y%#PqSa8qpyRuP4S~x_nwG`yoNmpA#I>Up`9Kfo~c3QJou9eF7MB z^h9&G#pRX`ENPD!L0jNxKY6tM?wlXwoRI7~De#UZ2$~XLsc{`PZ$wRwlyK{Ha zV_3-JnyLHHjRwvnNVA?mh3A%5Amb#UBk4+{M9U{*Wu^>`<6iV&X#9fdBF8@Zj23Jm zDZF-@*-wA@G6u=oYJ$t?FQL-@=Acs!9Lw`ji>@k52&=P-zOFDOfT`oMshs9swG}`8 z_4F6rddl>^!5OX6eup)Ls#DwDJ)UOkB)QAND~!Vbt5AkT`-LRZpjG&^jcUgkfg4taD1ysPT_13&wN+w*d_=T>URARW2KARPXA`r|1|;dXRPXo-T|&WUQ#du;?R zwNWV?)7_ysLtHOH-OR(18`3;NH(72H=?IzaDMD)Qgzx10D|*}E5dQv~6P{?2f) z0=DbG6Tvhze|h-oh7f>EOv3+DK=ubGIs-kIJEWQI@Xswaqyj-8q|O*CuJuT8R3T#po!o zFo?F)qpfl0td(;%xm|1Al5ewH+XTO`DSu-pjrA+`hq6}d&fSe3(e0{~CAEfa5ZWKv zbyS*3OA4gvx~DL{E-VR~W#7fg@M3~ez`O5U9D1f?Y1Tgg>_erAVA=#{-EKovP182}-b5+QrZO$!~A)cTcj!Z`p z6q;cB6Jx{^A2>&@%I zST-8Pgay%0C1Ea844-!DSl6N!=w9-q;=i6^toSJ@U~ZCYyHxx>aN!AAl+1P7k_BKT z9{l}1SOx;OJ+AddJ-|Zh9 z)A_vYIxNjv39P`GxGBkQSA{f->L7$SJpM(ic7ICXWS&)PZq^zkUep>m%HfhHSRiUG za4L^Y8cU8g3*2c1&am#lq`bh1JTnhNYqc<>6vA$J0Av4ySXMiPMQ&Nl0i;JK)w1n9N}@#>o!z3#35hN+_pVxZ7J;%|WB;+$rnsxei#nVat|gc0nYi@GuSx zbB6lsV_tE1a)5XkQZ*G{%wORTGWX-hR#gv|?6<-S0x>B19q>OmPd;w-S$zkmlRLw* z#50-9cMum4xp)rmZxa3Av_pC53f%e&>>M##u0_@rQGF@6x0qc0Ub zN8!RwZ1U9L`~v)-xg0*JnFBq@2_!*BdPK$nTg);@`pECFnhxLOuQ6l1={33GB|7 z)nO-GFaD7Ruhhy!GIrtjr#!)pbSZ{e$E>m5 ze>ucbmfBN_TNKVIUV;m2=-=F5jAesNcs#+w)X1EIc<{)~WWSk%fg>hW++wHqOL6Nj zl6U4tR5>_29%^IxJ4D+<*m7XFg)@%D2*9gt>Jv;qKyG@51;;GIr6=z$8L z?;jvq7yXH=9J)UN+}WGx*8QoN=zI%BLGKm#p}8k_x2xumTDx&*S}_*!F`m5Y zb)0hLW4l-7v1%3vfLl#o&ldgko=ZKhE$k?;fQIg41y*BzmSzT7SAp|asD(dHX(?j` zq9_4xQ`CTw#3mkXD4QxyqV}R0fP$V;ou&Qs_;=l%;scATkQxs<7T@DwD5*U2YeEc-rgaRH!mYC@mO0W5AH%YN72-36nn z5N$U-Uxcb!gPBUvq&v$N--FpHat^`9k^1&os=;n@&@Q>+tgvIeB+d+|A1~cH4DHVZ zB;Yuh16GWbt!j`H`vkk$LeIhK5T`ZxdRa`@-8rk3!s0(rh}p;wDx4z*tQI-jJs7DJ zcH@Aw^Y~^CYka&K-IX5yp}%dybSx^#7@?oqX^%%`2rhREiADkAm!9*TML1bIbwe#y zcb5Ls{x_(k{YHOzXyxn?G5)e@;Sdb5_HhVg9b(%VoZ+i=4`W~PY3C9HVH+- z0HdQAL^FGEwd@R9J7*~-INSK7ZSrn3eSb4Y zUp-#;1ZOmB2MNJ!GBOFkj2^Rqz|y->g&3%C81D`)pUi>Bw7QeXTzWRGKf}@w3)W)s z&0BcTtuK6+&7Eb=_^BUE9h-30iGJ08Pd9T&uVE!}MK;E(qBf{(gY>NZnDiv79sj|x zuMg%JaA!c_j5yK$IoJ3~vNlV_ZvjXiy|Q_r^cwT;cn&OmLXcH53Y>B4^9!&< z0Y*J;?c1_COo`4~vswia6g|KedD_G@>_~KAxc_@lYz_s^w2A4_LA?>A=u1fnj)Sf9 zcBu10$J>?$_8bh9UTtQQirb=&z?ybwB66g|2y>>R$8h|@jC;$zHrz{!Ed-?q_-rcj zJBEF^bF#RXjUMFu#S*GP*5Mx>4_QxWL6Hd0hCG5%;VX(4Y`4L#hT<%?Al!k}QXJHf zW-jZ(Z}v=Oqx8k?nWK(59ZpAFQC3{{5BIjg`S^=K^J3&CvL#mB*d#CP>pkkHL$GqY7B1W+zM!mJnih)5Rs=Y$5dZF^-bV2Ht4YX zcvhM>fC^QAU9e66H?l`-@lhIB4ZB>YQ)p$iAJmSYQ3-HzCk#P9oTQwh$t*mt{2$KV zJwB@H-2cxIqKS}B>;X+%DH#)MV!?vKIiZ4O!wl>VdjPAo)LW^smK5948WiuOld(>> zTd``Zm8w0p-+DVmt4Fyh2?PR&5D*Z&aua5Vaut$r%lG|RdlJC<`{Vb`OPRgbUibAp z&wAE#TZK88nmUmtx5u5wa^gL1!>(`EVS&HXihtCCvW+z2dULgYc&yr3>X%TDou!7lj7s=cSzF%;8s37AR_ebUZ)_gKusa%;{|$r+@#d{tf-4O{c=0xk%8 z#H2Z;KPqPhX7O2nJU)|sluY~mC`BJp(X;uY2mQ$rLiOp-E&Z#_BXl?)4=w#MCQSkJ z|h zjI2l_ljFm5lJsc+zju$fbW}?mKfMMC{xfCwk=F9ncxtQDuq!`au+?RBN{g5Nq=e2s z#-sjtd^-DhAReBxG77v2*UaejpudydJP??fkuF86B4Y~ITVOix`hS)2nX(Sg7L%Vt z3D0C5&f-5}AdDBAC7fl(BY&%juwuOqisao{HW^KT>%D3QCUwUoD%TWC_ftZ;)ghtU$(>Z{ks`&>LEM}^)m>&dIt%8d2uT5{;?c<&s( zJS1R>r#_CC-aav&Y^wRXTlJ7xD(F$%oH7m_=$13KG`gPh3(Q<|BaYkSMKjKL>aY_* zo4m(m9W?NG!3H}SWmK$>)};n#G{pZMO^K!BG-n~rhW@cbz`5r9-KgZDH?ZofadaNgdq9|u)zix1^>7x%}_}f zcoa3U{pV!kD7b%GuRxZeAwZ+OKYSgM@IJQ?p(!eq;ycm<7l4~eP10QshcPyU#msk< zo(Qo7*5y&YJk5*Ti5{aQ-_rb0XY>B>nS~F1(3|Hod+Qe?rS9Gj0>HgRMZCgpwCPrD zb-l+0o}%UliOM@S8f!T5yh>!Mq&Km7^w*|6m!kTCYb|}Z61}|{o%ynzJThhp=_9TXdcxgeJV;U612KrFQD}yL2EP|TimjK#)7gL zix>nT5zh6!u7uifGADHvn36Nq-=y!1d!SFvHCRD5Atq03lI51JqG=Hgyhd$%Z|^ zivOJ9dVqUjTPKtQZ5y=*YUn&~2IBgh{+@xn^YklgD613nhJXid74gGr1rRP*U|n2W z&J&zGs*k}>?G^=nTs^hD>p;8z6e+IEf@tIQhYv1A!bX2a(VsD1_qWD--P^F^0zN0A ziz}-PAXK}cVLfI1{{(dcp&ujp%u-gi{sm?>;;FX)tat$)fmD_4eia$`+|Gt6VZ6v!@jMMnYI1}D+bZIpM; zeWU$eSG9awHB~y&xo>hK%WA%nCAY(_r&IvD8=b`BZliO1J!PfdwZyw30px6%dryfb zNek(ZXp8x`7a1jg!wG`>u05wq)5lm#9KsXOJ||XUtEL3!)cp04)zPQ&^Im9=Lv>e49_r#l`$%`6JG9A{*oW^bYnzaHDy~+{yWTm}Uq+0a!bXlyQ3m&inB9 zrtQkS$CIJjqLPN#XHm&ee}Q-x>U0r&P)D1A;2Gk+A5;+Hfa?S6WB$K{ElAFfej1Q_ zbzXmv_T3`+Cz1C`L*5T{l3s&1U8EPJ0HzJTh+h(Y0SnSmc%dvt>;)tGpZBi8h{5_5 zM#Q|>QRJzx5fv1d*2{ZHDB%#t;o^sc5^TeHZf@`UTL2Xd0=%n=8n54Va25GPrx7kf z`MyWz$9cWp&mxGiUva!%*siP*$refsIE83Cp(Bj>KI$A-+RLDXSXK-rZBRl}07}Fo z?>Gfmwgm}73DFsOC!4%U49jZ1B_Ok{jz);NaH3M|##H@tXDA+7V-O-1`bf4gknldO zQ^4!UyJBuv+aLs6$jICm4MN1LwEx|!Q5q3O`^b|KBGhKXegxDUe5e#Y%pd_v5C_*D zj42|RFy2S?;Db%qM8XX|jP}m?Ju0+`E&bHh0RcYHwVHD@E70;`-=`G0jlr@IVnlBD zr&yA{!h%Q4LL#fmcdJ(W(~IEaR%Fp29BXpsbz*_xPT6GKB*fkj`fU5fBdhQ9vPdBF zj?}&}J$k)$0s|`A{OM=ek@sBxDh#LJq0$o=@Jc9y@k0kvv2fi*eF0u{UDGm|^LaEt z9;JJNE$tHl57M#yO6b`SBxT3aE;TY~zo?Lqs+QT7XAV|J&20TL?0sLzCP01uY&VFurMY!gdz);fa* z!%pMZft!w@Ma|;DK=2@5)y6d12HXw<)WQgkPHYXmqZvR5Woc<`iTV7Ieeuge6WjZ` z>;1gQ9=O!7M2%Zl90Urm%<*0pTjO|Fd`O-?y(v!6!--=`y8|}OLJGrz!|&Xl7VL@V zJv^qgSF_l&0jikBdIYoKq~3EPYwZGrB|(B)@JRM#l+6p|O{}S~;Ws8Fmh{&Ii@VXt zHFp7C*pYXH0Pn;?8|>06$|gg|Kb}mlV5!(34%p#2YjYROG(@1PULqTvLX0hVpP$ji z=#*ZGV}Z^Z{Z1^jCUGS9?tb+D3_fPLH@DQl;JDI9+Hx4Y(C~1q`rZ7T;v5PXi%tn8 zE#qy|IATaEoBxCxV#&ibrRsYLhF<;XQZ#wTq+q9LgE60D0g$>tCUH3Tp6V#ahyl`T zAaKbIKe;$IBpserU%7bNCZ6spvW%BjktH`wcK5?Y`J;}!F|N9^(8boL#XWaRr zHjbBjVGYiXu`2UZc)VDhKs$iJU;}_~2PC5N5FOx#;9sE3TPJD=kYoN_ApqM$W?;Rr zo-}sEBEVYMB6KJsNq@lqdhkKaw?Uvz9%>?}giFD5Gl5@DM3Z%3gfoZ3BPVd*OzufA zcy8HL-ZqLMuUuoWppSk7+d?*E{Hi0JnZ*?tj+XJ z?Q8&+F?u?wam2vZoiQdOzye%7zD1XiiAR%FH$c#rvNgP>6REHOYMgt|b!g5&hvDHT zms&&CSm9aR4{~VQ2Rz>uwieLooW@1ft?N2gw1hhrWf6dccU#}HxOnc;!l9T3)@j}V{$f$aDL4Yd`?q^7~hAM0_dA<|HZO7$__UK(4TklDg*TW z^^1jn_o#RCQJr(^$-{Vo`u^00&99>3Dt=(xONxTWt1$K~`~jVCsvb2`6VIMFwzMav zl)iR~n%;=;$zu)32xPSC$-#(G`I!) zcYl`i4>Hwm{(V)nnzWi^Jj@w9PiN*^`yt6#ri3IbT~g8CZeH0L>o)(jry}! zbr3JA2oGr#TrB*t%v?ax|6Q zwvoBP^b{p69O>tqMPs+bQf=8)dn7r7yjFFuhqY?a&?9Dtu-MFl1+;?&v`ZfqR9gN& z&5~U^k2;gcxMBx0|6<8v{*ziWj_FI;ZnVc(6~{5XN&o{A>_Mb##SUs^0pY1}kLNA?96HjG<1?=#VR~nU?4M(rqEU z(k}GkiuJRi=b?_&lGG?y@=~$%*sac?%Q+B5F+Y`>5G{+;m-N=D>>hqZQ@(sK@4WD**3$|(c-j7x6#nV6hz)I33nVqQb z+#N*^2AHf^J~GDXJjb(}9x7g7L5n74zjdu!IxB#H)(v)Kzhv4N>_@QhZs)o^H+NX+ z$B?PW8aFrZM<3Dif;I6hCmGq|M7TzEgHvi4M(5&}bEvd&#EOIG$Gv;7;ahPK8oQm_ zkzw=8c3P=c+=7rQ>~soRIdnT{#bRHpcT0mE&uWDSebtlAzrF#U`kai!Oh9EhY{y1+=o>}0#iC(9n?JL-5T;gDs_OzqM@ zmab+6m*Lp~~9j`X{4kA{vz zUKOkWCCd@3cEE0xV7|!S zgdcfZcT~wmYz#ePq2_4C60EnxCI~j2;9OVnVLbU4?FX0?XS_hhH~w8v5gLc1v$p zCdq_@+n0VL_Yl?>4OVIt1_1)6Hg#nVtf3KE2U{M*A~7sl zvvB^5K`-q@0TKlOEIDZjB>-Xcgd!HYg4%m{I8Uwwr`ud4Hw?Sd2G+Rpu=JI3WxDtk z!7Z>%4#ZZ9{*J*g;Z^|tZ+!sp=jQ$R{ca}!8<^H1@@toNLV6>Ik-O*t((<-W zNY|hof^m?o3(#Hf2?OZig$-(FGjr;9uNR4)L2eEJ!M^I0UOpi@C6M13SYPfGtc!)( z4mbky>Ma6!6KODjcI3R#P*Z{x5V}6z+75aKpx#u`G|E5cPtnjv$wPM!X4Q0JwNzZN zF1UZpA2dpypLVO2`kW5zXgJ=zVFz%2v}ZI#NQ-@09c^sNS|Dk@1{LEbJpibZN4cz) zyGhvom|rWPkEf2t!qH`xpUTquj8&0|=EBQ0v?J6cqhS9tZPhv#Og7xV8#x9d?6wuW zY~W``Ua>Ns+J-cSWH_ob`wv`V@FP#ZHCNbk?g{>wZ%(|cK~Qr0TCCAn2_>HTJOtg3krV~FbIsxS0*%iAvEYHf00n-f_l*lDb88d z#!jMvnqo;|IQuqFgiIrhd2~_uwfzWLHba=yk$K6Dh$CI?o5S%o&(r8SB#@k9*eZjE!NeX3boVPuDm_PU@|c}h7B*bxM0UGO0@qjUka zpRRNXZaIb71@Op$I72utvcSIT7VI(G3e~Bi%IdY>$@w~4b-jIYKnIjp^MKkCdxMDK zj`mhBy&wlpk#S-n$nivAA6^LCf59=9w@A>w47Ffn6`%}*c^$uJ4*Tk21I~r|troWiRxl_h(iShkli~x`MI4Qm16kl%KV(mU-N@$^A)(@@0J^^x zM$-&IYfwS-HLDx&Y_!nlrWc2rjFCeTBeMoFwxY z$K_;U=X9f(b$du53+_(}AQH0zC$%dcc`qJW%+WhP9@z#oXII3k-AaWWOsY-<8Xp<$ z(ihD(633bdmwOIDr#q3ul#9#gA!A?MIkhW9<|k7~n7CgW<;rOFQo)$oXRjLk);g%j zz>F1Y#+c)}^^C0Gu-Tn=$-?3>+ICn;PPI?-sEv46tolO(exyB1S}e3U=KoC~h*;+x zt735{asrNPA?Za#r;r)IXDEIIndk*ENT8tYO)r+lRZ7_nQSk6iVRt2OuqbEt{(ilI z*FO5S*=H(q!gYgnjtVb8-Ukq!d4(8@K4)kEYz;w`BB)i(W4%}3$sw=ZvD}W3gn?8k zxj{IQ->p`4V?K~5hGUXdu_Ve!=srUJC9(jIvL#HGDXUZUnKyJcJ`~S+?sFyFVOIB3 zX40*CxQMM8gUq&hoEvC6@4x7RTlI-$R)Z7qR_x1X=8X!EJ7;F987! z6j2ov4Wyv!aGCmB-pKH{?thaKMBhX8Rz)NG;?8Jj3nQN#swqL{vgRFxB>u#`PSs)@ z|0(r|O7(gqJo{ZX$Ex)-`Y?VB&rkstw&G|eI;nNqTg)orPUGgDcN3K~F8c3--OJ)g zW-yy%xsV|_GKR3;=tbE;y?j7>Q4-Xa0B4dLj(y}N+xXd`J>hK4x7L1KY1vvQaTE>! z&!mLp58i-q1c#>bZbKUv;jiF61(*dfr?3Lk8(z9tB8<%-;4SJSM(bhCtc zunL2pU!%js&x?RdxCP>ulDAX!Bsts+Q`WH5{WrW3u+&TW)kQaT`2s?(@J8xz{cA;$ zmJm2iQ$9JS!`z3+<5HK&M3SIlSb%$jFfDhVFR>$gMT457)msBd1>|EDTg1LdM}HPY zFhPF~<@xi1%d4_*2~fp2k#@r6Q#2c|`m_r!cYO(5-a($I5FrcK0Z^_7yk0Os`GO?S zlLV1VfXF?p4ab|)YR<*RXE;Rx$f8bw#P~!-u6UH=6CfF{TKA>D@^N#+CL1 zERW$HmLMJpK$(|VWMDFox6!eve|`7y$#XU!+gTT$eK-I~fcCs==*;-!&~*aFLAS<2 z`=TMZ(P8UX8(_>2fN`puJf|s~{58{^1;iV9M5y!Rc(MiXXaLYn=7+=QqY(asb}aSnh9n#VXokp_Nwc@i)Gs zqJikhoo^s+n11gj+I4&S0W9wMO)X8IhEHh4UMtk-8FFL!?7uUZ_BX@XKQAFl29s>z zHbNXpqh`RQI+cl~j;Ohcme`PEF}#b|ec>BZ>noO6DL|naAG{%)QO7l-+lBZD8*9F5 zzqvR27tG3|^+qtAdK;6Yjo}}n{CJ@TKy5hIml$^4qq#3!!JCyzTLY1HylQM8qq$?I zbIujN@~?Tp$mX5&8=G>h=V<@_)zhVm2yL?D;t@xcfDg=5^$nT670bf2mtdZ|rO5IJ z;Xbtj0fGNdGwTRfHNz`F`{ZX<_{m1czoM*LJoO1Pxytc+V&k=(W(!Bs+_e0W;n$+y zI=AIa*BgR4q1ExjqG4h!Yj*k*n-kmiOq(L9iWbPq8qiMb$J3pRCp7KcnCHoIBX+Sj z0RSenpW(R&HpquBoP3rk_kG#f*0#&c_SU|ZiLf-w?vY8Rb6fx8fEz)#(8PIb&3qJ-;qQ}n#+ zRbwa}^M0AHnyOw88qzOCI@k}=^qTH{Xw@zWYCJ}p7cADYyiG0U&{ak)0>$vcdW1U4 zMixmz%<63<9q*ili!8z}@h#{YOA9wwRNEdP#s!;IV}=?fvCCWWnmQ8j6i=#Cd~7B` zOmUw_O)oEaFPpjW?3HuB*c2)+#h(1`F~XB z5ITN@kUuXNE8rKt;9ZR)d_leX@V@@p8Z>;}(i_9&E7Z#y!@ZV;D++^tT}Pa@^2H=I zhAZ;^V4A%EPD!fWVT*&;w_9;%T2N+eb(Q?8Nxlxk7H!H7viE%^?aV^`W~Kn60}mZq zboy`cerzL!`LN-WBUn}iD+;}3c$aVa4G_-3@3 zcbDW?b4`6;=d-ELnyU)&)nuQj4MoGzxA5D_Od)q_*_)tF&f~4e<>9xCU!+c%GjYKD z@-H)p^fB;#cHE~HqvtNqh9rw#-v>u=Kc-GhJ#jVI0tq{;SEf z&k(n?%x=1B>Sr<$4zeMAr^(blPeVy}KRMIaO(udnHl%-OGG*pL3<(O&YvYBDo^ zg{f)Fyh3HtX}W84zc-mo$G>AT?VHDC%sJ`TO(ua1KoE;*3QWh(AX88nSw5exrF{Be zp@!T(FRYSxnUY*foP~>V%JB|4fD5RXXm#N_hqTpiAI43%_XxggnV!~lChQFLETirJ zusHpzZmpDQPygdP$N5laJ}4fKwnfF!nWT)hjqtXV?)(bk<| zd$%EI-o)c?iuvdEqW#fu(TIGzDSC+xV@!Q8ngml7C}@Hkd()eU2J3pK6S=W`8Ka4F z+5H%d=z>BkR~}|I1(;047>Z^KJ!1-;4gFqi%3P%~eS>FkbJ(GWL7FZxS}8%Sb?2lV^tx+TO*CZyLLBQJkIcnmA!V z%a7aMI0Qu3+*QngdzdYq60XH% z+5DqQ+jENS2;uEynv-whsnsKrmJ0o$<=Pnp}&En#Ui9EfEb=xG~J?J zA!U()Qp45~r(kU?R4?HQaZ=QuScPde+w|eZUvwwZc)92;b`if>pP$VF1bK1KJYQnG zsmvqJZ)W51hOPV`@k4u!8Yr|knmfD{oq2B8zemw4o`i?BRv-{};5s%~J6_+i!u zNU9u8=eW{5Q}&W7O&yi!XhQgb`g3)x+?J1U&mkOTK}&Kur^64O$R3HV5b-`@M38E5 z83j*x^GKLFiB75Co+tdk6l44%u&rT7zFh!$4Nm@Uq*bT)2{x)5lFX!4ZA!h(r0i?x zmV;<(2KA2ZG3aBpA-Tdh@5PUe4^RO@W3&PRXO7hcexR}{ZzGQh*7XklYsU;H>B@+o z!!G`)j3=JjgH(zrkPhN#{89*?8pk97TX~HMH=sb`uIZYix=!PL#CO)-6VSSPP&s9t=RMhS)xn7-Ks{GR32exq|5?1f!M zrCv9Tj4-nJ7tJ9#lU8Pu6oD598i>GF{^o^}HeQF!=qpG~2eZd18V#CI)NtJ~N~kHD zK%hT-G_tc>dgDYV*%(ePD$^KlK-P*Wh59Ldk@+paSPTV^TW|x!GKtF|AH&Hb+-;~z znw1qx2?_b_+`s~r+*RU#GqwQ6K*5ZI(a2NM04mK^qX=5w#NS z3E^CmZH*&-e{eb6ev~^7Y=W|Wy}IThV|z>JDyK*Hcbxh3EigQB)eg#@G$sqz0O64_gfM6FV%9RPGztj^J z#l5o~VldeQ6(V3EIT}YCK6scjposDWKyPWh^wx>vl7k2))wfij160`s!6;-;GJ}z* zx(E>$4PDviVr`Dij=)Wk2nP^pzOSgvZYbU_Xu%=Gg_|45{-u5rB#!iYzHYWwD|bO% z4*iPygM8A#!F@=&xOJivgu)MwF%Zm_fx@Nn`s&utV&1J7y%IU+JHaBVczJY(om5a9C&%Z1BzW+{t16J*h@64<#imp1H6*>trGuFqu22~3|q ztXmGsB7anEoST@)sqxfC z5gL|aGfR;-Y5~Z8@e9FHwArNzErsJ%I$R*-3|!K9{T~iCp)H7O8HQDmd5jnRjJcPx zr!+QUe6l<7C?_%yRbFlv(B*jQ7}@azbPJGRD(m!kL0StjM}vV*AO#xm^j3cZ59zJmJO>r9j4BaMHn5TCqjq8a;bg#a zPt{|^K0rZ87G+8&nqkTQ!w#(?V!@?$)hpVwtxKlKwM*H;$p|MH>^#I~c()fPcJ{P} z+;vSjc?QXr7jy9ukaljextB{8s<1+`qe8Rv`cV0Kl&zLpGYd3Ey&0`w)86X995OjB zM&-mMZ+0SV%<1m&f@aa?WkUkLjqn3smje^3SeUWY7y%<0k4qR_4=@+-6fQc~4^64oNNav2$WMM)=`rqaJmVV-J9@pfz{OlYRo}+FKWZd zsUO=);2Nd9u^dNx2U|f5A_j;@6e%;B`D5bbG|TLhaW03B>;?m5TZNzua9*YPTotSM zGm%v7kxx@q$aa-Fm z(^^lPVw?=pq>j6#H$Y~4;IKowG3?ozh3)}Z;W!2RYvSS&pH`_J0i%npeKay?|E=sqCV^bSlJKlhR+J(k)zK1P9qgmkIaEnfXeg5z=DWVI3^s! zgeC~=L*o`^5Ti7XKpMYtSO3))1-wQ|9hpo2!iS|^g$ z^fin9#B_qynn4a!@v!rlYHUB<#f(=N^nyEM72B+e zJ<%bb#KPmblj>M5?yTIj4f~ur9IL?O8UG9^4EM(>THWMQ?r#w4ym3M=xEre(g$yVKLa6yFjGFHUftqjHR|Jr%M|!}LbA7uxv4#7VR%7UDy+KXV?GW@PXv=#-;(N>c zd6`x5nbd7;7EAo8-@~8K*~|OEhU2GMA-1C{@8RMLHWa#boPdbB{^EW1gr%ALU`ev^ z1Y!N2dzo{9{FcvK&66Mn!PTp)wPzZppF2@j#!JT&Az({5c@OieEHIhb?Um&e3b_Sf zEy(Y}^;g=-R}Dafll{z5{eH9JLBu1tDI2z}o-$+?t+E5jf~42O*e? zHR1lr+EYX3TYD97Zn*(8q1DBK?QP(LnDdf`f8KKQLtO9Mi*UAGDFbo@YcXS4yJP#dwo7oV<-bi(|F9|~?g0&L z4JU8ZtYdqtt&Zx#$xpfgF^TrRI&c@JXY0USogd}aHOz=O%xz(o>J8=6S$i#rKhb`p zQ(j>wcL|9wJzE(|t;5fCCn4L5ji@C!bXVVWpE-_Wu~(6H{Sh6$eU<}f7Q<6_@rk4N ze&$|5BRP4u6SjJjUQ=&peGQH6M7PAE)2$E|c^TK20o`|r6O{y3)t}6Bag~I z3SJSL6!v8x=%L^30#(}^x<(oSkw~X>{6viK!^uafL7+51zRqdQB#;J+3!o0yBLHkt zi4%~_is^tAj;S-Ce4Q3{5{>92&?Ot8hG2gd>_!djK267PATeQ84D4E=wT}100a>xg zTFk-hLi|IvkVW+P1gwQ^>wACZd{h-4m_1osH5AHxN;xJbXN@U&TJTBosH z<{yM$RIBoJixLQWR>Sa0BsII3?I>mzY=R&2sA{;%=8$!0G=81B*l|kwtU1>(nM6$p zMJv(-cM8wmU{$QiyrgyNx?h+RF*Pq4g7SIRl4vCX6uEkynim-MA-EDfTlxE{TuyU~ zr!;rgy*O0SEbaX4BNgqL^C>C8)l99SKkV22yX8o!jJ3y(k-6Rfk!j^Z1~(aSV8|3N z<9pU-av2cYEjQ}tWLh~xNFvro9f^SH5AiD=nQeEemUMUMMZ-yCt|o6R`Kw7Ndk*$9 zbuq}-Rz!1qK9E_lCx}lgqAVW3O?5b_&)ptZKs-$#Y2dB%gcVqnJKPuJWo`V4kfCKk zTs8r1gpT#_+5%d<=wP_E zt?O`O=Vr&HLgcBq1biM(eIyovqkKJeMAJO3|7TOW@&pCu+bKt3m&m+U(I22a0pvjbpN&EY)gIAw(?LJ2lt!jL0Q?4@wQM&sHjRBg?a74QGnO z(qas7O7DM1?sHB7A#nnsZ%w%h3u=M<9DalWT8|!XWVLuh;z>PXR!dY5d($SWmXatp z%L#LO)|!eOdc9_vEqp}o0)GZoaInMtPsdiPLLvrp`s?vZ~LKX=&DXPLX)!j6AvU3MMp8>|bcwd>%( zIO~Gj>NvuSXFXe3pTAQe-eV9>XoTS?^@dX+QM8-5U!MCUAn9(Erz5&K%IF@E0?~!k zaVLVa1`L7ZG*e~I?+yMoHRR0|a^_`psE{B*ETUqY&SKq0hHtmXdO$AXR0m`Z9`5>K^4 z>ZB-b*qIL*Q|UO)dCZzp{-)QNjpcg8~Pnf?1a_ivcI+rHHepWWNC&ImB;1fcf1zjBiIfrW`D z3W->5zZYYnU5GA2a07TPw1?})vd6bHoY-$sRaKb!ey;i!5qU=PSw)`>d~k?h>sIX? znH&8(Cd>7Sj*vJ%4%y+lTiMZCnzR>ptxtP;*vf;DPh+;31%4|v+6JWZnSm%$5CNS; zha&sh&n9Kw=C1IQ`Xd2Kyy`>o9nUInRlxMhkJ{~lVpD~m<^#JXI=CRtl-OC2e(+Pz zXl8EDjwBsRHR5$38RBEA$scx48So3u=MEzX(e9Dnpw}IuaKJpjRo!6hnEk>h$TPxo zUoHW{BpSN5{9FlO+A6+Z=m70-}5x)ucO;TU8y?KSto4kVvIFQZzvhognS)wLoiG@016~_UFLzwnjiKD00ToChZ zb#v0rDS@R$%zplkmyt>OU6=m&zni3!^hZZ!q{P)X+HM zw+Fux_iofiLZwsw1}USPQ{$xzcFUky$A$9or9)TRk@YTomsY_Bd?c@!fU^3%coIvr z&*?ln{M(d{m!8uY$YGZwrY?y2Kk9A|0YK)UE0%paS)63QrGVgDfcm~rt1OlWmuB0w z-Q>`vXcnYcP67|%WEGEsU}H4T^h1?*oJ$yi)gyB6Oag`Nk|Wg30sJ!g(yzgF5r8^JzxuA}>++ zbRf&_f~;qP34q_y;y}v3``=n?B2|SKaI3{GjyUm1TPKjwkE`gbfQ&n{IPLGzloG{| z`ZlWkV*)sMm6llbK|vh)si-&TUchWPP9Psey5)F7Yd!bg5@KTES|H>3ZyHz&7Q(=n z6KZ1N=gO9S(A+5ZGn-TeiPJ8tC0AGDe!tVn_MFM~9Jl-cU-}*keHN|2kR>;!`)uumWIBZhm54(%K+6LbP7?g44~Q`PCiK{C$;B@1Qb1O}-3?csmWjS~e7dGiPvK05;0h27!;~A9=o=cFX4nR`Cn-c;q0$s zTQi$564m~s4ov1$v6z#5C|!F9$*hcplRQ|IOck2#rp>0H1s^v^sgPzh{f#+NSmFeg7aS$rI;Zc%6?WSZI9 zqEzA!9>RDOT`%A#ATi*>10($IlQORX7(n}DrovYZ(=xvF)jgdR?v7O-3t}y`XS^-h z_WiufH+B9dFhDk{7_t&4(bx?Y_S1fMJCkIgPV9$)@a`mGT%x|0OcELLDJF@X@G1Gj zm%!&Zi63A94LleCz1$o~nTS`vEI;$RRPeltFeWDZU0Hax<`*-i)?9hLWO`%OjE!G0 z15&s(STANrM`v%)?_>VZTQkEy>gagG6qs)cT*L|agpA)faf(bJ@gU&vO@M!wLct+k zXvBoLt*0fF4*0s_>AAar*u-+LDfrlp>=fJDR9!Dm&&*$UnDs}QH{>r`-&q0ski14p z;rrV=I!5_rH%3D{aaqgU#cNic>2&#-N?~)7xSenmSQDKNmq(KXepuudyqj%uPc(3k z&dk}#`uo4+D#7he@*tq{>`+p*Z4f9wC9e@x$g@@7Z^(|{0D|m^v`_b zey-J-pRz6z$2=wg^YVU6x}3{&=}~FV=FFRBJoRSKLKa*)j8#DnFzp5!RZh_^r8vXN zCdCOY9b4M#K<2-o@7f|K23@^?9OM1&-^OpTDRaLHvxVpzYxNbi8Cp56H2O(SW{2s| zg6t3n?|+<{LwhK8JhSuz92D-^oHOm)n2uS-E5Vwh3AG?@BcA;Dt zGS9G^1>OuTJ5IX&apuhQH;9v#`3cRZ&(xF4x~EUq(-EZ|yMd?Y^>jc_59leQCmEx_ zpezAo)9GE9OZ!+CWbbCIoctwsGyWxqyURN7W_*m7pc{7LQ-UoP{%^8(PI|(_s;BTd zKH7=K@=Vc@107k@Y8W~!5;$w8)~Dx^j9nMjz^g+Cm_0PjI>HS{pnLo&y0htHs=>T_ z-|2z_!$^%RvWGO(ty>AQ)&AgB-7VATsFC}2md7Q?&wHgcp6VbZslp+97a03 zJ3aAx&-n(~Ic(1C*ssz*QfY2T9{33cY)Cayi_%wKO-AI&oQJ`_^yq8#YFfUWme(Ld zX8x5@;`*bCT<-Eo{;yK}-apOOJt(OA*keK6>$i8+efTOWW3Yedtkm_#QUyHyIlX*fwzsZ-ITh2}BcdDx zUi-Q_vnl;pP|Z(*Y6$pLlpdU|$`7hKEnC%--{>4THzFpVr<(LwCKtnY1OjJXWSV{N zPwWnB(>Ie9t$3nwa$t0wg-W|=6x%N(V>DcU+<$T=&vOR|BT=dkkdcBi;~3tUNvU z_wp7%tgaHnjdIK3h8%9edCaIp9M3M7)(&%rfmX+r$Qyuz^xu$UXKcx9{0F)QDYL3d z)oO+^AiauA!FV)MhT!^iP@~lN$*D=m4mF(k9GrB#d!MC~I!aeMx?BdsczH^w(gEq+ zT>li*cgggU@VyTSi4)U{@llVqX#y%8v|X8vKvCR(vz~g))EnDgotMhf!|2e-Q=cZ! z|JT%C$<%M=vzdCQYwFFMFJ=X>$h3l)XS{J{-W_t;zt8*~9mh5EYABSMiUZF{GymiJ zH1m@3oiy`pcCusI<3>*8c;h-}zQF3ZEIacRlbHE$QB&OiV?EWLJVrD9h=bBskm(CE zKQTM=+4(l}WdJgq_>5|_EEwF~yOC!z^F2?V`I_yg%)D+d`I4F6#LNq3AcSyd+ocHsx)*2jwe&Y&wmH z_jfeqZ6E=hU@h|&^VpQPCY#Wd_f}`#RNfpO(>H$(HS>F~xOZOZ#e*VENJ=`VeOsi^Q3Q_-2(R6AAJjYocZ=!g4q+SR{9cXw9Q z*7dZXCsWau1MG%=-UVFv+LZTfHkG0&in^)1Kaj%D6Z|yg`TQI7=)tb16i=q2$4o_q z1Gx#eDersPR4OVleYhxFz)cnQ<*_NRe>R~h@BD0DKK0_!Y~o|7taI}DJ;lEy@#$pS ztDTgu34hD>QWN#$;V0r%PbXei?bZ$qeQkfxAK0u9=Ga3noz_d&;b!*?>l*7?b3qk* zMu|G!xp(kelzlJO@6u7F!fX9#fK{ zX-o`17~#}S%2?DUbMy~>+e=WtsfYc|`@HwZ{`#5*g5@InZrz1HZ(qlI;AvWO{Cgkc zhZtzw44k^MOr(DrpzoyKYAKwlYd*ZIi;$Vs^mHz{qvV#|ycW0Yadpvc2Mo5TW%#!T z^`tV(98v1u+1d@+w}{n+bYj{rll{Z4?3d`XH@=*}G;V5KeobLUmkf5zM-ZmS^(|sa zFALXgW7o+V!o~d`5@P)@H~X11GrqX@Kr;hi^IfJNx_^NyY5Ve)uiiM**b?FDgiNvS zX=x}fxvk_DOeUS;mX_c=ZEPMb@3x}a4qau04PAF;)q6$G^VpM2>si~8gI!*@?hKl= zJf~M}dyuc0+}z71vl^@&$=4p_TS<9comclY*2MEvk6L$04suKUca*~1lZAmk$vCx! z>#9ld%xzH|$L25+Ss}?_7J2lY=I513{2;=Pdh=)SG}^xg5l8r`Mh;xw3*yKnDUW)d z4%af-iG{d&r-m5fZzk0B*7sGGZL!3ALS~5E-ncZ0Susksny<#D94?DZ`Jg-&`WUGh z$Lux&KJ-VkxE6yv8Ps8%WHs!}i-nFyryTxXEOdl;=+P-39@7stIMLAFWJgU|bV~c= z=#>3dY|49=kTo`?{Q@$?{Bvf3C4_`KowI zdvQ?tcg$N`+Pr;S&6`XT=;KGR>W`5aV32Qz@a)L=k z7|C5ufreuIM@g*gkp^fsk20IP=;{eIh{Q}!{5$78y&K(op` z?v72#m>-19G>f*@%%{bCPL56aRPz~~a*X-hO$84UaF{+ZH7%OY5;LESmMr_uC-;S_ ze9GY+s(DH~6S+G&Bn{w>^|Srui&U)75)|`P{Afq;>H9+SrusOy^on=ajX@ zQX^o^-eC7EW<%PuAvbw6Y4v@f|Gx^k`AL_dyq(v^0OdnePC z_z=W;IXGwsWGJoA-e~AbeYh?{S*HrsM=H9sD04HF&k@1Qe8N+-;*;8A28|!Qk8Duf z0hxPv=(-o}67wS5=62!>d10rTFkL&+sN&2w&Btr_7{VM2D~!Z^VL3TJ;DufGEOOc@ zWEv}Z4@dy&oBCT-{_Y|`VMJb5; zq@(x!veZzEf02NAWgXQL%9X1YumoM$kz#Yes9($#rB9 ziA+lDg8+EqEn+e9e!`EN`el)=C3%TY7_ALl8>`rC)wTso`#&URo)V+y55An-vD6ma zG~LuK#kgvkEDtQ^YvxY!Wj#WPK%iL+KkyVXwmDi<#`QBb*sz)Fqc_r6e&&2Ovc!DR zW;&H2W5N(*UOq4{S+H5ni&cA@xgn3`-!d&&{&4amlS@P$y8k!0z068d*sjG|;GI=_ zcab`APhBRDbT-lA%xg4h9`clZIwG3PXP9fugv}Y)6Cpyc_l|eWOdr3T^sCUera#xy z&kpdkOHX6$sYdBqlw(tkp44|PGUJ<2$!%wxcUz9eo?w% zwgMw#RcOQ}C@rw&Nq_L766MK-vpXk>a`~ZeX4(Sx>bhQgd6sNW*{7yIV|jz~n3s=J zaW~hq(x|&a^kGa>G^a>8)5{*0Eo314mci*uDo!U~GKB-%N_R*mT(@c;qdG&QYUByI z*(j#in!{#CbA`1JAP$(a^alHJyY&c2S>HqAfu?k|siyFHeMb0k!Jp(|Zp!$*|7P+K zjI<#=LfI4_VpIBblSRl#HNP`iFraTp_cdAe>F(C;f5d5DEa(6F z{dV|*!Y6A0Ag^$bPwXq+o4VTTM`gJCFC(;wj^?Z0*7OuMkx!LANTpp_ziHYfitFO^ zKgfpnIVIG)=X}#NY~}z&6Pf1^(u0GS0UMWdcqlQPsxutNrSNN*?^@;dCDwqO3!?WC zyv-`d9^MOeOqiTnWcy?BzRO#922Cd#ORml=U@fdGvhu8w-{V7c|FEM&)K<~X0mcuM_QPRvl`PDeNnK5Oe_>JdhXU&?jlt{v?)~P&{hc40@=_-r z?>+ID=zR2lR7BnP@oIbX+EiDn&j`IW<^3$1Cw*>DN%8VtP~Cpvi~5@C-^cv)xzYR# z8?PUK*l_x2r-nJa#l5Empwu&(H~sM#J@IIrc)aw)<0U5^E3=R3zx6l<Tu7-1d-6jTm6^ z*&UltfkBYH$i2iWzPS)(Vvf^M@20Gx77VU{zzKps0^9p}Rz7`HGcCjHj=Ys45$=9P2qQg$T&Ec=yK&D?69*|4b7z6$Hn(KKUvKKhVH7LD+0&I%DU zwPm^M-&EF5b$^$-UH=A@WDI1083+%Roe#tHKtezLUUE%Yzq`kz+Rz$3PH^wkQoIoE z8YFE{rOUVBHN_l6)xmx>xv^9anOjSuRoT+R)t0s;T^KpmVRbaMG<8s8%S)yc75E8n zw|xv$ts$S^RcY)Ru-T^p`x2y9NFMtEQ!r)SQfIPg-DP_p)Tr1h^Gj4?V+(7KM3PC; zZdd74EOQ##y17G^+??y3^PEcOrDwQkf;O_2CN4+UaX(8!E7K+L8i}?Jmg#!1>)Jf6 zDa()!o0GtF5xx#nVnjSg&fC%QjMl0{Q6sL5*_R7>TAB* z(ffPUU^eE%f{6_?=|-iIR0|D;Q(0V)jj zk-t~=!W*W7Rm32K;6`{%-+8(rbH{!~a;ndp{G_Xcq^-Z;x&P3k@Fa=G;a4vXgeZah zs_>^OTXMT0EA1`p+S|7nanvtzO)KBh=QGtO?nmS^HI!!>$TBlrT(J1$`>1&j7dykV zwa=UxOxU`pEp3_g#>>}KndwROxM?aYt}o=9b@A{^mG8Q?%xmQPLfs8yw~TMQ zwSa6VdIrz6DSa6|lhV0-8Yi$%V?%aM`xt|X;S41^0wXTZMEi6lWTvXZ#M>P$vr`wE z@m?fvf#C6c9`!BrPrT*K!*9u*HMDDo?v%v*TXB%apg}!<=F*(0I*Pt{Y0e~de9~q{ zb18aJo+oqP+r+)2eL6i{@6+2d??QsQCYC57=y!goiN*9O4(i52pJX23*GjDF$W-;` z;Z4TD;5F}P-MgyI@3-Etb+~zZFMekxDUe8~^qTb(oWxy~ zynqbhSr!FZ>>?ay@I9x3)L4_HBb>~a(X9k2w2SwpJ+IU8&{^2& z(`dXC8`AhC5=Wbhj<7hu|ME$uO3IAnA|7y6FSin0fRb#ZzNq(;FSZZWZRHJM-e9R=hxp8b|!=;Mv@M zjaYD8>CpFTzM%^u{U2*!@0x*eH+kgas79T}euPUkdzMk@w7K4&nme28pgFf{p-hU# zme#c?%nPw-YPeJzGtbSZDd+`OI%XM<<#?3 zdn9LutD6rkD7G`l2RH;yk>iu3$dWw&Y%2L=A?qyp=44Wz&)6hO{cX$q{fYPSak zjs^uH*#hckQWnOUS@cnZtlbi1Y!5Qd;TvWk`CMxX)4JQ(vmc@QZB+juVoXY<)&ymc zan8^j-{?i!+*5$GSD6WJ zA-|fImn2_qPv>XbZ;>qFj%=q6{5t4V9`EK_tE~SL`8Nii>L&21bBM`4rkuD3JK(po z$^tAtih}_ND~P9oC2`((e^6gHx6k*cW4Xv6Fo(UR2)7C_?mr~0Clmn@S67Yg(eoYR zlGOBJP|Te|DB1*o7xLkk5oL%U<# zzp{h-3RVU6Y>G!Vh%A|UV%|ArhHlg?L&Vearu^4_XUOS%hQ}X)))%mr{1Ms8TWH8> z=|V$XMMTMMNGqPyME*~4`wq9^EX8jjpr-rcN?IX=qyo7Q8=|^gMAZ>t5kn)Q+SW-_ zm;W14T@hq)_8OwPypyP&u%i;US#IjZV)PT?(7a9;W<1#9avwj!8emzqgRuR?l*cLZ zKbb9C-oe-M0HBu}VmThlBAO~9<`rIaYd}+LqOQMCX-qGWhrh}iO|O$$S<@$&-Yd)% z6Q8T2NTYGkkEU*Jo3_(QG;zUXU(N5d#n5D`FwF=*p~-s9(&U}D1TBu2KFgj_a9`*f>6u4 zPW!UKUz---zdn8e|L6Tb6vJT~N$a9uCMU>O|GE~Og>^u{a)``*jG!lb%(+hx4;qHlaPtKFZ(=A-Ln3SmZ55YMjc}$R~jeVf&y)KGo5y`0w+6;%= zp1#M;4(4~1B~Cw3`6;(3${wHQNBWPPujUO$LiaK^lIs*=>i?uwnXS-Ds7f?d#R&e7 z=;(VV>}g$pj98xihB)}w!OU+v4RsA655)SQPW(cC?<^Ky!3EOSPcZ;f_Z|}+urKgL zzh}t}`?8wBh<%~O;E5TyH+age`8i*@*No%eJnj*ZOUGHJ-t5q;Ge~XwdC=0- zQ&P8PQ?EKDb!9d+dP?eR+0+Y9Nqst-T6{|C@3X1hvZ;pG`xh@kXQpI7Z_@(%x4`6R zM%>h)^kvyE%lV=S3G!c(O?^d6=v@iRatnvw_H=1B{fQvGnDk<$_sFIvg7gy7OO$?~ zI+%nhL3%mqNNd~E?`P9557M!hxn+RT7iZHiA)T~J4I?>(Eit?Vw1A>=E zz1N=>G@7%OuCC7F6Njw!^iijaG(I6HO?+m6kn30iASAl`w*nj(3l5lrOy+#auDUik zZV5z^g0~nu-1dBSIJRF*h`E1#2Up2RI5HrfS{Y8_dIB4aR0ZrgKvVJLA+Atj-sApt z+Ka^>;05Beu_=u5pDECB6PVs?o+p{-w0Sm1&Z@nm{QC=XhEq@EqbLjo!J?_FC+- z6VNQ!uXQLi9e)XpO57jS$=H zOaQfUVqEb{L?%@$V9QoWvC`5v?%%5UCQ1Rk56jGXkGVWIXNKl@Y#WE1X&+>203xH! zXitAlu_UDTRZq4WW8cBksMM)i9WO0gWyrxk-0b4`@~Pr=LB%k}kw#<$X9pEu-PXcI z6B6sO%yHyO%DR&EZvX$e-fjf-da&Yik1==8yZ-k@;ts1~VkF}20{qMx62Q;Zz)#%} zt%XT5urrc%xElCbFhmRCM$p3F0sNF{ul!e6*MjPtRwFPB>deBV>YP;&tnbypB+sVa ztM{59N1cEf^s&J7(b%Dc7c>Qx+66&4~&LZgt)x{(2y2(nGp3n##*u@vu&@n7?!pUZn@;-qO3gB8FE&_rL z6MF>@-oq0*Uy)VvIx~2!8LTUBy*_)Vz{r(8I+JDyuBwm1gXAM`C0wnLM2R!8zP-Wz&Am!9E(9Zau;N01#R&m>3Mod~YC2x1QF<}yw^MBTXSjO^6> z8lr9v5o^t4F>6oo31?K8FcZD6UZY6p9BW>Gt=ETV>hohDD=#SNT=~<)ytSS(s&L&RVbzCO|B}HO74{9NF+nfzMqwv8 zbk($C-OyX=&!F0P>HTl%7#5bLB~!ErFbcw0-l)pn?(}~_;`KN+sCYQ}0G|}*fDi{Y zBsTtE%FYBliYj~bX_7!<$aF>%4GNl=Ruc(I1{{e5O+hzShw3DZsHo_mjSdPbYDZBK z6T91?rYOY`cW2bmnQ_70Q5MC7Er449Q5KO!!7c)VC?u?TzjLd@;{QMIeUI-WeXHv3 z_uO;OJ?nK(?=Ba&1_8Mweht^_Cypf4S;z)mYPccOeiB-PIJ*X6)8H?AW4bi3DG7gi zQT$0Y%0~rw>F<87LpmYDkss!W5M93UG@OhvNiAosx zWTL85}%gEFas;<)8FopzFz!r%Xi zMY4v%g?xJVIRO(~_*HdL{{&|9-q?O>U_FBN#d2otaMxocQ{p#oVLiT)29B(U-MJoa zf5%ZV2sap?I$y2Fb*#sqrLlNLQ{AO#iLf4vh+X>P4Qf3`@k!PL(E``Mr*~f%z)z_) z86(pPIm4{99mBHHKIe|C7*B>hRt~;)w?kNKajs2P+|eV@c%>}IB#`)Fe05%?+dA;r z&c`G?`e^>Y!Q(Qr{a@hm9X=l(KlwtyEike~!3bpFUbC86S}nQ0pLQ5cd@oQNe^IXT zbyvRZiCpG7KL3~v%Khm@xyeTlcJ;=3v%OplF#IBg0qP2)JJjy~Enkwm-_6k1%@A3i ze5>>|<5*V9HXQ)jgt(;h0?KveOx~ax>0a30buVnh_=(-c!f|q{OPeS)fc{r=`%ElD zHlYg!+Ri0NuAYjA5LC;oWDn|!ihhNgFY=AEfQ-p8dSgwD3{>d$=2iJ(DRo_KPh~!> zKFJ$*3K+d~2K6540irzo8H+yyb_*kO*{?4w+qz? zt!b{->=~s(YMNWIPjOiZ?`{URHb8YBM)#N}9YObtQU3L=Q6`;sHFux z%XNuaq)3|uoBpx8p_13cHX0VsZTH6IlK4MH`uVl)NaudfNcTVzPYc;s2oiAAp0fiP z@ETC_3>B_6hXUl%v(|6G`Tq>79S*C{2Nf<@7nIw09X&O_l5KXji*6lo%u>whys?7- zBXtGgxgM_GgM*M|E{^$@&$7o-$P=B znfxcTDOrYhWpGvna(rUR!f*(MKM&v=(>m`aK5(0=iGTRHi=Y?D{*sb?DB1djTvb;y zwTA&iF00Xl7e;z3dDX{2wt%dxs=LjDC}k=*2!j9=E~s1IIqVM=jQY`qI$^ZCbb~O> zOcr-;Pu`5L0PoArX9(77(j4r=LEeXY@l5JMZ~QJ*D0@95q9MLH8c~9oClA((vUQBC z7iG%~>zB6LuwHGU0wMg1#ZA%dMg>%dYT{#dgLQT=(Tbg9uI9dxzJ%fCjNOg-yLq83xpNCi7B9xU$jm6}-EXHU*`@f<0Ys|pXH(Tx z74OLS&$1^AP<@VLKW?^utAZHBKj2EO0|mqn8Hc*i9^mHKx-tYWjjY_IpgHWzUA{Ph zOm`_5yNS!QfcKyiM+wEip_O+BKb_mjY&>d5p|RIOjYPke<4@dxz1qlgz}#9L z_i-f61jqg_TdD|Wdm_|3NQ2*1BF`T%z^*$fcB7sK6Y)C62EYj^Hc-xMJ%z2VyhDWEF#?R!OQ zkLsBIDyoWThGrRc>OKW-TH{!@eGipl#l` zD5QfDaDtqdMU6)IATUvQl^n<5OTsI7+K5QEFPN3P7gu?3vgv?Pq=F*hNBStm4$D;3 zMbRwjPzZlZ4I5mIj?d8A5P^D!z!xa6l?~s@c!(YlY}yXX19w!64^MR$s1p_ z%(M6`-UJUTWFWu{fk$!uK*4TDd59?74wpYz2nJwV`Bh=uMUErkw{Af#<6tF@meo^( z+?6mg;l;C{Pro%wu3YSWURW%G-+E-4dI2BcD!}T8E7_9vQ}QmvRfRiA$g@*oD~Pao zfMy;Hnl0GuZp%Ru_5HtUeV`g? z>_lL(^>v2#Bn?QEVf+s;&>#c~urd$VL>Qn+ZJrJoF^59^CM`^nL#uF2-CEJfY5U3% zb{ku^oAj`uNyY+9&f+N)-X#~uYP+;w$a5%&I9;ad9DFm&?|p3h>rq^2ud(_ssLtyD zEq?7HJ>7XzNAZvDv~h<#g!U9yHqj&WTfdcQ^TxgcGqwKBrO$vu0X6&r1ZTw~PFUOmEN<>byGgAfpfFVUd9ZN1QHWkee+m=t*BehKaRe46@}J*o z$e~6T7GI!`0*mT}z+#zt(J(EUBXR{UBCZIN*zE_YXz_pIu7 zJcYsz<4muzOM8bryQQ_Ond18Z#8-D;58}nN@#Y-m^(n0_l;uAN%d;hNs^9#Kqd8=c z78JW!x`9a(KH&YPet2aw-Ifo4L`59i;#>>4uI{JyD>=*)-s@Drh-X^`rQ>kk8~+C@ zoOCDX&R?v*lwQdk-9^BA_Nz=}DBN~G4R-CL2n$Q;RrndB3oM@K*q zBz_hTm=g}qQF6cBE@1bjL5HXp$9Qgs_9r`3cmA=R=_k2YPm>i09b5aNkg6TQE701y z>A&ZQyxzJcWZx#!Ci;fZLbsx(rKp@x;ZL$Lys>LotE1(aA^gdZe}6JR=W;SX0na4= zKja8JO8(i&wkAGE97{3OeLI4OUCajsvkAsQy9?Jh;{9+l!XLcfYy`FmQpP4xfQ^c->u9#qc1`M4Fxkj{3GFGw|Qf`p#Pwy7GEM;`(RB`+J0r|w^qnP z*Q4D|X-mnL>Rv{$gS|NvC?+dL_Hn>!@z^`c=1j9qv}C>ekIN z!o%Hyhp_#Bc5BA5-4gBLUv=wiHkNz-X_sl29K ziKxM$d;f?KohX`kA{(t)!s3&w%12N~Db_1;RWYo$<;Xnt!s0LA;f)VnA&Z>--EeSh z_%kTRC8RnDYS&?Js9)NWkoAsSQ;x8e)NKWYou?al?Kf8eGN`HGW&Qm7okfyMS;hy+Z*>q>!FP(-JhR1#i0*E2)GD;EO4^~zhc9qoWa`l>8s#|4@&Yf>T?BsrvW zMK}g$7FSKbFP8OOBR0c9-|3>i>Ot6}$Av3d<~t zBHAOB?o_yoJU~qa{Ldd`kzK&PI>qtHWZcto#2<;@3fDSMr(ver;aosXVqJpaSIk#W z=Y>BpR#+1g)YPCXa)KCpj@Fxp&}RnMJfyGu8YXV0%u6!(hTZ5@`Q{})zXc(7NwHN) z;EG|R49k@LZVo98M(-Y=VkNXk=VhvgK##SA$wE6h1M?#U|Fw15$kGeUOKMq!zE{on zn*>h8`X^CHTh=ADVjkm%XHrTI$>`?7<`iq0)`dskcNxk6zjbXbN;W4j0P`#FpXJVh zP0Clx@pOvrVL0s(-Ltr3!x4Dbts#|$HDo|#Y!7NMoF2jQMsKuT5^@q*6Wei`VVFY( zM79jPw>YwK;Ju}hZwB7$i+rtifHKiJY$*gkSi&mXmyBk11|&xNh2=A3fNs)8d1K@< z!#ahlfNtHJgUQfxgIkbQh%`6DZ*Im5CW_JDUxZHh#a8Ky0W0@4;-RHM038?fY!486 z%yUrqTNisjo>Z4I6z{SD^X>yi`Qo}c(IK@Ss`oy42kRNMYf)^UC;r>%LL}F^Jxwd0 zkY;!dtPuz@Qa-P4n|1dAzjZ}>$ilQf*d8$RHFIK`b$5IDy#?O*8O#`NKw4jS@qOp~ zbl!iC8XpbliAh6bjKkCz`9_B#f6%RQIj9zJzx#0*C$@Dw^2iKS#L*f@X&LI^qhX1U+I0#WT`cm1xXdW^$c-*DHj z6N*_|1;ri1D+ACQ$mrMMJHgvxIRIZ{kD4X2Hx22ZiwR z#zh`2NGN$;SofBS=uWCtMlE0_>t1xwJ6}akm9~1w-piG}=cUyQx7Bzb$OqlJgr&(+ z`>h~&%zpF6&ZBkNbM}M`cng}95hCi6sDH2p^SKwK*4X3QGw84e$$gP)Gf%f_C@Z!QPL%XKJ3$ z@uh`vooAnV=1=Z%IQvzy6TE4ddRnM_w-Pbs0n1!EBBM3yH^{X$^YbHZA5uGo3ai9g zg4SvE-H_csS6XC)^#6_2X^X+HXPl#68u%SAJxg(-Lp-bDzfhrOe$hEyV%YJ+MZ~JeRecV5 zIxe>QzdOwCPMGj5-DEP#JWH!=V^E4pSKAdANypC@7bA$KZaYAqiMh#!l4Gd&#&M%Y z;{lWHf9D-Ra{=tUPzio&x54??mO9Lyv?0em->s^&^3U$SIAo2>2-){$;2SJp{Vrsl z?TvK>mbCI=Y53E-@6^uwl3`Urxol+{S7jKWjr4(42kzhMHz~5;tV(kc$G*CkWfwR< zaCy?K3SSUg*bLxMaE&*f%I(rQ6EGHjfuIGahk5|K)h;-U|0m!}SnX}_Kl|Go6L*$Y z8A>a5Q^*!N^u zf8gK{Vu4PlJqN+yjiVsNy!;O%D0%I-o>23$$(@%?^!kzv_GjrIG`H5EeL0F8x8l*e z1x+$QO)Yah3)%@Ef_bca3j`lICvz`leZkE`bnk;2xe#S#SV(oo4R8*MLZ%`fK;E1L zR|6~Z+nb9gpaSwC0kXR4EEh$dLH`trWb1$L|S)@XJ|y5_&sK+49b_mh;w{^ceAp@ih+iN`tv_oZ1qq>!9?$gY@Y&5I;G*M@)V0Zk=oGxA@bN>?EQ1X;xEZZ7ogFMcW3H^5bkS;0i zEVE&UTBQ#ne_>_K$OA% z$e23Q;*w1>_Yg(MxVVR`Y<`7Whu#r@R7HCRj2rVWqr!gA3lqCk$n?C`6ek<(}%0TRQg^VZ@ z&;{tV0TQudO~AY+qFHfq&V(~|=zv5woUsdsw|Qv3ltI`+HU3IT65A}Z86Raqb8_*= zQZZ3`Ca@DHUBo5ZbWCE2h};=#h>@;c-X96!iNSOXSH|G2HOhTfFx-mLRwhLV+Q63o z_(C`o%1?ZBVda8NH@5ACfw7O5gsKZKFO>Ks60*K$BA6*2F9`91Gf6qlphDB%k-|lj ze$%L1Y51@jA)#cqiZ2WbLGOgD+(f`00$JIoT{SbwmlF&xmS{NQa&|x{+*m_2`v5&2 z6Eb1l()s;*(WuV=!|bmHNykR{@(C-$dlXaG6L{1JuODWWev9n~d&?-qE7EvhfnN9- z-Yz8B*D!HOG0K-g1UtQOp*Se^XF#)O%Cg`{A^Ni$-tP~(J}pSy&S<;UxBd~swV z0d4x?yP<5Y*q{^>Ic2_hXBKl5=Ij*W0_vV`C1QZzml192rrWu2iPq~LJj~?Y9`Ya* z-IPAeE`1uS^AeBY8zDvWLC)vOb&YfeSB)alOkHimc;ATQQ_f6r4$u$fN%C=kG`2Rf zRKDaRz$SWt+l%Q2o_b0AY)hfR1Q7xfg(V zT~`siXv(kXl49=El=n13n=Ba!{BP*CVDQ~-i;eIi4Y9v<#`nDR z7aG2dD!b=GXwA6jj!p3D+r7DA%1FKc+Zxz08nM z@?({1Ur(CzGsKJ_LU0_^+=UaEgJ-j46o3y%QK1`L$nA^V$j9C5v8JHsfB?&QU(PT) zEz=+xt=-eFds=m@&a3SH&-g95#1UUG3GgxHdmZ4h$>m z&o#A9Z`r2PWHKuag5GdZy9Y{0T3|r(vl60z>J9Rao&am|!^{WDS9qt^@ERI=GV(-; zKc$B(q_vsApHsybVS*Bym72ZrfglyP(j2J(2=te4@J9${d>GoWr{#{GYPz&R5JaM5)B5fwoEYKJ>NRG&mSCWHPxR0uvllC=H+*P!|Ar zYn}JV!htk-z!CikJSa(YC!)>eF4EDd&?OAxyRv@PdH*6G+j9|nGsk&Oy~`V{%HAOo zvia;QDf=@~Fz1N~El5yYV7Trf7}PhBPr@g`^~&89%4B3tgsFDPi)o2rsZe|eUdAPm zCaLFMA$7i_>Lt}jQl*kAl2neQdPwRQDdCmWN>W<$#l@9Cm{XOFpO~ZRt;;XFgb95A zd~ib86uF9FJtcTkZyr3F0z5Vp%eLZ(LfnRI!pLgKm+x5(1^m<$#gl-gl68d;`POYLs8Q`bnfRKG^5 z4P`b33sHeUPi3+6L&Tc#6Qv?^@JOpcE~Th6v|s`s-RU7V=t9a$EH1K&+EsNp)PKZFK*_C{q0ninUGr z3vc|bW7>F%HjK>0ga%Ev@rY_8djU1j#!s{{*13;&(-Lpv+Q;!h&L{pYDK8O#3`<9F zp-3)+(0`L~xs>>ed`#nGqFz!z6YO}Jj?{wwKUc!+h^sE7I^xgqq7T?jX3SS0>sdm4 z9%wUJ>ANJKYe;2jJ)Prtbox=*vEIiUwiUCr#D!NawD%&vuToV$fz)UquG6O)K{3P$ zTwgK4s}=XxSjF;jB(qHZp?sX70!!**ewHw}|7bIX{ME(Z=f1=+lqAK~*#yJBSR#Mm z5$t6`8W{FnIogNtL&<$EfAMEJ9nV(E&ech5`4^tOI0Oa&T15IpVp1m`L3>2p^JBHU z7mYI`m0l#)J}=(gF#+3~Ncri2!c!C3PZA&nYbm^t3FexR7;{KG9!fXLf1(R#&;_jn z?$dz|mfY+aJy+qO)Xr-~*hUk4 z_?A?>k;oCt6O(t+id*VMDJ31IX9lPLgu^{9p~n<^QB|-vQAHW$@l>C-g`1MTZfU#+!*B@ku&|?xo6?ISL@&^xsm%@Mn_)uq?1!xyLRLq zB<~a)9X6vApGIV?V!v9=Hlp|O1PIu*Tglvnx;1_5I{cW zUUr;PCpOoVx>M-OJy;rTT07OIs!8r@NlxPaP& z()bRn6?``m-P@rpif>>I`-ZF& z**M5%Le`auVa@(ibA)P_jhT3Su(*I_-~ih;BXx8_d?CI-Sv>t}i(H4i1-cbV(Nl*f zSSr7DPd?oC|7g)Ky7?As+p zXrjmEj0lvU;GKGqgzmPEZiLqx-^L5WnyUa3z^G(V2-5VvK&6gvDS^U!j+3r}p6Qcv zbPWCtm^%~43-SaUVWkU3S+P%+WrVLn7IYVyi*9z!T$tD)Pj=qZ3>KhZCs%4S!RlOU zn}sT^NSwuR;KiV#dq}sK&}RP$qVy+)9tO}N6(lSYWax;Tn|u%t^*CkrQ!t z`k?#Jh4*)n1Sz%9Wa9l6>0I8~^uTq%EHB@#Q!hu751x3WFBvXT#c?_&6<50t9a3?2 zANN5j9!8Rixx}wdTusHviBhrT~?~=qUB~nQGO_lD5Dnb zE&iw*zfc1_pL*r-ZF$6>X2SwO2gjg`w>+H=AYK2G>5o<7Z`V$L{e4-o^t*VX?rHL5 zXWz(EV$9RZx#WF<%cBd5oiPu)VLpC^coqx5ae7vQZv3J}V3?n2Gl4Fu{fQ`liSDxx zy1~4(nG<-O`0`ruZu+QDUuBK6O3C>1Yna5q+UTOUt%+{Jq z$5d|uWqS|`2BV8S2zZbg{y4;2k~ZM>Rs?EKhe}ox-l+VWNKSKFLnY-=J3|FvaotYc zR2~N84#O1eL;_`H0t8BDF;KWqKccK_2Qm&c!(&Dc0(v3-Qv92Xyb; zuM)$DbKK!CHS#QmCcu~3RBfj{BWz~WyT9R5ubGhE%Z$u9G94H?nKXuGtvowm|o@gv8 zUp&sKkQSbm&Pn`4x92!sev#p;@Ki+o{NMB~AZiMOJ_O>JMM9P?s#EE~bxg&2UPXsBKWe1%s zN~;()#qYbw4d7fc+#9=+Zu)KgW37H~x4WhX#(mw*`~Kpgwtv~j&bfRN3^z#DC$>&H zR2;NItWO4w=dw12Z;%#su9dRh2hSusQC0-gcV4Fucl8uYC;S;CA%l5IJ^?}vt;+W&XmC9TfaV_@H!Xrh4@4Dn=eXDiK}E33?Te5#D&5JvPX}>2ATo@ZI;>b> zn|Bh~1Lj@DIIB%)%##s*QRV`t8yT`3=H`%@s4j|qComjj`^1jNF$-Y~W+4UXPO@yp9ie~JW62wIT;Nzw9ys8YkiDpP5EW&w99rYmYg)|P+Z!RNgEfMYkTBmD*VGJAQ>EYbD zQYDHCI5lj+#o!})*|5HT&s9FyTy@KlUtlbQoke`Tv_DtD5eJaIM2>r@U|y~bBQ&v^Ae=}*3<_DMR5Jj zEL+aSTPt67|3ESOAR=L;QV(;RZW8$@EE!K^8GpM*J~8J7h;L3r7`H5e@AdFLzsH!9 z)A}YC_ZAfiq3qraydFiBJ|T*)gO=xWn3dhz*ExqJ=VZT<(MXVEyaz1P%ZBuIGI>9( zli#eIOk)UziU)y!L5wtuP+$X;%oXqnS0YbP)+k`cbk=93ux?;NaOUZ$ zz5XFpr1n~i;91XlrGQdKW(&}E6Ym#nn!UT9j;Bd;kEjx+iqlEmo?XxU1cZg6cpX73 zu=FBj8y2)a+?N6*=|!{p%A^&Q{)|1td_A*8&ukZdXXawr(erPZCh%zW>Pj2IW^$6( zWzZnLz!eBwnSAL;)+5rNs-oC@;i6O*O`k8d(?2X7>$+3b{LcAc0y7zbffq@09ufjk z4adKbfEPA*@PT#Ln`W3u4E49FKmhH+IlwV;kDA!`1I8Rz>(i@zj%x~ zVQ8!gW%dw2nITQG29?Ly&*=@@@|n?(C29OI%)*BxMq`4c6ZIJz!*M->H3!ycMlu($7Lkk5Vz9DDG zopkt+^7%9`!aHHuM%VQ%gCa*6Do=+mPTZ~ z9EtZ&iEplvJNn+lmsr}00JLF&fWR@wm1xe?2qyjmf9mJTLC6{nCX4kss@No7 zpTxyS6+5bvbMRYBA3N!aa}Jl9GRk*O;`pNqokd%I>p|Csn3!|XM$Hk$P{o)M;IEbA zvvN6$V5e8T<{_q$I#0hlfWpWqUyjIf;H735cBSy3yz!`tkvulXuxj%~{4!c(o~Rm+ z%~({K!|vWBVy=<0i6$6Og-DU23v-AxDsv00rf(r8aH4jJ&_G8o`ZZ%a7d=*S)S}NM zH_p*y(JROSNg#`UEm@K*DaRZCp_Soqoy3>;0{Xbo8{d_D)5-5(oAO45wYL7Qbicpr z7M*{s)2JqAt|+y02WN7cuXVUkGGULqPD?iNZl31!=AH9zsyLdTeaw9&x=r7+2$~u( zDR^NSY60--XBP;|wdW(9uB-=JX{J^2cg>s!yAk%WoE`p>W-d4R2=u&DM4KuY-l_oJ z-#hIMx%Tw*nmYwHtfvIeVzj4Qvx+6v^nE&5IIDX3~*zGA&1V6t0(pHEgoSJ@VpXfzT31$shzX=vSyF7&s zg%B99*m>(HAF_Nt;S3Itqh@u0^9c(HvdiPABEu`jHb5NiUY; zA_NbQ_vNEa2uXtwG-Ojt(R4?3KYqpNy5oY@jc5j})REe;(POWunOPRZz&ZYwO0Pg_ z>5Zq+o^U!5MPj!ptbS$EuPlmZk`Eth2%~w8=^y^xgKevE6c8+Hk&}14uh`tW;JVqn znG@U!5kwr%aEy)U-Cr2yIz1B+W9vs;X|NzAEO7SArz*JtS$b-zxv!WjC!QFM`0_n% zE7>$XowM1Pq8ayhDB)i@pGF=A1Gx?F^musK6e?RRt)kZB#|pYA_eVIa^pr^|oZtF{ zE5F0Th{}(#H$4iKtxEP2O(II{_(-uyR0)Tu$Q{(b<|Eb{BWoI2L4N9TbiO3@dxaKh zTNf;JK9cj89^jtxa3|IrSr#W(m4PlB<;yqc;S~@415YUYNmcyWC9*nR|2(HBdCD4{ zJe4&@eQcW}_DBue`T`5=BXb2iNwyDUFC^SWdzu?V;njn!?oSa8p3c_)KoGmf8qxon z-ssO@|2;!R*58HjG`~P^qI`edJ&1>I>jk`rw;JJ}t1YaZtK-x6NJr|ffhttN+=L#8 z?nUA4!4%#{#zgm~dt;JCqKat%%v>F!3IF1}SC`Pny?WBi7=4u50>BxiTQE`y4m$HpY0_Km^R%u)7i+1Tc zH7#aK$vV*;F&z;rqLu$LDkwD+G1sHy(-ks5f!fJoyLfj(*e&;BddQ?DE<|T;=o}>KTHi0qi@E! zhC(2w6Zi>P*COefy}MleqRrlYj<`+7HyD%pV<@Zifb$Pk_FD$X1f92$aN^2JnGzRj z<^h>|M@~^_d2jqudRN`gzb*wZld~&|f|`zxgLv#KnFv6`5d&Pm=Zo@vtd0~z!Uoqu zLJPz%=Xt2rotZ$1u!@J0rGUy{EB6gS8brPBaQgEH|MIT*h&$81M9SYpGjCq71P3Jh z(nZGq&@3j0z&Hi?VscZ(-k3O8F9!pAV}eLT(S;lXaKun;_dKcYZ0B*_9@a;U8TDJz3<4_5<)O%Bd(Y;+FKK`aga?wBbL{7&^ zj8UGDseeEO(F3neiR=)aPL*p=1cG!q3h*#(9*ysyzO@8v8BKe)E; z6mgkjc;WOMYTtNtjjm0>k^Fuu0E;L(e!? z3xZ~jZrz44!GsK*trs*W@_ZvoDy-{Rth|B+AyY3ftSgE`=E!2=zq;4)7iEwVT6DAq z5J{rHVVBMcnWOb+R0v{tC$8_YXk||jUuA(uvu;j-kuTjjI&uRe0YVJq7kZd@oeiQo z)yRXLhI0p0OkSrlWq7d|JO@*tkL&?+kzt=v#1Qba5wNQ1Tf59~(9RtY^z01v%l)#Z zU+w~~xRu`c8)z-!HaQ>QjQ@@!sIvv!98xvM@m0{nAQg0vaL{6=Q|H@sXtLCE61`w*nePFFp5NtvSH3K(=Rx!mkVK&TqadKf~-1>0|t6_ea65 zFyCG{sS7OD(>QU&D};fSyr;wJ|JLB%{b!;ISgCpL^o7jJ`oh5zow0WXo!~!->|7JW z%A6x;4jo{GqpsS3a$f^NzKLqhm8^rQRtM#&(b5^+vV=m?5#VQ8LXGHI$}QWlqNzEdT|ubg{uqP2ZmfPE8&3 z-ifl%f3H^~c~mU`GJiw7c5K?ZyDvg2t9v43J~TyTct$cTxNegK6Zo>mnzWgYKlnVK z1A39`?M}QA#=odL&D9$?9le1^#mxv45ud8KUf%dxdZ#SI9dKytn*npZOK9UD zEA|cF^zaB@|6myIO7>J~+&&|afxOV_-Vi7;rsc?IHevQ#d<&tHVD*P*^sWq<*iS?t zNu@i>s>*O(BkhC_F*VDod936SErckxLUJx?mRZXiVZVbYjqp#Jsb1hxfvWIot@%Nz zr;-_tZfrLoRH8GUk%m3&$^$}tSBAom$P2^M613751p8HjfryK1MFr2D;RY?wtq)oH zMC_23C8kUl)|?7P3JN$I$WU5QLR#riK{HVj>`7}WT1mCfNhr;yGhRAD7I9&c$+8*b za8HuS0uOJWGTTAx^HZZpflkm>0I55BmdjyxcR+%@w_;iv6L? z$)n}Ci+uv?w)G{JEsrnoUsi`QuR+-jz9@p~4oCdHDuh$dR*qf71C`Ii|X7cn}>EYvEUKRpw>-$-GZrzBNN)AM@=i`WInmNP+RAO zI+rk+nq^O88)r>@SAM*)*~)Gt`@1wb1Y5Mi#cj)Ah7~Sjb(>J>%y)>EdPKie;G{nn zRu)&Fb8wO^t9Y`xCnnZ$oixHIj0o>c;MMspO)>$awOJer?CIaNxrZ3q6{&{nU{bS3 zEbhXjKaU8N!E^bDZf;l1%k4(L?r3ee8`Dbr2{bM@LUmgMfrHO|tzcK0~}TsI~^ z>zZ8)orW=s0!@Y5;ZTZxZudtu{23+lfghI&&X+T|QdC+->fyi2#u#i)cQ=S_+3HPNMZmuLjsv9@BQmwM3m$EP0w{PE&i?9&y|l z>5d#rqV@uAW`w_Er^;Xoq|Y2NsF{*yaHrVGdR?j;28g=2yhZn*&CW)KF&E^**RT7R zqS%8`zo$t?rw99;7%Ic%*%Z|cpbbjnL{v&Y9oDb((_q;x44CPYti^JF9Sy3R!h$}W z((3!7 z)oW40r-fUp@X0LG9(3!xLFxoyrL?}P2nZ*S24wr79Xr5l+iYC_I3Rg|OQ8kKFSKY| zx=>VfTzKAhp32$KJ<+V;)S&8dp@tCu|@qY;jU zu0flP<$;4ij=7fEIJIqFc* znj7SMC0!Qi8wo!tjp=Pi^En{g*<4GpspRUx2=?d@wQ`6@Ulmy4>SFlDGB*W0FaVh% zCSgxc&nHdEK+@n(S*dwFkb)`Dt_EyQ@L)1*@$mP1-e~Q0%|F;632~fL>Al83D zYHgT@I6gjgddsEN&hAFW&K=2F0gXuf3cS@?fk@!4b)_kzrlqLuZPQXUE(Jl|KmO z{1ER0N(D{KUoo45>i!YioxKKhq}c*Dbgxl{oq@_>Hpx9Hc_A{J*ueximS=&HE{ z;vGoNv?|+Q%nj&20x4$ysO}PR*3e2Za5JnM^yq8J>!P|+!tXoQ0R{T;$!LS^bQe*R z5pI;A%%yWQ_*xv8v=${!h(?QYWE+`kOQC21k-S%b(#U*og$xbqYOj&$Vs9h-Hvvc- zBzbD=5vgO$kK{36{!KbL)bu^tdFnY=ab7Sf<;MZW<{~8XqU#|{s8E>tOPQG0+{$zJ zR+kacfNG3zi)y@-#;eO*sdu&A|53Oe#7a{V+JIaq!aD-yTxr(`$EDqnXC=P=UJHdk zn#N1|)n&|3Go}#iP%sZdHFXAP&2jn8s-{F|xGEu}-1sCgVsuaX;a-b0Wi^h%x(3V^Kd7%1 zPi**AS(9`%+L3sF_-?cab|wR}zRZ&jQCP|ljPU1!o719H3aZI_BLgzq?r$aEfOLvA zlLJ$sF}hlvm9|uaR0@UHz=4njsj|8+)ic#Wh%)xl>ddKYD|s!{UodP67B#ZcaF;P0 z?VCsBQ8OQs1tA0g3kl~96`g8(R2k=6|7SWO!;cAwd2--z}g#fNxds z@S&RHP`F{VR0=%?WhqI&sTMpK-j2a6D%YFSI6jM6ZQqzU6%y| zFG%YQpgB@?-EXBeKxiZHY3~|24{^(A8VrVa!9DKRjeEH@>E~L#=)<363iUYtEWL4u zRu$56uhW=w?oDZgd)%s|KMg4|dbr;r;kVBCdsn%^E?4q>>lFb=!~7PZeplY>spoyn z4-%PTsoj;{i>st8H-zL8aesYk(29MT!br`vNnHUQo+*Y(!J^VHY2a$9sOS})8lZc) zqr0wPk?3<5v_3qbcoa#YzpF%m?EhP&>4q!G$A=rXfvyTbV^uu1OhyXtG&wk!$4QpP z261SCK62mp0GH$;sudfNLI zVHWqH@UGJG3a6yt6Mr~vNKWh`IS-gbW2HX8V6U<1h@WD2Mvd;KxDjh_0p@*mU zlZ6j@uxH_hW$JLnV#{5w7=HaR&`a&JxeJ+7^Zrg5!>q5TrsQ2%SMEdK*?lP|*orEv z|9ahgYl<{v9p;IhF0la6?&tQqRBx_-p0D!H$XrBKit;qyQq*s>(`VTHBl=i$^a|QW zjEDUJcpQG1xHd!pf~m_Myc(j`aGucMpC}a0B#)YZvW z>}%n_ecIU`{5Rh-pvGUf7oojsv7gMW9IH!YIFu*2D}9Z^cI$NXDyILEo5JZ1?%t&} zYl`9wmfhXgspWt>8vbF%3n1%OtsZ?_a4I(zC6S%)${T-0ufapl-b>#N*GsjKZC{IP zESU57dBp-4G7Xz%Y&s7i7oP>{4aUbWnm|l)Ai{71iC0@Q6dLm5)EkNnoG&7t@O)7* z$OxG$Lq+2k)f#agyzxF1(`bU&SB<0^I#TL|XR}XU^T4~veUhjokt+tu3-XU)gHCJO z*WKv%h+u7Wg}HhvaaVL+7r|H2eQ8zU_Y{^QDyn4Jhk)>8l|VpPM}n1I19}F9DNcb0 zkgQluD4L(Zg{_Z3AD18U+KW@@&A6Qdw3%!!y8APt(XL6!8s3nfq5^-}B4z&;{!vfb zl0ncll{Mnhe23t0Z%pGn)cd_6Jq?-L1UrJ)CR5ZXTZwP)VOgci`0oU{6d_VvPS8`h zC`P>hGQrAe6n59kZ}(S2gg?KGITs$a$P+`J^;O|mne0nxSRHUR@yJ0MUJT$kPx8n0 z*Q3V4RX;h7E{=!^kL({g>O_Stwbv%9M~&?ienM6lR`xhp*{|+S6*s^qK(__VuZLNa zcBc%>syN`F8PcH|b*><#DoO42ymSy}YYXO4LXd977tZrXJ~tim5Z?9G-M!_!)J(z> zRLpnk`JNmicLm`wC6`xFk3Vyh0Ye0K$+K#xX#a5`!-@Rcf-a@ikhzMk|B0H7%#~Q{ z^`Z+hn*&4EFhrI67R+0|J3nNN&N0m0D8nZ8^0M9*Bx~T}wy1OgPFZV;N>Pj6E;IiZ z_EXZ-QvIL@Df>xcwqj24&K=6MY0Xs8cUhfyQy#7CVwpMQ_+k@uph`@Hni3IZrGO=(Wglpp@p zon@W3y8v$Hockx?GHuWOInhJdb1AQW4c|3Hp>WM!Uy^}y6~@&?dii?XztBo^w~hw@ z!f11GYb!0jEm_O&nU zD0lTw3FJ6Es2Vw|H4Q5R5wk9N=s<^KPL%Q5^3J*AE*ar_zIr+j>hd#NqUzOfyPByG`}+GD^zO&T&h=ku13cQ88vIbzSLTm$q-EiMyUa?T<}Gi~3tu1-84FLpDRiHVXDut?k@sRBujk-W|m;vgdFH&SvcHs!^Nd7_ARPiHx}(yoe$=UvfPTiKIvRMe)r0XftD42-9E!5QuMTxFN|%pzbwt}wn0x}Hrff5bh^9p^wsZY8>I$q zmcmEoUS(!^pFqLm0^5lXKp0GX0jDEy(_@UlP0XiLMA&y~ivbQBFOsQmO6>j9QS-Vj zEJZs(6WE4zU+K*;UkX;)@+3WZ{h|W^*|&H7tj#&^%;l+N%V&K9 z4RnKd#}cjWXKii*LSmOUCw=Y|puM?y!_U8T*pc-0=FX?u_S!SL79m;N^5AH*kaozO3IZuBIQ?v+%4Z$`x zYNLmDO=9l-(0gh_oVR(97zeosjcyN+QS(nJvu;eJe)~%Yg(9~&amkLJQ0!K>T##NE z_Orfvl^N9@!NOgP_9e~@%yMQI9yL@>~zAR^ZYl{MCbic9Fx#l$Lnl7(j=t1giLF!ho z`Fmt;ggg|(2WyB-%RY_c;-UMro502x_vDIw`;s(t`cf|Yfxu*il z)A^$@{6P7iU#9EmNKqtcJ<-mXb$hDsd43ZaC^9%@eBih!P}mmVSYS-Q6_rAXzJiLt ze+NXrIPurf?lzowy1NZ0$S>RP$_jTI-ah82ZFoJIWgDtYAn4J^o{@Pc{)Y0d(?m*- z&XK;P&7uz&Fb=U)&rJ2>9LRUU>i!2k3f6XM-m{k`UYPbX(3F#Xn|garlQ%j8DBWdv zOIKm~B;}p|P!LQZrxYC9++Pp)B*2w-vZla|^et#TEK4h^Ju)$k5hP#8`VPOIzW$Br zVT)d!ABf?ashnx$>C%$}ggJ=!mPz)$Ki&7%Qw6MAJ3#m(Eq_9<0=;8C!FK{@@{Ui^ z+-8!x9rHcQ@3^IRY1R`FS`UodxsM>pW!KB%H|&-2ek44SDd-K&Zy2D8d8_GT9Nfv> z*cCx}W9gJA!)NaMtJspunWmigd^2hGhJd$tsm$7nfc1o+TGAsSvChjQ@()DZ$^7i% z4F_>V^S*haR=#|4Hq=ih*1%U}SH{`R*vbXVKd)OSGkzK`r1F@rk;)VK*nS4BKdY@V z^RrLge|*2DDcJkZGM(y(^}fk`85qcS??dyrYlN&PCeq`O{hXXUBGZE8KzSZ_ z_A-({+43NPR)T0`f#db2eO-+5<#*nMqTwUx+X$^PQ8rGk!IIR|sYHeH5$QfC2^oim zM^6{l6H(1S=12b3@A8gn+NFC-TM(+X^Fl9E+rhbj>jncmSs{u~PLUqTC{ElWJsp}K z>OB-rSrdwcU4qd>nhKG1h$8eaN3;p2#C#7+ZElxbf>}tsiFCM2Vl=e~q)!wPUOoA| z@4NY1-$Li;}#clBz#D&;D^1|jjws+ zm%tfTiDqsc+B-K>n^i$Z+&D`9fVXCazxQv-mLqu!c$Ngq*G8^^i|DsX^rl32qpXpo zK$_Ach+7$KoSL?tf}(dBQOp~GZGx};1pB)rLAr_m%RMbPt|LZedGr0*qD1Jo&NZ8f zDw!7Sn2-Hg@jIT@zr~hEh-8<38lAI-;%0RLj{p96wfGr_=u2-ufsvgs3IguyK}@!t zy-x;{|xUE>D8RZbCR>t$Y-77ct2%7l&ohlcg`JB_9<?Rn5|Ry9XWu4 z^LMs{oOlnZx_VtsUD~1{>iCh*_wyM6eyucNO~xO{j?4h@qo-a*_SP>ToyVd}~UN z3j9svgrIdoFgl-;cDD3B=-JnraL&OOiqLkA)M|vk!;DkhtBjVdh&z?&!kkd*^E>&* z)>p1G63;%X&ZKlsOU|T2R|r+kvBxUpO`0q)%U!1_vFJQGleod{OSEPRRgO;s$#T8Q z(nPMri)4|Og)c-_AuOfYgvEPpCTk)2E00uphvdhFJw(yi6!$(-fAvu(-W_yBPCV83 za>pARSwL;CoEEp9ffjB=Y ziTh|@F}N>BQTAeRSWD2HA8gv+1y@$UlZg&-qhPTKiAzrZh5lcTPA%+kUZA1nIjUQ9 zQxvx*NVJA!qHQxVv23QyASuBq6NcHjFBoPG_=2IC7w0<}j3IFlcU?fS3V=T>? z1u`@k1gyNqq)%YdwbbcK=w9A3NxvVj>%C6SL7lLiYX?3?@#006kOf#|kTrT=&y>2` zHH_lCk>7Ky3Y2>8QzvXaNkJ{nAQ0z&`EHe4cmh(xLy^->$I4ko?4+nDgRbG^-&Ba>VDnGFS?EQTAL-_~nCl!YVwehij^I6sX z$-}6;o(!t<_0(v7;XDfAAsxJ`7&pd4OP%L=jWSIaXUXaRwKD<9gZ~=#A=Z-2oi_J= zd2pM-w&}ucSl-(ABgyHwKi~}=YS^!?ZSUX0Y4|!hHP0$hu2@XcU~N*U%KJeM(VO~m z>_u+5p}7(`)u~)^Xqnq?@S7*`|KhY8nlJ9!I!3>SLl@= z$b9GtDKuM{R{q|X<@g6e#n4BgW@Hg3)oLHgE|6JrDgbA(eOK*x=iZSS{V`Q5Z@Vvw z@1oSY=bVXr_X83NN8yj9q)8lfBYx4$#T*w4o%6`R2;}=wD+i#CO`g=ahco5@`C}a~ zR5

z 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 z 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

Nj7WE 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ℑ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,000 CPU hours as of November 3, 2016 +Contributors with >10,000 CPU hours as of January 23, 2018 Thank you! -Username CPU Hours Games played -cw 220301 16924200 -glinscott 186639 13936027 -fastgm 184045 14608140 -mibere 165859 13563572 -crunchy 160974 14091929 -spams 143806 10956698 -bking_US 136938 10558137 -dsmith 103332 7622414 -BrunoBanani 100008 7448565 -ctoks 99216 7989224 -JojoM 96528 8138437 -vdbergh 88372 6322455 -drabel 75214 6034715 -velislav 71485 5483953 -sqrt2 70825 5471595 -BRAVONE 66265 5356681 -malala 57618 4480635 -psk 54292 4337164 -leszek 52415 4254611 -marrco 51573 4132787 -Freja 48348 3773248 -Thanar 47723 4062940 -Fisherman 46361 3865994 -renouve 46003 3544864 -CSU_Dynasty 45136 4096148 -rap 44619 3219490 -dv8silencer 44175 3961325 -tinker 43975 3261777 -tvijlbrief 42291 2965762 -sunu 41289 3172937 -mhunt 38278 2697512 -Antihistamine 37735 2795761 -finfish 36001 2734928 -brabos 32630 2566008 -jromang 32044 2166097 -robnjr 31781 2726352 -CoffeeOne 29940 2597953 -sterni1971 28924 2737221 -EthanOConnor 28429 2143255 -Pyafue 27266 1986098 -jkiiski 27009 1925255 -biffhero 26557 2033420 -nssy 25231 2037166 -mgrabiak 24000 1974653 -slakovv 23548 2031279 -Sharaf_DG 22175 1790697 -homyur 21415 1705644 -team-oh 20347 1653708 -Zirie 20204 1493227 -nabildanial 19538 1586321 -nesoneg 19306 1493435 -cuistot 19105 1387031 -Patrick_G 19027 1406466 -mhoram 18304 1396701 -rkl 17566 1409460 -ville 17541 1540130 -oryx 17480 1578240 -rstoesser 17264 1335177 -xor12 16786 1492708 -jundery 16786 1115855 -bigpen0r 16700 1287118 -iisiraider 16366 1089410 -davar 16266 1328093 -vdv 16072 1629971 -VoyagerOne 16049 1485459 -Bobo1239 15837 1550883 -DragonLord 15791 1251348 -purplefishies 15602 1106850 -Isidor 14598 1317485 -speedycpu 14215 874201 -OssumOpossum 14078 1029265 -enedene 13378 935618 -bpfliegel 12944 886523 -AdrianSA 12921 924980 -JanErik 12782 1106788 -dju 12600 901552 -jpulman 12015 854815 -ttruscott 11929 976348 -fatmurphy 11726 901134 -ElbertoOne 11641 1082697 -j3corre 11638 973654 -chris 11450 1228430 -pb00067 11248 1021031 -modolief 11185 926456 -Dark_wizzie 10933 1017910 -SC 10637 925516 -Thomas A. 10485 736094 -mschmidt 10354 818594 -infinity 10020 746397 +Username CPU Hours Games played +mibere 518300 41835669 +crunchy 375564 29121434 +cw 371664 28748719 +fastgm 299773 20765374 +JojoM 220590 15299913 +glinscott 204517 13932027 +bking_US 187568 12233168 +ctoks 169342 13475495 +spams 149531 10940322 +Thanar 137015 11714855 +velislav 127305 10047749 +vdbergh 121741 9056874 +malala 117291 8126488 +vdv 117218 8289983 +leszek 114825 8331897 +dsmith 114010 7622414 +CSU_Dynasty 113516 9582758 +sqrt2 112407 8782694 +marrco 111143 8222921 +drabel 108168 9061580 +BrunoBanani 104938 7448565 +Data 94621 8433010 +CoffeeOne 90394 3964243 +BRAVONE 80811 5341681 +psk 77195 6156031 +brabos 70284 5685893 +Fisherman 66650 5572406 +nssy 64587 5369140 +Pking_cda 64499 5704075 +sterni1971 63488 5070004 +mgrabiak 62385 5420812 +tvijlbrief 58957 4154234 +jromang 58854 4704502 +dv8silencer 57421 3961325 +sunu 56620 4609155 +tinker 56039 4204914 +biffhero 55743 4810039 +teddybaer 52982 4740444 +bcross 50548 5071599 +renouve 50318 3544864 +Freja 50296 3805120 +robnjr 47504 4131742 +eva42 46542 4044694 +davar 46538 4030604 +finfish 46244 3481661 +rap 46201 3219490 +ttruscott 45037 3645430 +solarlight 44155 4074841 +TueRens 41372 3891510 +ElbertoOne 41321 3920894 +Antihistamine 39218 2792761 +mhunt 38991 2697512 +bigpen0r 37820 3149955 +homyur 35569 3009637 +VoyagerOne 35137 3302650 +mhoram 34770 2684128 +racerschmacer 33022 3231055 +speedycpu 32043 2531964 +EthanOConnor 31638 2143255 +oryx 29574 2767730 +Pyafue 28885 1986098 +jkiiski 28014 1923255 +Garf 27579 2770144 +slakovv 27017 2031279 +Bobo1239 27000 2488707 +pb00067 26817 2306694 +robal 26337 2316795 +hyperbolic.tom 26248 2200777 +rkl 24898 2236013 +SC 23988 2126825 +nabildanial 23524 1586321 +achambord 23495 1942546 +Sharaf_DG 22975 1790697 +chriswk 22876 1947731 +anst 22568 2013953 +Patrick_G 22435 1682293 +cuistot 22201 1383031 +gri 21901 1820968 +Prcuvu 21182 1890546 +Zirie 21171 1493227 +JanErik 20596 1791991 +Isidor 20560 1730290 +xor12 20535 1819280 +team-oh 20364 1653708 +nesoneg 20264 1493435 +rstoesser 19802 1335177 +grandphish2 19402 1834196 +sg4032 18427 1671742 +dew 18263 1423326 +ianh2105 18133 1668562 +MazeOfGalious 18022 1644593 +ville 17900 1539130 +j3corre 17607 975954 +eudhan 17502 1424648 +iisiraider 17175 1118788 +jundery 17172 1115855 +SFTUser 16635 1363975 +purplefishies 16621 1106850 +DragonLord 16599 1252348 +chris 15274 1575333 +xoto 14900 1486261 +dju 14861 901552 +dex 14647 1228763 +nordlandia 14551 1369718 +ronaldjerum 14361 1210607 +OssumOpossum 14149 1029265 +IgorLeMasson 13844 1228391 +enedene 13762 935618 +ako027ako 13442 1250249 +AdrianSA 13324 924980 +bpfliegel 13318 886523 +ncfish1 13056 932344 +wei 12863 1369596 +jpulman 12776 854815 +horst.prack 12436 1151505 +joster 12424 986622 +cisco2015 12265 1205019 +fatmurphy 12015 901134 +modolief 11228 926456 +Dark_wizzie 11214 1017910 +mschmidt 10973 818594 +eastorwest 10970 1117836 +infinity 10762 746397 +SapphireBrand 10692 1024604 +Thomas A. 10553 736094 +pgontarz 10294 878746 +Andrew Grant 10195 922933 +stocky 10083 718114 diff --git a/Engines/Linux64/mcbrain/appveyor.yml b/Engines/Linux64/mcbrain/appveyor.yml index a46a0f3..c711dd6 100644 --- a/Engines/Linux64/mcbrain/appveyor.yml +++ b/Engines/Linux64/mcbrain/appveyor.yml @@ -1,5 +1,5 @@ version: 1.0.{build} -clone_depth: 5 +clone_depth: 50 branches: only: @@ -13,10 +13,11 @@ os: Visual Studio 2015 platform: - x86 - x64 - - Any CPU # build Configuration, i.e. Debug, Release, etc. -configuration: Debug +configuration: + - Debug + - Release matrix: # The build fail immediately once one of the job fails @@ -28,18 +29,43 @@ init: - msbuild /version before_build: - - cd src - - echo project (Stockfish) >> CMakeLists.txt - - echo add_executable(stockfish benchmark.cpp bitbase.cpp bitboard.cpp endgame.cpp evaluate.cpp >> CMakeLists.txt - - echo main.cpp material.cpp misc.cpp movegen.cpp movepick.cpp pawns.cpp position.cpp psqt.cpp >> CMakeLists.txt - - echo search.cpp thread.cpp timeman.cpp tt.cpp uci.cpp ucioption.cpp syzygy/tbprobe.cpp) >> CMakeLists.txt - - echo set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/src) >> CMakeLists.txt -# - echo target_compile_options(stockfish PUBLIC "/Ox") >> CMakeLists.txt + - ps: | + # Get sources + $src = get-childitem -Path *.cpp -Recurse | select -ExpandProperty FullName + $src = $src -join ' ' + $src = $src.Replace("\", "/") + + # Build CMakeLists.txt + $t = 'cmake_minimum_required(VERSION 3.8)', + 'project(Stockfish)', + 'set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/src)', + 'set(source_files', $src, ')', + 'add_executable(stockfish ${source_files})' + + # Write CMakeLists.txt withouth BOM + $MyPath = (Get-Item -Path "." -Verbose).FullName + '\CMakeLists.txt' + $Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $False + [System.IO.File]::WriteAllLines($MyPath, $t, $Utf8NoBomEncoding) + + # Obtain bench reference from git log + $b = git log HEAD | sls "\b[Bb]ench[ :]+[0-9]{7}" | select -first 1 + $bench = $b -match '\D+(\d+)' | % { $matches[1] } + Write-Host "Reference bench:" $bench + $g = "Visual Studio 14 2015" + If (${env:PLATFORM} -eq 'x64') { $g = $g + ' Win64' } + cmake -G "${g}" . + Write-Host "Generated files for: " $g build_script: - - cmake -G "Visual Studio 14 2015 Win64" . - - cmake --build . + - cmake --build . --config %CONFIGURATION% -- /verbosity:minimal before_test: - - cd Debug - - stockfish.exe bench > null + - cd src/%CONFIGURATION% + - ps: | + # Verify bench number + ./stockfish bench 2> out.txt 1> null + $s = (gc "./out.txt" | out-string) + $r = ($s -match 'Nodes searched \D+(\d+)' | % { $matches[1] }) + Write-Host "Engine bench:" $r + Write-Host "Reference bench:" $bench + If ($r -ne $bench) { exit 1 } diff --git a/Engines/Linux64/mcbrain/src/Makefile b/Engines/Linux64/mcbrain/src/Makefile index f1d5dec..6e66fbb 100644 --- a/Engines/Linux64/mcbrain/src/Makefile +++ b/Engines/Linux64/mcbrain/src/Makefile @@ -5,7 +5,7 @@ # Copyright (C) 2004-2008 Tord Romstad (Glaurung Author) # Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) # Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) -# Copyright (C) 2017 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) +# Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) # McBrain is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -30,8 +30,8 @@ ifeq ($(KERNEL),Linux) endif ### Executable name -EXE = SF-McBrain-v40 -### bench nodes -> Nodes searched : 6376731 +EXE = McBrain-9 +### bench nodes -> Nodes searched : 6871658 ### Installation dir definitions PREFIX = /usr/local @@ -156,7 +156,7 @@ endif ifeq ($(COMP),gcc) comp=gcc CXX=g++ - CXXFLAGS += -pedantic -Wextra -Wshadow -static-libstdc++ + CXXFLAGS += -pedantic -Wextra -Wshadow ifeq ($(ARCH),armv7) ifeq ($(OS),Android) @@ -280,9 +280,7 @@ endif ### 3.3 Optimization ifeq ($(optimize),yes) -CXXFLAGS += -O1 -O3 -msse4.2 -mpopcnt -mtune=native -####-Os -O1 -mtune=native -#### for those on macOS High Sierra 10.13 and higher use, "-Os -O1 -mtune=native" for PGO using gcc7 + CXXFLAGS += -O3 -mtune=native ifeq ($(comp),gcc) @@ -308,8 +306,6 @@ CXXFLAGS += -O1 -O3 -msse4.2 -mpopcnt -mtune=native ifeq ($(comp),clang) ifeq ($(KERNEL),Darwin) - CXXFLAGS += -flto - LDFLAGS += $(CXXFLAGS) ifeq ($(arch),i386) CXXFLAGS += -mdynamic-no-pic endif @@ -355,24 +351,20 @@ endif ### 3.8 Link Time Optimization, it works since gcc 4.5 but not on mingw under Windows. ### This is a mix of compile and link time options because the lto link phase ### needs access to the optimization flags. -ifeq ($(comp),gcc) - ifeq ($(optimize),yes) - ifeq ($(debug),no) +ifeq ($(optimize),yes) +ifeq ($(debug), no) + ifeq ($(comp),$(filter $(comp),gcc clang)) CXXFLAGS += -flto LDFLAGS += $(CXXFLAGS) endif - endif -endif -ifeq ($(comp),mingw) + ifeq ($(comp),mingw) ifeq ($(KERNEL),Linux) - ifeq ($(optimize),yes) - ifeq ($(debug),no) CXXFLAGS += -flto LDFLAGS += $(CXXFLAGS) endif endif - endif +endif endif ### 3.9 Android 5 can only run position independent executables. Note that this @@ -440,7 +432,6 @@ help: build: config-sanity $(MAKE) ARCH=$(ARCH) COMP=$(COMP) all strip $(EXE) - cp $(EXE) /Users/michaelbyrne/cluster.mfb/$(EXE) profile-build: config-sanity objclean profileclean @echo "" @@ -460,7 +451,12 @@ profile-build: config-sanity objclean profileclean @echo "Step 5/5. Deleting profile data ..." $(MAKE) ARCH=$(ARCH) COMP=$(COMP) profileclean strip $(EXE) - cp $(EXE) /Users/michaelbyrne/cluster.mfb/$(EXE) + +cprom: + make -j profile-build ARCH=x86-64-modern COMP=clang + +cprob: + make -j profile-build ARCH=x86-64-bmi2 COMP=clang strip: strip $(EXE) diff --git a/Engines/Linux64/mcbrain/src/benchmark.cpp b/Engines/Linux64/mcbrain/src/benchmark.cpp index f5499ef..807f9de 100644 --- a/Engines/Linux64/mcbrain/src/benchmark.cpp +++ b/Engines/Linux64/mcbrain/src/benchmark.cpp @@ -3,7 +3,7 @@ Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) - Copyright (C) 2017 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) McBrain is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/Engines/Linux64/mcbrain/src/bitbase.cpp b/Engines/Linux64/mcbrain/src/bitbase.cpp index ae5c879..a651e27 100644 --- a/Engines/Linux64/mcbrain/src/bitbase.cpp +++ b/Engines/Linux64/mcbrain/src/bitbase.cpp @@ -3,7 +3,7 @@ Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) - Copyright (C) 2017 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) McBrain is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/Engines/Linux64/mcbrain/src/bitboard.cpp b/Engines/Linux64/mcbrain/src/bitboard.cpp index d84d447..9dd637b 100644 --- a/Engines/Linux64/mcbrain/src/bitboard.cpp +++ b/Engines/Linux64/mcbrain/src/bitboard.cpp @@ -3,7 +3,7 @@ Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) - Copyright (C) 2017 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) McBrain is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/Engines/Linux64/mcbrain/src/bitboard.h b/Engines/Linux64/mcbrain/src/bitboard.h index 598bbbc..c964d1e 100644 --- a/Engines/Linux64/mcbrain/src/bitboard.h +++ b/Engines/Linux64/mcbrain/src/bitboard.h @@ -3,7 +3,7 @@ Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) - Copyright (C) 2017 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) McBrain is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/Engines/Linux64/mcbrain/src/endgame.cpp b/Engines/Linux64/mcbrain/src/endgame.cpp index 2bf6501..3d568f5 100644 --- a/Engines/Linux64/mcbrain/src/endgame.cpp +++ b/Engines/Linux64/mcbrain/src/endgame.cpp @@ -3,7 +3,7 @@ Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) - Copyright (C) 2017 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) McBrain is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/Engines/Linux64/mcbrain/src/endgame.h b/Engines/Linux64/mcbrain/src/endgame.h index 3bc3a02..3bace6f 100644 --- a/Engines/Linux64/mcbrain/src/endgame.h +++ b/Engines/Linux64/mcbrain/src/endgame.h @@ -3,7 +3,7 @@ Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) - Copyright (C) 2017 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) McBrain is free software: you can redistribute it and/or modify diff --git a/Engines/Linux64/mcbrain/src/evaluate.cpp b/Engines/Linux64/mcbrain/src/evaluate.cpp index a7d304a..e420d3d 100644 --- a/Engines/Linux64/mcbrain/src/evaluate.cpp +++ b/Engines/Linux64/mcbrain/src/evaluate.cpp @@ -3,7 +3,7 @@ Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) - Copyright (C) 2017 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) McBrain is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -98,6 +98,7 @@ namespace { template void initialize(); template Score evaluate_king(); template Score evaluate_threats(); + int king_distance(Color c, Square s); template Score evaluate_passed_pawns(); template Score evaluate_space(); template Score evaluate_pieces(); @@ -112,7 +113,8 @@ namespace { Score mobility[COLOR_NB] = { SCORE_ZERO, SCORE_ZERO }; // attackedBy[color][piece type] is a bitboard representing all squares - // attacked by a given color and piece type (can be also ALL_PIECES). + // attacked by a given color and piece type. Special "piece types" which are + // also calculated are QUEEN_DIAGONAL and ALL_PIECES. Bitboard attackedBy[COLOR_NB][PIECE_TYPE_NB]; // attackedBy2[color] are the squares attacked by 2 pieces of a given color, @@ -184,23 +186,23 @@ namespace { // which piece type attacks which one. Attacks on lesser pieces which are // pawn-defended are not considered. const Score ThreatByMinor[PIECE_TYPE_NB] = { - S(0, 0), S(0, 33), S(45, 43), S(46, 47), S(72, 107), S(48, 118) - }; + S(0, 0), S(0, 31), S(39, 42), S(57, 44), S(68, 112), S(47, 120) + }; //Fauzi Akram const Score ThreatByRook[PIECE_TYPE_NB] = { - S(0, 0), S(0, 25), S(40, 62), S(40, 59), S(0, 34), S(35, 48) - }; + S(0, 0), S(0, 24), S(38, 71), S(38, 61), S(0, 38), S(36, 38) + }; //Fauzi Akram // ThreatByKing[on one/on many] contains bonuses for king attacks on // pawns or pieces which are not pawn-defended. - const Score ThreatByKing[] = { S(3, 62), S(9, 138) }; + const Score ThreatByKing[] = { S(3, 65), S(9, 145) }; //Fauzi Akram // Passed[mg/eg][Rank] contains midgame and endgame bonuses for passed pawns. // We don't use a Score because we process the two components independently. const Value Passed[][RANK_NB] = { - { V(5), V( 5), V(31), V(73), V(166), V(252) }, - { V(7), V(14), V(38), V(73), V(166), V(252) } - }; + { V(0), V(5), V( 5), V(32), V(70), V(172), V(217) }, + { V(0), V(7), V(13), V(42), V(70), V(170), V(269) } + }; //Fauzi Akram // PassedFile[File] contains a bonus according to the file of a passed pawn const Score PassedFile[FILE_NB] = { @@ -208,6 +210,9 @@ namespace { S(-20,-12), S( 1, -8), S( 2, 10), S( 9, 10) }; + // Rank factor applied on some bonus for passed pawn on rank 4 or beyond + const int RankFactor[RANK_NB] = {0, 0, 0, 2, 7, 12, 19}; //Fauzi Akram + // KingProtector[PieceType-2] contains a bonus according to distance from king const Score KingProtector[] = { S(-3, -5), S(-4, -3), S(-3, 0), S(-1, 1) }; @@ -218,17 +223,15 @@ namespace { const Score RookOnPawn = S( 8, 24); const Score TrappedRook = S( 92, 0); const Score WeakQueen = S( 50, 10); - const Score OtherCheck = S( 10, 10); const Score CloseEnemies = S( 7, 0); const Score PawnlessFlank = S( 20, 80); - const Score ThreatByHangingPawn = S( 71, 61); - const Score ThreatBySafePawn = S(192,175); + const Score ThreatBySafePawn = S(175,168); //Fauzi Akram const Score ThreatByRank = S( 16, 3); - const Score Hanging = S( 48, 27); + const Score Hanging = S( 52, 30); //Fauzi Akram const Score WeakUnopposedPawn = S( 5, 25); - const Score ThreatByPawnPush = S( 38, 22); - const Score ThreatByAttackOnQueen = S( 38, 22); - const Score HinderPassedPawn = S( 7, 0); + const Score ThreatByPawnPush = S( 47, 26); //Fauzi Akram + const Score ThreatByAttackOnQueen = S( 42, 21); //Fauzi Akram + const Score HinderPassedPawn = S( 8, 1); //Fauzi Akram const Score TrappedBishopA1H1 = S( 50, 50); #undef S @@ -238,10 +241,10 @@ namespace { const int KingAttackWeights[PIECE_TYPE_NB] = { 0, 0, 78, 56, 45, 11 }; // Penalties for enemy's safe checks - const int QueenCheck = 780; - const int RookCheck = 880; - const int BishopCheck = 435; - const int KnightCheck = 790; + const int QueenSafeCheck = 780; + const int RookSafeCheck = 880; + const int BishopSafeCheck = 435; + const int KnightSafeCheck = 790; // Threshold for lazy and space evaluation const Value LazyThreshold = Value(1500); @@ -312,8 +315,8 @@ namespace { while ((s = *pl++) != SQ_NONE) { // Find attacked squares, including x-ray attacks for bishops and rooks - b = Pt == BISHOP ? attacks_bb(s, pos.pieces() ^ pos.pieces(Us, QUEEN)) - : Pt == ROOK ? attacks_bb< ROOK>(s, pos.pieces() ^ pos.pieces(Us, ROOK, QUEEN)) + b = Pt == BISHOP ? attacks_bb(s, pos.pieces() ^ pos.pieces(QUEEN)) + : Pt == ROOK ? attacks_bb< ROOK>(s, pos.pieces() ^ pos.pieces(QUEEN) ^ pos.pieces(Us, ROOK)) : pos.attacks_from(s); if (pos.pinned_pieces(Us) & s) @@ -428,17 +431,29 @@ namespace { Score Evaluation::evaluate_king() { const Color Them = (Us == WHITE ? BLACK : WHITE); - const Direction Up = (Us == WHITE ? NORTH : SOUTH); const Bitboard Camp = (Us == WHITE ? AllSquares ^ Rank6BB ^ Rank7BB ^ Rank8BB : AllSquares ^ Rank1BB ^ Rank2BB ^ Rank3BB); const Square ksq = pos.square(Us); - Bitboard weak, b, b1, b2, safe, other; - int kingDanger; + Bitboard weak, b, b1, b2, safe, unsafeChecks; // King shelter and enemy pawns storm Score score = pe->king_safety(pos, ksq); + // King tropism: firstly, find squares that opponent attacks in our king flank + File kf = file_of(ksq); + b = attackedBy[Them][ALL_PIECES] & KingFlank[kf] & Camp; + + assert(((Us == WHITE ? b << 4 : b >> 4) & b) == 0); + assert(popcount(Us == WHITE ? b << 4 : b >> 4) == popcount(b)); + + // Secondly, add the squares which are attacked twice in that flank and + // which are not defended by our pawns. + b = (Us == WHITE ? b << 4 : b >> 4) + | (b & attackedBy2[Them] & ~attackedBy[Us][PAWN]); + + int tropism = popcount(b); + // Main king safety evaluation if (kingAttackersCount[Them] > (1 - pos.count(Them))) { @@ -447,18 +462,7 @@ namespace { & ~attackedBy2[Us] & (attackedBy[Us][KING] | attackedBy[Us][QUEEN] | ~attackedBy[Us][ALL_PIECES]); - // Initialize the 'kingDanger' variable, which will be transformed - // later into a king danger score. The initial value is based on the - // number and types of the enemy's attacking pieces, the number of - // attacked and weak squares around our king, the absence of queen and - // the quality of the pawn shelter (current 'score' value). - kingDanger = kingAttackersCount[Them] * kingAttackersWeight[Them] - + 102 * kingAdjacentZoneAttacksCount[Them] - + 191 * popcount(kingRing[Us] & weak) - + 143 * bool(pos.pinned_pieces(Us)) - - 848 * !pos.count(Them) - - 9 * mg_value(score) / 8 - + 40; + int kingDanger = unsafeChecks = 0; // Analyse the safe enemy's checks which are possible on next move safe = ~pos.pieces(Them); @@ -469,54 +473,52 @@ namespace { // Enemy queen safe checks if ((b1 | b2) & attackedBy[Them][QUEEN] & safe & ~attackedBy[Us][QUEEN]) - kingDanger += QueenCheck; - - // Some other potential checks are also analysed, even from squares - // currently occupied by the opponent own pieces, as long as the square - // is not attacked by our pawns, and is not occupied by a blocked pawn. - other = ~( attackedBy[Us][PAWN] - | (pos.pieces(Them, PAWN) & shift(pos.pieces(PAWN)))); - - // Enemy rooks safe and other checks - if (b1 & attackedBy[Them][ROOK] & safe) - kingDanger += RookCheck; + kingDanger += QueenSafeCheck; - else if (b1 & attackedBy[Them][ROOK] & other) - score -= OtherCheck; + b1 &= attackedBy[Them][ROOK]; + b2 &= attackedBy[Them][BISHOP]; - // Enemy bishops safe and other checks - if (b2 & attackedBy[Them][BISHOP] & safe) - kingDanger += BishopCheck; + // Enemy rooks checks + if (b1 & safe) + kingDanger += RookSafeCheck; + else + unsafeChecks |= b1; - else if (b2 & attackedBy[Them][BISHOP] & other) - score -= OtherCheck; + // Enemy bishops checks + if (b2 & safe) + kingDanger += BishopSafeCheck; + else + unsafeChecks |= b2; - // Enemy knights safe and other checks + // Enemy knights checks b = pos.attacks_from(ksq) & attackedBy[Them][KNIGHT]; if (b & safe) - kingDanger += KnightCheck; - - else if (b & other) - score -= OtherCheck; - - // Transform the kingDanger units into a Score, and substract it from the evaluation + kingDanger += KnightSafeCheck; + else + unsafeChecks |= b; + + // Unsafe or occupied checking squares will also be considered, as long as + // the square is in the attacker's mobility area. + unsafeChecks &= mobilityArea[Them]; + + kingDanger += kingAttackersCount[Them] * kingAttackersWeight[Them] + + 102 * kingAdjacentZoneAttacksCount[Them] + + 191 * popcount(kingRing[Us] & weak) + + 143 * popcount(pos.pinned_pieces(Us) | unsafeChecks) + - 848 * !pos.count(Them) + - 9 * mg_value(score) / 8 + + 4 * tropism; + + // Transform the kingDanger units into a Score, and subtract it from the evaluation if (kingDanger > 0) + { + int mobilityDanger = (mg_value(mobility[Them] - mobility[Us])) * 2; + kingDanger = std::max(0, kingDanger + mobilityDanger); score -= make_score(kingDanger * kingDanger / 4096, kingDanger / 16); + } } - // King tropism: firstly, find squares that opponent attacks in our king flank - File kf = file_of(ksq); - b = attackedBy[Them][ALL_PIECES] & KingFlank[kf] & Camp; - - assert(((Us == WHITE ? b << 4 : b >> 4) & b) == 0); - assert(popcount(Us == WHITE ? b << 4 : b >> 4) == popcount(b)); - - // Secondly, add the squares which are attacked twice in that flank and - // which are not defended by our pawns. - b = (Us == WHITE ? b << 4 : b >> 4) - | (b & attackedBy2[Them] & ~attackedBy[Us][PAWN]); - - score -= CloseEnemies * popcount(b); + score -= CloseEnemies * tropism; // Penalty when our king is on a pawnless flank if (!(pos.pieces(PAWN) & KingFlank[kf])) @@ -555,9 +557,6 @@ namespace { safeThreats = (shift(b) | shift(b)) & weak; score += ThreatBySafePawn * popcount(safeThreats); - - if (weak ^ safeThreats) - score += ThreatByHangingPawn; } // Squares strongly protected by the opponent, either because they attack the @@ -634,6 +633,11 @@ namespace { return score; } + // helper used by evaluate_passed_pawns to cap the distance + template + int Evaluation::king_distance(Color c, Square s) { + return std::min(distance(pos.square(c), s), 5); + } // evaluate_passed_pawns() evaluates the passed pawns and candidate passed // pawns of the given color. @@ -658,8 +662,8 @@ namespace { bb = forward_file_bb(Us, s) & (attackedBy[Them][ALL_PIECES] | pos.pieces(Them)); score -= HinderPassedPawn * popcount(bb); - int r = relative_rank(Us, s) - RANK_2; - int rr = r * (r - 1); + int r = relative_rank(Us, s); + int rr = RankFactor[r]; Value mbonus = Passed[MG][r], ebonus = Passed[EG][r]; @@ -668,12 +672,11 @@ namespace { Square blockSq = s + Up; // Adjust bonus based on the king's proximity - ebonus += distance(pos.square(Them), blockSq) * 5 * rr - - distance(pos.square( Us), blockSq) * 2 * rr; + ebonus += (king_distance(Them, blockSq) * 5 - king_distance(Us, blockSq) * 2) * rr; // If blockSq is not the queening square then consider also a second push - if (relative_rank(Us, blockSq) != RANK_8) - ebonus -= distance(pos.square(Us), blockSq + Up) * rr; + if (r != RANK_7) + ebonus -= king_distance(Us, blockSq + Up) * rr; // If the pawn is free to advance, then increase the bonus if (pos.empty(blockSq)) @@ -693,7 +696,7 @@ namespace { // If there aren't any enemy attacks, assign a big bonus. Otherwise // assign a smaller bonus if the block square isn't attacked. - int k = !unsafeSquares ? 18 : !(unsafeSquares & blockSq) ? 8 : 0; + int k = !unsafeSquares ? 20 : !(unsafeSquares & blockSq) ? 9 : 0; //Fauzi Akram // If the path to the queen is fully defended, assign a big bonus. // Otherwise assign a smaller bonus if the block square is defended. @@ -903,7 +906,7 @@ namespace { Trace::add(TOTAL, score); } - return (pos.side_to_move() == WHITE ? v : -v) + Eval::Tempo; // Side to move point of view + return pos.side_to_move() == WHITE ? v : -v; // Side to move point of view } } // namespace @@ -915,7 +918,7 @@ Score Eval::Contempt = SCORE_ZERO; Value Eval::evaluate(const Position& pos) { - return Evaluation<>(pos).value(); + return Evaluation<>(pos).value() + Eval::Tempo; } /// trace() is like evaluate(), but instead of returning a value, it returns @@ -926,7 +929,7 @@ std::string Eval::trace(const Position& pos) { std::memset(scores, 0, sizeof(scores)); - Value v = Evaluation(pos).value(); + Value v = Evaluation(pos).value() + Eval::Tempo; v = pos.side_to_move() == WHITE ? v : -v; // White's point of view std::stringstream ss; diff --git a/Engines/Linux64/mcbrain/src/evaluate.h b/Engines/Linux64/mcbrain/src/evaluate.h index 3772c3f..8d388fa 100644 --- a/Engines/Linux64/mcbrain/src/evaluate.h +++ b/Engines/Linux64/mcbrain/src/evaluate.h @@ -30,7 +30,7 @@ class Position; namespace Eval { -const Value Tempo = Value(24); // Must be visible to search +const Value Tempo = Value(20); // Must be visible to search extern Score Contempt; diff --git a/Engines/Linux64/mcbrain/src/main.cpp b/Engines/Linux64/mcbrain/src/main.cpp index a7beca8..637dc3b 100644 --- a/Engines/Linux64/mcbrain/src/main.cpp +++ b/Engines/Linux64/mcbrain/src/main.cpp @@ -3,7 +3,7 @@ Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) - Copyright (C) 2017 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) McBrain is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -48,11 +48,11 @@ int main(int argc, char* argv[]) { polybook.init(Options["BookFile"]); Tablebases::init(Options["SyzygyPath"]); TT.resize(Options["Hash"]); - Threads.init(Options["Threads"]); + Threads.set(Options["Threads"]); Search::clear(); // After threads are up UCI::loop(argc, argv); - Threads.exit(); + Threads.set(0); return 0; } diff --git a/Engines/Linux64/mcbrain/src/material.cpp b/Engines/Linux64/mcbrain/src/material.cpp index a58d52f..2b28837 100644 --- a/Engines/Linux64/mcbrain/src/material.cpp +++ b/Engines/Linux64/mcbrain/src/material.cpp @@ -3,7 +3,7 @@ Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) - Copyright (C) 2017 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) McBrain is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -40,7 +40,7 @@ namespace { { 32, 255, -3 }, // Knight OUR PIECES { 0, 104, 4, 0 }, // Bishop { -26, -2, 47, 105, -149 }, // Rook - {-185, 24, 122, 137, -134, 0 } // Queen + {-189, 24, 117, 133, -134, -10 } // Queen }; const int QuadraticTheirs[][PIECE_TYPE_NB] = { @@ -51,18 +51,7 @@ namespace { { 9, 63, 0 }, // Knight OUR PIECES { 59, 65, 42, 0 }, // Bishop { 46, 39, 24, -24, 0 }, // Rook - { 101, 100, -37, 141, 268, 0 } // Queen - }; - - // PawnSet[pawn count] contains a bonus/malus indexed by number of pawns - const int PawnSet[] = { - 24, -32, 107, -51, 117, -9, -126, -21, 31 - }; - - // QueenMinorsImbalance[opp_minor_count] is applied when only one side has a queen. - // It contains a bonus/malus for the side with the queen. - const int QueenMinorsImbalance[13] = { - 31, -8, -15, -25, -5 + { 97, 100, -42, 137, 268, 0 } // Queen }; // Endgame evaluation and scaling functions are accessed directly and not through @@ -101,7 +90,7 @@ namespace { const Color Them = (Us == WHITE ? BLACK : WHITE); - int bonus = PawnSet[pieceCount[Us][PAWN]]; + int bonus = 0; // Second-degree polynomial material imbalance, by Tord Romstad for (int pt1 = NO_PIECE_TYPE; pt1 <= QUEEN; ++pt1) @@ -118,10 +107,6 @@ namespace { bonus += pieceCount[Us][pt1] * v; } - // Special handling of Queen vs. Minors - if (pieceCount[Us][QUEEN] == 1 && pieceCount[Them][QUEEN] == 0) - bonus += QueenMinorsImbalance[pieceCount[Them][KNIGHT] + pieceCount[Them][BISHOP]]; - return bonus; } diff --git a/Engines/Linux64/mcbrain/src/material.h b/Engines/Linux64/mcbrain/src/material.h index b412bb1..95d6c84 100644 --- a/Engines/Linux64/mcbrain/src/material.h +++ b/Engines/Linux64/mcbrain/src/material.h @@ -3,7 +3,7 @@ Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) - Copyright (C) 2017 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) McBrain is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/Engines/Linux64/mcbrain/src/misc.cpp b/Engines/Linux64/mcbrain/src/misc.cpp index 2d48cb0..a14d9c4 100644 --- a/Engines/Linux64/mcbrain/src/misc.cpp +++ b/Engines/Linux64/mcbrain/src/misc.cpp @@ -3,7 +3,7 @@ Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) - Copyright (C) 2017 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) McBrain is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -52,7 +52,7 @@ namespace { /// Version number. If Version is left empty, then compile date in the format /// DD-MM-YY and show in engine_info. -const string Version = "v4.0"; +const string Version = "9"; /// Our fancy logging facility. The trick here is to replace cin.rdbuf() and /// cout.rdbuf() with two Tie objects that tie cin and cout to a file stream. We @@ -123,7 +123,7 @@ const string engine_info(bool to_uci) { string month, day, year; stringstream ss, date(__DATE__); // From compiler, format is "Sep 21 2008" - ss << "SF-McBrain " << Version << setfill('0'); + ss << "McBrain " << Version << setfill('0'); if (Version.empty()) { @@ -134,7 +134,7 @@ const string engine_info(bool to_uci) { ss << (Is64Bit ? " 64" : "") << (HasPext ? " BMI2" : (HasPopCnt ? " POPCNT" : "")) << (to_uci ? "\nid author ": " by ") - << "M. Byrne and others (C) 2017"; + << "M. Byrne, Stockfish authors and others"; return ss.str(); } @@ -294,14 +294,6 @@ int get_group(size_t idx) { void bindThisThread(size_t idx) { - // If OS already scheduled us on a different group than 0 then don't overwrite - // the choice, eventually we are one of many one-threaded processes running on - // some Windows NUMA hardware, for instance in fishtest. To make it simple, - // just check if running threads are below a threshold, in this case all this - // NUMA machinery is not needed. - if (Threads.size() < 8) - return; - // Use only local variables to be thread-safe int group = get_group(idx); diff --git a/Engines/Linux64/mcbrain/src/misc.h b/Engines/Linux64/mcbrain/src/misc.h index f907c96..98b5202 100644 --- a/Engines/Linux64/mcbrain/src/misc.h +++ b/Engines/Linux64/mcbrain/src/misc.h @@ -3,7 +3,7 @@ Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) - Copyright (C) 2017 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) McBrain is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/Engines/Linux64/mcbrain/src/movegen.cpp b/Engines/Linux64/mcbrain/src/movegen.cpp index e75ccbb..d06bc86 100644 --- a/Engines/Linux64/mcbrain/src/movegen.cpp +++ b/Engines/Linux64/mcbrain/src/movegen.cpp @@ -3,7 +3,7 @@ Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) - Copyright (C) 2017 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) McBrain is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/Engines/Linux64/mcbrain/src/movegen.h b/Engines/Linux64/mcbrain/src/movegen.h index 1a02a2a..666e4ef 100644 --- a/Engines/Linux64/mcbrain/src/movegen.h +++ b/Engines/Linux64/mcbrain/src/movegen.h @@ -46,7 +46,7 @@ struct ExtMove { // Inhibit unwanted implicit conversions to Move // with an ambiguity that yields to a compile error. - operator float() const; + operator float() const = delete; }; inline bool operator<(const ExtMove& f, const ExtMove& s) { diff --git a/Engines/Linux64/mcbrain/src/movepick.cpp b/Engines/Linux64/mcbrain/src/movepick.cpp index ef169ff..f62ca2b 100644 --- a/Engines/Linux64/mcbrain/src/movepick.cpp +++ b/Engines/Linux64/mcbrain/src/movepick.cpp @@ -3,7 +3,7 @@ Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) - Copyright (C) 2017 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) McBrain is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -26,12 +26,11 @@ namespace { enum Stages { - MAIN_SEARCH, CAPTURES_INIT, CAPTURE_KILLERS, GOOD_CAPTURES, KILLERS, COUNTERMOVE, QUIET_INIT, QUIET, BAD_CAPTURES, - EVASION, EVASIONS_INIT, ALL_EVASIONS, - PROBCUT, PROBCUT_INIT, PROBCUT_CAPTURES, - QSEARCH_WITH_CHECKS, QCAPTURES_1_INIT, QCAPTURES_1, QCHECKS, - QSEARCH_NO_CHECKS, QCAPTURES_2_INIT, QCAPTURES_2, - QSEARCH_RECAPTURES, QRECAPTURES + MAIN_SEARCH, CAPTURES_INIT, GOOD_CAPTURES, KILLERS, COUNTERMOVE, QUIET_INIT, QUIET, BAD_CAPTURES, + EVASION, EVASIONS_INIT, ALL_EVASIONS, + PROBCUT, PROBCUT_INIT, PROBCUT_CAPTURES, + QSEARCH, QCAPTURES_INIT, QCAPTURES, QCHECKS, + QSEARCH_RECAPTURES, QRECAPTURES }; // partial_insertion_sort() sorts moves in descending order up to and including @@ -69,10 +68,10 @@ namespace { /// MovePicker constructor for the main search MovePicker::MovePicker(const Position& p, Move ttm, Depth d, const ButterflyHistory* mh, - const CapturePieceToHistory* cph, const PieceToHistory** ch, Move cm, - Move* killers_p) : - pos(p), mainHistory(mh), captureHistory(cph), contHistory(ch), countermove(cm), - killers{killers_p[0], killers_p[1], killers_p[2], killers_p[3]}, depth(d){ + const CapturePieceToHistory* cph, const PieceToHistory** ch, Move cm, Move* killers_p) + : pos(p), mainHistory(mh), captureHistory(cph), contHistory(ch), countermove(cm), + killers{killers_p[0], killers_p[1]}, depth(d){ + assert(d > DEPTH_ZERO); stage = pos.checkers() ? EVASION : MAIN_SEARCH; @@ -82,18 +81,15 @@ MovePicker::MovePicker(const Position& p, Move ttm, Depth d, const ButterflyHist /// MovePicker constructor for quiescence search MovePicker::MovePicker(const Position& p, Move ttm, Depth d, const ButterflyHistory* mh, const CapturePieceToHistory* cph, Square s) - : pos(p), mainHistory(mh), captureHistory(cph) { + : pos(p), mainHistory(mh), captureHistory(cph), depth(d) { assert(d <= DEPTH_ZERO); if (pos.checkers()) stage = EVASION; - else if (d > DEPTH_QS_NO_CHECKS) - stage = QSEARCH_WITH_CHECKS; - else if (d > DEPTH_QS_RECAPTURES) - stage = QSEARCH_NO_CHECKS; + stage = QSEARCH; else { @@ -162,8 +158,7 @@ Move MovePicker::next_move(bool skipQuiets) { switch (stage) { - case MAIN_SEARCH: case EVASION: case QSEARCH_WITH_CHECKS: - case QSEARCH_NO_CHECKS: case PROBCUT: + case MAIN_SEARCH: case EVASION: case QSEARCH: case PROBCUT: ++stage; return ttMove; @@ -172,34 +167,16 @@ Move MovePicker::next_move(bool skipQuiets) { endMoves = generate(pos, cur); score(); ++stage; - move = killers[2]; // First capture killer move - if( move != MOVE_NONE - && move != ttMove - && pos.pseudo_legal(move) - && pos.capture_or_promotion(move)) - return move; /* fallthrough */ - - case CAPTURE_KILLERS: - ++stage; - move = killers[3]; // Second capture killer move - if( move != MOVE_NONE - && move != ttMove - && pos.pseudo_legal(move) - && pos.capture_or_promotion(move)) - return move; - /* fallthrough */ case GOOD_CAPTURES: while (cur < endMoves) { move = pick_best(cur++, endMoves); - if ( move != ttMove - && move != killers[2] - && move != killers[3]) - { - if (pos.see_ge(move, Value(-55 * (cur-1)->value / 1024))) - return move; + if (move != ttMove) + { + if (pos.see_ge(move, Value(-55 * (cur-1)->value / 1024))) + return move; // Losing capture, move it to the beginning of the array *endBadCaptures++ = move; @@ -299,21 +276,21 @@ Move MovePicker::next_move(bool skipQuiets) { } break; - case QCAPTURES_1_INIT: case QCAPTURES_2_INIT: + case QCAPTURES_INIT: cur = moves; endMoves = generate(pos, cur); score(); ++stage; /* fallthrough */ - case QCAPTURES_1: case QCAPTURES_2: + case QCAPTURES: while (cur < endMoves) { move = pick_best(cur++, endMoves); if (move != ttMove) return move; } - if (stage == QCAPTURES_2) + if (depth <= DEPTH_QS_NO_CHECKS) break; cur = moves; endMoves = generate(pos, cur); @@ -332,14 +309,13 @@ Move MovePicker::next_move(bool skipQuiets) { case QSEARCH_RECAPTURES: cur = moves; endMoves = generate(pos, cur); - score(); ++stage; /* fallthrough */ case QRECAPTURES: while (cur < endMoves) { - move = pick_best(cur++, endMoves); + move = *cur++; if (to_sq(move) == recaptureSquare) return move; } diff --git a/Engines/Linux64/mcbrain/src/movepick.h b/Engines/Linux64/mcbrain/src/movepick.h index c651aaf..26e2a14 100644 --- a/Engines/Linux64/mcbrain/src/movepick.h +++ b/Engines/Linux64/mcbrain/src/movepick.h @@ -3,7 +3,7 @@ Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) - Copyright (C) 2017 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) McBrain is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/Engines/Linux64/mcbrain/src/pawns.cpp b/Engines/Linux64/mcbrain/src/pawns.cpp index d9e789d..3e5c2ed 100644 --- a/Engines/Linux64/mcbrain/src/pawns.cpp +++ b/Engines/Linux64/mcbrain/src/pawns.cpp @@ -3,7 +3,7 @@ Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) - Copyright (C) 2017 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) McBrain is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -44,23 +44,17 @@ namespace { // Doubled pawn penalty const Score Doubled = S(18, 38); - // Lever bonus by rank - const Score Lever[RANK_NB] = { - S( 0, 0), S( 0, 0), S(0, 0), S(0, 0), - S(17, 16), S(33, 32), S(0, 0), S(0, 0) - }; - // Weakness of our pawn shelter in front of the king by [isKingFile][distance from edge][rank]. // RANK_1 = 0 is used for files where we have no pawns or our pawn is behind our king. const Value ShelterWeakness[][int(FILE_NB) / 2][RANK_NB] = { - { { V( 98), V(20), V(11), V(42), V( 83), V( 84), V(101) }, // Not On King file - { V(103), V( 8), V(33), V(86), V( 87), V(105), V(113) }, - { V(100), V( 2), V(65), V(95), V( 59), V( 89), V(115) }, - { V( 72), V( 6), V(52), V(74), V( 83), V( 84), V(112) } }, - { { V(105), V(19), V( 3), V(27), V( 85), V( 93), V( 84) }, // On King file - { V(121), V( 7), V(33), V(95), V(112), V( 86), V( 72) }, - { V(121), V(26), V(65), V(90), V( 65), V( 76), V(117) }, - { V( 79), V( 0), V(45), V(65), V( 94), V( 92), V(105) } } + { { V( 97), V(17), V( 9), V(44), V( 84), V( 87), V( 99) }, // Not On King file + { V(106), V( 6), V(33), V(86), V( 87), V(104), V(112) }, + { V(101), V( 2), V(65), V(98), V( 58), V( 89), V(115) }, + { V( 73), V( 7), V(54), V(73), V( 84), V( 83), V(111) } }, + { { V(104), V(20), V( 6), V(27), V( 86), V( 93), V( 82) }, // On King file + { V(123), V( 9), V(34), V(96), V(112), V( 88), V( 75) }, + { V(120), V(25), V(65), V(91), V( 66), V( 78), V(117) }, + { V( 81), V( 2), V(47), V(63), V( 94), V( 93), V(104) } } }; // Danger of enemy pawns moving toward our king by [type][distance from edge][rank]. @@ -185,9 +179,6 @@ namespace { if (doubled && !supported) score -= Doubled; - - if (lever) - score += Lever[relative_rank(Us, s)]; } return score; diff --git a/Engines/Linux64/mcbrain/src/pawns.h b/Engines/Linux64/mcbrain/src/pawns.h index 586a056..e834e18 100644 --- a/Engines/Linux64/mcbrain/src/pawns.h +++ b/Engines/Linux64/mcbrain/src/pawns.h @@ -3,7 +3,7 @@ Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) - Copyright (C) 2017 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + Copyright (C) 2017-218 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) McBrain is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/Engines/Linux64/mcbrain/src/polybook.cpp b/Engines/Linux64/mcbrain/src/polybook.cpp index aebc91b..9aaacb4 100644 --- a/Engines/Linux64/mcbrain/src/polybook.cpp +++ b/Engines/Linux64/mcbrain/src/polybook.cpp @@ -1,3 +1,24 @@ +/* + McBrain, a UCI chess playing engine derived from Stockfish and Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) + Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + + McBrain is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + McBrain is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ +// polybook.cpp was written by Thomas Ziproth /* BrainFish, a UCI chess playing engine derived from Stockfish Copyright (C) 2016-2017 Thomas Zipproth diff --git a/Engines/Linux64/mcbrain/src/polybook.h b/Engines/Linux64/mcbrain/src/polybook.h index 2e79b60..8696eda 100644 --- a/Engines/Linux64/mcbrain/src/polybook.h +++ b/Engines/Linux64/mcbrain/src/polybook.h @@ -1,6 +1,28 @@ /* + McBrain, a UCI chess playing engine derived from Stockfish and Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) + Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + + McBrain is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + McBrain is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ +//polybook.h was wriiten by Thomas Zipproth +/* +polybook.h was written by Thomas Zipproth BrainFish, a UCI chess playing engine derived from Stockfish -Copyright (C) 2016-2017 Thomas Zipproth +Copyright (C) 2016-2018 Thomas Zipproth BrainFish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -88,4 +110,4 @@ class PolyBook extern PolyBook polybook; -#endif // #ifndef POLYBOOK_H_INCLUDED \ No newline at end of file +#endif // #ifndef POLYBOOK_H_INCLUDED diff --git a/Engines/Linux64/mcbrain/src/position.cpp b/Engines/Linux64/mcbrain/src/position.cpp index 253d4b3..acef66b 100644 --- a/Engines/Linux64/mcbrain/src/position.cpp +++ b/Engines/Linux64/mcbrain/src/position.cpp @@ -3,7 +3,7 @@ Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) - Copyright (C) 2017 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) McBrain is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/Engines/Linux64/mcbrain/src/position.h b/Engines/Linux64/mcbrain/src/position.h index 17c559e..c809549 100644 --- a/Engines/Linux64/mcbrain/src/position.h +++ b/Engines/Linux64/mcbrain/src/position.h @@ -3,7 +3,7 @@ Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) - Copyright (C) 2017 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) McBrain is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/Engines/Linux64/mcbrain/src/psqt.cpp b/Engines/Linux64/mcbrain/src/psqt.cpp index 6f7d210..55a2e72 100644 --- a/Engines/Linux64/mcbrain/src/psqt.cpp +++ b/Engines/Linux64/mcbrain/src/psqt.cpp @@ -3,7 +3,7 @@ Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) - Copyright (C) 2017 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) McBrain is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -39,13 +39,13 @@ namespace PSQT { const Score Bonus[][RANK_NB][int(FILE_NB) / 2] = { { }, { // Pawn - { S( 0, 0), S( 0, 0), S( 0, 0), S( 0, 0) }, - { S(-11, 7), S( 6,-4), S( 7, 8), S( 3,-2) }, - { S(-18,-4), S( -2,-5), S( 19, 5), S(24, 4) }, - { S(-17, 3), S( -9, 3), S( 20,-8), S(35,-3) }, - { S( -6, 7), S( 5, 8), S( 3, 7), S(21, 6) }, - { S( -6, 8), S( -8, 9), S( -6, 8), S(-2, 7) }, - { S( -4, 9), S( 20, 10), S( -8, 9), S(-4, 8) } + { S( 0, 0), S( 0, 0), S( 0, 0), S( 0, 0) }, + { S(-11, 7), S( 6,-4), S( 7, 8), S( 3,-2) }, + { S(-18,-4), S( -2,-5), S( 19, 5), S(24, 4) }, + { S(-17, 3), S( -9, 3), S( 20,-8), S(35,-3) }, + { S( -6, 8), S( 5, 9), S( 3, 7), S(21,-6) }, + { S( -6, 8), S( -8,-5), S( -6, 2), S(-2, 4) }, + { S( -4, 3), S( 20,-9), S( -8, 1), S(-4,18) } }, { // Knight { S(-161,-105), S(-96,-82), S(-80,-46), S(-73,-14) }, diff --git a/Engines/Linux64/mcbrain/src/search.cpp b/Engines/Linux64/mcbrain/src/search.cpp index 7935441..92753c0 100644 --- a/Engines/Linux64/mcbrain/src/search.cpp +++ b/Engines/Linux64/mcbrain/src/search.cpp @@ -3,7 +3,7 @@ Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) - Copyright (C) 2017 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) McBrain is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -23,16 +23,16 @@ #include #include #include // For std::memset -#include //for sleep +#include //for sleep //MichaelB7 #include #include -#include +#include // ELO MichaelB7 #include "evaluate.h" #include "misc.h" #include "movegen.h" #include "movepick.h" -#include "polybook.h" +#include "polybook.h" // Cerebellum #include "position.h" #include "search.h" #include "timeman.h" @@ -71,16 +71,16 @@ namespace { const int skipPhase[] = { 0, 1, 0, 1, 2, 3, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 7 }; // Razoring and futility margin based on depth - // razor_margin[0] is unused as long as depth >= ONE_PLY in search - const int razor_margin[] = { 0, 570, 603, 554 }; - Value futility_margin(Depth d) { return Value(150 * d / ONE_PLY); } + const int razor_margin = 600; + //Value futility_margin(Depth d) { return Value(150 * d / ONE_PLY); } + Value futility_margin(Depth d) { return Value(16 * d^2 / ONE_PLY + 200 * d / ONE_PLY);} // idea from JD Watson, code modfied by MichaelB7 // Futility and reductions lookup tables, initialized at startup int FutilityMoveCounts[2][16]; // [improving][depth] - int Reductions[2][2][128][96]; // [pv][improving][depth][moveNumber] + int Reductions[2][2][128][96]; // [pv][improving][depth][moveNumber] //MichaelB7 template Depth reduction(bool i, Depth d, int mn) { - return Reductions[PvNode][i][std::min(d / ONE_PLY, 127)][std::min(mn, 95)] * ONE_PLY; + return Reductions[PvNode][i][std::min(d / ONE_PLY, 127)][std::min(mn, 95)] * ONE_PLY; //MichaelB7 } // History and stats update bonus, based on depth @@ -102,7 +102,7 @@ namespace { int tactical; - bool bruteForce, limitStrength, noNULL; + bool bookEnabled, bruteForce, limitStrength, noNULL; template Value search(Position& pos, Stack* ss, Value alpha, Value beta, Depth depth, bool cutNode, bool skipEarlyPruning); @@ -152,10 +152,10 @@ namespace { void Search::init() { for (int imp = 0; imp <= 1; ++imp) - for (int d = 1; d < 128; ++d) - for (int mc = 1; mc < 96; ++mc) + for (int d = 1; d < 128; ++d) // MichaelB7 + for (int mc = 1; mc < 96; ++mc) // MichaelB7 { - double r = log(d) * log(mc) / 1.89; + double r = log(d) * log(mc) / 1.89 ; Reductions[NonPV][imp][d][mc] = int(std::round(r)); Reductions[PV][imp][d][mc] = std::max(Reductions[NonPV][imp][d][mc] - 1, 0); @@ -181,13 +181,7 @@ void Search::clear() { Time.availableNodes = 0; TT.clear(); - - for (Thread* th : Threads) - th->clear(); - - Threads.main()->callsCnt = 0; - Threads.main()->previousScore = VALUE_INFINITE; - Threads.main()->previousTimeReduction = 1; + Threads.clear(); } @@ -207,6 +201,7 @@ void MainThread::search() { limitStrength = Options["UCI_LimitStrength"]; noNULL = Options["No_Null_Moves"]; tactical = Options["Tactical"]; + bookEnabled = Options["Book_Enabled"]; Color us = rootPos.side_to_move(); Time.init(Limits, us, rootPos.game_ply()); @@ -214,6 +209,14 @@ void MainThread::search() { int contempt = Options["Contempt"] * PawnValueEg / 100; // From centipawns + // In analysis mode, adjust contempt in accordance with user preference + if (Limits.infinite || Options["UCI_AnalyseMode"]) + contempt = Options["Analysis Contempt"] == "Off" ? 0 + : Options["Analysis Contempt"] == "White" && us == BLACK ? -contempt + : Options["Analysis Contempt"] == "Black" && us == WHITE ? -contempt + : contempt; // contempt remains with the side to move + + // Eval::Contempt is from white's point of view Eval::Contempt = (us == WHITE ? make_score(contempt, contempt / 2) : -make_score(contempt, contempt / 2)); @@ -231,7 +234,7 @@ void MainThread::search() { if (!Limits.infinite && !Limits.mate) bookMove = polybook.probe(rootPos); - if (bookMove && std::count(rootMoves.begin(), rootMoves.end(), bookMove)) + if (bookEnabled && bookMove && std::count(rootMoves.begin(), rootMoves.end(), bookMove)) { for (Thread* th : Threads) std::swap(th->rootMoves[0], *std::find(th->rootMoves.begin(), th->rootMoves.end(), bookMove)); @@ -240,9 +243,7 @@ void MainThread::search() { { if (limitStrength) { - int uci_elo = (Options["UCI_ELO"]); - std::mt19937 gen(now()); std::uniform_int_distribution dis(-33, 33); int rand = dis(gen); @@ -346,10 +347,10 @@ void Thread::search() { mainThread->bestMoveChanges = 0; } - size_t multiPV = Options["MultiPV"]; + multiPV = Options["MultiPV"]; Skill skill(Options["Skill Level"]); if (tactical) multiPV = pow(2, tactical); - if (::pv_is_draw(rootPos)) multiPV = 8 ; + // When playing with strength handicap enable MultiPV search that we will // use behind the scenes to retrieve a set of possible moves. @@ -357,19 +358,25 @@ void Thread::search() { multiPV = std::max(multiPV, (size_t)4); multiPV = std::min(multiPV, rootMoves.size()); + + // UCI options specify 256 as the max MultiPv option + int consecutiveEarlyExits[257] = {0}; // Iterative deepening loop until requested to stop or the target depth is reached while ( (rootDepth += ONE_PLY) < DEPTH_MAX && !Threads.stop && !(Limits.depth && mainThread && rootDepth / ONE_PLY > Limits.depth)) { - // Distribute search depths across the threads - if (idx) - { - int i = (idx - 1) % 20; - if (((rootDepth / ONE_PLY + rootPos.game_ply() + skipPhase[i]) / skipSize[i]) % 2) - continue; - } + // Distribute search depths across the threads + if (idx) + { + int i = (idx - 1) % 20; + if (idx == Threads.size() - 1 && !ss->excludedMove && rootDepth < 14 * ONE_PLY && rootMoves.size() > 1 && rootPos.see_ge(rootMoves[0].pv[0], VALUE_ZERO + 1)) + ss->excludedMove = rootMoves[0].pv[0]; //lazy_or_stubborn by pb00068 + else + if (((rootDepth / ONE_PLY + rootPos.game_ply() + skipPhase[i]) / skipSize[i]) % 2) + continue; + } // Age out PV variability metric if (mainThread) @@ -409,7 +416,8 @@ void Thread::search() { // and we want to keep the same order for all the moves except the // new PV that goes to the front. Note that in case of MultiPV // search the already searched PV lines are preserved. - std::stable_sort(rootMoves.begin() + PVIdx, rootMoves.end()); + if (PVIdx + 1 == multiPV) + std::stable_sort(rootMoves.begin() + PVIdx, rootMoves.end()); // If search has been stopped, we break immediately. Sorting and // writing PV back to TT is safe because RootMoves is still @@ -438,15 +446,20 @@ void Thread::search() { Threads.stopOnPonderhit = false; } } - else if (bestValue >= beta) - beta = std::min(bestValue + delta2, VALUE_INFINITE); + + else if ( bestValue >= beta) + beta = std::min(bestValue + delta2, VALUE_INFINITE); //Ivan Ivec + else + { + delta1 += delta1 / 4 + 5; //Ivan Ivec + delta2 += delta2 / 4 + 5; //Ivan Ivec + + assert(alpha >= -VALUE_INFINITE && beta <= VALUE_INFINITE); + + consecutiveEarlyExits[PVIdx] = (bestValue >= beta) ? consecutiveEarlyExits[PVIdx] + 1 : 0; break; - - delta1 += delta1 / 4 + 5; - delta2 += delta2 / 4 + 5; - - assert(alpha >= -VALUE_INFINITE && beta <= VALUE_INFINITE); + } } // Sort the PV lines searched so far and update the GUI @@ -473,14 +486,14 @@ void Thread::search() { if (!mainThread) continue; - - if (Options["FastPlay"]) - { - if ( Time.elapsed() > Time.optimum() / 256 - && ( abs(bestValue) > 12300 || abs(bestValue) >= VALUE_MATE_IN_MAX_PLY )) - Threads.stop = true; - } - +//BEGINS MichaelB7 + if (Options["FastPlay"]) + { + if ( Time.elapsed() > Time.optimum() / 256 + && ( abs(bestValue) > 12300 || abs(bestValue) >= VALUE_MATE_IN_MAX_PLY )) + Threads.stop = true; + } +//ENDS MichaelB7 // If skill level is enabled and time is up, pick a sub-optimal best move if (skill.enabled() && skill.time_to_pick(rootDepth)) skill.pick_best(multiPV); @@ -618,7 +631,7 @@ namespace { // search to overwrite a previous full search TT value, so we use a different // position key in case of an excluded move. excludedMove = ss->excludedMove; - posKey = pos.key() ^ Key(excludedMove); + posKey = pos.key() ^ Key(excludedMove << 16); // isn't a very good hash tte = TT.probe(posKey, ttHit); ttValue = ttHit ? value_from_tt(tte->value(), ss->ply) : VALUE_NONE; ttMove = rootNode ? thisThread->rootMoves[thisThread->PVIdx].pv[0] @@ -739,18 +752,18 @@ namespace { ss->staticEval, TT.generation()); } - if (skipEarlyPruning || !pos.non_pawn_material()) + if (skipEarlyPruning || !pos.non_pawn_material(pos.side_to_move())) goto moves_loop; // Step 6. Razoring (skipped when in check) if ( !bruteForce && !PvNode && depth < 4 * ONE_PLY - && eval + razor_margin[depth / ONE_PLY] <= alpha) + && eval + razor_margin <= alpha) { if (depth <= ONE_PLY) return qsearch(pos, ss, alpha, alpha+1); - Value ralpha = alpha - razor_margin[depth / ONE_PLY]; + Value ralpha = alpha - razor_margin; Value v = qsearch(pos, ss, ralpha, ralpha+1); if (v <= ralpha) return v; @@ -760,18 +773,17 @@ namespace { if ( !bruteForce && !rootNode && depth < 7 * ONE_PLY && eval - futility_margin(depth) >= beta - && eval < VALUE_KNOWN_WIN ) // Do not return unproven wins + && eval < VALUE_KNOWN_WIN) // Do not return unproven wins return eval; // Step 8. Null move search with verification search (is omitted in PV nodes) - if ( !noNULL - && !PvNode + if ( !PvNode && eval >= beta - && (ss->staticEval >= beta - int(320 * log(depth / ONE_PLY)) + 500) - && thisThread->selDepth + 3 > thisThread->rootDepth / ONE_PLY - && (ss->ply >= thisThread->nmp_ply || ss->ply % 2 == thisThread->pair) - && !(MoveList(pos).size() < 4) - ) + && ss->staticEval >= beta - int(320 * log(depth / ONE_PLY)) + 500 //Corchess/IIvec + && (((ss-2)->currentMove != MOVE_NULL) || (ss-2)->staticEval >= beta - 36 * depth / ONE_PLY + 225) + && thisThread->selDepth + 3 > thisThread->rootDepth / ONE_PLY // idea from Corchess/IIvec + && (ss->ply >= thisThread->nmp_ply || ss->ply % 2 != thisThread->pair) + && !(MoveList(pos).size() < 4)) //MichaelB7 { assert(eval - beta >= 0); @@ -874,7 +886,7 @@ namespace { && tte->depth() >= depth - 3 * ONE_PLY; skipQuiets = false; ttCapture = false; - goodCap = false; + goodCap = false; pvExact = PvNode && ttHit && tte->bound() == BOUND_EXACT; // Step 11. Loop through moves @@ -886,12 +898,20 @@ namespace { if (move == excludedMove) continue; - // At root obey the "searchmoves" option and skip moves not listed in Root - // Move List. As a consequence any illegal move is also skipped. In MultiPV - // mode we also skip PV moves which have been already searched. - if (rootNode && !std::count(thisThread->rootMoves.begin() + thisThread->PVIdx, - thisThread->rootMoves.end(), move)) - continue; + if (rootNode) + { + // At root obey the "searchmoves" option and skip moves not listed in Root + // Move List. As a consequence any illegal move is also skipped. + if (!std::count(thisThread->rootMoves.begin() + thisThread->PVIdx, + thisThread->rootMoves.end(), move)) + continue; + + // In MultiPV mode we not only skip PV moves which have already been searched, + // but also any other move except we have reached the last PV line. + if ( thisThread->PVIdx + 1 < thisThread->multiPV + && move != ttMove) + continue; + } ss->moveCount = ++moveCount; @@ -933,31 +953,22 @@ namespace { ss->excludedMove = MOVE_NONE; if (value < rBeta) - extension = ONE_PLY; + extension = ONE_PLY; } - else if ( givesCheck - && !moveCountPruning - && (pos.see_ge(move) || PvNode )) - extension = ONE_PLY; - - else if ( PvNode - && depth < 13 * ONE_PLY - && pos.advanced_pawn_push(move) - && !moveCountPruning) - extension = ONE_PLY; + else if (!moveCountPruning) + { + if ( givesCheck + && (pos.see_ge(move) || PvNode )) + extension = ONE_PLY; + + else if ( PvNode + && depth < 13 * ONE_PLY + && ( givesCheck || pos.advanced_pawn_push(move) + || ( ss->forcingTree && (ss)->newDepth - depth > 1))) + extension = ONE_PLY; + } - else if ( PvNode - && depth < 13 * ONE_PLY - && ss->forcingTree && (ss)->newDepth - depth > 1 - && !moveCountPruning) - extension = ONE_PLY; - else if ( depth % 5 == 0 - && !pos.non_pawn_material() - && type_of(movedPiece) == KING - && !moveCountPruning) - extension = ONE_PLY; - // Calculate new depth for this move newDepth = depth - ONE_PLY + extension; @@ -989,7 +1000,7 @@ namespace { // Futility pruning: parent node if ( lmrDepth < 7 && !inCheck - && ss->staticEval + 256 + 200 * lmrDepth <= alpha) + && ss->staticEval + 256 + futility_margin(lmrDepth * ONE_PLY) <= alpha)// idea from JD Watson, modifed by MichaelB7 continue; // Prune moves with negative SEE @@ -1031,7 +1042,7 @@ namespace { if ( !bruteForce && depth >= 3 * ONE_PLY && moveCount > 1 && (!captureOrPromotion || moveCountPruning) - && (ss+2)->killers[0] != move + && (ss+2)->killers[0] != move && (ss+2)->killers[1] != move) { Depth r = reduction(improving, depth, moveCount); @@ -1041,7 +1052,7 @@ namespace { else { // Decrease reduction if opponent's move count is high - if ((ss-1)->moveCount > 15) + if ((ss-1)->moveCount > 13 ) r -= ONE_PLY; // Decrease reduction for exact PV nodes @@ -1049,7 +1060,7 @@ namespace { r -= ONE_PLY; // Increase reduction if ttMove is a capture - if (ttCapture) + if (ttCapture || (!pvExact && depth > 13 * ONE_PLY)) r += ONE_PLY; else if(goodCap && !inCheck && !givesCheck) r += ONE_PLY; @@ -1068,7 +1079,7 @@ namespace { ss->statScore = thisThread->mainHistory[~pos.side_to_move()][from_to(move)] + (*contHist[0])[movedPiece][to_sq(move)] + (*contHist[1])[movedPiece][to_sq(move)] - + (*contHist[3])[movedPiece][to_sq(move)] + + (*contHist[3])[movedPiece][to_sq(move)] - 4000; // Decrease/increase reduction by comparing opponent's stat score @@ -1388,7 +1399,6 @@ namespace { // Don't search moves with negative SEE values if ( (!InCheck || evasionPrunable) - && type_of(move) != PROMOTION && !pos.see_ge(move)) continue; @@ -1643,12 +1653,19 @@ namespace { string UCI::pv(const Position& pos, Depth depth, Value alpha, Value beta) { std::stringstream ss; + int temp = 0; int elapsed = Time.elapsed() + 1; const RootMoves& rootMoves = pos.this_thread()->rootMoves; size_t PVIdx = pos.this_thread()->PVIdx; - size_t multiPV = std::min((size_t)Options["MultiPV"], rootMoves.size()); + size_t multiPV = pos.this_thread()->multiPV; uint64_t nodesSearched = Threads.nodes_searched(); uint64_t tbHits = Threads.tb_hits() + (TB::RootInTB ? rootMoves.size() : 0); + + if (tactical) + { + temp = multiPV; + multiPV = 1; + } for (size_t i = 0; i < multiPV; ++i) { @@ -1688,11 +1705,10 @@ string UCI::pv(const Position& pos, Depth depth, Value alpha, Value beta) { for (Move m : rootMoves[i].pv) ss << " " << UCI::move(m, pos.is_chess960()); } - + if (tactical) multiPV = temp; return ss.str(); } - /// RootMove::extract_ponder_from_tt() is called in case we have no ponder move /// before exiting the search, for instance, in case we stop the search during a /// fail high at root. We try hard to have a ponder move to return to the GUI, diff --git a/Engines/Linux64/mcbrain/src/search.h b/Engines/Linux64/mcbrain/src/search.h index 90842f6..f1ac439 100644 --- a/Engines/Linux64/mcbrain/src/search.h +++ b/Engines/Linux64/mcbrain/src/search.h @@ -3,7 +3,7 @@ Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) - Copyright (C) 2017 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) McBrain is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -104,8 +104,7 @@ extern LimitsType Limits; void init(); void clear(); -Value respect(const Position& pos, Color c); - + } // namespace Search #endif // #ifndef SEARCH_H_INCLUDED diff --git a/Engines/Linux64/mcbrain/src/tbprobe.cpp b/Engines/Linux64/mcbrain/src/tbprobe.cpp index d019f28..09e031c 100644 --- a/Engines/Linux64/mcbrain/src/tbprobe.cpp +++ b/Engines/Linux64/mcbrain/src/tbprobe.cpp @@ -3,7 +3,7 @@ Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) - Copyright (C) 2017 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) McBrain is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/Engines/Linux64/mcbrain/src/tbprobe.h b/Engines/Linux64/mcbrain/src/tbprobe.h index 7c0bbe7..97ec7b1 100644 --- a/Engines/Linux64/mcbrain/src/tbprobe.h +++ b/Engines/Linux64/mcbrain/src/tbprobe.h @@ -3,7 +3,7 @@ Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) - Copyright (C) 2017 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) McBrain is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/Engines/Linux64/mcbrain/src/thread.cpp b/Engines/Linux64/mcbrain/src/thread.cpp index 616b88f..47a21c1 100644 --- a/Engines/Linux64/mcbrain/src/thread.cpp +++ b/Engines/Linux64/mcbrain/src/thread.cpp @@ -3,7 +3,7 @@ Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) - Copyright (C) 2017 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + Copyright (C) 2017*2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) McBrain is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -25,6 +25,7 @@ #include "movegen.h" #include "search.h" #include "thread.h" +#include "uci.h" #include "tbprobe.h" ThreadPool Threads; // Global object @@ -36,7 +37,6 @@ ThreadPool Threads; // Global object Thread::Thread(size_t n) : idx(n), stdThread(&Thread::idle_loop, this) { wait_for_search_finished(); - clear(); // Zero-init histories (based on std::array) } @@ -93,7 +93,13 @@ void Thread::wait_for_search_finished() { void Thread::idle_loop() { - WinProcGroup::bindThisThread(idx); + // If OS already scheduled us on a different group than 0 then don't overwrite + // the choice, eventually we are one of many one-threaded processes running on + // some Windows NUMA hardware, for instance in fishtest. To make it simple, + // just check if running threads are below a threshold, in this case all this + // NUMA machinery is not needed. + if (Options["Threads"] >= 8) + WinProcGroup::bindThisThread(idx); while (true) { @@ -111,42 +117,40 @@ void Thread::idle_loop() { } } +/// ThreadPool::set() creates/destroys threads to match the requested number. +/// Created and launced threads wil go immediately to sleep in idle_loop. +/// Upon resizing, threads are recreated to allow for binding if necessary. -/// ThreadPool::init() creates and launches the threads that will go -/// immediately to sleep in idle_loop. We cannot use the constructor because -/// Threads is a static object and we need a fully initialized engine at -/// this point due to allocation of Endgames in the Thread constructor. - -void ThreadPool::init(size_t requested) { - - push_back(new MainThread(0)); - set(requested); -} +void ThreadPool::set(size_t requested) { + if (size() > 0) { // destroy any existing thread(s) + main()->wait_for_search_finished(); -/// ThreadPool::exit() terminates threads before the program exits. Cannot be -/// done in the destructor because threads must be terminated before deleting -/// any static object, so before main() returns. + while (size() > 0) + delete back(), pop_back(); + } -void ThreadPool::exit() { + if (requested > 0) { // create new thread(s) + push_back(new MainThread(0)); - main()->wait_for_search_finished(); - set(0); + while (size() < requested) + push_back(new Thread(size())); + clear(); + } } +/// ThreadPool::clear() sets threadPool data to initial values. -/// ThreadPool::set() creates/destroys threads to match the requested number +void ThreadPool::clear() { -void ThreadPool::set(size_t requested) { + for (Thread* th : *this) + th->clear(); - while (size() < requested) - push_back(new Thread(size())); - - while (size() > requested) - delete back(), pop_back(); + main()->callsCnt = 0; + main()->previousScore = VALUE_INFINITE; + main()->previousTimeReduction = 1; } - /// ThreadPool::start_thinking() wakes up main thread waiting in idle_loop() and /// returns immediately. Main thread will wake up other threads and start the search. @@ -182,7 +186,7 @@ void ThreadPool::start_thinking(Position& pos, StateListPtr& states, // is shared by threads but is accessed in read-only mode. StateInfo tmp = setupStates->back(); - for (Thread* th : Threads) + for (Thread* th : *this) { th->nodes = th->tbHits = 0; th->rootDepth = th->completedDepth = DEPTH_ZERO; diff --git a/Engines/Linux64/mcbrain/src/thread.h b/Engines/Linux64/mcbrain/src/thread.h index 87c5029..25a6511 100644 --- a/Engines/Linux64/mcbrain/src/thread.h +++ b/Engines/Linux64/mcbrain/src/thread.h @@ -3,7 +3,7 @@ Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) - Copyright (C) 2017 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) McBrain is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -61,8 +61,8 @@ class Thread { Pawns::Table pawnsTable; Material::Table materialTable; Endgames endgames; - size_t PVIdx; - int selDepth, nmp_ply, pair; + size_t PVIdx, multiPV; + int selDepth, nmp_ply, pair; std::atomic nodes, tbHits; Position rootPos; @@ -100,11 +100,19 @@ struct ThreadPool : public std::vector { void init(size_t); // No constructor and destructor, threads rely on globals that should void exit(); // be initialized and valid during the whole thread lifetime. void start_thinking(Position&, StateListPtr&, const Search::LimitsType&, bool = false); + void clear(); void set(size_t); MainThread* main() const { return static_cast(front()); } uint64_t nodes_searched() const { return accumulate(&Thread::nodes); } uint64_t tb_hits() const { return accumulate(&Thread::tbHits); } + + Depth lowestDepth(){ + Depth lowest = DEPTH_MAX; + for (Thread* th: *this) + lowest = std::min(lowest, th->rootDepth); + return lowest; + } std::atomic_bool stop, ponder, stopOnPonderhit; diff --git a/Engines/Linux64/mcbrain/src/thread_win32.h b/Engines/Linux64/mcbrain/src/thread_win32.h index ca737e9..d69e817 100644 --- a/Engines/Linux64/mcbrain/src/thread_win32.h +++ b/Engines/Linux64/mcbrain/src/thread_win32.h @@ -3,7 +3,7 @@ Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) - Copyright (C) 2017 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) McBrain is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/Engines/Linux64/mcbrain/src/timeman.cpp b/Engines/Linux64/mcbrain/src/timeman.cpp index 579921e..6a854c9 100644 --- a/Engines/Linux64/mcbrain/src/timeman.cpp +++ b/Engines/Linux64/mcbrain/src/timeman.cpp @@ -3,7 +3,7 @@ Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) - Copyright (C) 2017 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) McBrain is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,6 +20,8 @@ */ #include +#include +#include #include "search.h" #include "timeman.h" @@ -31,46 +33,41 @@ namespace { enum TimeType { OptimumTime, MaxTime }; - int remaining(int myTime, int myInc, int moveOverhead, int movesToGo, - int moveNum, bool ponder, TimeType type) { + const int MoveHorizon = 50; // Plan time management at most this many moves ahead + const double MaxRatio = 7.09; // When in trouble, we can step over reserved time with this ratio + const double StealRatio = 0.35; // However we must not steal time from remaining moves over this ratio - if (myTime <= 0) - return 0; - double ratio; // Which ratio of myTime we are going to use + // move_importance() is a skew-logistic function based on naive statistical + // analysis of "how many games are still undecided after n half-moves". Game + // is considered "undecided" as long as neither side has >275cp advantage. + // Data was extracted from the CCRL game database with some simple filtering criteria. - // Usage of increment follows quadratic distribution with the maximum at move 25 - double inc = myInc * std::max(55.0, 120 - 0.12 * (moveNum - 25) * (moveNum - 25)); + double move_importance(int ply) { - // In moves-to-go we distribute time according to a quadratic function with - // the maximum around move 20 for 40 moves in y time case. - if (movesToGo) - { - ratio = (type == OptimumTime ? 1.0 : 6.0) / std::min(50, movesToGo); + const double XScale = 7.64; + const double XShift = 58.4; + const double Skew = 0.183; - if (moveNum <= 40) - ratio *= 1.1 - 0.001 * (moveNum - 20) * (moveNum - 20); - else - ratio *= 1.5; + return pow((1 + exp((ply - XShift) / XScale)), -Skew) + DBL_MIN; // Ensure non-zero + } + + template + int remaining(int myTime, int movesToGo, int ply, int slowMover) { - if (movesToGo > 1) - ratio = std::min(0.75, ratio); + const double TMaxRatio = (T == OptimumTime ? 1 : MaxRatio); + const double TStealRatio = (T == OptimumTime ? 0 : StealRatio); - ratio *= 1 + inc / (myTime * 8.5); - } - // Otherwise we increase usage of remaining time as the game goes on - else - { - double k = 1 + 20 * moveNum / (500.0 + moveNum); - ratio = (type == OptimumTime ? 0.017 : 0.07) * (k + inc / myTime); - } + double moveImportance = (move_importance(ply) * slowMover) / 100; + double otherMovesImportance = 0; - int time = int(std::min(1.0, ratio) * std::max(0, myTime - moveOverhead)); + for (int i = 1; i < movesToGo; ++i) + otherMovesImportance += move_importance(ply + 2 * i); - if (type == OptimumTime && ponder) - time = 5 * time / 4; + double ratio1 = (TMaxRatio * moveImportance) / (TMaxRatio * moveImportance + otherMovesImportance); + double ratio2 = (moveImportance + TStealRatio * otherMovesImportance) / (moveImportance + otherMovesImportance); - return time; + return int(myTime * std::min(ratio1, ratio2)); // Intel C++ asks for an explicit cast } } // namespace @@ -85,11 +82,12 @@ namespace { /// inc > 0 && movestogo == 0 means: x basetime + z increment /// inc > 0 && movestogo != 0 means: x moves in y minutes + z increment -void TimeManagement::init(Search::LimitsType& limits, Color us, int ply) -{ - int moveOverhead = Options["Move Overhead"]; - int npmsec = Options["nodestime"]; - bool ponder = Options["Ponder"]; +void TimeManagement::init(Search::LimitsType& limits, Color us, int ply) { + + int minThinkingTime = Options["Minimum Thinking Time"]; + int moveOverhead = Options["Move Overhead"]; + int slowMover = Options["Slow Mover"]; + int npmsec = Options["nodestime"]; // If we have to play in 'nodes as time' mode, then convert from time // to nodes, and use resulting values in time management formulas. @@ -106,11 +104,30 @@ void TimeManagement::init(Search::LimitsType& limits, Color us, int ply) limits.npmsec = npmsec; } - int moveNum = (ply + 1) / 2; - startTime = limits.startTime; - optimumTime = remaining(limits.time[us], limits.inc[us], moveOverhead, - limits.movestogo, moveNum, ponder, OptimumTime); - maximumTime = remaining(limits.time[us], limits.inc[us], moveOverhead, - limits.movestogo, moveNum, ponder, MaxTime); + optimumTime = maximumTime = std::max(limits.time[us], minThinkingTime); + + const int MaxMTG = limits.movestogo ? std::min(limits.movestogo, MoveHorizon) : MoveHorizon; + + // We calculate optimum time usage for different hypothetical "moves to go"-values + // and choose the minimum of calculated search time values. Usually the greatest + // hypMTG gives the minimum values. + for (int hypMTG = 1; hypMTG <= MaxMTG; ++hypMTG) + { + // Calculate thinking time for hypothetical "moves to go"-value + int hypMyTime = limits.time[us] + + limits.inc[us] * (hypMTG - 1) + - moveOverhead * (2 + std::min(hypMTG, 40)); + + hypMyTime = std::max(hypMyTime, 0); + + int t1 = minThinkingTime + remaining(hypMyTime, hypMTG, ply, slowMover); + int t2 = minThinkingTime + remaining(hypMyTime, hypMTG, ply, slowMover); + + optimumTime = std::min(t1, optimumTime); + maximumTime = std::min(t2, maximumTime); + } + + if (Options["Ponder"]) + optimumTime += optimumTime / 4; } diff --git a/Engines/Linux64/mcbrain/src/timeman.h b/Engines/Linux64/mcbrain/src/timeman.h index 427271a..4d3172b 100644 --- a/Engines/Linux64/mcbrain/src/timeman.h +++ b/Engines/Linux64/mcbrain/src/timeman.h @@ -3,7 +3,7 @@ Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) - Copyright (C) 2017 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) McBrain is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/Engines/Linux64/mcbrain/src/tt.cpp b/Engines/Linux64/mcbrain/src/tt.cpp index 9bb093d..1aed0f3 100644 --- a/Engines/Linux64/mcbrain/src/tt.cpp +++ b/Engines/Linux64/mcbrain/src/tt.cpp @@ -3,7 +3,7 @@ Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) - Copyright (C) 2017 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) McBrain is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -34,7 +34,7 @@ TranspositionTable TT; // Our global transposition table void TranspositionTable::resize(size_t mbSize) { - size_t newClusterCount = size_t(1) << msb((mbSize * 1024 * 1024) / sizeof(Cluster)); + size_t newClusterCount = mbSize * 1024 * 1024 / sizeof(Cluster); if (newClusterCount == clusterCount) return; @@ -42,7 +42,7 @@ void TranspositionTable::resize(size_t mbSize) { clusterCount = newClusterCount; free(mem); - mem = calloc(clusterCount * sizeof(Cluster) + CacheLineSize - 1, 1); + mem = malloc(clusterCount * sizeof(Cluster) + CacheLineSize - 1); if (!mem) { @@ -52,6 +52,7 @@ void TranspositionTable::resize(size_t mbSize) { } table = (Cluster*)((uintptr_t(mem) + CacheLineSize - 1) & ~(CacheLineSize - 1)); + clear(); } diff --git a/Engines/Linux64/mcbrain/src/tt.h b/Engines/Linux64/mcbrain/src/tt.h index 56646a6..e0dc386 100644 --- a/Engines/Linux64/mcbrain/src/tt.h +++ b/Engines/Linux64/mcbrain/src/tt.h @@ -3,7 +3,7 @@ Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) - Copyright (C) 2017 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) McBrain is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -105,9 +105,9 @@ class TranspositionTable { void resize(size_t mbSize); void clear(); - // The lowest order bits of the key are used to get the index of the cluster + // The 32 lowest order bits of the key are used to get the index of the cluster TTEntry* first_entry(const Key key) const { - return &table[(size_t)key & (clusterCount - 1)].entry[0]; + return &table[(uint32_t(key) * uint64_t(clusterCount)) >> 32].entry[0]; } private: diff --git a/Engines/Linux64/mcbrain/src/types.h b/Engines/Linux64/mcbrain/src/types.h index 77acc44..7b4318e 100644 --- a/Engines/Linux64/mcbrain/src/types.h +++ b/Engines/Linux64/mcbrain/src/types.h @@ -3,7 +3,7 @@ Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) - Copyright (C) 2017 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) McBrain is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -334,7 +334,7 @@ inline Square& operator-=(Square &s, Direction d) { return s = s - d; } /// Only declared but not defined. We don't want to multiply two scores due to /// a very high risk of overflow. So user should explicitly convert to integer. -Score operator*(Score s1, Score s2) = delete; +Score operator*(Score, Score) = delete; /// Division of a Score must be handled separately for each term inline Score operator/(Score s, int i) { diff --git a/Engines/Linux64/mcbrain/src/tzbook.cpp b/Engines/Linux64/mcbrain/src/tzbook.cpp deleted file mode 100644 index 4052256..0000000 --- a/Engines/Linux64/mcbrain/src/tzbook.cpp +++ /dev/null @@ -1,221 +0,0 @@ -#include "tzbook.h" -#include "uci.h" -#include "movegen.h" -#include "thread.h" -#include -#include "misc.h" -#include - -TZBook tzbook; // global TZBook - -using namespace std; - -int qsort_compare_int(const void* a, const void* b) -{ - const int int_a = *((const int*)a); - const int int_b = *((const int*)b); - - if (int_a == int_b) return 0; - else if (int_a < int_b) return -1; - else return 1; -} - -TZBook::TZBook() -{ - keycount = 0; - book_move2_probability = 0; - last_position = 0; - akt_position = 0; - last_anz_pieces = 0; - akt_anz_pieces = 0; - search_counter = 0; - tzhash2 = NULL; - do_search = true; - enabled = false; -} - -TZBook::~TZBook() -{ -} - - -void TZBook::init(const std::string& path) -{ - if (path.length() == 0) return; - - const char *p = path.c_str(); - if (strcmp(p, "") == 0) - return; - - FILE *fpt = fopen(p, "rb"); - if (fpt == NULL) - { - sync_cout << "info string Could not open " << path << sync_endl; - return; - } - - if (tzhash2 != NULL) - { - free(tzhash2); - tzhash2 = NULL; - } - - fseek(fpt, 0L, SEEK_END); - int filesize = ftell(fpt); - fseek(fpt, 0L, SEEK_SET); - - keycount = filesize / 8; - tzhash2 = new TZHash2[keycount]; - - fread(tzhash2, 1, filesize, fpt); - fclose(fpt); - - sync_cout << "info string Book loaded: " << path << sync_endl; - - srand((int)time(NULL)); - enabled = true; -} - - -void TZBook::set_book_move2_probability(int book_move2_prob) -{ - book_move2_probability = book_move2_prob; -} - - -Move TZBook::probe2(Position& pos) -{ - Move m = MOVE_NONE; - if (!enabled) return m; - - akt_position = pos.pieces(); - akt_anz_pieces = popcount(akt_position); - - if (do_search == false) - { - Bitboard b = akt_position ^ last_position; - int n2 = popcount(b); - - if (n2 > 4) do_search = true; - if (akt_anz_pieces > last_anz_pieces) do_search = true; - if (akt_anz_pieces < last_anz_pieces - 2) do_search = true; - } - - last_position = akt_position; - last_anz_pieces = akt_anz_pieces; - - if (do_search) - { - TZHash2 *tz = probe2(pos.key()); - if (tz == NULL) - { - search_counter++; - if (search_counter > 2) - { - do_search = false; - search_counter = 0; - } - } - else - { - if (pos.is_draw(64)) - m = get_move_from_draw_position(pos, tz); - else - m = get_move(pos, tz); - } - } - - return m; -} - - -TZHash2 *TZBook::probe2(Key key) -{ - uint32_t key1 = key >> 32; - unsigned short key2 = key >> 16 & 0xFFFF; - - int start = 0; - int end = keycount; - - for (;;) - { - int mid = (end + start) / 2; - - if (tzhash2[mid].key1 < key1) - start = mid; - else - { - if (tzhash2[mid].key1 > key1) - end = mid; - else - { - start = max(mid - 4, 0); - end = min(mid + 4, keycount); - } - } - - if (end - start < 9) - break; - } - - for (int i = start; i < end; i++) - if ((key1 == tzhash2[i].key1) && (key2 == tzhash2[i].key2)) - return &(tzhash2[i]); - - return NULL; -} - -Move TZBook::movenumber_to_move(Position& pos, int n) -{ - const ExtMove *m = MoveList(pos).begin(); - size_t size = MoveList(pos).size(); - Move *mv = new Move[size]; - for (unsigned int i = 0; i < size; i++) - mv[i] = m[i].move; - - qsort(mv, size, sizeof(mv[0]), qsort_compare_int); - - return mv[n]; -} - -bool TZBook::check_draw(Move m, Position& pos) -{ - StateInfo st; - - pos.do_move(m, st, pos.gives_check(m)); - bool draw = pos.is_draw(64); - pos.undo_move(m); - - return draw; -} - - -Move TZBook::get_move_from_draw_position(Position& pos, TZHash2 *tz) -{ - Move m = movenumber_to_move(pos, tz->move_number); - if (!check_draw(m, pos)) - return m; - - if (tz->move_number2 == 255) - return m; - - m = movenumber_to_move(pos, tz->move_number2); - if (!check_draw(m, pos)) - return m; - - return MOVE_NONE; -} - - -Move TZBook::get_move(Position& pos, TZHash2 *tz) -{ - Move m1 = movenumber_to_move(pos, tz->move_number); - if ((book_move2_probability == 0) || (tz->move_number2 == 255)) - return m1; - - Move m2 = movenumber_to_move(pos, tz->move_number2); - if ((book_move2_probability == 100) || (rand() % 100 < book_move2_probability)) - return m2; - - return m1; -} \ No newline at end of file diff --git a/Engines/Linux64/mcbrain/src/tzbook.h b/Engines/Linux64/mcbrain/src/tzbook.h deleted file mode 100644 index 744618a..0000000 --- a/Engines/Linux64/mcbrain/src/tzbook.h +++ /dev/null @@ -1,50 +0,0 @@ -#ifndef TZBOOK_H_INCLUDED -#define TZBOOK_H_INCLUDED - -#include "bitboard.h" -#include "position.h" -#include "string.h" - -struct TZHash2 -{ - uint32_t key1; - uint16_t key2; - unsigned char move_number; - unsigned char move_number2; -}; - -class TZBook -{ - public: - - Bitboard last_position; - Bitboard akt_position; - int last_anz_pieces; - int akt_anz_pieces; - int search_counter; - - bool enabled, do_search; - int book_move2_probability; - - TZBook(); - ~TZBook(); - - void init(const std::string& path); - void set_book_move2_probability(int book_move2_prob); - - Move probe2(Position& pos); - TZHash2 *probe2(Key key); - -private: - - int keycount; - TZHash2 *tzhash2; - bool check_draw(Move m, Position& pos); - Move get_move_from_draw_position(Position& pos, TZHash2 *tz); - Move get_move(Position& pos, TZHash2 *tz); - Move movenumber_to_move(Position& pos, int n); -}; - -extern TZBook tzbook; - -#endif // #ifndef TZBOOK_H_INCLUDED \ No newline at end of file diff --git a/Engines/Linux64/mcbrain/src/uci.cpp b/Engines/Linux64/mcbrain/src/uci.cpp index ecbbe8b..40efb6d 100644 --- a/Engines/Linux64/mcbrain/src/uci.cpp +++ b/Engines/Linux64/mcbrain/src/uci.cpp @@ -3,7 +3,7 @@ Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) - Copyright (C) 2017 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) McBrain is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -273,13 +273,13 @@ void UCI::loop(int argc, char* argv[]) { else if (token == "position") { position(pos, is, states); - if (Options["Clean_Search"] == 1) + if (Options["Clean_Search"] == true) Search::clear(); } else if (token == "p") { position(pos, is, states); - if (Options["Clean Search"] == 1) + if (Options["Clean_Search"] == true) Search::clear(); } else if (token == "ucinewgame") Search::clear(); diff --git a/Engines/Linux64/mcbrain/src/uci.h b/Engines/Linux64/mcbrain/src/uci.h index 1564f72..713468b 100644 --- a/Engines/Linux64/mcbrain/src/uci.h +++ b/Engines/Linux64/mcbrain/src/uci.h @@ -3,7 +3,7 @@ Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) - Copyright (C) 2017 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) McBrain is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -51,11 +51,13 @@ class Option { Option(bool v, OnChange = nullptr); Option(const char* v, OnChange = nullptr); Option(int v, int minv, int maxv, OnChange = nullptr); + Option(const char* v, const char *cur, OnChange = nullptr); Option& operator=(const std::string&); void operator<<(const Option&); operator int() const; operator std::string() const; + bool operator==(const char*); private: friend std::ostream& operator<<(std::ostream&, const OptionsMap&); diff --git a/Engines/Linux64/mcbrain/src/ucioption.cpp b/Engines/Linux64/mcbrain/src/ucioption.cpp index 8389ca1..3c31396 100644 --- a/Engines/Linux64/mcbrain/src/ucioption.cpp +++ b/Engines/Linux64/mcbrain/src/ucioption.cpp @@ -3,7 +3,7 @@ Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors) Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors) - Copyright (C) 2017 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) + Copyright (C) 2017-2018 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (McBrain Authors) McBrain is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -60,8 +60,15 @@ bool CaseInsensitiveLess::operator() (const string& s1, const string& s2) const void init(OptionsMap& o) { - const int MaxHashMB = Is64Bit ? 1024 * 1024 : 2048; + // at most 2^32 clusters. + const int MaxHashMB = Is64Bit ? 131072 : 2048; + o["Debug Log File"] << Option("", on_logger); + o["Contempt"] << Option(20, -100, 100); + o["Analysis Contempt"] << Option("Off var Off var White var Black var Both", "Off"); + o["UCI_AnalyseMode"] << Option(false); + o["Tactical"] << Option(0, 0, 8); + o["Threads"] << Option(1, 1, 512, on_threads); o["Hash"] << Option(16, 1, MaxHashMB, on_hash_size); o["Ponder"] << Option(false); o["Threads"] << Option(1, 1, 512, on_threads); @@ -70,21 +77,25 @@ void init(OptionsMap& o) { o["BruteForce"] << Option(false); o["FastPlay"] << Option(false); o["No_Null_Moves"] << Option(false); - + o["UCI_Chess960"] << Option(false); o["UCI_LimitStrength"] << Option(false); + o["UCI_ELO"] << Option(1500, 1500, 2800); - o["MultiPV"] << Option(1, 1, 500); o["Skill Level"] << Option(20, 0, 20); - o["Contempt"] << Option(2, -150, 150); - o["Tactical"] << Option(0, 0, 8); - o["Move Overhead"] << Option(100, 0, 5000); + o["MultiPV"] << Option(1, 1, 256); + + + o["Move Overhead"] << Option(30, 0, 5000); + o["Minimum Thinking Time"] << Option(20, 0, 5000); + o["Slow Mover"] << Option(89, 10, 1000); o["nodestime"] << Option(0, 0, 10000); - o["UCI_Chess960"] << Option(false); + o["SyzygyPath"] << Option("", on_tb_path); o["SyzygyProbeDepth"] << Option(1, 1, 100); o["Syzygy50MoveRule"] << Option(true); o["SyzygyProbeLimit"] << Option(6, 0, 6); + o["Book_Enabled"] << Option(false); o["BookFile"] << Option("", on_book_file); o["BestBookMove"] << Option(true, on_best_book_move); o["BookDepth"] << Option(255, 1, 255, on_book_depth); @@ -131,6 +142,9 @@ Option::Option(OnChange f) : type("button"), min(0), max(0), on_change(f) Option::Option(int v, int minv, int maxv, OnChange f) : type("spin"), min(minv), max(maxv), on_change(f) { defaultValue = currentValue = std::to_string(v); } +Option::Option(const char* v, const char* cur, OnChange f) : type("combo"), min(0), max(0), on_change(f) +{ defaultValue = v; currentValue = cur; } + Option::operator int() const { assert(type == "check" || type == "spin"); return (type == "spin" ? stoi(currentValue) : currentValue == "true"); @@ -141,6 +155,11 @@ Option::operator std::string() const { return currentValue; } +bool Option::operator==(const char* s) { + assert(type == "combo"); + return !CaseInsensitiveLess()(currentValue, s) && !CaseInsensitiveLess()(s, currentValue); +} + /// operator<<() inits options and assigns idx in the correct printing order diff --git a/Engines/Linux64/stockfish/.travis.yml b/Engines/Linux64/stockfish/.travis.yml index af0bb2b..8586921 100644 --- a/Engines/Linux64/stockfish/.travis.yml +++ b/Engines/Linux64/stockfish/.travis.yml @@ -9,7 +9,7 @@ matrix: addons: apt: sources: ['ubuntu-toolchain-r-test'] - packages: ['g++-6', 'g++-6-multilib', 'g++-multilib', 'valgrind'] + packages: ['g++-6', 'g++-6-multilib', 'g++-multilib', 'valgrind', 'expect'] env: - COMPILER=g++-6 - COMP=gcc @@ -19,7 +19,7 @@ matrix: addons: apt: sources: ['ubuntu-toolchain-r-test'] - packages: ['clang', 'g++-multilib', 'valgrind'] + packages: ['clang', 'g++-multilib', 'valgrind', 'expect'] env: - COMPILER=clang++ - COMP=clang @@ -44,12 +44,30 @@ before_script: - cd src script: - - make clean && make build ARCH=x86-64 && ./stockfish bench 2>&1 >/dev/null | grep 'Nodes searched' | tee bench1 - - make clean && make build ARCH=x86-32 && ./stockfish bench 2>&1 >/dev/null | grep 'Nodes searched' | tee bench2 - - echo "Checking for same bench numbers..." - - diff bench1 bench2 > result - - test ! -s result - # if valgrind is available check the build is without error, reduce depth to speedup testing, but not too shallow to catch more cases. - - if [ -x "$(command -v valgrind )" ] ; then make clean && make ARCH=x86-64 debug=yes build && valgrind --error-exitcode=42 ./stockfish bench 128 1 10 default depth 1>/dev/null ; fi - # use g++-6 as a proxy for having sanitizers ... might need revision as they become available for more recent versions of clang/gcc than trusty provides - - if [[ "$COMPILER" == "g++-6" ]]; then make clean && make ARCH=x86-64 sanitize=yes build && ! ./stockfish bench 2>&1 | grep "runtime error:" ; fi + # Obtain bench reference from git log + - git log HEAD | grep "\b[Bb]ench[ :]\+[0-9]\{7\}" | head -n 1 | sed "s/[^0-9]*\([0-9][0-9]*\)/\1/g" > git_sig + - export benchref=$(cat git_sig) + - echo "Reference bench:" $benchref + # + # Verify bench number against various builds + - export CXXFLAGS=-Werror + - make clean && make -j2 ARCH=x86-64 optimize=no debug=yes build && ../tests/signature.sh $benchref + - make clean && make -j2 ARCH=x86-32 optimize=no debug=yes build && ../tests/signature.sh $benchref + - make clean && make -j2 ARCH=x86-32 build && ../tests/signature.sh $benchref + - make clean && make -j2 ARCH=x86-64 build && ../tests/signature.sh $benchref + # + # Check perft and reproducible search + - ../tests/perft.sh + - ../tests/reprosearch.sh + # + # Valgrind + # + - export CXXFLAGS=-O1 + - if [ -x "$(command -v valgrind )" ]; then make clean && make -j2 ARCH=x86-64 debug=yes optimize=no build > /dev/null && ../tests/instrumented.sh --valgrind; fi + - if [ -x "$(command -v valgrind )" ]; then ../tests/instrumented.sh --valgrind-thread; fi + # + # Sanitizer + # + # Use g++-6 as a proxy for having sanitizers, might need revision as they become available for more recent versions of clang/gcc + - if [[ "$COMPILER" == "g++-6" ]]; then make clean && make -j2 ARCH=x86-64 sanitize=undefined optimize=no debug=yes build > /dev/null && ../tests/instrumented.sh --sanitizer-undefined; fi + - if [[ "$COMPILER" == "g++-6" ]]; then make clean && make -j2 ARCH=x86-64 sanitize=thread optimize=no debug=yes build > /dev/null && ../tests/instrumented.sh --sanitizer-thread; fi diff --git a/Engines/Linux64/stockfish/AUTHORS b/Engines/Linux64/stockfish/AUTHORS index 5cd63d2..9b91b93 100644 --- a/Engines/Linux64/stockfish/AUTHORS +++ b/Engines/Linux64/stockfish/AUTHORS @@ -1,98 +1,98 @@ -# Generated with git shortlog -sn | cut -c8-', which sorts by commits (manually ordered the first four authors) +# Generated with 'git shortlog -sn | cut -c8-', which sorts by commits, manually ordered the first four authors, merged duplicates Tord Romstad -Marco Costalba -Joona Kiiski -Gary Linscott -lucasart +Marco Costalba (mcostalba) +Joona Kiiski (zamar) +Gary Linscott (glinscott) +Lucas Braesch (lucasart) +Bill Henry (VoyagerOne) mstembera -Lucas Braesch +Stéphane Nicolet (Stephane Nicolet, snicolet) Stefan Geschwentner +Alain SAVARD (Rocky640) +Jörg Oster (Joerg Oster, joergoster) Reuven Peleg -Chris Caino -joergoster -VoyagerOne +Chris Caino (Chris Cain, ceebo) Jean-Francois Romang homoSapiensSapiens -Alain SAVARD +Leonid Pechenik +Stefano Cardanobile (Stefano80) Arjun Temurnikar -Stéphane Nicolet -Uri Blass +Uri Blass (uriblass) jundery -Ralph Stößer -Ajith -Leonid Pechenik -Stefano80 -Tom Vijlbrief +Ajith (ajithcj) hxim -snicolet +Ralph Stößer (Ralph Stoesser) +Guenther Demetz +Jonathan Calovski (Mysseno) +Tom Vijlbrief +mbootsector Daylen Yang +ElbertoOne Henri Wiechers -Jonathan Calovski -mbootsector +loco-loco +Joost VandeVondele (Joost Vandevondele) +Ronald de Man (syzygy) +DU-jdto David Zar Eelco de Groot Jerry Donald -Joerg Oster -Jörg Oster +NicklasPersson Ryan Schmitt -mcostalba Alexander Kure Dan Schmidt H. Felix Wittmann +Jacques Joseph R. Prostko Justin Blanchard Linus Arver -NicklasPersson +Luca Brivio +Lyudmil Antonov Rodrigo Exterckötter Tjäder Ron Britvich -Ronald de Man RyanTaker Vince Negri -ceebo -jhellis3 -ppigazzini +erbsenzaehler +Joseph Hellis (jhellis3) shane31 +Andrew Grant Andy Duplain Auguste Pop Balint Pfliegel -Chris Cain -DU-jdto Dariusz Orzechowski DiscanX Ernesto Gatti Gregor Cramer -Guenther Demetz -Hiraoka Takuya +Hiraoka Takuya (HiraokaTakuya) Hongzhi Cheng -Joseph Hellis +IIvec Kelly Wilson Ken T Takusagawa Kojirion -Luca Brivio +Krgp Matt Sullivan Matthew Lai Matthew Sullivan Michel Van den Bergh -Mysseno +Niklas Fiekas Oskar Werkelin Ahlin Pablo Vazquez Pascal Romaret -Ralph Stoesser -Ralph Stößer Raminder Singh Richard Lloyd Ryan Takker -Stephane Nicolet Thanar2 absimaldata +atumanian braich +fanon +gamander gguliash kinderchocolate -loco-loco pellanda +ppigazzini renouve sf-x thaspel unknown -uriblass + diff --git a/Engines/Linux64/stockfish/Linux/stockfish-9-64 b/Engines/Linux64/stockfish/Linux/stockfish-9-64 new file mode 100644 index 0000000000000000000000000000000000000000..69e30cca8e524b2a6396ec96352aaf4765ff69d5 GIT binary patch literal 261448 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,000 CPU hours as of January 23, 2018 +Thank you! + +Username CPU Hours Games played +mibere 518300 41835669 +crunchy 375564 29121434 +cw 371664 28748719 +fastgm 299773 20765374 +JojoM 220590 15299913 +glinscott 204517 13932027 +bking_US 187568 12233168 +ctoks 169342 13475495 +spams 149531 10940322 +Thanar 137015 11714855 +velislav 127305 10047749 +vdbergh 121741 9056874 +malala 117291 8126488 +vdv 117218 8289983 +leszek 114825 8331897 +dsmith 114010 7622414 +CSU_Dynasty 113516 9582758 +sqrt2 112407 8782694 +marrco 111143 8222921 +drabel 108168 9061580 +BrunoBanani 104938 7448565 +Data 94621 8433010 +CoffeeOne 90394 3964243 +BRAVONE 80811 5341681 +psk 77195 6156031 +brabos 70284 5685893 +Fisherman 66650 5572406 +nssy 64587 5369140 +Pking_cda 64499 5704075 +sterni1971 63488 5070004 +mgrabiak 62385 5420812 +tvijlbrief 58957 4154234 +jromang 58854 4704502 +dv8silencer 57421 3961325 +sunu 56620 4609155 +tinker 56039 4204914 +biffhero 55743 4810039 +teddybaer 52982 4740444 +bcross 50548 5071599 +renouve 50318 3544864 +Freja 50296 3805120 +robnjr 47504 4131742 +eva42 46542 4044694 +davar 46538 4030604 +finfish 46244 3481661 +rap 46201 3219490 +ttruscott 45037 3645430 +solarlight 44155 4074841 +TueRens 41372 3891510 +ElbertoOne 41321 3920894 +Antihistamine 39218 2792761 +mhunt 38991 2697512 +bigpen0r 37820 3149955 +homyur 35569 3009637 +VoyagerOne 35137 3302650 +mhoram 34770 2684128 +racerschmacer 33022 3231055 +speedycpu 32043 2531964 +EthanOConnor 31638 2143255 +oryx 29574 2767730 +Pyafue 28885 1986098 +jkiiski 28014 1923255 +Garf 27579 2770144 +slakovv 27017 2031279 +Bobo1239 27000 2488707 +pb00067 26817 2306694 +robal 26337 2316795 +hyperbolic.tom 26248 2200777 +rkl 24898 2236013 +SC 23988 2126825 +nabildanial 23524 1586321 +achambord 23495 1942546 +Sharaf_DG 22975 1790697 +chriswk 22876 1947731 +anst 22568 2013953 +Patrick_G 22435 1682293 +cuistot 22201 1383031 +gri 21901 1820968 +Prcuvu 21182 1890546 +Zirie 21171 1493227 +JanErik 20596 1791991 +Isidor 20560 1730290 +xor12 20535 1819280 +team-oh 20364 1653708 +nesoneg 20264 1493435 +rstoesser 19802 1335177 +grandphish2 19402 1834196 +sg4032 18427 1671742 +dew 18263 1423326 +ianh2105 18133 1668562 +MazeOfGalious 18022 1644593 +ville 17900 1539130 +j3corre 17607 975954 +eudhan 17502 1424648 +iisiraider 17175 1118788 +jundery 17172 1115855 +SFTUser 16635 1363975 +purplefishies 16621 1106850 +DragonLord 16599 1252348 +chris 15274 1575333 +xoto 14900 1486261 +dju 14861 901552 +dex 14647 1228763 +nordlandia 14551 1369718 +ronaldjerum 14361 1210607 +OssumOpossum 14149 1029265 +IgorLeMasson 13844 1228391 +enedene 13762 935618 +ako027ako 13442 1250249 +AdrianSA 13324 924980 +bpfliegel 13318 886523 +ncfish1 13056 932344 +wei 12863 1369596 +jpulman 12776 854815 +horst.prack 12436 1151505 +joster 12424 986622 +cisco2015 12265 1205019 +fatmurphy 12015 901134 +modolief 11228 926456 +Dark_wizzie 11214 1017910 +mschmidt 10973 818594 +eastorwest 10970 1117836 +infinity 10762 746397 +SapphireBrand 10692 1024604 +Thomas A. 10553 736094 +pgontarz 10294 878746 +Andrew Grant 10195 922933 +stocky 10083 718114 diff --git a/Engines/Linux64/stockfish/appveyor.yml b/Engines/Linux64/stockfish/appveyor.yml index a46a0f3..c711dd6 100644 --- a/Engines/Linux64/stockfish/appveyor.yml +++ b/Engines/Linux64/stockfish/appveyor.yml @@ -1,5 +1,5 @@ version: 1.0.{build} -clone_depth: 5 +clone_depth: 50 branches: only: @@ -13,10 +13,11 @@ os: Visual Studio 2015 platform: - x86 - x64 - - Any CPU # build Configuration, i.e. Debug, Release, etc. -configuration: Debug +configuration: + - Debug + - Release matrix: # The build fail immediately once one of the job fails @@ -28,18 +29,43 @@ init: - msbuild /version before_build: - - cd src - - echo project (Stockfish) >> CMakeLists.txt - - echo add_executable(stockfish benchmark.cpp bitbase.cpp bitboard.cpp endgame.cpp evaluate.cpp >> CMakeLists.txt - - echo main.cpp material.cpp misc.cpp movegen.cpp movepick.cpp pawns.cpp position.cpp psqt.cpp >> CMakeLists.txt - - echo search.cpp thread.cpp timeman.cpp tt.cpp uci.cpp ucioption.cpp syzygy/tbprobe.cpp) >> CMakeLists.txt - - echo set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/src) >> CMakeLists.txt -# - echo target_compile_options(stockfish PUBLIC "/Ox") >> CMakeLists.txt + - ps: | + # Get sources + $src = get-childitem -Path *.cpp -Recurse | select -ExpandProperty FullName + $src = $src -join ' ' + $src = $src.Replace("\", "/") + + # Build CMakeLists.txt + $t = 'cmake_minimum_required(VERSION 3.8)', + 'project(Stockfish)', + 'set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/src)', + 'set(source_files', $src, ')', + 'add_executable(stockfish ${source_files})' + + # Write CMakeLists.txt withouth BOM + $MyPath = (Get-Item -Path "." -Verbose).FullName + '\CMakeLists.txt' + $Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $False + [System.IO.File]::WriteAllLines($MyPath, $t, $Utf8NoBomEncoding) + + # Obtain bench reference from git log + $b = git log HEAD | sls "\b[Bb]ench[ :]+[0-9]{7}" | select -first 1 + $bench = $b -match '\D+(\d+)' | % { $matches[1] } + Write-Host "Reference bench:" $bench + $g = "Visual Studio 14 2015" + If (${env:PLATFORM} -eq 'x64') { $g = $g + ' Win64' } + cmake -G "${g}" . + Write-Host "Generated files for: " $g build_script: - - cmake -G "Visual Studio 14 2015 Win64" . - - cmake --build . + - cmake --build . --config %CONFIGURATION% -- /verbosity:minimal before_test: - - cd Debug - - stockfish.exe bench > null + - cd src/%CONFIGURATION% + - ps: | + # Verify bench number + ./stockfish bench 2> out.txt 1> null + $s = (gc "./out.txt" | out-string) + $r = ($s -match 'Nodes searched \D+(\d+)' | % { $matches[1] }) + Write-Host "Engine bench:" $r + Write-Host "Reference bench:" $bench + If ($r -ne $bench) { exit 1 } diff --git a/Engines/Linux64/stockfish/src/Makefile b/Engines/Linux64/stockfish/src/Makefile index cdedd25..72afcc3 100644 --- a/Engines/Linux64/stockfish/src/Makefile +++ b/Engines/Linux64/stockfish/src/Makefile @@ -1,7 +1,7 @@ # Stockfish, a UCI chess playing engine derived from Glaurung 2.1 # Copyright (C) 2004-2008 Tord Romstad (Glaurung author) # Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad -# Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad +# Copyright (C) 2015-2018 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad # # Stockfish is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -50,7 +50,9 @@ OBJS = benchmark.o bitbase.o bitboard.o endgame.o evaluate.o main.o \ # ---------------------------------------------------------------------------- # # debug = yes/no --- -DNDEBUG --- Enable/Disable debug mode -# sanitize = yes/no --- (-fsanitize ) --- enable undefined behavior checks +# sanitize = undefined/thread/no (-fsanitize ) +# --- ( undefined ) --- enable undefined behavior checks +# --- ( thread ) --- enable threading error checks # optimize = yes/no --- (-O3/-fast etc.) --- Enable/Disable optimizations # arch = (name) --- (-arch) --- Target architecture # bits = 64/32 --- -DIS_64BIT --- 64-/32-bit operating system @@ -139,7 +141,7 @@ endif ### 3.1 Selecting compiler (default = gcc) -CXXFLAGS += -Wall -Wcast-qual -fno-exceptions -fno-rtti -std=c++11 $(EXTRACXXFLAGS) +CXXFLAGS += -Wall -Wcast-qual -fno-exceptions -std=c++11 $(EXTRACXXFLAGS) DEPENDFLAGS += -std=c++11 LDFLAGS += $(EXTRALDFLAGS) @@ -155,9 +157,11 @@ ifeq ($(COMP),gcc) ifeq ($(ARCH),armv7) ifeq ($(OS),Android) CXXFLAGS += -m$(bits) + LDFLAGS += -m$(bits) endif else CXXFLAGS += -m$(bits) + LDFLAGS += -m$(bits) endif ifneq ($(KERNEL),Darwin) @@ -200,6 +204,11 @@ ifeq ($(COMP),clang) comp=clang CXX=clang++ CXXFLAGS += -pedantic -Wextra -Wshadow +ifneq ($(KERNEL),Darwin) +ifneq ($(KERNEL),OpenBSD) + LDFLAGS += -latomic +endif +endif ifeq ($(ARCH),armv7) ifeq ($(OS),Android) @@ -210,23 +219,19 @@ ifeq ($(COMP),clang) CXXFLAGS += -m$(bits) LDFLAGS += -m$(bits) endif - - ifeq ($(KERNEL),Darwin) - CXXFLAGS += -stdlib=libc++ - DEPENDFLAGS += -stdlib=libc++ - endif endif ifeq ($(comp),icc) - profile_prepare = icc-profile-prepare profile_make = icc-profile-make profile_use = icc-profile-use - profile_clean = icc-profile-clean else - profile_prepare = gcc-profile-prepare +ifeq ($(comp),clang) + profile_make = clang-profile-make + profile_use = clang-profile-use +else profile_make = gcc-profile-make profile_use = gcc-profile-use - profile_clean = gcc-profile-clean +endif endif ifeq ($(KERNEL),Darwin) @@ -263,8 +268,9 @@ else endif ### 3.2.2 Debugging with undefined behavior sanitizers -ifeq ($(sanitize),yes) - CXXFLAGS += -g3 -fsanitize=undefined +ifneq ($(sanitize),no) + CXXFLAGS += -g3 -fsanitize=$(sanitize) -fuse-ld=gold + LDFLAGS += -fsanitize=$(sanitize) -fuse-ld=gold endif ### 3.3 Optimization @@ -296,10 +302,8 @@ ifeq ($(optimize),yes) ifeq ($(comp),clang) ifeq ($(KERNEL),Darwin) - ifeq ($(pext),no) CXXFLAGS += -flto LDFLAGS += $(CXXFLAGS) - endif ifeq ($(arch),i386) CXXFLAGS += -mdynamic-no-pic endif @@ -423,30 +427,27 @@ help: @echo "" -.PHONY: build profile-build -build: - $(MAKE) ARCH=$(ARCH) COMP=$(COMP) config-sanity +.PHONY: help build profile-build strip install clean objclean profileclean help \ + config-sanity icc-profile-use icc-profile-make gcc-profile-use gcc-profile-make \ + clang-profile-use clang-profile-make + +build: config-sanity $(MAKE) ARCH=$(ARCH) COMP=$(COMP) all -profile-build: - $(MAKE) ARCH=$(ARCH) COMP=$(COMP) config-sanity - @echo "" - @echo "Step 0/4. Preparing for profile build." - $(MAKE) ARCH=$(ARCH) COMP=$(COMP) $(profile_prepare) +profile-build: config-sanity objclean profileclean @echo "" - @echo "Step 1/4. Building executable for benchmark ..." - @touch *.cpp *.h syzygy/*.cpp syzygy/*.h + @echo "Step 1/4. Building instrumented executable ..." $(MAKE) ARCH=$(ARCH) COMP=$(COMP) $(profile_make) @echo "" @echo "Step 2/4. Running benchmark for pgo-build ..." $(PGOBENCH) > /dev/null @echo "" - @echo "Step 3/4. Building final executable ..." - @touch *.cpp *.h syzygy/*.cpp syzygy/*.h + @echo "Step 3/4. Building optimized executable ..." + $(MAKE) ARCH=$(ARCH) COMP=$(COMP) objclean $(MAKE) ARCH=$(ARCH) COMP=$(COMP) $(profile_use) @echo "" @echo "Step 4/4. Deleting profile data ..." - $(MAKE) ARCH=$(ARCH) COMP=$(COMP) $(profile_clean) + $(MAKE) ARCH=$(ARCH) COMP=$(COMP) profileclean strip: strip $(EXE) @@ -456,8 +457,19 @@ install: -cp $(EXE) $(BINDIR) -strip $(BINDIR)/$(EXE) -clean: - $(RM) $(EXE) $(EXE).exe *.o .depend *~ core bench.txt *.gcda ./syzygy/*.o ./syzygy/*.gcda +#clean all +clean: objclean profileclean + @rm -f .depend *~ core + +# clean binaries and objects +objclean: + @rm -f $(EXE) $(EXE).exe *.o ./syzygy/*.o + +# clean auxiliary profiling files +profileclean: + @rm -rf profdir + @rm -f bench.txt *.gcda ./syzygy/*.gcda *.gcno ./syzygy/*.gcno + @rm -f stockfish.profdata *.profraw default: help @@ -472,6 +484,7 @@ config-sanity: @echo "" @echo "Config:" @echo "debug: '$(debug)'" + @echo "sanitize: '$(sanitize)'" @echo "optimize: '$(optimize)'" @echo "arch: '$(arch)'" @echo "bits: '$(bits)'" @@ -490,6 +503,7 @@ config-sanity: @echo "Testing config sanity. If this fails, try 'make help' ..." @echo "" @test "$(debug)" = "yes" || test "$(debug)" = "no" + @test "$(sanitize)" = "undefined" || test "$(sanitize)" = "thread" || test "$(sanitize)" = "no" @test "$(optimize)" = "yes" || test "$(optimize)" = "no" @test "$(arch)" = "any" || test "$(arch)" = "x86_64" || test "$(arch)" = "i386" || \ test "$(arch)" = "ppc64" || test "$(arch)" = "ppc" || test "$(arch)" = "armv7" @@ -503,8 +517,18 @@ config-sanity: $(EXE): $(OBJS) $(CXX) -o $@ $(OBJS) $(LDFLAGS) -gcc-profile-prepare: - $(MAKE) ARCH=$(ARCH) COMP=$(COMP) gcc-profile-clean +clang-profile-make: + $(MAKE) ARCH=$(ARCH) COMP=$(COMP) \ + EXTRACXXFLAGS='-fprofile-instr-generate ' \ + EXTRALDFLAGS=' -fprofile-instr-generate' \ + all + +clang-profile-use: + llvm-profdata merge -output=stockfish.profdata *.profraw + $(MAKE) ARCH=$(ARCH) COMP=$(COMP) \ + EXTRACXXFLAGS='-fprofile-instr-use=stockfish.profdata' \ + EXTRALDFLAGS='-fprofile-use ' \ + all gcc-profile-make: $(MAKE) ARCH=$(ARCH) COMP=$(COMP) \ @@ -518,14 +542,8 @@ gcc-profile-use: EXTRALDFLAGS='-lgcov' \ all -gcc-profile-clean: - @rm -rf *.gcda *.gcno syzygy/*.gcda syzygy/*.gcno bench.txt - -icc-profile-prepare: - $(MAKE) ARCH=$(ARCH) COMP=$(COMP) icc-profile-clean - @mkdir profdir - icc-profile-make: + @mkdir -p profdir $(MAKE) ARCH=$(ARCH) COMP=$(COMP) \ EXTRACXXFLAGS='-prof-gen=srcpos -prof_dir ./profdir' \ all @@ -535,9 +553,6 @@ icc-profile-use: EXTRACXXFLAGS='-prof_use -prof_dir ./profdir' \ all -icc-profile-clean: - @rm -rf profdir bench.txt - .depend: -@$(CXX) $(DEPENDFLAGS) -MM $(OBJS:.o=.cpp) > $@ 2> /dev/null diff --git a/Engines/Linux64/stockfish/src/benchmark.cpp b/Engines/Linux64/stockfish/src/benchmark.cpp index f2d1f06..1c69dca 100644 --- a/Engines/Linux64/stockfish/src/benchmark.cpp +++ b/Engines/Linux64/stockfish/src/benchmark.cpp @@ -2,7 +2,7 @@ Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad + Copyright (C) 2015-2018 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -23,23 +23,20 @@ #include #include -#include "misc.h" #include "position.h" -#include "search.h" -#include "thread.h" -#include "uci.h" using namespace std; namespace { const vector Defaults = { + "setoption name UCI_Chess960 value false", "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1", "r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq - 0 10", "8/2p5/3p4/KP5r/1R3p1k/8/4P1P1/8 w - - 0 11", "4rrk1/pp1n3p/3q2pQ/2p1pb2/2PP4/2P3N1/P2B2PP/4RRK1 b - - 7 19", - "rq3rk1/ppp2ppp/1bnpb3/3N2B1/3NP3/7P/PPPQ1PP1/2KR3R w - - 7 14", - "r1bq1r1k/1pp1n1pp/1p1p4/4p2Q/4Pp2/1BNP4/PPP2PPP/3R1RK1 w - - 2 14", + "rq3rk1/ppp2ppp/1bnpb3/3N2B1/3NP3/7P/PPPQ1PP1/2KR3R w - - 7 14 moves d4e6", + "r1bq1r1k/1pp1n1pp/1p1p4/4p2Q/4Pp2/1BNP4/PPP2PPP/3R1RK1 w - - 2 14 moves g2g4", "r3r1k1/2p2ppp/p1p1bn2/8/1q2P3/2NPQN2/PPP3PP/R4RK1 b - - 2 15", "r1bbk1nr/pp3p1p/2n5/1N4p1/2Np1B2/8/PPP2PPP/2KR1B1R w kq - 0 13", "r1bq1rk1/ppp1nppp/4n3/3p3Q/3P4/1BP1B3/PP1N2PP/R4RK1 w - - 1 16", @@ -52,7 +49,7 @@ const vector Defaults = { "3q2k1/pb3p1p/4pbp1/2r5/PpN2N2/1P2P2P/5PP1/Q2R2K1 b - - 4 26", "6k1/6p1/6Pp/ppp5/3pn2P/1P3K2/1PP2P2/3N4 b - - 0 1", "3b4/5kp1/1p1p1p1p/pP1PpP1P/P1P1P3/3KN3/8/8 w - - 0 1", - "2K5/p7/7P/5pR1/8/5k2/r7/8 w - - 0 1", + "2K5/p7/7P/5pR1/8/5k2/r7/8 w - - 0 1 moves g5g6 f3e3 g6g5 e3f3", "8/6pk/1p6/8/PP3p1p/5P2/4KP1q/3Q4 w - - 0 1", "7k/3p2pp/4q3/8/4Q3/5Kp1/P6b/8 w - - 0 1", "8/2p5/8/2kPKp1p/2p4P/2P5/3P4/8 w - - 0 1", @@ -79,28 +76,35 @@ const vector Defaults = { "8/R7/2q5/8/6k1/8/1P5p/K6R w - - 0 124", // Draw // Mate and stalemate positions + "6k1/3b3r/1p1p4/p1n2p2/1PPNpP1q/P3Q1p1/1R1RB1P1/5K2 b - - 0 1", + "r2r1n2/pp2bk2/2p1p2p/3q4/3PN1QP/2P3R1/P4PP1/5RK1 w - - 0 1", "8/8/8/8/8/6k1/6p1/6K1 w - -", - "5k2/5P2/5K2/8/8/8/8/8 b - -", - "8/8/8/8/8/4k3/4p3/4K3 w - -", - "8/8/8/8/8/5K2/8/3Q1k2 b - -", - "7k/7P/6K1/8/3B4/8/8/8 b - -" + "7k/7P/6K1/8/3B4/8/8/8 b - -", + + // Chess 960 + "setoption name UCI_Chess960 value true", + "bbqnnrkr/pppppppp/8/8/8/8/PPPPPPPP/BBQNNRKR w KQkq - 0 1 moves g2g3 d7d5 d2d4 c8h3 c1g5 e8d6 g5e7 f7f6", + "setoption name UCI_Chess960 value false" }; } // namespace -/// benchmark() runs a simple benchmark by letting Stockfish analyze a set -/// of positions for a given limit each. There are five parameters: the -/// transposition table size, the number of search threads that should -/// be used, the limit value spent for each position (optional, default is -/// depth 13), an optional file name where to look for positions in FEN -/// format (defaults are the positions defined above) and the type of the -/// limit value: depth (default), time in millisecs or number of nodes. +/// setup_bench() builds a list of UCI commands to be run by bench. There +/// are five parameters: TT size in MB, number of search threads that +/// should be used, the limit value spent for each position, a file name +/// where to look for positions in FEN format and the type of the limit: +/// depth, perft, nodes and movetime (in millisecs). +/// +/// bench -> search default positions up to depth 13 +/// bench 64 1 15 -> search default positions up to depth 15 (TT = 64MB) +/// bench 64 4 5000 current movetime -> search current position with 4 threads for 5 sec +/// bench 64 1 100000 default nodes -> search default positions for 100K nodes each +/// bench 16 1 5 default perft -> run a perft 5 on default positions -void benchmark(const Position& current, istream& is) { +vector setup_bench(const Position& current, istream& is) { - string token; - vector fens; - Search::LimitsType limits; + vector fens, list; + string go, token; // Assign default values to missing arguments string ttSize = (is >> token) ? token : "16"; @@ -109,21 +113,7 @@ void benchmark(const Position& current, istream& is) { string fenFile = (is >> token) ? token : "default"; string limitType = (is >> token) ? token : "depth"; - Options["Hash"] = ttSize; - Options["Threads"] = threads; - Search::clear(); - - if (limitType == "time") - limits.movetime = stoi(limit); // movetime is in millisecs - - else if (limitType == "nodes") - limits.nodes = stoi(limit); - - else if (limitType == "mate") - limits.mate = stoi(limit); - - else - limits.depth = stoi(limit); + go = "go " + limitType + " " + limit; if (fenFile == "default") fens = Defaults; @@ -139,7 +129,7 @@ void benchmark(const Position& current, istream& is) { if (!file.is_open()) { cerr << "Unable to open file " << fenFile << endl; - return; + exit(EXIT_FAILURE); } while (getline(file, fen)) @@ -149,35 +139,18 @@ void benchmark(const Position& current, istream& is) { file.close(); } - uint64_t nodes = 0; - TimePoint elapsed = now(); - Position pos; - - for (size_t i = 0; i < fens.size(); ++i) - { - StateListPtr states(new std::deque(1)); - pos.set(fens[i], Options["UCI_Chess960"], &states->back(), Threads.main()); - - cerr << "\nPosition: " << i + 1 << '/' << fens.size() << endl; - - if (limitType == "perft") - nodes += Search::perft(pos, limits.depth * ONE_PLY); + list.emplace_back("ucinewgame"); + list.emplace_back("setoption name Threads value " + threads); + list.emplace_back("setoption name Hash value " + ttSize); + for (const string& fen : fens) + if (fen.find("setoption") != string::npos) + list.emplace_back(fen); else { - limits.startTime = now(); - Threads.start_thinking(pos, states, limits); - Threads.main()->wait_for_search_finished(); - nodes += Threads.nodes_searched(); + list.emplace_back("position fen " + fen); + list.emplace_back(go); } - } - - elapsed = now() - elapsed + 1; // Ensure positivity to avoid a 'divide by zero' - - dbg_print(); // Just before exiting - cerr << "\n===========================" - << "\nTotal time (ms) : " << elapsed - << "\nNodes searched : " << nodes - << "\nNodes/second : " << 1000 * nodes / elapsed << endl; + return list; } diff --git a/Engines/Linux64/stockfish/src/bitbase.cpp b/Engines/Linux64/stockfish/src/bitbase.cpp index 4170952..3c9bf6e 100644 --- a/Engines/Linux64/stockfish/src/bitbase.cpp +++ b/Engines/Linux64/stockfish/src/bitbase.cpp @@ -2,7 +2,7 @@ Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad + Copyright (C) 2015-2018 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -111,13 +111,13 @@ namespace { ksq[WHITE] = Square((idx >> 0) & 0x3F); ksq[BLACK] = Square((idx >> 6) & 0x3F); us = Color ((idx >> 12) & 0x01); - psq = make_square(File((idx >> 13) & 0x3), RANK_7 - Rank((idx >> 15) & 0x7)); + psq = make_square(File((idx >> 13) & 0x3), Rank(RANK_7 - ((idx >> 15) & 0x7))); // Check if two pieces are on the same square or if a king can be captured if ( distance(ksq[WHITE], ksq[BLACK]) <= 1 || ksq[WHITE] == psq || ksq[BLACK] == psq - || (us == WHITE && (StepAttacksBB[PAWN][psq] & ksq[BLACK]))) + || (us == WHITE && (PawnAttacks[WHITE][psq] & ksq[BLACK]))) result = INVALID; // Immediate win if a pawn can be promoted without getting captured @@ -125,13 +125,13 @@ namespace { && rank_of(psq) == RANK_7 && ksq[us] != psq + NORTH && ( distance(ksq[~us], psq + NORTH) > 1 - || (StepAttacksBB[KING][ksq[us]] & (psq + NORTH)))) + || (PseudoAttacks[KING][ksq[us]] & (psq + NORTH)))) result = WIN; // Immediate draw if it is a stalemate or a king captures undefended pawn else if ( us == BLACK - && ( !(StepAttacksBB[KING][ksq[us]] & ~(StepAttacksBB[KING][ksq[~us]] | StepAttacksBB[PAWN][psq])) - || (StepAttacksBB[KING][ksq[us]] & psq & ~StepAttacksBB[KING][ksq[~us]]))) + && ( !(PseudoAttacks[KING][ksq[us]] & ~(PseudoAttacks[KING][ksq[~us]] | PawnAttacks[~us][psq])) + || (PseudoAttacks[KING][ksq[us]] & psq & ~PseudoAttacks[KING][ksq[~us]]))) result = DRAW; // Position will be classified later @@ -157,7 +157,7 @@ namespace { const Result Bad = (Us == WHITE ? DRAW : WIN); Result r = INVALID; - Bitboard b = StepAttacksBB[KING][ksq[Us]]; + Bitboard b = PseudoAttacks[KING][ksq[Us]]; while (b) r |= Us == WHITE ? db[index(Them, ksq[Them] , pop_lsb(&b), psq)] diff --git a/Engines/Linux64/stockfish/src/bitboard.cpp b/Engines/Linux64/stockfish/src/bitboard.cpp index e329ab5..ba00c78 100644 --- a/Engines/Linux64/stockfish/src/bitboard.cpp +++ b/Engines/Linux64/stockfish/src/bitboard.cpp @@ -2,7 +2,7 @@ Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad + Copyright (C) 2015-2018 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -26,29 +26,22 @@ uint8_t PopCnt16[1 << 16]; int SquareDistance[SQUARE_NB][SQUARE_NB]; -Bitboard RookMasks [SQUARE_NB]; -Bitboard RookMagics [SQUARE_NB]; -Bitboard* RookAttacks[SQUARE_NB]; -unsigned RookShifts [SQUARE_NB]; - -Bitboard BishopMasks [SQUARE_NB]; -Bitboard BishopMagics [SQUARE_NB]; -Bitboard* BishopAttacks[SQUARE_NB]; -unsigned BishopShifts [SQUARE_NB]; - Bitboard SquareBB[SQUARE_NB]; Bitboard FileBB[FILE_NB]; Bitboard RankBB[RANK_NB]; Bitboard AdjacentFilesBB[FILE_NB]; -Bitboard InFrontBB[COLOR_NB][RANK_NB]; -Bitboard StepAttacksBB[PIECE_NB][SQUARE_NB]; +Bitboard ForwardRanksBB[COLOR_NB][RANK_NB]; Bitboard BetweenBB[SQUARE_NB][SQUARE_NB]; Bitboard LineBB[SQUARE_NB][SQUARE_NB]; Bitboard DistanceRingBB[SQUARE_NB][8]; -Bitboard ForwardBB[COLOR_NB][SQUARE_NB]; +Bitboard ForwardFileBB[COLOR_NB][SQUARE_NB]; Bitboard PassedPawnMask[COLOR_NB][SQUARE_NB]; Bitboard PawnAttackSpan[COLOR_NB][SQUARE_NB]; Bitboard PseudoAttacks[PIECE_TYPE_NB][SQUARE_NB]; +Bitboard PawnAttacks[COLOR_NB][SQUARE_NB]; + +Magic RookMagics[SQUARE_NB]; +Magic BishopMagics[SQUARE_NB]; namespace { @@ -61,10 +54,7 @@ namespace { Bitboard RookTable[0x19000]; // To store rook attacks Bitboard BishopTable[0x1480]; // To store bishop attacks - typedef unsigned (Fn)(Square, Bitboard); - - void init_magics(Bitboard table[], Bitboard* attacks[], Bitboard magics[], - Bitboard masks[], unsigned shifts[], Square deltas[], Fn index); + void init_magics(Bitboard table[], Magic magics[], Direction directions[]); // bsf_index() returns the index into BSFTable[] to look up the bitscan. Uses // Matt Taylor's folding for 32 bit case, extended to 64 bit by Kim Walisch. @@ -173,14 +163,14 @@ void Bitboards::init() { AdjacentFilesBB[f] = (f > FILE_A ? FileBB[f - 1] : 0) | (f < FILE_H ? FileBB[f + 1] : 0); for (Rank r = RANK_1; r < RANK_8; ++r) - InFrontBB[WHITE][r] = ~(InFrontBB[BLACK][r + 1] = InFrontBB[BLACK][r] | RankBB[r]); + ForwardRanksBB[WHITE][r] = ~(ForwardRanksBB[BLACK][r + 1] = ForwardRanksBB[BLACK][r] | RankBB[r]); for (Color c = WHITE; c <= BLACK; ++c) for (Square s = SQ_A1; s <= SQ_H8; ++s) { - ForwardBB[c][s] = InFrontBB[c][rank_of(s)] & FileBB[file_of(s)]; - PawnAttackSpan[c][s] = InFrontBB[c][rank_of(s)] & AdjacentFilesBB[file_of(s)]; - PassedPawnMask[c][s] = ForwardBB[c][s] | PawnAttackSpan[c][s]; + ForwardFileBB [c][s] = ForwardRanksBB[c][rank_of(s)] & FileBB[file_of(s)]; + PawnAttackSpan[c][s] = ForwardRanksBB[c][rank_of(s)] & AdjacentFilesBB[file_of(s)]; + PassedPawnMask[c][s] = ForwardFileBB [c][s] | PawnAttackSpan[c][s]; } for (Square s1 = SQ_A1; s1 <= SQ_H8; ++s1) @@ -191,39 +181,43 @@ void Bitboards::init() { DistanceRingBB[s1][SquareDistance[s1][s2] - 1] |= s2; } - int steps[][9] = { {}, { 7, 9 }, { 17, 15, 10, 6, -6, -10, -15, -17 }, - {}, {}, {}, { 9, 7, -7, -9, 8, 1, -1, -8 } }; + int steps[][5] = { {}, { 7, 9 }, { 6, 10, 15, 17 }, {}, {}, {}, { 1, 7, 8, 9 } }; for (Color c = WHITE; c <= BLACK; ++c) - for (PieceType pt = PAWN; pt <= KING; ++pt) + for (PieceType pt : { PAWN, KNIGHT, KING }) for (Square s = SQ_A1; s <= SQ_H8; ++s) for (int i = 0; steps[pt][i]; ++i) { - Square to = s + Square(c == WHITE ? steps[pt][i] : -steps[pt][i]); + Square to = s + Direction(c == WHITE ? steps[pt][i] : -steps[pt][i]); if (is_ok(to) && distance(s, to) < 3) - StepAttacksBB[make_piece(c, pt)][s] |= to; + { + if (pt == PAWN) + PawnAttacks[c][s] |= to; + else + PseudoAttacks[pt][s] |= to; + } } - Square RookDeltas[] = { NORTH, EAST, SOUTH, WEST }; - Square BishopDeltas[] = { NORTH_EAST, SOUTH_EAST, SOUTH_WEST, NORTH_WEST }; + Direction RookDirections[] = { NORTH, EAST, SOUTH, WEST }; + Direction BishopDirections[] = { NORTH_EAST, SOUTH_EAST, SOUTH_WEST, NORTH_WEST }; - init_magics(RookTable, RookAttacks, RookMagics, RookMasks, RookShifts, RookDeltas, magic_index); - init_magics(BishopTable, BishopAttacks, BishopMagics, BishopMasks, BishopShifts, BishopDeltas, magic_index); + init_magics(RookTable, RookMagics, RookDirections); + init_magics(BishopTable, BishopMagics, BishopDirections); for (Square s1 = SQ_A1; s1 <= SQ_H8; ++s1) { PseudoAttacks[QUEEN][s1] = PseudoAttacks[BISHOP][s1] = attacks_bb(s1, 0); PseudoAttacks[QUEEN][s1] |= PseudoAttacks[ ROOK][s1] = attacks_bb< ROOK>(s1, 0); - for (Piece pc = W_BISHOP; pc <= W_ROOK; ++pc) + for (PieceType pt : { BISHOP, ROOK }) for (Square s2 = SQ_A1; s2 <= SQ_H8; ++s2) { - if (!(PseudoAttacks[pc][s1] & s2)) + if (!(PseudoAttacks[pt][s1] & s2)) continue; - LineBB[s1][s2] = (attacks_bb(pc, s1, 0) & attacks_bb(pc, s2, 0)) | s1 | s2; - BetweenBB[s1][s2] = attacks_bb(pc, s1, SquareBB[s2]) & attacks_bb(pc, s2, SquareBB[s1]); + LineBB[s1][s2] = (attacks_bb(pt, s1, 0) & attacks_bb(pt, s2, 0)) | s1 | s2; + BetweenBB[s1][s2] = attacks_bb(pt, s1, SquareBB[s2]) & attacks_bb(pt, s2, SquareBB[s1]); } } } @@ -231,14 +225,14 @@ void Bitboards::init() { namespace { - Bitboard sliding_attack(Square deltas[], Square sq, Bitboard occupied) { + Bitboard sliding_attack(Direction directions[], Square sq, Bitboard occupied) { Bitboard attack = 0; for (int i = 0; i < 4; ++i) - for (Square s = sq + deltas[i]; - is_ok(s) && distance(s, s - deltas[i]) == 1; - s += deltas[i]) + for (Square s = sq + directions[i]; + is_ok(s) && distance(s, s - directions[i]) == 1; + s += directions[i]) { attack |= s; @@ -255,17 +249,14 @@ namespace { // chessprogramming.wikispaces.com/Magic+Bitboards. In particular, here we // use the so called "fancy" approach. - void init_magics(Bitboard table[], Bitboard* attacks[], Bitboard magics[], - Bitboard masks[], unsigned shifts[], Square deltas[], Fn index) { + void init_magics(Bitboard table[], Magic magics[], Direction directions[]) { + // Optimal PRNG seeds to pick the correct magics in the shortest time int seeds[][RANK_NB] = { { 8977, 44560, 54343, 38998, 5731, 95205, 104912, 17020 }, { 728, 10316, 55013, 32803, 12281, 15100, 16645, 255 } }; Bitboard occupancy[4096], reference[4096], edges, b; - int age[4096] = {0}, current = 0, i, size; - - // attacks[s] is a pointer to the beginning of the attacks table for square 's' - attacks[SQ_A1] = table; + int epoch[4096] = {}, cnt = 0, size = 0; for (Square s = SQ_A1; s <= SQ_H8; ++s) { @@ -277,28 +268,28 @@ namespace { // all the attacks for each possible subset of the mask and so is 2 power // the number of 1s of the mask. Hence we deduce the size of the shift to // apply to the 64 or 32 bits word to get the index. - masks[s] = sliding_attack(deltas, s, 0) & ~edges; - shifts[s] = (Is64Bit ? 64 : 32) - popcount(masks[s]); + Magic& m = magics[s]; + m.mask = sliding_attack(directions, s, 0) & ~edges; + m.shift = (Is64Bit ? 64 : 32) - popcount(m.mask); + + // Set the offset for the attacks table of the square. We have individual + // table sizes for each square with "Fancy Magic Bitboards". + m.attacks = s == SQ_A1 ? table : magics[s - 1].attacks + size; // Use Carry-Rippler trick to enumerate all subsets of masks[s] and // store the corresponding sliding attack bitboard in reference[]. b = size = 0; do { occupancy[size] = b; - reference[size] = sliding_attack(deltas, s, b); + reference[size] = sliding_attack(directions, s, b); if (HasPext) - attacks[s][pext(b, masks[s])] = reference[size]; + m.attacks[pext(b, m.mask)] = reference[size]; size++; - b = (b - masks[s]) & masks[s]; + b = (b - m.mask) & m.mask; } while (b); - // Set the offset for the table of the next square. We have individual - // table sizes for each square with "Fancy Magic Bitboards". - if (s < SQ_H8) - attacks[s + 1] = attacks[s] + size; - if (HasPext) continue; @@ -306,28 +297,30 @@ namespace { // Find a magic for square 's' picking up an (almost) random number // until we find the one that passes the verification test. - do { - do - magics[s] = rng.sparse_rand(); - while (popcount((magics[s] * masks[s]) >> 56) < 6); + for (int i = 0; i < size; ) + { + for (m.magic = 0; popcount((m.magic * m.mask) >> 56) < 6; ) + m.magic = rng.sparse_rand(); // A good magic must map every possible occupancy to an index that // looks up the correct sliding attack in the attacks[s] database. // Note that we build up the database for square 's' as a side - // effect of verifying the magic. - for (++current, i = 0; i < size; ++i) + // effect of verifying the magic. Keep track of the attempt count + // and save it in epoch[], little speed-up trick to avoid resetting + // m.attacks[] after every failed attempt. + for (++cnt, i = 0; i < size; ++i) { - unsigned idx = index(s, occupancy[i]); + unsigned idx = m.index(occupancy[i]); - if (age[idx] < current) + if (epoch[idx] < cnt) { - age[idx] = current; - attacks[s][idx] = reference[i]; + epoch[idx] = cnt; + m.attacks[idx] = reference[i]; } - else if (attacks[s][idx] != reference[i]) + else if (m.attacks[idx] != reference[i]) break; } - } while (i < size); + } } } } diff --git a/Engines/Linux64/stockfish/src/bitboard.h b/Engines/Linux64/stockfish/src/bitboard.h index 715f6c4..c9f7242 100644 --- a/Engines/Linux64/stockfish/src/bitboard.h +++ b/Engines/Linux64/stockfish/src/bitboard.h @@ -2,7 +2,7 @@ Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad + Copyright (C) 2015-2018 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -39,6 +39,7 @@ const std::string pretty(Bitboard b); } +const Bitboard AllSquares = ~Bitboard(0); const Bitboard DarkSquares = 0xAA55AA55AA55AA55ULL; const Bitboard FileABB = 0x0101010101010101ULL; @@ -65,15 +66,41 @@ extern Bitboard SquareBB[SQUARE_NB]; extern Bitboard FileBB[FILE_NB]; extern Bitboard RankBB[RANK_NB]; extern Bitboard AdjacentFilesBB[FILE_NB]; -extern Bitboard InFrontBB[COLOR_NB][RANK_NB]; -extern Bitboard StepAttacksBB[PIECE_NB][SQUARE_NB]; +extern Bitboard ForwardRanksBB[COLOR_NB][RANK_NB]; extern Bitboard BetweenBB[SQUARE_NB][SQUARE_NB]; extern Bitboard LineBB[SQUARE_NB][SQUARE_NB]; extern Bitboard DistanceRingBB[SQUARE_NB][8]; -extern Bitboard ForwardBB[COLOR_NB][SQUARE_NB]; +extern Bitboard ForwardFileBB[COLOR_NB][SQUARE_NB]; extern Bitboard PassedPawnMask[COLOR_NB][SQUARE_NB]; extern Bitboard PawnAttackSpan[COLOR_NB][SQUARE_NB]; extern Bitboard PseudoAttacks[PIECE_TYPE_NB][SQUARE_NB]; +extern Bitboard PawnAttacks[COLOR_NB][SQUARE_NB]; + + +/// Magic holds all magic bitboards relevant data for a single square +struct Magic { + Bitboard mask; + Bitboard magic; + Bitboard* attacks; + unsigned shift; + + // Compute the attack's index using the 'magic bitboards' approach + unsigned index(Bitboard occupied) const { + + if (HasPext) + return unsigned(pext(occupied, mask)); + + if (Is64Bit) + return unsigned(((occupied & mask) * magic) >> shift); + + unsigned lo = unsigned(occupied) & unsigned(mask); + unsigned hi = unsigned(occupied >> 32) & unsigned(mask >> 32); + return (lo * unsigned(magic) ^ hi * unsigned(magic >> 32)) >> shift; + } +}; + +extern Magic RookMagics[SQUARE_NB]; +extern Magic BishopMagics[SQUARE_NB]; /// Overloads of bitwise operators between a Bitboard and a Square for testing @@ -99,11 +126,10 @@ inline Bitboard& operator^=(Bitboard& b, Square s) { return b ^= SquareBB[s]; } -inline bool more_than_one(Bitboard b) { +constexpr bool more_than_one(Bitboard b) { return b & (b - 1); } - /// rank_bb() and file_bb() return a bitboard representing all the squares on /// the given file or rank. @@ -126,8 +152,8 @@ inline Bitboard file_bb(Square s) { /// shift() moves a bitboard one step along direction D. Mainly for pawns -template -inline Bitboard shift(Bitboard b) { +template +constexpr Bitboard shift(Bitboard b) { return D == NORTH ? b << 8 : D == SOUTH ? b >> 8 : D == NORTH_EAST ? (b & ~FileHBB) << 9 : D == SOUTH_EAST ? (b & ~FileHBB) >> 7 : D == NORTH_WEST ? (b & ~FileABB) << 7 : D == SOUTH_WEST ? (b & ~FileABB) >> 9 @@ -153,28 +179,28 @@ inline Bitboard between_bb(Square s1, Square s2) { } -/// in_front_bb() returns a bitboard representing all the squares on all the ranks +/// forward_ranks_bb() returns a bitboard representing all the squares on all the ranks /// in front of the given one, from the point of view of the given color. For -/// instance, in_front_bb(BLACK, RANK_3) will return the squares on ranks 1 and 2. +/// instance, forward_ranks_bb(BLACK, SQ_D3) will return the 16 squares on ranks 1 and 2. -inline Bitboard in_front_bb(Color c, Rank r) { - return InFrontBB[c][r]; +inline Bitboard forward_ranks_bb(Color c, Square s) { + return ForwardRanksBB[c][rank_of(s)]; } -/// forward_bb() returns a bitboard representing all the squares along the line +/// forward_file_bb() returns a bitboard representing all the squares along the line /// in front of the given one, from the point of view of the given color: -/// ForwardBB[c][s] = in_front_bb(c, s) & file_bb(s) +/// ForwardFileBB[c][s] = forward_ranks_bb(c, s) & file_bb(s) -inline Bitboard forward_bb(Color c, Square s) { - return ForwardBB[c][s]; +inline Bitboard forward_file_bb(Color c, Square s) { + return ForwardFileBB[c][s]; } /// pawn_attack_span() returns a bitboard representing all the squares that can be /// attacked by a pawn of the given color when it moves along its file, starting /// from the given square: -/// PawnAttackSpan[c][s] = in_front_bb(c, s) & adjacent_files_bb(s); +/// PawnAttackSpan[c][s] = forward_ranks_bb(c, s) & adjacent_files_bb(file_of(s)); inline Bitboard pawn_attack_span(Color c, Square s) { return PawnAttackSpan[c][s]; @@ -183,7 +209,7 @@ inline Bitboard pawn_attack_span(Color c, Square s) { /// passed_pawn_mask() returns a bitboard mask which can be used to test if a /// pawn of the given color and on the given square is a passed pawn: -/// PassedPawnMask[c][s] = pawn_attack_span(c, s) | forward_bb(c, s) +/// PassedPawnMask[c][s] = pawn_attack_span(c, s) | forward_file_bb(c, s) inline Bitboard passed_pawn_mask(Color c, Square s) { return PassedPawnMask[c][s]; @@ -210,50 +236,25 @@ template<> inline int distance(Square x, Square y) { return distance(rank_ /// attacks_bb() returns a bitboard representing all the squares attacked by a -/// piece of type Pt (bishop or rook) placed on 's'. The helper magic_index() -/// looks up the index using the 'magic bitboards' approach. -template -inline unsigned magic_index(Square s, Bitboard occupied) { - - extern Bitboard RookMasks[SQUARE_NB]; - extern Bitboard RookMagics[SQUARE_NB]; - extern unsigned RookShifts[SQUARE_NB]; - extern Bitboard BishopMasks[SQUARE_NB]; - extern Bitboard BishopMagics[SQUARE_NB]; - extern unsigned BishopShifts[SQUARE_NB]; - - Bitboard* const Masks = Pt == ROOK ? RookMasks : BishopMasks; - Bitboard* const Magics = Pt == ROOK ? RookMagics : BishopMagics; - unsigned* const Shifts = Pt == ROOK ? RookShifts : BishopShifts; - - if (HasPext) - return unsigned(pext(occupied, Masks[s])); - - if (Is64Bit) - return unsigned(((occupied & Masks[s]) * Magics[s]) >> Shifts[s]); - - unsigned lo = unsigned(occupied) & unsigned(Masks[s]); - unsigned hi = unsigned(occupied >> 32) & unsigned(Masks[s] >> 32); - return (lo * unsigned(Magics[s]) ^ hi * unsigned(Magics[s] >> 32)) >> Shifts[s]; -} +/// piece of type Pt (bishop or rook) placed on 's'. template inline Bitboard attacks_bb(Square s, Bitboard occupied) { - extern Bitboard* RookAttacks[SQUARE_NB]; - extern Bitboard* BishopAttacks[SQUARE_NB]; - - return (Pt == ROOK ? RookAttacks : BishopAttacks)[s][magic_index(s, occupied)]; + const Magic& m = Pt == ROOK ? RookMagics[s] : BishopMagics[s]; + return m.attacks[m.index(occupied)]; } -inline Bitboard attacks_bb(Piece pc, Square s, Bitboard occupied) { +inline Bitboard attacks_bb(PieceType pt, Square s, Bitboard occupied) { + + assert(pt != PAWN); - switch (type_of(pc)) + switch (pt) { case BISHOP: return attacks_bb(s, occupied); - case ROOK : return attacks_bb(s, occupied); + case ROOK : return attacks_bb< ROOK>(s, occupied); case QUEEN : return attacks_bb(s, occupied) | attacks_bb(s, occupied); - default : return StepAttacksBB[pc][s]; + default : return PseudoAttacks[pt][s]; } } @@ -291,7 +292,7 @@ inline Square lsb(Bitboard b) { inline Square msb(Bitboard b) { assert(b); - return Square(63 - __builtin_clzll(b)); + return Square(63 ^ __builtin_clzll(b)); } #elif defined(_WIN64) && defined(_MSC_VER) diff --git a/Engines/Linux64/stockfish/src/endgame.cpp b/Engines/Linux64/stockfish/src/endgame.cpp index cbca34b..39db219 100644 --- a/Engines/Linux64/stockfish/src/endgame.cpp +++ b/Engines/Linux64/stockfish/src/endgame.cpp @@ -2,7 +2,7 @@ Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad + Copyright (C) 2015-2018 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -83,26 +83,6 @@ namespace { return sq; } - // Get the material key of Position out of the given endgame key code - // like "KBPKN". The trick here is to first forge an ad-hoc FEN string - // and then let a Position object do the work for us. - Key key(const string& code, Color c) { - - assert(code.length() > 0 && code.length() < 8); - assert(code[0] == 'K'); - - string sides[] = { code.substr(code.find('K', 1)), // Weak - code.substr(0, code.find('K', 1)) }; // Strong - - std::transform(sides[c].begin(), sides[c].end(), sides[c].begin(), tolower); - - string fen = sides[0] + char(8 - sides[0].length() + '0') + "/8/8/8/8/8/8/" - + sides[1] + char(8 - sides[1].length() + '0') + " w - - 0 10"; - - StateInfo st; - return Position().set(fen, false, &st, nullptr).material_key(); - } - } // namespace @@ -130,13 +110,6 @@ Endgames::Endgames() { } -template -void Endgames::add(const string& code) { - map()[key(code, WHITE)] = std::unique_ptr>(new Endgame(WHITE)); - map()[key(code, BLACK)] = std::unique_ptr>(new Endgame(BLACK)); -} - - /// Mate with KX vs K. This function is used to evaluate positions with /// king and plenty of material vs a lone king. It simply gives the /// attacking side a bonus for driving the defending king towards the edge @@ -162,8 +135,8 @@ Value Endgame::operator()(const Position& pos) const { if ( pos.count(strongSide) || pos.count(strongSide) ||(pos.count(strongSide) && pos.count(strongSide)) - ||(pos.count(strongSide) > 1 && opposite_colors(pos.squares(strongSide)[0], - pos.squares(strongSide)[1]))) + || ( (pos.pieces(strongSide, BISHOP) & ~DarkSquares) + && (pos.pieces(strongSide, BISHOP) & DarkSquares))) result = std::min(result + VALUE_KNOWN_WIN, VALUE_MATE_IN_MAX_PLY - 1); return strongSide == pos.side_to_move() ? result : -result; @@ -551,7 +524,7 @@ ScaleFactor Endgame::operator()(const Position& pos) const { Square bsq = pos.square(weakSide); Square psq = pos.square(strongSide); Rank rk = relative_rank(strongSide, psq); - Square push = pawn_push(strongSide); + Direction push = pawn_push(strongSide); // If the pawn is on the 5th rank and the pawn (currently) is on // the same color square as the bishop then there is a chance of @@ -625,7 +598,7 @@ ScaleFactor Endgame::operator()(const Position& pos) const { // If all pawns are ahead of the king, on a single rook file and // the king is within one file of the pawns, it's a draw. - if ( !(pawns & ~in_front_bb(weakSide, rank_of(ksq))) + if ( !(pawns & ~forward_ranks_bb(weakSide, ksq)) && !((pawns & ~FileABB) && (pawns & ~FileHBB)) && distance(ksq, lsb(pawns)) <= 1) return SCALE_FACTOR_DRAW; @@ -671,17 +644,15 @@ ScaleFactor Endgame::operator()(const Position& pos) const { if (relative_rank(strongSide, pawnSq) <= RANK_5) return SCALE_FACTOR_DRAW; - else - { - Bitboard path = forward_bb(strongSide, pawnSq); - if (path & pos.pieces(weakSide, KING)) - return SCALE_FACTOR_DRAW; + Bitboard path = forward_file_bb(strongSide, pawnSq); - if ( (pos.attacks_from(weakBishopSq) & path) - && distance(weakBishopSq, pawnSq) >= 3) - return SCALE_FACTOR_DRAW; - } + if (path & pos.pieces(weakSide, KING)) + return SCALE_FACTOR_DRAW; + + if ( (pos.attacks_from(weakBishopSq) & path) + && distance(weakBishopSq, pawnSq) >= 3) + return SCALE_FACTOR_DRAW; } return SCALE_FACTOR_NONE; } @@ -809,7 +780,7 @@ ScaleFactor Endgame::operator()(const Position& pos) const { // King needs to get close to promoting pawn to prevent knight from blocking. // Rules for this are very tricky, so just approximate. - if (forward_bb(strongSide, pawnSq) & pos.attacks_from(bishopSq)) + if (forward_file_bb(strongSide, pawnSq) & pos.attacks_from(bishopSq)) return ScaleFactor(distance(weakKingSq, pawnSq)); return SCALE_FACTOR_NONE; diff --git a/Engines/Linux64/stockfish/src/endgame.h b/Engines/Linux64/stockfish/src/endgame.h index 5f6b4bb..b5255a2 100644 --- a/Engines/Linux64/stockfish/src/endgame.h +++ b/Engines/Linux64/stockfish/src/endgame.h @@ -2,7 +2,7 @@ Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad + Copyright (C) 2015-2018 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -31,12 +31,11 @@ #include "types.h" -/// EndgameType lists all supported endgames +/// EndgameCode lists all supported endgame functions by corresponding codes -enum EndgameType { - - // Evaluation functions +enum EndgameCode { + EVALUATION_FUNCTIONS, KNNK, // KNN vs K KXK, // Generic "mate lone king" eval KBNK, // KBN vs K @@ -47,10 +46,7 @@ enum EndgameType { KQKP, // KQ vs KP KQKR, // KQ vs KR - - // Scaling functions SCALING_FUNCTIONS, - KBPsK, // KB and pawns vs K KQKRPs, // KQ vs KR and pawns KRPKR, // KRP vs KR @@ -68,30 +64,28 @@ enum EndgameType { /// Endgame functions can be of two types depending on whether they return a /// Value or a ScaleFactor. -template using +template using eg_type = typename std::conditional<(E < SCALING_FUNCTIONS), Value, ScaleFactor>::type; -/// Base and derived templates for endgame evaluation and scaling functions +/// Base and derived functors for endgame evaluation and scaling functions template struct EndgameBase { + explicit EndgameBase(Color c) : strongSide(c), weakSide(~c) {} virtual ~EndgameBase() = default; - virtual Color strong_side() const = 0; virtual T operator()(const Position&) const = 0; + + const Color strongSide, weakSide; }; -template> +template> struct Endgame : public EndgameBase { - explicit Endgame(Color c) : strongSide(c), weakSide(~c) {} - Color strong_side() const { return strongSide; } - T operator()(const Position&) const; - -private: - Color strongSide, weakSide; + explicit Endgame(Color c) : EndgameBase(c) {} + T operator()(const Position&) const override; }; @@ -101,16 +95,22 @@ struct Endgame : public EndgameBase { class Endgames { - template using Map = std::map>>; - - template> - void add(const std::string& code); + template using Ptr = std::unique_ptr>; + template using Map = std::map>; template Map& map() { return std::get::value>(maps); } + template, typename P = Ptr> + void add(const std::string& code) { + + StateInfo st; + map()[Position().set(code, WHITE, &st).material_key()] = P(new Endgame(WHITE)); + map()[Position().set(code, BLACK, &st).material_key()] = P(new Endgame(BLACK)); + } + std::pair, Map> maps; public: diff --git a/Engines/Linux64/stockfish/src/evaluate.cpp b/Engines/Linux64/stockfish/src/evaluate.cpp index 434ebd6..8d9dd6e 100644 --- a/Engines/Linux64/stockfish/src/evaluate.cpp +++ b/Engines/Linux64/stockfish/src/evaluate.cpp @@ -2,7 +2,7 @@ Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad + Copyright (C) 2015-2018 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -31,10 +31,21 @@ namespace { + const Bitboard Center = (FileDBB | FileEBB) & (Rank4BB | Rank5BB); + const Bitboard QueenSide = FileABB | FileBBB | FileCBB | FileDBB; + const Bitboard CenterFiles = FileCBB | FileDBB | FileEBB | FileFBB; + const Bitboard KingSide = FileEBB | FileFBB | FileGBB | FileHBB; + + const Bitboard KingFlank[FILE_NB] = { + QueenSide, QueenSide, QueenSide, CenterFiles, CenterFiles, KingSide, KingSide, KingSide + }; + namespace Trace { + enum Tracing {NO_TRACE, TRACE}; + enum Term { // The first 8 entries are for PieceType - MATERIAL = 8, IMBALANCE, MOBILITY, THREAT, PASSED, SPACE, TOTAL, TERM_NB + MATERIAL = 8, IMBALANCE, MOBILITY, THREAT, PASSED, SPACE, INITIATIVE, TOTAL, TERM_NB }; double scores[TERM_NB][COLOR_NB][PHASE_NB]; @@ -52,7 +63,7 @@ namespace { std::ostream& operator<<(std::ostream& os, Term t) { - if (t == MATERIAL || t == IMBALANCE || t == Term(PAWN) || t == TOTAL) + if (t == MATERIAL || t == IMBALANCE || t == Term(PAWN) || t == INITIATIVE || t == TOTAL) os << " --- --- | --- --- | "; else os << std::setw(5) << scores[t][WHITE][MG] << " " @@ -69,12 +80,40 @@ namespace { using namespace Trace; - // Struct EvalInfo contains various information computed and collected + // Evaluation class contains various information computed and collected // by the evaluation functions. - struct EvalInfo { + template + class Evaluation { + + public: + Evaluation() = delete; + Evaluation(const Position& p) : pos(p) {} + Evaluation& operator=(const Evaluation&) = delete; + + Value value(); + + private: + // Evaluation helpers (used when calling value()) + template void initialize(); + template Score evaluate_king(); + template Score evaluate_threats(); + int king_distance(Color c, Square s); + template Score evaluate_passed_pawns(); + template Score evaluate_space(); + template Score evaluate_pieces(); + ScaleFactor evaluate_scale_factor(Value eg); + Score evaluate_initiative(Value eg); + + // Data members + const Position& pos; + Material::Entry* me; + Pawns::Entry* pe; + Bitboard mobilityArea[COLOR_NB]; + Score mobility[COLOR_NB] = { SCORE_ZERO, SCORE_ZERO }; // attackedBy[color][piece type] is a bitboard representing all squares - // attacked by a given color and piece type (can be also ALL_PIECES). + // attacked by a given color and piece type. Special "piece types" which are + // also calculated are QUEEN_DIAGONAL and ALL_PIECES. Bitboard attackedBy[COLOR_NB][PIECE_TYPE_NB]; // attackedBy2[color] are the squares attacked by 2 pieces of a given color, @@ -84,7 +123,7 @@ namespace { // kingRing[color] is the zone around the king which is considered // by the king safety evaluation. This consists of the squares directly - // adjacent to the king, and the three (or two, for a king on an edge file) + // adjacent to the king, and (only for a king on its first rank) the // squares two ranks in front of the king. For instance, if black's king // is on g8, kingRing[BLACK] is a bitboard containing the squares f8, h8, // f7, g7, h7, f6, g6 and h6. @@ -106,105 +145,93 @@ namespace { // a white knight on g5 and black's king is on g8, this white knight adds 2 // to kingAdjacentZoneAttacksCount[WHITE]. int kingAdjacentZoneAttacksCount[COLOR_NB]; - - Bitboard pinnedPieces[COLOR_NB]; - Material::Entry* me; - Pawns::Entry* pi; }; #define V(v) Value(v) #define S(mg, eg) make_score(mg, eg) - // MobilityBonus[PieceType][attacked] contains bonuses for middle and end - // game, indexed by piece type and number of attacked squares in the MobilityArea. + // MobilityBonus[PieceType-2][attacked] contains bonuses for middle and end game, + // indexed by piece type and number of attacked squares in the mobility area. const Score MobilityBonus[][32] = { - {}, {}, - { S(-75,-76), S(-56,-54), S( -9,-26), S( -2,-10), S( 6, 5), S( 15, 11), // Knights - S( 22, 26), S( 30, 28), S( 36, 29) }, - { S(-48,-58), S(-21,-19), S( 16, -2), S( 26, 12), S( 37, 22), S( 51, 42), // Bishops - S( 54, 54), S( 63, 58), S( 65, 63), S( 71, 70), S( 79, 74), S( 81, 86), - S( 92, 90), S( 97, 94) }, - { S(-56,-78), S(-25,-18), S(-11, 26), S( -5, 55), S( -4, 70), S( -1, 81), // Rooks - S( 8,109), S( 14,120), S( 21,128), S( 23,143), S( 31,154), S( 32,160), - S( 43,165), S( 49,168), S( 59,169) }, - { S(-40,-35), S(-25,-12), S( 2, 7), S( 4, 19), S( 14, 37), S( 24, 55), // Queens - S( 25, 62), S( 40, 76), S( 43, 79), S( 47, 87), S( 54, 94), S( 56,102), - S( 60,111), S( 70,116), S( 72,118), S( 73,122), S( 75,128), S( 77,130), - S( 85,133), S( 94,136), S( 99,140), S(108,157), S(112,158), S(113,161), - S(118,174), S(119,177), S(123,191), S(128,199) } + { S(-75,-76), S(-57,-54), S( -9,-28), S( -2,-10), S( 6, 5), S( 14, 12), // Knights + S( 22, 26), S( 29, 29), S( 36, 29) }, + { S(-48,-59), S(-20,-23), S( 16, -3), S( 26, 13), S( 38, 24), S( 51, 42), // Bishops + S( 55, 54), S( 63, 57), S( 63, 65), S( 68, 73), S( 81, 78), S( 81, 86), + S( 91, 88), S( 98, 97) }, + { S(-58,-76), S(-27,-18), S(-15, 28), S(-10, 55), S( -5, 69), S( -2, 82), // Rooks + S( 9,112), S( 16,118), S( 30,132), S( 29,142), S( 32,155), S( 38,165), + S( 46,166), S( 48,169), S( 58,171) }, + { S(-39,-36), S(-21,-15), S( 3, 8), S( 3, 18), S( 14, 34), S( 22, 54), // Queens + S( 28, 61), S( 41, 73), S( 43, 79), S( 48, 92), S( 56, 94), S( 60,104), + S( 60,113), S( 66,120), S( 67,123), S( 70,126), S( 71,133), S( 73,136), + S( 79,140), S( 88,143), S( 88,148), S( 99,166), S(102,170), S(102,175), + S(106,184), S(109,191), S(113,206), S(116,212) } }; - // Outpost[knight/bishop][supported by pawn] contains bonuses for knights and - // bishops outposts, bigger if outpost piece is supported by a pawn. + // Outpost[knight/bishop][supported by pawn] contains bonuses for minor + // pieces if they can reach an outpost square, bigger if that square is + // supported by a pawn. If the minor piece occupies an outpost square + // then score is doubled. const Score Outpost[][2] = { - { S(43,11), S(65,20) }, // Knights - { S(20, 3), S(29, 8) } // Bishops - }; - - // ReachableOutpost[knight/bishop][supported by pawn] contains bonuses for - // knights and bishops which can reach an outpost square in one move, bigger - // if outpost square is supported by a pawn. - const Score ReachableOutpost[][2] = { - { S(21, 5), S(35, 8) }, // Knights - { S( 8, 0), S(14, 4) } // Bishops + { S(22, 6), S(36,12) }, // Knight + { S( 9, 2), S(15, 5) } // Bishop }; // RookOnFile[semiopen/open] contains bonuses for each rook when there is no // friendly pawn on the rook file. - const Score RookOnFile[2] = { S(20, 7), S(45, 20) }; + const Score RookOnFile[] = { S(20, 7), S(45, 20) }; - // ThreatBySafePawn[PieceType] contains bonuses according to which piece - // type is attacked by a pawn which is protected or is not attacked. - const Score ThreatBySafePawn[PIECE_TYPE_NB] = { - S(0, 0), S(0, 0), S(176, 139), S(131, 127), S(217, 218), S(203, 215) + // ThreatByMinor/ByRook[attacked PieceType] contains bonuses according to + // which piece type attacks which one. Attacks on lesser pieces which are + // pawn-defended are not considered. + const Score ThreatByMinor[PIECE_TYPE_NB] = { + S(0, 0), S(0, 33), S(45, 43), S(46, 47), S(72, 107), S(48, 118) }; - // Threat[by minor/by rook][attacked PieceType] contains - // bonuses according to which piece type attacks which one. - // Attacks on lesser pieces which are pawn-defended are not considered. - const Score Threat[][PIECE_TYPE_NB] = { - { S(0, 0), S(0, 33), S(45, 43), S(46, 47), S(72,107), S(48,118) }, // by Minor - { S(0, 0), S(0, 25), S(40, 62), S(40, 59), S( 0, 34), S(35, 48) } // by Rook + const Score ThreatByRook[PIECE_TYPE_NB] = { + S(0, 0), S(0, 25), S(40, 62), S(40, 59), S(0, 34), S(35, 48) }; - // ThreatByKing[on one/on many] contains bonuses for King attacks on + // ThreatByKing[on one/on many] contains bonuses for king attacks on // pawns or pieces which are not pawn-defended. - const Score ThreatByKing[2] = { S(3, 62), S(9, 138) }; + const Score ThreatByKing[] = { S(3, 62), S(9, 138) }; // Passed[mg/eg][Rank] contains midgame and endgame bonuses for passed pawns. // We don't use a Score because we process the two components independently. const Value Passed[][RANK_NB] = { - { V(5), V( 5), V(31), V(73), V(166), V(252) }, - { V(7), V(14), V(38), V(73), V(166), V(252) } + { V(0), V(5), V( 5), V(31), V(73), V(166), V(252) }, + { V(0), V(7), V(14), V(38), V(73), V(166), V(252) } }; // PassedFile[File] contains a bonus according to the file of a passed pawn const Score PassedFile[FILE_NB] = { S( 9, 10), S( 2, 10), S( 1, -8), S(-20,-12), - S(-20,-12), S( 1, -8), S( 2, 10), S( 9, 10) + S(-20,-12), S( 1, -8), S( 2, 10), S( 9, 10) }; + // Rank factor applied on some bonus for passed pawn on rank 4 or beyond + const int RankFactor[RANK_NB] = {0, 0, 0, 2, 6, 11, 16}; + + // KingProtector[PieceType-2] contains a bonus according to distance from king + const Score KingProtector[] = { S(-3, -5), S(-4, -3), S(-3, 0), S(-1, 1) }; + // Assorted bonuses and penalties used by evaluation - const Score MinorBehindPawn = S(16, 0); - const Score BishopPawns = S( 8, 12); - const Score RookOnPawn = S( 8, 24); - const Score TrappedRook = S(92, 0); - const Score CloseEnemies = S( 7, 0); - const Score SafeCheck = S(20, 20); - const Score OtherCheck = S(10, 10); - const Score ThreatByHangingPawn = S(71, 61); - const Score LooseEnemies = S( 0, 25); - const Score WeakQueen = S(35, 0); - const Score Hanging = S(48, 27); - const Score ThreatByPawnPush = S(38, 22); - const Score Unstoppable = S( 0, 20); - const Score PawnlessFlank = S(20, 80); - const Score HinderPassedPawn = S( 7, 0); - - // Penalty for a bishop on a1/h1 (a8/h8 for black) which is trapped by - // a friendly pawn on b2/g2 (b7/g7 for black). This can obviously only - // happen in Chess960 games. - const Score TrappedBishopA1H1 = S(50, 50); + const Score MinorBehindPawn = S( 16, 0); + const Score BishopPawns = S( 8, 12); + const Score LongRangedBishop = S( 22, 0); + const Score RookOnPawn = S( 8, 24); + const Score TrappedRook = S( 92, 0); + const Score WeakQueen = S( 50, 10); + const Score CloseEnemies = S( 7, 0); + const Score PawnlessFlank = S( 20, 80); + const Score ThreatBySafePawn = S(192,175); + const Score ThreatByRank = S( 16, 3); + const Score Hanging = S( 48, 27); + const Score WeakUnopposedPawn = S( 5, 25); + const Score ThreatByPawnPush = S( 38, 22); + const Score ThreatByAttackOnQueen = S( 38, 22); + const Score HinderPassedPawn = S( 7, 0); + const Score TrappedBishopA1H1 = S( 50, 50); #undef S #undef V @@ -213,99 +240,117 @@ namespace { const int KingAttackWeights[PIECE_TYPE_NB] = { 0, 0, 78, 56, 45, 11 }; // Penalties for enemy's safe checks - const int QueenContactCheck = 997; - const int QueenCheck = 695; - const int RookCheck = 638; - const int BishopCheck = 538; - const int KnightCheck = 874; + const int QueenSafeCheck = 780; + const int RookSafeCheck = 880; + const int BishopSafeCheck = 435; + const int KnightSafeCheck = 790; + + // Threshold for lazy and space evaluation + const Value LazyThreshold = Value(1500); + const Value SpaceThreshold = Value(12222); + + + // initialize() computes king and pawn attacks, and the king ring bitboard + // for a given color. This is done at the beginning of the evaluation. + template template + void Evaluation::initialize() { - // eval_init() initializes king and attack bitboards for a given color - // adding pawn attacks. To be done at the beginning of the evaluation. + const Color Them = (Us == WHITE ? BLACK : WHITE); + const Direction Up = (Us == WHITE ? NORTH : SOUTH); + const Direction Down = (Us == WHITE ? SOUTH : NORTH); + const Bitboard LowRanks = (Us == WHITE ? Rank2BB | Rank3BB: Rank7BB | Rank6BB); - template - void eval_init(const Position& pos, EvalInfo& ei) { + // Find our pawns on the first two ranks, and those which are blocked + Bitboard b = pos.pieces(Us, PAWN) & (shift(pos.pieces()) | LowRanks); - const Color Them = (Us == WHITE ? BLACK : WHITE); - const Square Down = (Us == WHITE ? SOUTH : NORTH); + // Squares occupied by those pawns, by our king, or controlled by enemy pawns + // are excluded from the mobility area. + mobilityArea[Us] = ~(b | pos.square(Us) | pe->pawn_attacks(Them)); - ei.pinnedPieces[Us] = pos.pinned_pieces(Us); - Bitboard b = ei.attackedBy[Them][KING]; - ei.attackedBy[Them][ALL_PIECES] |= b; - ei.attackedBy[Us][ALL_PIECES] |= ei.attackedBy[Us][PAWN] = ei.pi->pawn_attacks(Us); - ei.attackedBy2[Us] = ei.attackedBy[Us][PAWN] & ei.attackedBy[Us][KING]; + // Initialise the attack bitboards with the king and pawn information + b = attackedBy[Us][KING] = pos.attacks_from(pos.square(Us)); + attackedBy[Us][PAWN] = pe->pawn_attacks(Us); - // Init king safety tables only if we are going to use them - if (pos.non_pawn_material(Us) >= QueenValueMg) + attackedBy2[Us] = b & attackedBy[Us][PAWN]; + attackedBy[Us][ALL_PIECES] = b | attackedBy[Us][PAWN]; + + // Init our king safety tables only if we are going to use them + if (pos.non_pawn_material(Them) >= RookValueMg + KnightValueMg) { - ei.kingRing[Them] = b | shift(b); - b &= ei.attackedBy[Us][PAWN]; - ei.kingAttackersCount[Us] = popcount(b); - ei.kingAdjacentZoneAttacksCount[Us] = ei.kingAttackersWeight[Us] = 0; + kingRing[Us] = b; + if (relative_rank(Us, pos.square(Us)) == RANK_1) + kingRing[Us] |= shift(b); + + kingAttackersCount[Them] = popcount(b & pe->pawn_attacks(Them)); + kingAdjacentZoneAttacksCount[Them] = kingAttackersWeight[Them] = 0; } else - ei.kingRing[Them] = ei.kingAttackersCount[Us] = 0; + kingRing[Us] = kingAttackersCount[Them] = 0; } // evaluate_pieces() assigns bonuses and penalties to the pieces of a given // color and type. - template - Score evaluate_pieces(const Position& pos, EvalInfo& ei, Score* mobility, - const Bitboard* mobilityArea) { - Bitboard b, bb; - Square s; - Score score = SCORE_ZERO; + template template + Score Evaluation::evaluate_pieces() { - const PieceType NextPt = (Us == WHITE ? Pt : PieceType(Pt + 1)); const Color Them = (Us == WHITE ? BLACK : WHITE); const Bitboard OutpostRanks = (Us == WHITE ? Rank4BB | Rank5BB | Rank6BB : Rank5BB | Rank4BB | Rank3BB); const Square* pl = pos.squares(Us); - ei.attackedBy[Us][Pt] = 0; + Bitboard b, bb; + Square s; + Score score = SCORE_ZERO; + + attackedBy[Us][Pt] = 0; + + if (Pt == QUEEN) + attackedBy[Us][QUEEN_DIAGONAL] = 0; while ((s = *pl++) != SQ_NONE) { // Find attacked squares, including x-ray attacks for bishops and rooks - b = Pt == BISHOP ? attacks_bb(s, pos.pieces() ^ pos.pieces(Us, QUEEN)) - : Pt == ROOK ? attacks_bb< ROOK>(s, pos.pieces() ^ pos.pieces(Us, ROOK, QUEEN)) + b = Pt == BISHOP ? attacks_bb(s, pos.pieces() ^ pos.pieces(QUEEN)) + : Pt == ROOK ? attacks_bb< ROOK>(s, pos.pieces() ^ pos.pieces(QUEEN) ^ pos.pieces(Us, ROOK)) : pos.attacks_from(s); - if (ei.pinnedPieces[Us] & s) + if (pos.pinned_pieces(Us) & s) b &= LineBB[pos.square(Us)][s]; - ei.attackedBy2[Us] |= ei.attackedBy[Us][ALL_PIECES] & b; - ei.attackedBy[Us][ALL_PIECES] |= ei.attackedBy[Us][Pt] |= b; + attackedBy2[Us] |= attackedBy[Us][ALL_PIECES] & b; + attackedBy[Us][ALL_PIECES] |= attackedBy[Us][Pt] |= b; - if (b & ei.kingRing[Them]) + if (Pt == QUEEN) + attackedBy[Us][QUEEN_DIAGONAL] |= b & PseudoAttacks[BISHOP][s]; + + if (b & kingRing[Them]) { - ei.kingAttackersCount[Us]++; - ei.kingAttackersWeight[Us] += KingAttackWeights[Pt]; - ei.kingAdjacentZoneAttacksCount[Us] += popcount(b & ei.attackedBy[Them][KING]); + kingAttackersCount[Us]++; + kingAttackersWeight[Us] += KingAttackWeights[Pt]; + kingAdjacentZoneAttacksCount[Us] += popcount(b & attackedBy[Them][KING]); } - if (Pt == QUEEN) - b &= ~( ei.attackedBy[Them][KNIGHT] - | ei.attackedBy[Them][BISHOP] - | ei.attackedBy[Them][ROOK]); - int mob = popcount(b & mobilityArea[Us]); - mobility[Us] += MobilityBonus[Pt][mob]; + mobility[Us] += MobilityBonus[Pt - 2][mob]; + + // Bonus for this piece as a king protector + score += KingProtector[Pt - 2] * distance(s, pos.square(Us)); if (Pt == BISHOP || Pt == KNIGHT) { // Bonus for outpost squares - bb = OutpostRanks & ~ei.pi->pawn_attacks_span(Them); + bb = OutpostRanks & ~pe->pawn_attacks_span(Them); if (bb & s) - score += Outpost[Pt == BISHOP][!!(ei.attackedBy[Us][PAWN] & s)]; + score += Outpost[Pt == BISHOP][bool(attackedBy[Us][PAWN] & s)] * 2; else { bb &= b & ~pos.pieces(Us); if (bb) - score += ReachableOutpost[Pt == BISHOP][!!(ei.attackedBy[Us][PAWN] & bb)]; + score += Outpost[Pt == BISHOP][bool(attackedBy[Us][PAWN] & bb)]; } // Bonus when behind a pawn @@ -313,9 +358,15 @@ namespace { && (pos.pieces(PAWN) & (s + pawn_push(Us)))) score += MinorBehindPawn; - // Penalty for pawns on the same color square as the bishop if (Pt == BISHOP) - score -= BishopPawns * ei.pi->pawns_on_same_color_squares(Us, s); + { + // Penalty for pawns on the same color square as the bishop + score -= BishopPawns * pe->pawns_on_same_color_squares(Us, s); + + // Bonus for bishop on a long diagonal which can "see" both center squares + if (more_than_one(Center & (attacks_bb(s, pos.pieces(PAWN)) | s))) + score += LongRangedBishop; + } // An important Chess960 pattern: A cornered bishop blocked by a friendly // pawn diagonally in front of it is a very serious problem, especially @@ -324,7 +375,7 @@ namespace { && pos.is_chess960() && (s == relative_square(Us, SQ_A1) || s == relative_square(Us, SQ_H1))) { - Square d = pawn_push(Us) + (file_of(s) == FILE_A ? EAST : WEST); + Direction d = pawn_push(Us) + (file_of(s) == FILE_A ? EAST : WEST); if (pos.piece_on(s + d) == make_piece(Us, PAWN)) score -= !pos.empty(s + d + pawn_push(Us)) ? TrappedBishopA1H1 * 4 : pos.piece_on(s + d + d) == make_piece(Us, PAWN) ? TrappedBishopA1H1 * 2 @@ -339,17 +390,16 @@ namespace { score += RookOnPawn * popcount(pos.pieces(Them, PAWN) & PseudoAttacks[ROOK][s]); // Bonus when on an open or semi-open file - if (ei.pi->semiopen_file(Us, file_of(s))) - score += RookOnFile[!!ei.pi->semiopen_file(Them, file_of(s))]; + if (pe->semiopen_file(Us, file_of(s))) + score += RookOnFile[bool(pe->semiopen_file(Them, file_of(s)))]; - // Penalize when trapped by the king, even more if the king cannot castle + // Penalty when trapped by the king, even more if the king cannot castle else if (mob <= 3) { Square ksq = pos.square(Us); if ( ((file_of(ksq) < FILE_E) == (file_of(s) < file_of(ksq))) - && (rank_of(ksq) == rank_of(s) || relative_rank(Us, ksq) == RANK_1) - && !ei.pi->semiopen_side(Us, file_of(ksq), file_of(s) < file_of(ksq))) + && !pe->semiopen_side(Us, file_of(ksq), file_of(s) < file_of(ksq))) score -= (TrappedRook - make_score(mob * 22, 0)) * (1 + !pos.can_castle(Us)); } } @@ -363,129 +413,95 @@ namespace { } } - if (DoTrace) + if (T) Trace::add(Pt, Us, score); - // Recursively call evaluate_pieces() of next piece type until KING is excluded - return score - evaluate_pieces(pos, ei, mobility, mobilityArea); + return score; } - template<> - Score evaluate_pieces(const Position&, EvalInfo&, Score*, const Bitboard*) { return SCORE_ZERO; } - template<> - Score evaluate_pieces< true, WHITE, KING>(const Position&, EvalInfo&, Score*, const Bitboard*) { return SCORE_ZERO; } - // evaluate_king() assigns bonuses and penalties to a king of a given color - const Bitboard WhiteCamp = Rank1BB | Rank2BB | Rank3BB | Rank4BB | Rank5BB; - const Bitboard BlackCamp = Rank8BB | Rank7BB | Rank6BB | Rank5BB | Rank4BB; - const Bitboard QueenSide = FileABB | FileBBB | FileCBB | FileDBB; - const Bitboard CenterFiles = FileCBB | FileDBB | FileEBB | FileFBB; - const Bitboard KingSide = FileEBB | FileFBB | FileGBB | FileHBB; - - const Bitboard KingFlank[COLOR_NB][FILE_NB] = { - { QueenSide & WhiteCamp, QueenSide & WhiteCamp, QueenSide & WhiteCamp, CenterFiles & WhiteCamp, - CenterFiles & WhiteCamp, KingSide & WhiteCamp, KingSide & WhiteCamp, KingSide & WhiteCamp }, - { QueenSide & BlackCamp, QueenSide & BlackCamp, QueenSide & BlackCamp, CenterFiles & BlackCamp, - CenterFiles & BlackCamp, KingSide & BlackCamp, KingSide & BlackCamp, KingSide & BlackCamp }, - }; - - template - Score evaluate_king(const Position& pos, const EvalInfo& ei) { + template template + Score Evaluation::evaluate_king() { - const Color Them = (Us == WHITE ? BLACK : WHITE); - const Square Up = (Us == WHITE ? NORTH : SOUTH); + const Color Them = (Us == WHITE ? BLACK : WHITE); + const Bitboard Camp = (Us == WHITE ? AllSquares ^ Rank6BB ^ Rank7BB ^ Rank8BB + : AllSquares ^ Rank1BB ^ Rank2BB ^ Rank3BB); - Bitboard undefended, b, b1, b2, safe, other; - int kingDanger; const Square ksq = pos.square(Us); + Bitboard weak, b, b1, b2, safe, unsafeChecks; // King shelter and enemy pawns storm - Score score = ei.pi->king_safety(pos, ksq); + Score score = pe->king_safety(pos, ksq); // Main king safety evaluation - if (ei.kingAttackersCount[Them]) + if (kingAttackersCount[Them] > (1 - pos.count(Them))) { - // Find the attacked squares which are defended only by the king... - undefended = ei.attackedBy[Them][ALL_PIECES] - & ei.attackedBy[Us][KING] - & ~ei.attackedBy2[Us]; - - // ... and those which are not defended at all in the larger king ring - b = ei.attackedBy[Them][ALL_PIECES] & ~ei.attackedBy[Us][ALL_PIECES] - & ei.kingRing[Us] & ~pos.pieces(Them); - - // Initialize the 'kingDanger' variable, which will be transformed - // later into a king danger score. The initial value is based on the - // number and types of the enemy's attacking pieces, the number of - // attacked and undefended squares around our king and the quality of - // the pawn shelter (current 'score' value). - kingDanger = std::min(807, ei.kingAttackersCount[Them] * ei.kingAttackersWeight[Them]) - + 101 * ei.kingAdjacentZoneAttacksCount[Them] - + 235 * popcount(undefended) - + 134 * (popcount(b) + !!ei.pinnedPieces[Us]) - - 717 * !pos.count(Them) - - 7 * mg_value(score) / 5 - 5; - - // Analyse the enemy's safe queen contact checks. Firstly, find the - // undefended squares around the king reachable by the enemy queen... - b = undefended & ei.attackedBy[Them][QUEEN] & ~pos.pieces(Them); - - // ...and keep squares supported by another enemy piece - kingDanger += QueenContactCheck * popcount(b & ei.attackedBy2[Them]); - - // Analyse the safe enemy's checks which are possible on next move... - safe = ~(ei.attackedBy[Us][ALL_PIECES] | pos.pieces(Them)); - - // ... and some other potential checks, only requiring the square to be - // safe from pawn-attacks, and not being occupied by a blocked pawn. - other = ~( ei.attackedBy[Us][PAWN] - | (pos.pieces(Them, PAWN) & shift(pos.pieces(PAWN)))); - - b1 = pos.attacks_from(ksq); - b2 = pos.attacks_from(ksq); - - // Enemy queen safe checks - if ((b1 | b2) & ei.attackedBy[Them][QUEEN] & safe) - kingDanger += QueenCheck, score -= SafeCheck; + // Attacked squares defended at most once by our queen or king + weak = attackedBy[Them][ALL_PIECES] + & ~attackedBy2[Us] + & (attackedBy[Us][KING] | attackedBy[Us][QUEEN] | ~attackedBy[Us][ALL_PIECES]); - // For other pieces, also consider the square safe if attacked twice, - // and only defended by a queen. - safe |= ei.attackedBy2[Them] - & ~(ei.attackedBy2[Us] | pos.pieces(Them)) - & ei.attackedBy[Us][QUEEN]; + int kingDanger = unsafeChecks = 0; - // Enemy rooks safe and other checks - if (b1 & ei.attackedBy[Them][ROOK] & safe) - kingDanger += RookCheck, score -= SafeCheck; + // Analyse the safe enemy's checks which are possible on next move + safe = ~pos.pieces(Them); + safe &= ~attackedBy[Us][ALL_PIECES] | (weak & attackedBy2[Them]); - else if (b1 & ei.attackedBy[Them][ROOK] & other) - score -= OtherCheck; + b1 = attacks_bb(ksq, pos.pieces() ^ pos.pieces(Us, QUEEN)); + b2 = attacks_bb(ksq, pos.pieces() ^ pos.pieces(Us, QUEEN)); - // Enemy bishops safe and other checks - if (b2 & ei.attackedBy[Them][BISHOP] & safe) - kingDanger += BishopCheck, score -= SafeCheck; - - else if (b2 & ei.attackedBy[Them][BISHOP] & other) - score -= OtherCheck; - - // Enemy knights safe and other checks - b = pos.attacks_from(ksq) & ei.attackedBy[Them][KNIGHT]; + // Enemy queen safe checks + if ((b1 | b2) & attackedBy[Them][QUEEN] & safe & ~attackedBy[Us][QUEEN]) + kingDanger += QueenSafeCheck; + + b1 &= attackedBy[Them][ROOK]; + b2 &= attackedBy[Them][BISHOP]; + + // Enemy rooks checks + if (b1 & safe) + kingDanger += RookSafeCheck; + else + unsafeChecks |= b1; + + // Enemy bishops checks + if (b2 & safe) + kingDanger += BishopSafeCheck; + else + unsafeChecks |= b2; + + // Enemy knights checks + b = pos.attacks_from(ksq) & attackedBy[Them][KNIGHT]; if (b & safe) - kingDanger += KnightCheck, score -= SafeCheck; - - else if (b & other) - score -= OtherCheck; - - // Compute the king danger score and subtract it from the evaluation + kingDanger += KnightSafeCheck; + else + unsafeChecks |= b; + + // Unsafe or occupied checking squares will also be considered, as long as + // the square is in the attacker's mobility area. + unsafeChecks &= mobilityArea[Them]; + + kingDanger += kingAttackersCount[Them] * kingAttackersWeight[Them] + + 102 * kingAdjacentZoneAttacksCount[Them] + + 191 * popcount(kingRing[Us] & weak) + + 143 * popcount(pos.pinned_pieces(Us) | unsafeChecks) + - 848 * !pos.count(Them) + - 9 * mg_value(score) / 8 + + 40; + + // Transform the kingDanger units into a Score, and subtract it from the evaluation if (kingDanger > 0) - score -= make_score(std::min(kingDanger * kingDanger / 4096, 2 * int(BishopValueMg)), 0); + { + int mobilityDanger = mg_value(mobility[Them] - mobility[Us]); + kingDanger = std::max(0, kingDanger + mobilityDanger); + score -= make_score(kingDanger * kingDanger / 4096, kingDanger / 16); + } } // King tropism: firstly, find squares that opponent attacks in our king flank File kf = file_of(ksq); - b = ei.attackedBy[Them][ALL_PIECES] & KingFlank[Us][kf]; + b = attackedBy[Them][ALL_PIECES] & KingFlank[kf] & Camp; assert(((Us == WHITE ? b << 4 : b >> 4) & b) == 0); assert(popcount(Us == WHITE ? b << 4 : b >> 4) == popcount(b)); @@ -493,15 +509,15 @@ namespace { // Secondly, add the squares which are attacked twice in that flank and // which are not defended by our pawns. b = (Us == WHITE ? b << 4 : b >> 4) - | (b & ei.attackedBy2[Them] & ~ei.attackedBy[Us][PAWN]); + | (b & attackedBy2[Them] & ~attackedBy[Us][PAWN]); score -= CloseEnemies * popcount(b); // Penalty when our king is on a pawnless flank - if (!(pos.pieces(PAWN) & (KingFlank[WHITE][kf] | KingFlank[BLACK][kf]))) + if (!(pos.pieces(PAWN) & KingFlank[kf])) score -= PawnlessFlank; - if (DoTrace) + if (T) Trace::add(KING, Us, score); return score; @@ -511,128 +527,149 @@ namespace { // evaluate_threats() assigns bonuses according to the types of the attacking // and the attacked pieces. - template - Score evaluate_threats(const Position& pos, const EvalInfo& ei) { - - const Color Them = (Us == WHITE ? BLACK : WHITE); - const Square Up = (Us == WHITE ? NORTH : SOUTH); - const Square Left = (Us == WHITE ? NORTH_WEST : SOUTH_EAST); - const Square Right = (Us == WHITE ? NORTH_EAST : SOUTH_WEST); - const Bitboard TRank2BB = (Us == WHITE ? Rank2BB : Rank7BB); - const Bitboard TRank7BB = (Us == WHITE ? Rank7BB : Rank2BB); + template template + Score Evaluation::evaluate_threats() { - enum { Minor, Rook }; + const Color Them = (Us == WHITE ? BLACK : WHITE); + const Direction Up = (Us == WHITE ? NORTH : SOUTH); + const Direction Left = (Us == WHITE ? NORTH_WEST : SOUTH_EAST); + const Direction Right = (Us == WHITE ? NORTH_EAST : SOUTH_WEST); + const Bitboard TRank3BB = (Us == WHITE ? Rank3BB : Rank6BB); - Bitboard b, weak, defended, safeThreats; + Bitboard b, weak, defended, stronglyProtected, safeThreats; Score score = SCORE_ZERO; - // Small bonus if the opponent has loose pawns or pieces - if ( (pos.pieces(Them) ^ pos.pieces(Them, QUEEN, KING)) - & ~(ei.attackedBy[Us][ALL_PIECES] | ei.attackedBy[Them][ALL_PIECES])) - score += LooseEnemies; - // Non-pawn enemies attacked by a pawn - weak = (pos.pieces(Them) ^ pos.pieces(Them, PAWN)) & ei.attackedBy[Us][PAWN]; + weak = (pos.pieces(Them) ^ pos.pieces(Them, PAWN)) & attackedBy[Us][PAWN]; if (weak) { - b = pos.pieces(Us, PAWN) & ( ~ei.attackedBy[Them][ALL_PIECES] - | ei.attackedBy[Us][ALL_PIECES]); + b = pos.pieces(Us, PAWN) & ( ~attackedBy[Them][ALL_PIECES] + | attackedBy[Us][ALL_PIECES]); safeThreats = (shift(b) | shift(b)) & weak; - if (weak ^ safeThreats) - score += ThreatByHangingPawn; - - while (safeThreats) - score += ThreatBySafePawn[type_of(pos.piece_on(pop_lsb(&safeThreats)))]; + score += ThreatBySafePawn * popcount(safeThreats); } - // Non-pawn enemies defended by a pawn - defended = (pos.pieces(Them) ^ pos.pieces(Them, PAWN)) & ei.attackedBy[Them][PAWN]; + // Squares strongly protected by the opponent, either because they attack the + // square with a pawn, or because they attack the square twice and we don't. + stronglyProtected = attackedBy[Them][PAWN] + | (attackedBy2[Them] & ~attackedBy2[Us]); + + // Non-pawn enemies, strongly protected + defended = (pos.pieces(Them) ^ pos.pieces(Them, PAWN)) + & stronglyProtected; - // Enemies not defended by a pawn and under our attack + // Enemies not strongly protected and under our attack weak = pos.pieces(Them) - & ~ei.attackedBy[Them][PAWN] - & ei.attackedBy[Us][ALL_PIECES]; + & ~stronglyProtected + & attackedBy[Us][ALL_PIECES]; // Add a bonus according to the kind of attacking pieces if (defended | weak) { - b = (defended | weak) & (ei.attackedBy[Us][KNIGHT] | ei.attackedBy[Us][BISHOP]); + b = (defended | weak) & (attackedBy[Us][KNIGHT] | attackedBy[Us][BISHOP]); while (b) - score += Threat[Minor][type_of(pos.piece_on(pop_lsb(&b)))]; + { + Square s = pop_lsb(&b); + score += ThreatByMinor[type_of(pos.piece_on(s))]; + if (type_of(pos.piece_on(s)) != PAWN) + score += ThreatByRank * (int)relative_rank(Them, s); + } - b = (pos.pieces(Them, QUEEN) | weak) & ei.attackedBy[Us][ROOK]; + b = (pos.pieces(Them, QUEEN) | weak) & attackedBy[Us][ROOK]; while (b) - score += Threat[Rook ][type_of(pos.piece_on(pop_lsb(&b)))]; + { + Square s = pop_lsb(&b); + score += ThreatByRook[type_of(pos.piece_on(s))]; + if (type_of(pos.piece_on(s)) != PAWN) + score += ThreatByRank * (int)relative_rank(Them, s); + } - score += Hanging * popcount(weak & ~ei.attackedBy[Them][ALL_PIECES]); + score += Hanging * popcount(weak & ~attackedBy[Them][ALL_PIECES]); - b = weak & ei.attackedBy[Us][KING]; + b = weak & attackedBy[Us][KING]; if (b) score += ThreatByKing[more_than_one(b)]; } - // Bonus if some pawns can safely push and attack an enemy piece - b = pos.pieces(Us, PAWN) & ~TRank7BB; - b = shift(b | (shift(b & TRank2BB) & ~pos.pieces())); + // Bonus for opponent unopposed weak pawns + if (pos.pieces(Us, ROOK, QUEEN)) + score += WeakUnopposedPawn * pe->weak_unopposed(Them); + + // Find squares where our pawns can push on the next move + b = shift(pos.pieces(Us, PAWN)) & ~pos.pieces(); + b |= shift(b & TRank3BB) & ~pos.pieces(); - b &= ~pos.pieces() - & ~ei.attackedBy[Them][PAWN] - & (ei.attackedBy[Us][ALL_PIECES] | ~ei.attackedBy[Them][ALL_PIECES]); + // Keep only the squares which are not completely unsafe + b &= ~attackedBy[Them][PAWN] + & (attackedBy[Us][ALL_PIECES] | ~attackedBy[Them][ALL_PIECES]); + // Add a bonus for each new pawn threats from those squares b = (shift(b) | shift(b)) & pos.pieces(Them) - & ~ei.attackedBy[Us][PAWN]; + & ~attackedBy[Us][PAWN]; score += ThreatByPawnPush * popcount(b); - if (DoTrace) + // Add a bonus for safe slider attack threats on opponent queen + safeThreats = ~pos.pieces(Us) & ~attackedBy2[Them] & attackedBy2[Us]; + b = (attackedBy[Us][BISHOP] & attackedBy[Them][QUEEN_DIAGONAL]) + | (attackedBy[Us][ROOK ] & attackedBy[Them][QUEEN] & ~attackedBy[Them][QUEEN_DIAGONAL]); + + score += ThreatByAttackOnQueen * popcount(b & safeThreats); + + if (T) Trace::add(THREAT, Us, score); return score; } + // helper used by evaluate_passed_pawns to cap the distance + template + int Evaluation::king_distance(Color c, Square s) { + return std::min(distance(pos.square(c), s), 5); + } - // evaluate_passed_pawns() evaluates the passed pawns of the given color + // evaluate_passed_pawns() evaluates the passed pawns and candidate passed + // pawns of the given color. - template - Score evaluate_passed_pawns(const Position& pos, const EvalInfo& ei) { + template template + Score Evaluation::evaluate_passed_pawns() { - const Color Them = (Us == WHITE ? BLACK : WHITE); + const Color Them = (Us == WHITE ? BLACK : WHITE); + const Direction Up = (Us == WHITE ? NORTH : SOUTH); Bitboard b, bb, squaresToQueen, defendedSquares, unsafeSquares; Score score = SCORE_ZERO; - b = ei.pi->passed_pawns(Us); + b = pe->passed_pawns(Us); while (b) { Square s = pop_lsb(&b); - assert(pos.pawn_passed(Us, s)); - assert(!(pos.pieces(PAWN) & forward_bb(Us, s))); + assert(!(pos.pieces(Them, PAWN) & forward_file_bb(Us, s + Up))); - bb = forward_bb(Us, s) & (ei.attackedBy[Them][ALL_PIECES] | pos.pieces(Them)); + bb = forward_file_bb(Us, s) & (attackedBy[Them][ALL_PIECES] | pos.pieces(Them)); score -= HinderPassedPawn * popcount(bb); - int r = relative_rank(Us, s) - RANK_2; - int rr = r * (r - 1); + int r = relative_rank(Us, s); + int rr = RankFactor[r]; Value mbonus = Passed[MG][r], ebonus = Passed[EG][r]; if (rr) { - Square blockSq = s + pawn_push(Us); + Square blockSq = s + Up; // Adjust bonus based on the king's proximity - ebonus += distance(pos.square(Them), blockSq) * 5 * rr - - distance(pos.square(Us ), blockSq) * 2 * rr; + ebonus += (king_distance(Them, blockSq) * 5 - king_distance(Us, blockSq) * 2) * rr; // If blockSq is not the queening square then consider also a second push - if (relative_rank(Us, blockSq) != RANK_8) - ebonus -= distance(pos.square(Us), blockSq + pawn_push(Us)) * rr; + if (r != RANK_7) + ebonus -= king_distance(Us, blockSq + Up) * rr; // If the pawn is free to advance, then increase the bonus if (pos.empty(blockSq)) @@ -640,15 +677,15 @@ namespace { // If there is a rook or queen attacking/defending the pawn from behind, // consider all the squaresToQueen. Otherwise consider only the squares // in the pawn's path attacked or occupied by the enemy. - defendedSquares = unsafeSquares = squaresToQueen = forward_bb(Us, s); + defendedSquares = unsafeSquares = squaresToQueen = forward_file_bb(Us, s); - bb = forward_bb(Them, s) & pos.pieces(ROOK, QUEEN) & pos.attacks_from(s); + bb = forward_file_bb(Them, s) & pos.pieces(ROOK, QUEEN) & pos.attacks_from(s); if (!(pos.pieces(Us) & bb)) - defendedSquares &= ei.attackedBy[Us][ALL_PIECES]; + defendedSquares &= attackedBy[Us][ALL_PIECES]; if (!(pos.pieces(Them) & bb)) - unsafeSquares &= ei.attackedBy[Them][ALL_PIECES] | pos.pieces(Them); + unsafeSquares &= attackedBy[Them][ALL_PIECES] | pos.pieces(Them); // If there aren't any enemy attacks, assign a big bonus. Otherwise // assign a smaller bonus if the block square isn't attacked. @@ -668,13 +705,17 @@ namespace { mbonus += rr + r * 2, ebonus += rr + r * 2; } // rr != 0 + // Scale down bonus for candidate passers which need more than one + // pawn push to become passed or have a pawn in front of them. + if (!pos.pawn_passed(Us, s + Up) || (pos.pieces(PAWN) & forward_file_bb(Us, s))) + mbonus /= 2, ebonus /= 2; + score += make_score(mbonus, ebonus) + PassedFile[file_of(s)]; } - if (DoTrace) + if (T) Trace::add(PASSED, Us, score); - // Add the scores to the middlegame and endgame eval return score; } @@ -685,21 +726,22 @@ namespace { // squares one, two or three squares behind a friendly pawn are counted // twice. Finally, the space bonus is multiplied by a weight. The aim is to // improve play on game opening. - template - Score evaluate_space(const Position& pos, const EvalInfo& ei) { + + template template + Score Evaluation::evaluate_space() { const Color Them = (Us == WHITE ? BLACK : WHITE); const Bitboard SpaceMask = - Us == WHITE ? (FileCBB | FileDBB | FileEBB | FileFBB) & (Rank2BB | Rank3BB | Rank4BB) - : (FileCBB | FileDBB | FileEBB | FileFBB) & (Rank7BB | Rank6BB | Rank5BB); + Us == WHITE ? CenterFiles & (Rank2BB | Rank3BB | Rank4BB) + : CenterFiles & (Rank7BB | Rank6BB | Rank5BB); // Find the safe squares for our pieces inside the area defined by // SpaceMask. A square is unsafe if it is attacked by an enemy // pawn, or if it is undefended and attacked by an enemy piece. Bitboard safe = SpaceMask & ~pos.pieces(Us, PAWN) - & ~ei.attackedBy[Them][PAWN] - & (ei.attackedBy[Us][ALL_PIECES] | ~ei.attackedBy[Them][ALL_PIECES]); + & ~attackedBy[Them][PAWN] + & (attackedBy[Us][ALL_PIECES] | ~attackedBy[Them][ALL_PIECES]); // Find all squares which are at most three squares behind some friendly pawn Bitboard behind = pos.pieces(Us, PAWN); @@ -709,46 +751,51 @@ namespace { // Since SpaceMask[Us] is fully on our half of the board... assert(unsigned(safe >> (Us == WHITE ? 32 : 0)) == 0); - // ...count safe + (behind & safe) with a single popcount + // ...count safe + (behind & safe) with a single popcount. int bonus = popcount((Us == WHITE ? safe << 32 : safe >> 32) | (behind & safe)); - bonus = std::min(16, bonus); - int weight = pos.count(Us) - 2 * ei.pi->open_files(); + int weight = pos.count(Us) - 2 * pe->open_files(); - return make_score(bonus * weight * weight / 18, 0); + return make_score(bonus * weight * weight / 16, 0); } // evaluate_initiative() computes the initiative correction value for the // position, i.e., second order bonus/malus based on the known attacking/defending // status of the players. - Score evaluate_initiative(const Position& pos, int asymmetry, Value eg) { + + template + Score Evaluation::evaluate_initiative(Value eg) { int kingDistance = distance(pos.square(WHITE), pos.square(BLACK)) - distance(pos.square(WHITE), pos.square(BLACK)); - int pawns = pos.count(WHITE) + pos.count(BLACK); + bool bothFlanks = (pos.pieces(PAWN) & QueenSide) && (pos.pieces(PAWN) & KingSide); // Compute the initiative bonus for the attacking side - int initiative = 8 * (asymmetry + kingDistance - 15) + 12 * pawns; + int initiative = 8 * (pe->pawn_asymmetry() + kingDistance - 17) + 12 * pos.count() + 16 * bothFlanks; // Now apply the bonus: note that we find the attacking side by extracting // the sign of the endgame value, and that we carefully cap the bonus so - // that the endgame score will never be divided by more than two. - int value = ((eg > 0) - (eg < 0)) * std::max(initiative, -abs(eg / 2)); + // that the endgame score will never change sign after the bonus. + int v = ((eg > 0) - (eg < 0)) * std::max(initiative, -abs(eg)); + + if (T) + Trace::add(INITIATIVE, make_score(0, v)); - return make_score(0, value); + return make_score(0, v); } // evaluate_scale_factor() computes the scale factor for the winning side - ScaleFactor evaluate_scale_factor(const Position& pos, const EvalInfo& ei, Value eg) { + + template + ScaleFactor Evaluation::evaluate_scale_factor(Value eg) { Color strongSide = eg > VALUE_DRAW ? WHITE : BLACK; - ScaleFactor sf = ei.me->scale_factor(pos, strongSide); + ScaleFactor sf = me->scale_factor(pos, strongSide); // If we don't already have an unusual scale factor, check for certain // types of endgames, and use a lower scale for those. - if ( ei.me->game_phase() < PHASE_MIDGAME - && (sf == SCALE_FACTOR_NORMAL || sf == SCALE_FACTOR_ONEPAWN)) + if (sf == SCALE_FACTOR_NORMAL || sf == SCALE_FACTOR_ONEPAWN) { if (pos.opposite_bishops()) { @@ -756,139 +803,116 @@ namespace { // is almost a draw, in case of KBP vs KB, it is even more a draw. if ( pos.non_pawn_material(WHITE) == BishopValueMg && pos.non_pawn_material(BLACK) == BishopValueMg) - sf = more_than_one(pos.pieces(PAWN)) ? ScaleFactor(31) : ScaleFactor(9); + return more_than_one(pos.pieces(PAWN)) ? ScaleFactor(31) : ScaleFactor(9); // Endgame with opposite-colored bishops, but also other pieces. Still // a bit drawish, but not as drawish as with only the two bishops. - else - sf = ScaleFactor(46); + return ScaleFactor(46); } // Endings where weaker side can place his king in front of the opponent's // pawns are drawish. else if ( abs(eg) <= BishopValueEg && pos.count(strongSide) <= 2 && !pos.pawn_passed(~strongSide, pos.square(~strongSide))) - sf = ScaleFactor(37 + 7 * pos.count(strongSide)); + return ScaleFactor(37 + 7 * pos.count(strongSide)); } return sf; } -} // namespace + // value() is the main function of the class. It computes the various parts of + // the evaluation and returns the value of the position from the point of view + // of the side to move. -/// evaluate() is the main evaluation function. It returns a static evaluation -/// of the position from the point of view of the side to move. + template + Value Evaluation::value() { -template -Value Eval::evaluate(const Position& pos) { + assert(!pos.checkers()); - assert(!pos.checkers()); + // Probe the material hash table + me = Material::probe(pos); - Score mobility[COLOR_NB] = { SCORE_ZERO, SCORE_ZERO }; - EvalInfo ei; + // If we have a specialized evaluation function for the current material + // configuration, call it and return. + if (me->specialized_eval_exists()) + return me->evaluate(pos); - // Probe the material hash table - ei.me = Material::probe(pos); + // Initialize score by reading the incrementally updated scores included in + // the position object (material + piece square tables) and the material + // imbalance. Score is computed internally from the white point of view. + Score score = pos.psq_score() + me->imbalance() + Eval::Contempt; - // If we have a specialized evaluation function for the current material - // configuration, call it and return. - if (ei.me->specialized_eval_exists()) - return ei.me->evaluate(pos); + // Probe the pawn hash table + pe = Pawns::probe(pos); + score += pe->pawns_score(); - // Initialize score by reading the incrementally updated scores included in - // the position object (material + piece square tables) and the material - // imbalance. Score is computed internally from the white point of view. - Score score = pos.psq_score() + ei.me->imbalance(); + // Early exit if score is high + Value v = (mg_value(score) + eg_value(score)) / 2; + if (abs(v) > LazyThreshold) + return pos.side_to_move() == WHITE ? v : -v; - // Probe the pawn hash table - ei.pi = Pawns::probe(pos); - score += ei.pi->pawns_score(); + // Main evaluation begins here - // Initialize attack and king safety bitboards - ei.attackedBy[WHITE][ALL_PIECES] = ei.attackedBy[BLACK][ALL_PIECES] = 0; - ei.attackedBy[WHITE][KING] = pos.attacks_from(pos.square(WHITE)); - ei.attackedBy[BLACK][KING] = pos.attacks_from(pos.square(BLACK)); - eval_init(pos, ei); - eval_init(pos, ei); + initialize(); + initialize(); - // Pawns blocked or on ranks 2 and 3 will be excluded from the mobility area - Bitboard blockedPawns[] = { - pos.pieces(WHITE, PAWN) & (shift(pos.pieces()) | Rank2BB | Rank3BB), - pos.pieces(BLACK, PAWN) & (shift(pos.pieces()) | Rank7BB | Rank6BB) - }; + score += evaluate_pieces() - evaluate_pieces(); + score += evaluate_pieces() - evaluate_pieces(); + score += evaluate_pieces() - evaluate_pieces(); + score += evaluate_pieces() - evaluate_pieces(); - // Do not include in mobility area squares protected by enemy pawns, or occupied - // by our blocked pawns or king. - Bitboard mobilityArea[] = { - ~(ei.attackedBy[BLACK][PAWN] | blockedPawns[WHITE] | pos.square(WHITE)), - ~(ei.attackedBy[WHITE][PAWN] | blockedPawns[BLACK] | pos.square(BLACK)) - }; + score += mobility[WHITE] - mobility[BLACK]; - // Evaluate all pieces but king and pawns - score += evaluate_pieces(pos, ei, mobility, mobilityArea); - score += mobility[WHITE] - mobility[BLACK]; + score += evaluate_king() + - evaluate_king(); - // Evaluate kings after all other pieces because we need full attack - // information when computing the king safety evaluation. - score += evaluate_king(pos, ei) - - evaluate_king(pos, ei); + score += evaluate_threats() + - evaluate_threats(); - // Evaluate tactical threats, we need full attack information including king - score += evaluate_threats(pos, ei) - - evaluate_threats(pos, ei); + score += evaluate_passed_pawns() + - evaluate_passed_pawns(); - // Evaluate passed pawns, we need full attack information including king - score += evaluate_passed_pawns(pos, ei) - - evaluate_passed_pawns(pos, ei); + if (pos.non_pawn_material() >= SpaceThreshold) + score += evaluate_space() + - evaluate_space(); - // If both sides have only pawns, score for potential unstoppable pawns - if (!pos.non_pawn_material(WHITE) && !pos.non_pawn_material(BLACK)) - { - Bitboard b; - if ((b = ei.pi->passed_pawns(WHITE)) != 0) - score += Unstoppable * int(relative_rank(WHITE, frontmost_sq(WHITE, b))); + score += evaluate_initiative(eg_value(score)); - if ((b = ei.pi->passed_pawns(BLACK)) != 0) - score -= Unstoppable * int(relative_rank(BLACK, frontmost_sq(BLACK, b))); - } + // Interpolate between a middlegame and a (scaled by 'sf') endgame score + ScaleFactor sf = evaluate_scale_factor(eg_value(score)); + v = mg_value(score) * int(me->game_phase()) + + eg_value(score) * int(PHASE_MIDGAME - me->game_phase()) * sf / SCALE_FACTOR_NORMAL; + + v /= int(PHASE_MIDGAME); + + // In case of tracing add all remaining individual evaluation terms + if (T) + { + Trace::add(MATERIAL, pos.psq_score()); + Trace::add(IMBALANCE, me->imbalance()); + Trace::add(PAWN, pe->pawns_score()); + Trace::add(MOBILITY, mobility[WHITE], mobility[BLACK]); + if (pos.non_pawn_material() >= SpaceThreshold) + Trace::add(SPACE, evaluate_space() + , evaluate_space()); + Trace::add(TOTAL, score); + } - // Evaluate space for both sides, only during opening - if (pos.non_pawn_material(WHITE) + pos.non_pawn_material(BLACK) >= 12222) - score += evaluate_space(pos, ei) - - evaluate_space(pos, ei); - - // Evaluate position potential for the winning side - score += evaluate_initiative(pos, ei.pi->pawn_asymmetry(), eg_value(score)); - - // Evaluate scale factor for the winning side - ScaleFactor sf = evaluate_scale_factor(pos, ei, eg_value(score)); - - // Interpolate between a middlegame and a (scaled by 'sf') endgame score - Value v = mg_value(score) * int(ei.me->game_phase()) - + eg_value(score) * int(PHASE_MIDGAME - ei.me->game_phase()) * sf / SCALE_FACTOR_NORMAL; - - v /= int(PHASE_MIDGAME); - - // In case of tracing add all remaining individual evaluation terms - if (DoTrace) - { - Trace::add(MATERIAL, pos.psq_score()); - Trace::add(IMBALANCE, ei.me->imbalance()); - Trace::add(PAWN, ei.pi->pawns_score()); - Trace::add(MOBILITY, mobility[WHITE], mobility[BLACK]); - Trace::add(SPACE, evaluate_space(pos, ei) - , evaluate_space(pos, ei)); - Trace::add(TOTAL, score); + return pos.side_to_move() == WHITE ? v : -v; // Side to move point of view } - return (pos.side_to_move() == WHITE ? v : -v) + Eval::Tempo; // Side to move point of view -} +} // namespace -// Explicit template instantiations -template Value Eval::evaluate(const Position&); -template Value Eval::evaluate(const Position&); +Score Eval::Contempt = SCORE_ZERO; +/// evaluate() is the evaluator for the outer world. It returns a static evaluation +/// of the position from the point of view of the side to move. + +Value Eval::evaluate(const Position& pos) +{ + return Evaluation<>(pos).value() + Eval::Tempo; +} /// trace() is like evaluate(), but instead of returning a value, it returns /// a string (suitable for outputting to stdout) that contains the detailed @@ -898,7 +922,7 @@ std::string Eval::trace(const Position& pos) { std::memset(scores, 0, sizeof(scores)); - Value v = evaluate(pos); + Value v = Evaluation(pos).value() + Eval::Tempo; v = pos.side_to_move() == WHITE ? v : -v; // White's point of view std::stringstream ss; @@ -910,7 +934,7 @@ std::string Eval::trace(const Position& pos) { << " Imbalance | " << Term(IMBALANCE) << " Pawns | " << Term(PAWN) << " Knights | " << Term(KNIGHT) - << " Bishop | " << Term(BISHOP) + << " Bishops | " << Term(BISHOP) << " Rooks | " << Term(ROOK) << " Queens | " << Term(QUEEN) << " Mobility | " << Term(MOBILITY) @@ -918,6 +942,7 @@ std::string Eval::trace(const Position& pos) { << " Threats | " << Term(THREAT) << " Passed pawns | " << Term(PASSED) << " Space | " << Term(SPACE) + << " Initiative | " << Term(INITIATIVE) << "----------------+-------------+-------------+-------------\n" << " Total | " << Term(TOTAL); diff --git a/Engines/Linux64/stockfish/src/evaluate.h b/Engines/Linux64/stockfish/src/evaluate.h index 7f655f6..eef888d 100644 --- a/Engines/Linux64/stockfish/src/evaluate.h +++ b/Engines/Linux64/stockfish/src/evaluate.h @@ -2,7 +2,7 @@ Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad + Copyright (C) 2015-2018 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -31,9 +31,10 @@ namespace Eval { const Value Tempo = Value(20); // Must be visible to search +extern Score Contempt; + std::string trace(const Position& pos); -template Value evaluate(const Position& pos); } diff --git a/Engines/Linux64/stockfish/src/main.cpp b/Engines/Linux64/stockfish/src/main.cpp index 7187d30..aad09ce 100644 --- a/Engines/Linux64/stockfish/src/main.cpp +++ b/Engines/Linux64/stockfish/src/main.cpp @@ -2,7 +2,7 @@ Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad + Copyright (C) 2015-2018 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -43,12 +43,13 @@ int main(int argc, char* argv[]) { Bitbases::init(); Search::init(); Pawns::init(); - Threads.init(); Tablebases::init(Options["SyzygyPath"]); TT.resize(Options["Hash"]); + Threads.set(Options["Threads"]); + Search::clear(); // After threads are up UCI::loop(argc, argv); - Threads.exit(); + Threads.set(0); return 0; } diff --git a/Engines/Linux64/stockfish/src/material.cpp b/Engines/Linux64/stockfish/src/material.cpp index f6c4e2d..fb39209 100644 --- a/Engines/Linux64/stockfish/src/material.cpp +++ b/Engines/Linux64/stockfish/src/material.cpp @@ -2,7 +2,7 @@ Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad + Copyright (C) 2015-2018 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -35,11 +35,11 @@ namespace { // OUR PIECES // pair pawn knight bishop rook queen {1667 }, // Bishop pair - { 40, 2 }, // Pawn + { 40, 0 }, // Pawn { 32, 255, -3 }, // Knight OUR PIECES { 0, 104, 4, 0 }, // Bishop { -26, -2, 47, 105, -149 }, // Rook - {-185, 24, 122, 137, -134, 0 } // Queen + {-189, 24, 117, 133, -134, -10 } // Queen }; const int QuadraticTheirs[][PIECE_TYPE_NB] = { @@ -50,7 +50,7 @@ namespace { { 9, 63, 0 }, // Knight OUR PIECES { 59, 65, 42, 0 }, // Bishop { 46, 39, 24, -24, 0 }, // Rook - { 101, 100, -37, 141, 268, 0 } // Queen + { 97, 100, -42, 137, 268, 0 } // Queen }; // Endgame evaluation and scaling functions are accessed directly and not through @@ -91,7 +91,7 @@ namespace { int bonus = 0; - // Second-degree polynomial material imbalance by Tord Romstad + // Second-degree polynomial material imbalance, by Tord Romstad for (int pt1 = NO_PIECE_TYPE; pt1 <= QUEEN; ++pt1) { if (!pieceCount[Us][pt1]) @@ -129,7 +129,13 @@ Entry* probe(const Position& pos) { std::memset(e, 0, sizeof(Entry)); e->key = key; e->factor[WHITE] = e->factor[BLACK] = (uint8_t)SCALE_FACTOR_NORMAL; - e->gamePhase = pos.game_phase(); + + Value npm_w = pos.non_pawn_material(WHITE); + Value npm_b = pos.non_pawn_material(BLACK); + Value npm = std::max(EndgameLimit, std::min(npm_w + npm_b, MidgameLimit)); + + // Map total non-pawn material into [PHASE_ENDGAME, PHASE_MIDGAME] + e->gamePhase = Phase(((npm - EndgameLimit) * PHASE_MIDGAME) / (MidgameLimit - EndgameLimit)); // Let's look if we have a specialized evaluation function for this particular // material configuration. Firstly we look for a fixed configuration one, then @@ -150,7 +156,7 @@ Entry* probe(const Position& pos) { if ((sf = pos.this_thread()->endgames.probe(key)) != nullptr) { - e->scalingFunction[sf->strong_side()] = sf; // Only strong color assigned + e->scalingFunction[sf->strongSide] = sf; // Only strong color assigned return e; } @@ -166,9 +172,6 @@ Entry* probe(const Position& pos) { e->scalingFunction[c] = &ScaleKQKRPs[c]; } - Value npm_w = pos.non_pawn_material(WHITE); - Value npm_b = pos.non_pawn_material(BLACK); - if (npm_w + npm_b == VALUE_ZERO && pos.pieces(PAWN)) // Only pawns on the board { if (!pos.count(BLACK)) diff --git a/Engines/Linux64/stockfish/src/material.h b/Engines/Linux64/stockfish/src/material.h index bec2d66..7fea5e7 100644 --- a/Engines/Linux64/stockfish/src/material.h +++ b/Engines/Linux64/stockfish/src/material.h @@ -2,7 +2,7 @@ Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad + Copyright (C) 2015-2018 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -56,11 +56,11 @@ struct Entry { } Key key; - int16_t value; - uint8_t factor[COLOR_NB]; EndgameBase* evaluationFunction; EndgameBase* scalingFunction[COLOR_NB]; // Could be one for each // side (e.g. KPKP, KBPsKs) + int16_t value; + uint8_t factor[COLOR_NB]; Phase gamePhase; }; diff --git a/Engines/Linux64/stockfish/src/misc.cpp b/Engines/Linux64/stockfish/src/misc.cpp index 4c6c254..2eb62f3 100644 --- a/Engines/Linux64/stockfish/src/misc.cpp +++ b/Engines/Linux64/stockfish/src/misc.cpp @@ -2,7 +2,7 @@ Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad + Copyright (C) 2015-2018 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -18,10 +18,29 @@ along with this program. If not, see . */ +#ifdef _WIN32 +#if _WIN32_WINNT < 0x0601 +#undef _WIN32_WINNT +#define _WIN32_WINNT 0x0601 // Force to include needed API prototypes +#endif +#include +// The needed Windows API for processor groups could be missed from old Windows +// versions, so instead of calling them directly (forcing the linker to resolve +// the calls at compile time), try to load them at runtime. To do this we need +// first to define the corresponding function pointers. +extern "C" { +typedef bool(*fun1_t)(LOGICAL_PROCESSOR_RELATIONSHIP, + PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX, PDWORD); +typedef bool(*fun2_t)(USHORT, PGROUP_AFFINITY); +typedef bool(*fun3_t)(HANDLE, CONST GROUP_AFFINITY*, PGROUP_AFFINITY); +} +#endif + #include #include #include #include +#include #include "misc.h" #include "thread.h" @@ -32,7 +51,7 @@ namespace { /// Version number. If Version is left empty, then compile date in the format /// DD-MM-YY and show in engine_info. -const string Version = "8"; +const string Version = "9"; /// Our fancy logging facility. The trick here is to replace cin.rdbuf() and /// cout.rdbuf() with two Tie objects that tie cin and cout to a file stream. We @@ -44,10 +63,10 @@ struct Tie: public streambuf { // MSVC requires split streambuf for cin and cout Tie(streambuf* b, streambuf* l) : buf(b), logBuf(l) {} - int sync() { return logBuf->pubsync(), buf->pubsync(); } - int overflow(int c) { return log(buf->sputc((char)c), "<< "); } - int underflow() { return buf->sgetc(); } - int uflow() { return log(buf->sbumpc(), ">> "); } + int sync() override { return logBuf->pubsync(), buf->pubsync(); } + int overflow(int c) override { return log(buf->sputc((char)c), "<< "); } + int underflow() override { return buf->sgetc(); } + int uflow() override { return log(buf->sbumpc(), ">> "); } streambuf *buf, *logBuf; @@ -185,3 +204,114 @@ void prefetch(void* addr) { } #endif + +void prefetch2(void* addr) { + + prefetch(addr); + prefetch((uint8_t*)addr + 64); +} + +namespace WinProcGroup { + +#ifndef _WIN32 + +void bindThisThread(size_t) {} + +#else + +/// get_group() retrieves logical processor information using Windows specific +/// API and returns the best group id for the thread with index idx. Original +/// code from Texel by Peter Österlund. + +int get_group(size_t idx) { + + int threads = 0; + int nodes = 0; + int cores = 0; + DWORD returnLength = 0; + DWORD byteOffset = 0; + + // Early exit if the needed API is not available at runtime + HMODULE k32 = GetModuleHandle("Kernel32.dll"); + auto fun1 = (fun1_t)GetProcAddress(k32, "GetLogicalProcessorInformationEx"); + if (!fun1) + return -1; + + // First call to get returnLength. We expect it to fail due to null buffer + if (fun1(RelationAll, nullptr, &returnLength)) + return -1; + + // Once we know returnLength, allocate the buffer + SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX *buffer, *ptr; + ptr = buffer = (SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX*)malloc(returnLength); + + // Second call, now we expect to succeed + if (!fun1(RelationAll, buffer, &returnLength)) + { + free(buffer); + return -1; + } + + while (ptr->Size > 0 && byteOffset + ptr->Size <= returnLength) + { + if (ptr->Relationship == RelationNumaNode) + nodes++; + + else if (ptr->Relationship == RelationProcessorCore) + { + cores++; + threads += (ptr->Processor.Flags == LTP_PC_SMT) ? 2 : 1; + } + + byteOffset += ptr->Size; + ptr = (SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX*)(((char*)ptr) + ptr->Size); + } + + free(buffer); + + std::vector groups; + + // Run as many threads as possible on the same node until core limit is + // reached, then move on filling the next node. + for (int n = 0; n < nodes; n++) + for (int i = 0; i < cores / nodes; i++) + groups.push_back(n); + + // In case a core has more than one logical processor (we assume 2) and we + // have still threads to allocate, then spread them evenly across available + // nodes. + for (int t = 0; t < threads - cores; t++) + groups.push_back(t % nodes); + + // If we still have more threads than the total number of logical processors + // then return -1 and let the OS to decide what to do. + return idx < groups.size() ? groups[idx] : -1; +} + + +/// bindThisThread() set the group affinity of the current thread + +void bindThisThread(size_t idx) { + + // Use only local variables to be thread-safe + int group = get_group(idx); + + if (group == -1) + return; + + // Early exit if the needed API are not available at runtime + HMODULE k32 = GetModuleHandle("Kernel32.dll"); + auto fun2 = (fun2_t)GetProcAddress(k32, "GetNumaNodeProcessorMaskEx"); + auto fun3 = (fun3_t)GetProcAddress(k32, "SetThreadGroupAffinity"); + + if (!fun2 || !fun3) + return; + + GROUP_AFFINITY affinity; + if (fun2(group, &affinity)) + fun3(GetCurrentThread(), &affinity, nullptr); +} + +#endif + +} // namespace WinProcGroup diff --git a/Engines/Linux64/stockfish/src/misc.h b/Engines/Linux64/stockfish/src/misc.h index a2307fe..563a58a 100644 --- a/Engines/Linux64/stockfish/src/misc.h +++ b/Engines/Linux64/stockfish/src/misc.h @@ -2,7 +2,7 @@ Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad + Copyright (C) 2015-2018 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -31,6 +31,7 @@ const std::string engine_info(bool to_uci = false); void prefetch(void* addr); +void prefetch2(void* addr); void start_logger(const std::string& fname); void dbg_hit_on(bool b); @@ -97,4 +98,15 @@ class PRNG { { return T(rand64() & rand64() & rand64()); } }; + +/// Under Windows it is not possible for a process to run on more than one +/// logical processor group. This usually means to be limited to use max 64 +/// cores. To overcome this, some special platform specific API should be +/// called to set group affinity for each thread. Original code from Texel by +/// Peter Österlund. + +namespace WinProcGroup { + void bindThisThread(size_t idx); +} + #endif // #ifndef MISC_H_INCLUDED diff --git a/Engines/Linux64/stockfish/src/movegen.cpp b/Engines/Linux64/stockfish/src/movegen.cpp index 6a3cdc2..15de166 100644 --- a/Engines/Linux64/stockfish/src/movegen.cpp +++ b/Engines/Linux64/stockfish/src/movegen.cpp @@ -2,7 +2,7 @@ Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad + Copyright (C) 2015-2018 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -42,8 +42,8 @@ namespace { assert(!pos.checkers()); - const Square K = Chess960 ? kto > kfrom ? WEST : EAST - : KingSide ? WEST : EAST; + const Direction K = Chess960 ? kto > kfrom ? WEST : EAST + : KingSide ? WEST : EAST; for (Square s = kto; s != kfrom; s += K) if (pos.attackers_to(s) & enemies) @@ -65,7 +65,7 @@ namespace { } - template + template ExtMove* make_promotions(ExtMove* moveList, Square to, Square ksq) { if (Type == CAPTURES || Type == EVASIONS || Type == NON_EVASIONS) @@ -80,7 +80,7 @@ namespace { // Knight promotion is the only promotion that can give a direct check // that's not already included in the queen promotion. - if (Type == QUIET_CHECKS && (StepAttacksBB[W_KNIGHT][to] & ksq)) + if (Type == QUIET_CHECKS && (PseudoAttacks[KNIGHT][to] & ksq)) *moveList++ = make(to - D, to, KNIGHT); else (void)ksq; // Silence a warning under MSVC @@ -94,13 +94,13 @@ namespace { // Compute our parametrized parameters at compile time, named according to // the point of view of white side. - const Color Them = (Us == WHITE ? BLACK : WHITE); - const Bitboard TRank8BB = (Us == WHITE ? Rank8BB : Rank1BB); - const Bitboard TRank7BB = (Us == WHITE ? Rank7BB : Rank2BB); - const Bitboard TRank3BB = (Us == WHITE ? Rank3BB : Rank6BB); - const Square Up = (Us == WHITE ? NORTH : SOUTH); - const Square Right = (Us == WHITE ? NORTH_EAST : SOUTH_WEST); - const Square Left = (Us == WHITE ? NORTH_WEST : SOUTH_EAST); + const Color Them = (Us == WHITE ? BLACK : WHITE); + const Bitboard TRank8BB = (Us == WHITE ? Rank8BB : Rank1BB); + const Bitboard TRank7BB = (Us == WHITE ? Rank7BB : Rank2BB); + const Bitboard TRank3BB = (Us == WHITE ? Rank3BB : Rank6BB); + const Direction Up = (Us == WHITE ? NORTH : SOUTH); + const Direction Right = (Us == WHITE ? NORTH_EAST : SOUTH_WEST); + const Direction Left = (Us == WHITE ? NORTH_WEST : SOUTH_EAST); Bitboard emptySquares; @@ -346,7 +346,7 @@ ExtMove* generate(const Position& pos, ExtMove* moveList) { if (pt == PAWN) continue; // Will be generated together with direct checks - Bitboard b = pos.attacks_from(Piece(pt), from) & ~pos.pieces(); + Bitboard b = pos.attacks_from(pt, from) & ~pos.pieces(); if (pt == KING) b &= ~PseudoAttacks[QUEEN][pos.square(~us)]; diff --git a/Engines/Linux64/stockfish/src/movegen.h b/Engines/Linux64/stockfish/src/movegen.h index 2721f15..9bf2a46 100644 --- a/Engines/Linux64/stockfish/src/movegen.h +++ b/Engines/Linux64/stockfish/src/movegen.h @@ -2,7 +2,7 @@ Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad + Copyright (C) 2015-2018 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -21,6 +21,8 @@ #ifndef MOVEGEN_H_INCLUDED #define MOVEGEN_H_INCLUDED +#include + #include "types.h" class Position; @@ -36,10 +38,14 @@ enum GenType { struct ExtMove { Move move; - Value value; + int value; operator Move() const { return move; } void operator=(Move m) { move = m; } + + // Inhibit unwanted implicit conversions to Move + // with an ambiguity that yields to a compile error. + operator float() const = delete; }; inline bool operator<(const ExtMove& f, const ExtMove& s) { @@ -59,8 +65,7 @@ struct MoveList { const ExtMove* end() const { return last; } size_t size() const { return last - moveList; } bool contains(Move move) const { - for (const auto& m : *this) if (m == move) return true; - return false; + return std::find(begin(), end(), move) != end(); } private: diff --git a/Engines/Linux64/stockfish/src/movepick.cpp b/Engines/Linux64/stockfish/src/movepick.cpp index c187c3a..ab247b7 100644 --- a/Engines/Linux64/stockfish/src/movepick.cpp +++ b/Engines/Linux64/stockfish/src/movepick.cpp @@ -2,7 +2,7 @@ Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad + Copyright (C) 2015-2018 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -21,7 +21,6 @@ #include #include "movepick.h" -#include "thread.h" namespace { @@ -34,27 +33,28 @@ namespace { QSEARCH_RECAPTURES, QRECAPTURES }; - // Our insertion sort, which is guaranteed to be stable, as it should be - void insertion_sort(ExtMove* begin, ExtMove* end) - { - ExtMove tmp, *p, *q; - - for (p = begin + 1; p < end; ++p) - { - tmp = *p; - for (q = p; q != begin && *(q-1) < tmp; --q) - *q = *(q-1); - *q = tmp; - } + // partial_insertion_sort() sorts moves in descending order up to and including + // a given limit. The order of moves smaller than the limit is left unspecified. + void partial_insertion_sort(ExtMove* begin, ExtMove* end, int limit) { + + for (ExtMove *sortedEnd = begin, *p = begin + 1; p < end; ++p) + if (p->value >= limit) + { + ExtMove tmp = *p, *q; + *p = *++sortedEnd; + for (q = sortedEnd; q != begin && *(q - 1) < tmp; --q) + *q = *(q - 1); + *q = tmp; + } } // pick_best() finds the best move in the range (begin, end) and moves it to // the front. It's faster than sorting all the moves in advance when there // are few moves, e.g., the possible captures. - Move pick_best(ExtMove* begin, ExtMove* end) - { - std::swap(*begin, *std::max_element(begin, end)); - return *begin; + Move pick_best(ExtMove* begin, ExtMove* end) { + + std::swap(*begin, *std::max_element(begin, end)); + return *begin; } } // namespace @@ -66,21 +66,22 @@ namespace { /// search captures, promotions, and some checks) and how important good move /// ordering is at the current node. -MovePicker::MovePicker(const Position& p, Move ttm, Depth d, Search::Stack* s) - : pos(p), ss(s), depth(d) { +/// MovePicker constructor for the main search +MovePicker::MovePicker(const Position& p, Move ttm, Depth d, const ButterflyHistory* mh, + const CapturePieceToHistory* cph, const PieceToHistory** ch, Move cm, Move* killers_p) + : pos(p), mainHistory(mh), captureHistory(cph), contHistory(ch), countermove(cm), + killers{killers_p[0], killers_p[1]}, depth(d){ assert(d > DEPTH_ZERO); - Square prevSq = to_sq((ss-1)->currentMove); - countermove = pos.this_thread()->counterMoves[pos.piece_on(prevSq)][prevSq]; - stage = pos.checkers() ? EVASION : MAIN_SEARCH; ttMove = ttm && pos.pseudo_legal(ttm) ? ttm : MOVE_NONE; stage += (ttMove == MOVE_NONE); } -MovePicker::MovePicker(const Position& p, Move ttm, Depth d, Square s) - : pos(p) { +/// MovePicker constructor for quiescence search +MovePicker::MovePicker(const Position& p, Move ttm, Depth d, const ButterflyHistory* mh, const CapturePieceToHistory* cph, Square s) + : pos(p), mainHistory(mh), captureHistory(cph) { assert(d <= DEPTH_ZERO); @@ -104,81 +105,57 @@ MovePicker::MovePicker(const Position& p, Move ttm, Depth d, Square s) stage += (ttMove == MOVE_NONE); } -MovePicker::MovePicker(const Position& p, Move ttm, Value th) - : pos(p), threshold(th) { +/// MovePicker constructor for ProbCut: we generate captures with SEE higher +/// than or equal to the given threshold. +MovePicker::MovePicker(const Position& p, Move ttm, Value th, const CapturePieceToHistory* cph) + : pos(p), captureHistory(cph), threshold(th) { assert(!pos.checkers()); stage = PROBCUT; - - // In ProbCut we generate captures with SEE higher than the given threshold ttMove = ttm && pos.pseudo_legal(ttm) && pos.capture(ttm) - && pos.see_ge(ttm, threshold + 1)? ttm : MOVE_NONE; + && pos.see_ge(ttm, threshold) ? ttm : MOVE_NONE; stage += (ttMove == MOVE_NONE); } +/// score() assigns a numerical value to each move in a list, used for sorting. +/// Captures are ordered by Most Valuable Victim (MVV), preferring captures +/// with a good history. Quiets are ordered using the histories. +template +void MovePicker::score() { -/// score() assigns a numerical value to each move in a move list. The moves with -/// highest values will be picked first. -template<> -void MovePicker::score() { - // Winning and equal captures in the main search are ordered by MVV, preferring - // captures near our home rank. Surprisingly, this appears to perform slightly - // better than SEE-based move ordering: exchanging big pieces before capturing - // a hanging piece probably helps to reduce the subtree size. - // In the main search we want to push captures with negative SEE values to the - // badCaptures[] array, but instead of doing it now we delay until the move - // has been picked up, saving some SEE calls in case we get a cutoff. - for (auto& m : *this) - m.value = PieceValue[MG][pos.piece_on(to_sq(m))] - - Value(200 * relative_rank(pos.side_to_move(), to_sq(m))); -} - -template<> -void MovePicker::score() { - - const HistoryStats& history = pos.this_thread()->history; - const FromToStats& fromTo = pos.this_thread()->fromTo; - - const CounterMoveStats* cm = (ss-1)->counterMoves; - const CounterMoveStats* fm = (ss-2)->counterMoves; - const CounterMoveStats* f2 = (ss-4)->counterMoves; - - Color c = pos.side_to_move(); + static_assert(Type == CAPTURES || Type == QUIETS || Type == EVASIONS, "Wrong type"); for (auto& m : *this) - m.value = history[pos.moved_piece(m)][to_sq(m)] - + (cm ? (*cm)[pos.moved_piece(m)][to_sq(m)] : VALUE_ZERO) - + (fm ? (*fm)[pos.moved_piece(m)][to_sq(m)] : VALUE_ZERO) - + (f2 ? (*f2)[pos.moved_piece(m)][to_sq(m)] : VALUE_ZERO) - + fromTo.get(c, m); -} + if (Type == CAPTURES) + m.value = PieceValue[MG][pos.piece_on(to_sq(m))] + + Value((*captureHistory)[pos.moved_piece(m)][to_sq(m)][type_of(pos.piece_on(to_sq(m)))]); -template<> -void MovePicker::score() { - // Try captures ordered by MVV/LVA, then non-captures ordered by history value - const HistoryStats& history = pos.this_thread()->history; - const FromToStats& fromTo = pos.this_thread()->fromTo; - Color c = pos.side_to_move(); + else if (Type == QUIETS) + m.value = (*mainHistory)[pos.side_to_move()][from_to(m)] + + (*contHistory[0])[pos.moved_piece(m)][to_sq(m)] + + (*contHistory[1])[pos.moved_piece(m)][to_sq(m)] + + (*contHistory[3])[pos.moved_piece(m)][to_sq(m)]; - for (auto& m : *this) - if (pos.capture(m)) - m.value = PieceValue[MG][pos.piece_on(to_sq(m))] - - Value(type_of(pos.moved_piece(m))) + HistoryStats::Max; - else - m.value = history[pos.moved_piece(m)][to_sq(m)] + fromTo.get(c, m); + else // Type == EVASIONS + { + if (pos.capture(m)) + m.value = PieceValue[MG][pos.piece_on(to_sq(m))] + - Value(type_of(pos.moved_piece(m))); + else + m.value = (*mainHistory)[pos.side_to_move()][from_to(m)] - (1 << 28); + } } - /// next_move() is the most important method of the MovePicker class. It returns /// a new pseudo legal move every time it is called, until there are no more moves /// left. It picks the move with the biggest value from a list of generated moves /// taking care not to return the ttMove if it has already been searched. -Move MovePicker::next_move() { +Move MovePicker::next_move(bool skipQuiets) { Move move; @@ -194,6 +171,7 @@ Move MovePicker::next_move() { endMoves = generate(pos, cur); score(); ++stage; + /* fallthrough */ case GOOD_CAPTURES: while (cur < endMoves) @@ -201,7 +179,7 @@ Move MovePicker::next_move() { move = pick_best(cur++, endMoves); if (move != ttMove) { - if (pos.see_ge(move, VALUE_ZERO)) + if (pos.see_ge(move, Value(-55 * (cur-1)->value / 1024))) return move; // Losing capture, move it to the beginning of the array @@ -210,58 +188,59 @@ Move MovePicker::next_move() { } ++stage; - move = ss->killers[0]; // First killer move + move = killers[0]; // First killer move if ( move != MOVE_NONE && move != ttMove && pos.pseudo_legal(move) && !pos.capture(move)) return move; + /* fallthrough */ case KILLERS: ++stage; - move = ss->killers[1]; // Second killer move + move = killers[1]; // Second killer move if ( move != MOVE_NONE && move != ttMove && pos.pseudo_legal(move) && !pos.capture(move)) return move; + /* fallthrough */ case COUNTERMOVE: ++stage; move = countermove; if ( move != MOVE_NONE && move != ttMove - && move != ss->killers[0] - && move != ss->killers[1] + && move != killers[0] + && move != killers[1] && pos.pseudo_legal(move) && !pos.capture(move)) return move; + /* fallthrough */ case QUIET_INIT: cur = endBadCaptures; endMoves = generate(pos, cur); score(); - if (depth < 3 * ONE_PLY) - { - ExtMove* goodQuiet = std::partition(cur, endMoves, [](const ExtMove& m) - { return m.value > VALUE_ZERO; }); - insertion_sort(cur, goodQuiet); - } else - insertion_sort(cur, endMoves); + partial_insertion_sort(cur, endMoves, -4000 * depth / ONE_PLY); ++stage; + /* fallthrough */ case QUIET: - while (cur < endMoves) + while ( cur < endMoves + && (!skipQuiets || cur->value >= VALUE_ZERO)) { move = *cur++; + if ( move != ttMove - && move != ss->killers[0] - && move != ss->killers[1] + && move != killers[0] + && move != killers[1] && move != countermove) return move; } ++stage; cur = moves; // Point to beginning of bad captures + /* fallthrough */ case BAD_CAPTURES: if (cur < endBadCaptures) @@ -273,6 +252,7 @@ Move MovePicker::next_move() { endMoves = generate(pos, cur); score(); ++stage; + /* fallthrough */ case ALL_EVASIONS: while (cur < endMoves) @@ -288,13 +268,14 @@ Move MovePicker::next_move() { endMoves = generate(pos, cur); score(); ++stage; + /* fallthrough */ case PROBCUT_CAPTURES: while (cur < endMoves) { move = pick_best(cur++, endMoves); if ( move != ttMove - && pos.see_ge(move, threshold + 1)) + && pos.see_ge(move, threshold)) return move; } break; @@ -304,6 +285,7 @@ Move MovePicker::next_move() { endMoves = generate(pos, cur); score(); ++stage; + /* fallthrough */ case QCAPTURES_1: case QCAPTURES_2: while (cur < endMoves) @@ -317,6 +299,7 @@ Move MovePicker::next_move() { cur = moves; endMoves = generate(pos, cur); ++stage; + /* fallthrough */ case QCHECKS: while (cur < endMoves) @@ -332,6 +315,7 @@ Move MovePicker::next_move() { endMoves = generate(pos, cur); score(); ++stage; + /* fallthrough */ case QRECAPTURES: while (cur < endMoves) diff --git a/Engines/Linux64/stockfish/src/movepick.h b/Engines/Linux64/stockfish/src/movepick.h index 6fbd8be..0aba61d 100644 --- a/Engines/Linux64/stockfish/src/movepick.h +++ b/Engines/Linux64/stockfish/src/movepick.h @@ -2,7 +2,7 @@ Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad + Copyright (C) 2015-2018 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -21,68 +21,98 @@ #ifndef MOVEPICK_H_INCLUDED #define MOVEPICK_H_INCLUDED -#include // For std::max -#include // For std::memset +#include +#include #include "movegen.h" #include "position.h" #include "types.h" +/// StatBoards is a generic 2-dimensional array used to store various statistics +template +struct StatBoards : public std::array, Size1> { -/// The Stats struct stores moves statistics. According to the template parameter -/// the class can store History and Countermoves. History records how often -/// different moves have been successful or unsuccessful during the current search -/// and is used for reduction and move ordering decisions. -/// Countermoves store the move that refute a previous one. Entries are stored -/// using only the moving piece and destination square, hence two moves with -/// different origin but same destination and piece will be considered identical. -template -struct Stats { + void fill(const T& v) { + T* p = &(*this)[0][0]; + std::fill(p, p + sizeof(*this) / sizeof(*p), v); + } - static const Value Max = Value(1 << 28); + void update(T& entry, int bonus, const int D) { - const T* operator[](Piece pc) const { return table[pc]; } - T* operator[](Piece pc) { return table[pc]; } - void clear() { std::memset(table, 0, sizeof(table)); } - void update(Piece pc, Square to, Move m) { table[pc][to] = m; } - void update(Piece pc, Square to, Value v) { + assert(abs(bonus) <= D); // Ensure range is [-32 * D, 32 * D] + assert(abs(32 * D) < (std::numeric_limits::max)()); // Ensure we don't overflow - if (abs(int(v)) >= 324) - return; + entry += bonus * 32 - entry * abs(bonus) / D; - table[pc][to] -= table[pc][to] * abs(int(v)) / (CM ? 936 : 324); - table[pc][to] += int(v) * 32; + assert(abs(entry) <= 32 * D); } +}; -private: - T table[PIECE_NB][SQUARE_NB]; +/// StatCubes is a generic 3-dimensional array used to store various statistics +template +struct StatCubes : public std::array, Size2>, Size1> { + + void fill(const T& v) { + T* p = &(*this)[0][0][0]; + std::fill(p, p + sizeof(*this) / sizeof(*p), v); + } + + void update(T& entry, int bonus, const int D, const int W) { + + assert(abs(bonus) <= D); // Ensure range is [-W * D, W * D] + assert(abs(W * D) < (std::numeric_limits::max)()); // Ensure we don't overflow + + entry += bonus * W - entry * abs(bonus) / D; + + assert(abs(entry) <= W * D); + } }; -typedef Stats MoveStats; -typedef Stats HistoryStats; -typedef Stats CounterMoveStats; -typedef Stats CounterMoveHistoryStats; +/// ButterflyBoards are 2 tables (one for each color) indexed by the move's from +/// and to squares, see chessprogramming.wikispaces.com/Butterfly+Boards +typedef StatBoards ButterflyBoards; -struct FromToStats { +/// PieceToBoards are addressed by a move's [piece][to] information +typedef StatBoards PieceToBoards; - Value get(Color c, Move m) const { return table[c][from_sq(m)][to_sq(m)]; } - void clear() { std::memset(table, 0, sizeof(table)); } - void update(Color c, Move m, Value v) { +/// CapturePieceToBoards are addressed by a move's [piece][to][captured piece type] information +typedef StatCubes CapturePieceToBoards; - if (abs(int(v)) >= 324) - return; +/// ButterflyHistory records how often quiet moves have been successful or +/// unsuccessful during the current search, and is used for reduction and move +/// ordering decisions. It uses ButterflyBoards as backing store. +struct ButterflyHistory : public ButterflyBoards { - Square from = from_sq(m); - Square to = to_sq(m); + void update(Color c, Move m, int bonus) { + StatBoards::update((*this)[c][from_to(m)], bonus, 324); + } +}; + +/// PieceToHistory is like ButterflyHistory, but is based on PieceToBoards +struct PieceToHistory : public PieceToBoards { - table[c][from][to] -= table[c][from][to] * abs(int(v)) / 324; - table[c][from][to] += int(v) * 32; + void update(Piece pc, Square to, int bonus) { + StatBoards::update((*this)[pc][to], bonus, 936); } +}; -private: - Value table[COLOR_NB][SQUARE_NB][SQUARE_NB]; +/// CapturePieceToHistory is like PieceToHistory, but is based on CapturePieceToBoards +struct CapturePieceToHistory : public CapturePieceToBoards { + + void update(Piece pc, Square to, PieceType captured, int bonus) { + StatCubes::update((*this)[pc][to][captured], bonus, 324, 2); + } }; +/// CounterMoveHistory stores counter moves indexed by [piece][to] of the previous +/// move, see chessprogramming.wikispaces.com/Countermove+Heuristic +typedef StatBoards CounterMoveHistory; + +/// ContinuationHistory is the history of a given pair of moves, usually the +/// current one given a previous one. History table is based on PieceToBoards +/// instead of ButterflyBoards. +typedef StatBoards ContinuationHistory; + /// MovePicker class is used to pick one pseudo legal move at a time from the /// current position. The most important method is next_move(), which returns a @@ -90,18 +120,15 @@ struct FromToStats { /// when MOVE_NONE is returned. In order to improve the efficiency of the alpha /// beta algorithm, MovePicker attempts to return the moves which are most likely /// to get a cut-off first. -namespace Search { struct Stack; } class MovePicker { public: MovePicker(const MovePicker&) = delete; MovePicker& operator=(const MovePicker&) = delete; - - MovePicker(const Position&, Move, Value); - MovePicker(const Position&, Move, Depth, Square); - MovePicker(const Position&, Move, Depth, Search::Stack*); - - Move next_move(); + MovePicker(const Position&, Move, Value, const CapturePieceToHistory*); + MovePicker(const Position&, Move, Depth, const ButterflyHistory*, const CapturePieceToHistory*, Square); + MovePicker(const Position&, Move, Depth, const ButterflyHistory*, const CapturePieceToHistory*, const PieceToHistory**, Move, Move*); + Move next_move(bool skipQuiets = false); private: template void score(); @@ -109,14 +136,15 @@ class MovePicker { ExtMove* end() { return endMoves; } const Position& pos; - const Search::Stack* ss; - Move countermove; - Depth depth; - Move ttMove; + const ButterflyHistory* mainHistory; + const CapturePieceToHistory* captureHistory; + const PieceToHistory** contHistory; + Move ttMove, countermove, killers[2]; + ExtMove *cur, *endMoves, *endBadCaptures; + int stage; Square recaptureSquare; Value threshold; - int stage; - ExtMove *cur, *endMoves, *endBadCaptures; + Depth depth; ExtMove moves[MAX_MOVES]; }; diff --git a/Engines/Linux64/stockfish/src/pawns.cpp b/Engines/Linux64/stockfish/src/pawns.cpp index 80f5e49..ceacca8 100644 --- a/Engines/Linux64/stockfish/src/pawns.cpp +++ b/Engines/Linux64/stockfish/src/pawns.cpp @@ -2,7 +2,7 @@ Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad + Copyright (C) 2015-2018 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -31,53 +31,51 @@ namespace { #define V Value #define S(mg, eg) make_score(mg, eg) - // Isolated pawn penalty by opposed flag - const Score Isolated[2] = { S(45, 40), S(30, 27) }; + // Isolated pawn penalty + const Score Isolated = S(13, 18); - // Backward pawn penalty by opposed flag - const Score Backward[2] = { S(56, 33), S(41, 19) }; + // Backward pawn penalty + const Score Backward = S(24, 12); - // Unsupported pawn penalty for pawns which are neither isolated or backward - const Score Unsupported = S(17, 8); - - // Connected pawn bonus by opposed, phalanx, twice supported and rank - Score Connected[2][2][2][RANK_NB]; + // Connected pawn bonus by opposed, phalanx, #support and rank + Score Connected[2][2][3][RANK_NB]; // Doubled pawn penalty - const Score Doubled = S(18,38); - - // Lever bonus by rank - const Score Lever[RANK_NB] = { - S( 0, 0), S( 0, 0), S(0, 0), S(0, 0), - S(17, 16), S(33, 32), S(0, 0), S(0, 0) - }; - - // Weakness of our pawn shelter in front of the king by [distance from edge][rank] - const Value ShelterWeakness[][RANK_NB] = { - { V( 97), V(21), V(26), V(51), V(87), V( 89), V( 99) }, - { V(120), V( 0), V(28), V(76), V(88), V(103), V(104) }, - { V(101), V( 7), V(54), V(78), V(77), V( 92), V(101) }, - { V( 80), V(11), V(44), V(68), V(87), V( 90), V(119) } + const Score Doubled = S(18, 38); + + // Weakness of our pawn shelter in front of the king by [isKingFile][distance from edge][rank]. + // RANK_1 = 0 is used for files where we have no pawns or our pawn is behind our king. + const Value ShelterWeakness[][int(FILE_NB) / 2][RANK_NB] = { + { { V( 97), V(17), V( 9), V(44), V( 84), V( 87), V( 99) }, // Not On King file + { V(106), V( 6), V(33), V(86), V( 87), V(104), V(112) }, + { V(101), V( 2), V(65), V(98), V( 58), V( 89), V(115) }, + { V( 73), V( 7), V(54), V(73), V( 84), V( 83), V(111) } }, + { { V(104), V(20), V( 6), V(27), V( 86), V( 93), V( 82) }, // On King file + { V(123), V( 9), V(34), V(96), V(112), V( 88), V( 75) }, + { V(120), V(25), V(65), V(91), V( 66), V( 78), V(117) }, + { V( 81), V( 2), V(47), V(63), V( 94), V( 93), V(104) } } }; - // Danger of enemy pawns moving toward our king by [type][distance from edge][rank] + // Danger of enemy pawns moving toward our king by [type][distance from edge][rank]. + // For the unopposed and unblocked cases, RANK_1 = 0 is used when opponent has + // no pawn on the given file, or their pawn is behind our king. const Value StormDanger[][4][RANK_NB] = { - { { V( 0), V( 67), V( 134), V(38), V(32) }, - { V( 0), V( 57), V( 139), V(37), V(22) }, - { V( 0), V( 43), V( 115), V(43), V(27) }, - { V( 0), V( 68), V( 124), V(57), V(32) } }, - { { V(20), V( 43), V( 100), V(56), V(20) }, - { V(23), V( 20), V( 98), V(40), V(15) }, - { V(23), V( 39), V( 103), V(36), V(18) }, - { V(28), V( 19), V( 108), V(42), V(26) } }, - { { V( 0), V( 0), V( 75), V(14), V( 2) }, - { V( 0), V( 0), V( 150), V(30), V( 4) }, - { V( 0), V( 0), V( 160), V(22), V( 5) }, - { V( 0), V( 0), V( 166), V(24), V(13) } }, - { { V( 0), V(-283), V(-281), V(57), V(31) }, - { V( 0), V( 58), V( 141), V(39), V(18) }, - { V( 0), V( 65), V( 142), V(48), V(32) }, - { V( 0), V( 60), V( 126), V(51), V(19) } } + { { V( 0), V(-290), V(-274), V(57), V(41) }, // BlockedByKing + { V( 0), V( 60), V( 144), V(39), V(13) }, + { V( 0), V( 65), V( 141), V(41), V(34) }, + { V( 0), V( 53), V( 127), V(56), V(14) } }, + { { V( 4), V( 73), V( 132), V(46), V(31) }, // Unopposed + { V( 1), V( 64), V( 143), V(26), V(13) }, + { V( 1), V( 47), V( 110), V(44), V(24) }, + { V( 0), V( 72), V( 127), V(50), V(31) } }, + { { V( 0), V( 0), V( 79), V(23), V( 1) }, // BlockedByPawn + { V( 0), V( 0), V( 148), V(27), V( 2) }, + { V( 0), V( 0), V( 161), V(16), V( 1) }, + { V( 0), V( 0), V( 171), V(22), V(15) } }, + { { V(22), V( 45), V( 104), V(62), V( 6) }, // Unblocked + { V(31), V( 30), V( 99), V(39), V(19) }, + { V(23), V( 29), V( 96), V(41), V(15) }, + { V(21), V( 23), V( 116), V(41), V(15) } } }; // Max bonus for king safety. Corresponds to start position with all the pawns @@ -90,22 +88,22 @@ namespace { template Score evaluate(const Position& pos, Pawns::Entry* e) { - const Color Them = (Us == WHITE ? BLACK : WHITE); - const Square Up = (Us == WHITE ? NORTH : SOUTH); - const Square Right = (Us == WHITE ? NORTH_EAST : SOUTH_WEST); - const Square Left = (Us == WHITE ? NORTH_WEST : SOUTH_EAST); + const Color Them = (Us == WHITE ? BLACK : WHITE); + const Direction Up = (Us == WHITE ? NORTH : SOUTH); + const Direction Right = (Us == WHITE ? NORTH_EAST : SOUTH_WEST); + const Direction Left = (Us == WHITE ? NORTH_WEST : SOUTH_EAST); Bitboard b, neighbours, stoppers, doubled, supported, phalanx; + Bitboard lever, leverPush; Square s; - bool opposed, lever, connected, backward; + bool opposed, backward; Score score = SCORE_ZERO; const Square* pl = pos.squares(Us); - const Bitboard* pawnAttacksBB = StepAttacksBB[make_piece(Us, PAWN)]; - Bitboard ourPawns = pos.pieces(Us , PAWN); + Bitboard ourPawns = pos.pieces( Us, PAWN); Bitboard theirPawns = pos.pieces(Them, PAWN); - e->passedPawns[Us] = e->pawnAttacksSpan[Us] = 0; + e->passedPawns[Us] = e->pawnAttacksSpan[Us] = e->weakUnopposed[Us] = 0; e->semiopenFiles[Us] = 0xFF; e->kingSquares[Us] = SQ_NONE; e->pawnAttacks[Us] = shift(ourPawns) | shift(ourPawns); @@ -123,14 +121,14 @@ namespace { e->pawnAttacksSpan[Us] |= pawn_attack_span(Us, s); // Flag the pawn - opposed = theirPawns & forward_bb(Us, s); + opposed = theirPawns & forward_file_bb(Us, s); stoppers = theirPawns & passed_pawn_mask(Us, s); - lever = theirPawns & pawnAttacksBB[s]; - doubled = ourPawns & (s + Up); + lever = theirPawns & PawnAttacks[Us][s]; + leverPush = theirPawns & PawnAttacks[Us][s + Up]; + doubled = ourPawns & (s - Up); neighbours = ourPawns & adjacent_files_bb(f); phalanx = neighbours & rank_bb(s); supported = neighbours & rank_bb(s - Up); - connected = supported | phalanx; // A pawn is backward when it is behind all pawns of the same color on the // adjacent files and cannot be safely advanced. @@ -146,32 +144,40 @@ namespace { // stopper on adjacent file which controls the way to that rank. backward = (b | shift(b & adjacent_files_bb(f))) & stoppers; - assert(!backward || !(pawn_attack_span(Them, s + Up) & neighbours)); + assert(!(backward && (forward_ranks_bb(Them, s + Up) & neighbours))); } // Passed pawns will be properly scored in evaluation because we need - // full attack info to evaluate them. - if (!stoppers && !(ourPawns & forward_bb(Us, s))) + // full attack info to evaluate them. Include also not passed pawns + // which could become passed after one or two pawn pushes when are + // not attacked more times than defended. + if ( !(stoppers ^ lever ^ leverPush) + && !(ourPawns & forward_file_bb(Us, s)) + && popcount(supported) >= popcount(lever) + && popcount(phalanx) >= popcount(leverPush)) e->passedPawns[Us] |= s; - // Score this pawn - if (!neighbours) - score -= Isolated[opposed]; + else if ( stoppers == SquareBB[s + Up] + && relative_rank(Us, s) >= RANK_5) + { + b = shift(supported) & ~theirPawns; + while (b) + if (!more_than_one(theirPawns & PawnAttacks[Us][pop_lsb(&b)])) + e->passedPawns[Us] |= s; + } - else if (backward) - score -= Backward[opposed]; + // Score this pawn + if (supported | phalanx) + score += Connected[opposed][bool(phalanx)][popcount(supported)][relative_rank(Us, s)]; - else if (!supported) - score -= Unsupported; + else if (!neighbours) + score -= Isolated, e->weakUnopposed[Us] += !opposed; - if (connected) - score += Connected[opposed][!!phalanx][more_than_one(supported)][relative_rank(Us, s)]; + else if (backward) + score -= Backward, e->weakUnopposed[Us] += !opposed; - if (doubled) + if (doubled && !supported) score -= Doubled; - - if (lever) - score += Lever[relative_rank(Us, s)]; } return score; @@ -187,16 +193,17 @@ namespace Pawns { void init() { - static const int Seed[RANK_NB] = { 0, 8, 19, 13, 71, 94, 169, 324 }; + static const int Seed[RANK_NB] = { 0, 13, 24, 18, 76, 100, 175, 330 }; for (int opposed = 0; opposed <= 1; ++opposed) for (int phalanx = 0; phalanx <= 1; ++phalanx) - for (int apex = 0; apex <= 1; ++apex) + for (int support = 0; support <= 2; ++support) for (Rank r = RANK_2; r < RANK_8; ++r) { - int v = (Seed[r] + (phalanx ? (Seed[r + 1] - Seed[r]) / 2 : 0)) >> opposed; - v += (apex ? v / 2 : 0); - Connected[opposed][phalanx][apex][r] = make_score(v, v * 5 / 8); + int v = 17 * support; + v += (Seed[r] + (phalanx ? (Seed[r + 1] - Seed[r]) / 2 : 0)) >> opposed; + + Connected[opposed][phalanx][support][r] = make_score(v, v * (r - 2) / 4); } } @@ -223,35 +230,36 @@ Entry* probe(const Position& pos) { /// Entry::shelter_storm() calculates shelter and storm penalties for the file -/// the king is on, as well as the two adjacent files. +/// the king is on, as well as the two closest files. template Value Entry::shelter_storm(const Position& pos, Square ksq) { const Color Them = (Us == WHITE ? BLACK : WHITE); - enum { NoFriendlyPawn, Unblocked, BlockedByPawn, BlockedByKing }; + enum { BlockedByKing, Unopposed, BlockedByPawn, Unblocked }; - Bitboard b = pos.pieces(PAWN) & (in_front_bb(Us, rank_of(ksq)) | rank_bb(ksq)); + Bitboard b = pos.pieces(PAWN) & (forward_ranks_bb(Us, ksq) | rank_bb(ksq)); Bitboard ourPawns = b & pos.pieces(Us); Bitboard theirPawns = b & pos.pieces(Them); Value safety = MaxSafetyBonus; File center = std::max(FILE_B, std::min(FILE_G, file_of(ksq))); - for (File f = center - File(1); f <= center + File(1); ++f) + for (File f = File(center - 1); f <= File(center + 1); ++f) { b = ourPawns & file_bb(f); Rank rkUs = b ? relative_rank(Us, backmost_sq(Us, b)) : RANK_1; - b = theirPawns & file_bb(f); + b = theirPawns & file_bb(f); Rank rkThem = b ? relative_rank(Us, frontmost_sq(Them, b)) : RANK_1; - safety -= ShelterWeakness[std::min(f, FILE_H - f)][rkUs] + int d = std::min(f, ~f); + safety -= ShelterWeakness[f == file_of(ksq)][d][rkUs] + StormDanger [f == file_of(ksq) && rkThem == relative_rank(Us, ksq) + 1 ? BlockedByKing : - rkUs == RANK_1 ? NoFriendlyPawn : + rkUs == RANK_1 ? Unopposed : rkThem == rkUs + 1 ? BlockedByPawn : Unblocked] - [std::min(f, FILE_H - f)][rkThem]; + [d][rkThem]; } return safety; diff --git a/Engines/Linux64/stockfish/src/pawns.h b/Engines/Linux64/stockfish/src/pawns.h index e26ae67..a9c21ff 100644 --- a/Engines/Linux64/stockfish/src/pawns.h +++ b/Engines/Linux64/stockfish/src/pawns.h @@ -2,7 +2,7 @@ Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad + Copyright (C) 2015-2018 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -37,6 +37,7 @@ struct Entry { Bitboard pawn_attacks(Color c) const { return pawnAttacks[c]; } Bitboard passed_pawns(Color c) const { return passedPawns[c]; } Bitboard pawn_attacks_span(Color c) const { return pawnAttacksSpan[c]; } + int weak_unopposed(Color c) const { return weakUnopposed[c]; } int pawn_asymmetry() const { return asymmetry; } int open_files() const { return openFiles; } @@ -49,7 +50,7 @@ struct Entry { } int pawns_on_same_color_squares(Color c, Square s) const { - return pawnsOnSquares[c][!!(DarkSquares & s)]; + return pawnsOnSquares[c][bool(DarkSquares & s)]; } template @@ -71,6 +72,7 @@ struct Entry { Bitboard pawnAttacksSpan[COLOR_NB]; Square kingSquares[COLOR_NB]; Score kingSafety[COLOR_NB]; + int weakUnopposed[COLOR_NB]; int castlingRights[COLOR_NB]; int semiopenFiles[COLOR_NB]; int pawnsOnSquares[COLOR_NB][COLOR_NB]; // [color][light/dark squares] diff --git a/Engines/Linux64/stockfish/src/position.cpp b/Engines/Linux64/stockfish/src/position.cpp index c09a953..7e12fdc 100644 --- a/Engines/Linux64/stockfish/src/position.cpp +++ b/Engines/Linux64/stockfish/src/position.cpp @@ -2,7 +2,7 @@ Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad + Copyright (C) 2015-2018 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -32,6 +32,7 @@ #include "thread.h" #include "tt.h" #include "uci.h" +#include "syzygy/tbprobe.h" using std::string; @@ -44,14 +45,17 @@ namespace Zobrist { Key psq[PIECE_NB][SQUARE_NB]; Key enpassant[FILE_NB]; Key castling[CASTLING_RIGHT_NB]; - Key side; + Key side, noPawns; } namespace { const string PieceToChar(" PNBRQK pnbrqk"); -// min_attacker() is a helper function used by see() to locate the least +const Piece Pieces[] = { W_PAWN, W_KNIGHT, W_BISHOP, W_ROOK, W_QUEEN, W_KING, + B_PAWN, B_KNIGHT, B_BISHOP, B_ROOK, B_QUEEN, B_KING }; + +// min_attacker() is a helper function used by see_ge() to locate the least // valuable attacker for the side to move, remove the attacker we just found // from the bitboards and scan for new X-ray attacks behind it. @@ -61,7 +65,7 @@ PieceType min_attacker(const Bitboard* bb, Square to, Bitboard stmAttackers, Bitboard b = stmAttackers & bb[Pt]; if (!b) - return min_attacker(bb, to, stmAttackers, occupied, attackers); + return min_attacker(bb, to, stmAttackers, occupied, attackers); occupied ^= b & ~(b - 1); @@ -98,11 +102,25 @@ std::ostream& operator<<(std::ostream& os, const Position& pos) { } os << "\nFen: " << pos.fen() << "\nKey: " << std::hex << std::uppercase - << std::setfill('0') << std::setw(16) << pos.key() << std::dec << "\nCheckers: "; + << std::setfill('0') << std::setw(16) << pos.key() + << std::setfill(' ') << std::dec << "\nCheckers: "; for (Bitboard b = pos.checkers(); b; ) os << UCI::square(pop_lsb(&b)) << " "; + if ( int(Tablebases::MaxCardinality) >= popcount(pos.pieces()) + && !pos.can_castle(ANY_CASTLING)) + { + StateInfo st; + Position p; + p.set(pos.fen(), pos.is_chess960(), &st, pos.this_thread()); + Tablebases::ProbeState s1, s2; + Tablebases::WDLScore wdl = Tablebases::probe_wdl(p, &s1); + int dtz = Tablebases::probe_dtz(p, &s2); + os << "\nTablebases WDL: " << std::setw(4) << wdl << " (" << s1 << ")" + << "\nTablebases DTZ: " << std::setw(4) << dtz << " (" << s2 << ")"; + } + return os; } @@ -133,6 +151,7 @@ void Position::init() { } Zobrist::side = rng.rand(); + Zobrist::noPawns = rng.rand(); } @@ -164,8 +183,9 @@ Position& Position::set(const string& fenStr, bool isChess960, StateInfo* si, Th 4) En passant target square (in algebraic notation). If there's no en passant target square, this is "-". If a pawn has just made a 2-square move, this - is the position "behind" the pawn. This is recorded regardless of whether - there is a pawn in position to make an en passant capture. + is the position "behind" the pawn. This is recorded only if there is a pawn + in position to make an en passant capture, and if there really is a pawn + that might have advanced two squares. 5) Halfmove clock. This is the number of halfmoves since the last pawn advance or capture. This is used to determine if a draw can be claimed under the @@ -191,10 +211,10 @@ Position& Position::set(const string& fenStr, bool isChess960, StateInfo* si, Th while ((ss >> token) && !isspace(token)) { if (isdigit(token)) - sq += Square(token - '0'); // Advance the given number of files + sq += (token - '0') * EAST; // Advance the given number of files else if (token == '/') - sq -= Square(16); + sq += 2 * SOUTH; else if ((idx = PieceToChar.find(token)) != string::npos) { @@ -242,7 +262,8 @@ Position& Position::set(const string& fenStr, bool isChess960, StateInfo* si, Th { st->epSquare = make_square(File(col - 'a'), Rank(row - '1')); - if (!(attackers_to(st->epSquare) & pieces(sideToMove, PAWN))) + if ( !(attackers_to(st->epSquare) & pieces(sideToMove, PAWN)) + || !(pieces(~sideToMove, PAWN) & (st->epSquare + pawn_push(~sideToMove)))) st->epSquare = SQ_NONE; } else @@ -251,7 +272,7 @@ Position& Position::set(const string& fenStr, bool isChess960, StateInfo* si, Th // 5-6. Halfmove clock and fullmove number ss >> std::skipws >> st->rule50 >> gamePly; - // Convert from fullmove starting from 1 to ply starting from 0, + // Convert from fullmove starting from 1 to gamePly starting from 0, // handle also common incorrect FEN with fullmove = 0. gamePly = std::max(2 * (gamePly - 1), 0) + (sideToMove == BLACK); @@ -317,7 +338,8 @@ void Position::set_check_info(StateInfo* si) const { void Position::set_state(StateInfo* si) const { - si->key = si->pawnKey = si->materialKey = 0; + si->key = si->materialKey = 0; + si->pawnKey = Zobrist::noPawns; si->nonPawnMaterial[WHITE] = si->nonPawnMaterial[BLACK] = VALUE_ZERO; si->psq = SCORE_ZERO; si->checkersBB = attackers_to(square(sideToMove)) & pieces(~sideToMove); @@ -357,6 +379,27 @@ void Position::set_state(StateInfo* si) const { } +/// Position::set() is an overload to initialize the position object with +/// the given endgame code string like "KBPKN". It is mainly a helper to +/// get the material key out of an endgame code. + +Position& Position::set(const string& code, Color c, StateInfo* si) { + + assert(code.length() > 0 && code.length() < 8); + assert(code[0] == 'K'); + + string sides[] = { code.substr(code.find('K', 1)), // Weak + code.substr(0, code.find('K', 1)) }; // Strong + + std::transform(sides[c].begin(), sides[c].end(), sides[c].begin(), tolower); + + string fenStr = "8/" + sides[0] + char(8 - sides[0].length() + '0') + "/8/8/8/8/" + + sides[1] + char(8 - sides[1].length() + '0') + "/8 w - - 0 10"; + + return set(fenStr, false, si, nullptr); +} + + /// Position::fen() returns a FEN representation of the position. In case of /// Chess960 the Shredder-FEN notation is used. This is mainly a debugging function. @@ -407,19 +450,6 @@ const string Position::fen() const { } -/// Position::game_phase() calculates the game phase interpolating total non-pawn -/// material between endgame and midgame limits. - -Phase Position::game_phase() const { - - Value npm = st->nonPawnMaterial[WHITE] + st->nonPawnMaterial[BLACK]; - - npm = std::max(EndgameLimit, std::min(npm, MidgameLimit)); - - return Phase(((npm - EndgameLimit) * PHASE_MIDGAME) / (MidgameLimit - EndgameLimit)); -} - - /// Position::slider_blockers() returns a bitboard of all the pieces (both colors) /// that are blocking attacks on the square 's' from 'sliders'. A piece blocks a /// slider if removing that piece from the board would result in a position where @@ -433,7 +463,7 @@ Bitboard Position::slider_blockers(Bitboard sliders, Square s, Bitboard& pinners pinners = 0; // Snipers are sliders that attack 's' when a piece is removed - Bitboard snipers = ( (PseudoAttacks[ROOK ][s] & pieces(QUEEN, ROOK)) + Bitboard snipers = ( (PseudoAttacks[ ROOK][s] & pieces(QUEEN, ROOK)) | (PseudoAttacks[BISHOP][s] & pieces(QUEEN, BISHOP))) & sliders; while (snipers) @@ -460,7 +490,7 @@ Bitboard Position::attackers_to(Square s, Bitboard occupied) const { return (attacks_from(s, BLACK) & pieces(WHITE, PAWN)) | (attacks_from(s, WHITE) & pieces(BLACK, PAWN)) | (attacks_from(s) & pieces(KNIGHT)) - | (attacks_bb(s, occupied) & pieces(ROOK, QUEEN)) + | (attacks_bb< ROOK>(s, occupied) & pieces( ROOK, QUEEN)) | (attacks_bb(s, occupied) & pieces(BISHOP, QUEEN)) | (attacks_from(s) & pieces(KING)); } @@ -554,7 +584,7 @@ bool Position::pseudo_legal(const Move m) const { && empty(to - pawn_push(us)))) return false; } - else if (!(attacks_from(pc, from) & to)) + else if (!(attacks_from(type_of(pc), from) & to)) return false; // Evasions generator already takes care to avoid some kind of illegal moves @@ -607,7 +637,7 @@ bool Position::gives_check(Move m) const { return false; case PROMOTION: - return attacks_bb(Piece(promotion_type(m)), to, pieces() ^ from) & square(~sideToMove); + return attacks_bb(promotion_type(m), to, pieces() ^ from) & square(~sideToMove); // En passant capture with check? We have already handled the case // of direct checks and ordinary discovered check, so the only case we @@ -647,7 +677,7 @@ void Position::do_move(Move m, StateInfo& newSt, bool givesCheck) { assert(is_ok(m)); assert(&newSt != st); - ++nodes; + thisThread->nodes.fetch_add(1, std::memory_order_relaxed); Key k = st->key ^ Zobrist::side; // Copy some fields of the old state to our new StateInfo object except the @@ -757,7 +787,7 @@ void Position::do_move(Move m, StateInfo& newSt, bool givesCheck) { if ( (int(to) ^ int(from)) == 16 && (attacks_from(to - pawn_push(us), us) & pieces(them, PAWN))) { - st->epSquare = (from + to) / 2; + st->epSquare = to - pawn_push(us); k ^= Zobrist::enpassant[file_of(st->epSquare)]; } @@ -786,7 +816,7 @@ void Position::do_move(Move m, StateInfo& newSt, bool givesCheck) { // Update pawn hash key and prefetch access to pawnsTable st->pawnKey ^= Zobrist::psq[pc][from] ^ Zobrist::psq[pc][to]; - prefetch(thisThread->pawnsTable[st->pawnKey]); + prefetch2(thisThread->pawnsTable[st->pawnKey]); // Reset rule 50 draw counter st->rule50 = 0; @@ -956,18 +986,16 @@ Key Position::key_after(Move m) const { /// Position::see_ge (Static Exchange Evaluation Greater or Equal) tests if the -/// SEE value of move is greater or equal to the given value. We'll use an +/// SEE value of move is greater or equal to the given threshold. We'll use an /// algorithm similar to alpha-beta pruning with a null window. -bool Position::see_ge(Move m, Value v) const { +bool Position::see_ge(Move m, Value threshold) const { assert(is_ok(m)); - // Castling moves are implemented as king capturing the rook so cannot be - // handled correctly. Simply assume the SEE value is VALUE_ZERO that is always - // correct unless in the rare case the rook ends up under attack. - if (type_of(m) == CASTLING) - return VALUE_ZERO >= v; + // Only deal with normal moves, assume others pass a simple see + if (type_of(m) != NORMAL) + return VALUE_ZERO >= threshold; Square from = from_sq(m), to = to_sq(m); PieceType nextVictim = type_of(piece_on(from)); @@ -975,30 +1003,22 @@ bool Position::see_ge(Move m, Value v) const { Value balance; // Values of the pieces taken by us minus opponent's ones Bitboard occupied, stmAttackers; - if (type_of(m) == ENPASSANT) - { - occupied = SquareBB[to - pawn_push(~stm)]; // Remove the captured pawn - balance = PieceValue[MG][PAWN]; - } - else - { - balance = PieceValue[MG][piece_on(to)]; - occupied = 0; - } + // The opponent may be able to recapture so this is the best result + // we can hope for. + balance = PieceValue[MG][piece_on(to)] - threshold; - if (balance < v) + if (balance < VALUE_ZERO) return false; - if (nextVictim == KING) - return true; - + // Now assume the worst possible result: that the opponent can + // capture our piece for free. balance -= PieceValue[MG][nextVictim]; - if (balance >= v) + if (balance >= VALUE_ZERO) // Always true if nextVictim == KING return true; - bool relativeStm = true; // True if the opponent is to move - occupied ^= pieces() ^ from ^ to; + bool opponentToMove = true; + occupied = pieces() ^ from ^ to; // Find all attackers to the destination square, with the moving piece removed, // but possibly an X-ray attacker added behind it. @@ -1006,6 +1026,12 @@ bool Position::see_ge(Move m, Value v) const { while (true) { + // The balance is negative only because we assumed we could win + // the last piece for free. We are truly winning only if we can + // win the last piece _cheaply enough_. Test if we can actually + // do this otherwise "give up". + assert(balance < VALUE_ZERO); + stmAttackers = attackers & pieces(stm); // Don't allow pinned pieces to attack pieces except the king as long all @@ -1013,43 +1039,68 @@ bool Position::see_ge(Move m, Value v) const { if (!(st->pinnersForKing[stm] & ~occupied)) stmAttackers &= ~st->blockersForKing[stm]; + // If we have no more attackers we must give up if (!stmAttackers) - return relativeStm; + break; // Locate and remove the next least valuable attacker nextVictim = min_attacker(byTypeBB, to, stmAttackers, occupied, attackers); if (nextVictim == KING) - return relativeStm == bool(attackers & pieces(~stm)); - - balance += relativeStm ? PieceValue[MG][nextVictim] - : -PieceValue[MG][nextVictim]; + { + // Our only attacker is the king. If the opponent still has + // attackers we must give up. Otherwise we make the move and + // (having no more attackers) the opponent must give up. + if (!(attackers & pieces(~stm))) + opponentToMove = !opponentToMove; + break; + } - relativeStm = !relativeStm; + // Assume the opponent can win the next piece for free and switch sides + balance += PieceValue[MG][nextVictim]; + opponentToMove = !opponentToMove; - if (relativeStm == (balance >= v)) - return relativeStm; + // If balance is negative after receiving a free piece then give up + if (balance < VALUE_ZERO) + break; + // Complete the process of switching sides. The first line swaps + // all negative numbers with non-negative numbers. The compiler + // probably knows that it is just the bitwise negation ~balance. + balance = -balance-1; stm = ~stm; } + + // If the opponent gave up we win, otherwise we lose. + return opponentToMove; } /// Position::is_draw() tests whether the position is drawn by 50-move rule /// or by repetition. It does not detect stalemates. -bool Position::is_draw() const { +bool Position::is_draw(int ply) const { if (st->rule50 > 99 && (!checkers() || MoveList(*this).size())) return true; - StateInfo* stp = st; - for (int i = 2, e = std::min(st->rule50, st->pliesFromNull); i <= e; i += 2) + int end = std::min(st->rule50, st->pliesFromNull); + + if (end < 4) + return false; + + StateInfo* stp = st->previous->previous; + int cnt = 0; + + for (int i = 4; i <= end; i += 2) { stp = stp->previous->previous; - if (stp->key == st->key) - return true; // Draw at first repetition + // Return a draw score if a position repeats once earlier but strictly + // after the root, or repeats twice before or at the root. + if ( stp->key == st->key + && ++cnt + (ply > i) == 2) + return true; } return false; @@ -1091,78 +1142,72 @@ void Position::flip() { } -/// Position::pos_is_ok() performs some consistency checks for the position object. +/// Position::pos_is_ok() performs some consistency checks for the +/// position object and raises an asserts if something wrong is detected. /// This is meant to be helpful when debugging. -bool Position::pos_is_ok(int* failedStep) const { +bool Position::pos_is_ok() const { const bool Fast = true; // Quick (default) or full check? - enum { Default, King, Bitboards, State, Lists, Castling }; + if ( (sideToMove != WHITE && sideToMove != BLACK) + || piece_on(square(WHITE)) != W_KING + || piece_on(square(BLACK)) != B_KING + || ( ep_square() != SQ_NONE + && relative_rank(sideToMove, ep_square()) != RANK_6)) + assert(0 && "pos_is_ok: Default"); - for (int step = Default; step <= (Fast ? Default : Castling); step++) - { - if (failedStep) - *failedStep = step; - - if (step == Default) - if ( (sideToMove != WHITE && sideToMove != BLACK) - || piece_on(square(WHITE)) != W_KING - || piece_on(square(BLACK)) != B_KING - || ( ep_square() != SQ_NONE - && relative_rank(sideToMove, ep_square()) != RANK_6)) - return false; + if (Fast) + return true; - if (step == King) - if ( std::count(board, board + SQUARE_NB, W_KING) != 1 - || std::count(board, board + SQUARE_NB, B_KING) != 1 - || attackers_to(square(~sideToMove)) & pieces(sideToMove)) - return false; + if ( pieceCount[W_KING] != 1 + || pieceCount[B_KING] != 1 + || attackers_to(square(~sideToMove)) & pieces(sideToMove)) + assert(0 && "pos_is_ok: Kings"); - if (step == Bitboards) - { - if ( (pieces(WHITE) & pieces(BLACK)) - ||(pieces(WHITE) | pieces(BLACK)) != pieces()) - return false; + if ( (pieces(PAWN) & (Rank1BB | Rank8BB)) + || pieceCount[W_PAWN] > 8 + || pieceCount[B_PAWN] > 8) + assert(0 && "pos_is_ok: Pawns"); - for (PieceType p1 = PAWN; p1 <= KING; ++p1) - for (PieceType p2 = PAWN; p2 <= KING; ++p2) - if (p1 != p2 && (pieces(p1) & pieces(p2))) - return false; - } + if ( (pieces(WHITE) & pieces(BLACK)) + || (pieces(WHITE) | pieces(BLACK)) != pieces() + || popcount(pieces(WHITE)) > 16 + || popcount(pieces(BLACK)) > 16) + assert(0 && "pos_is_ok: Bitboards"); - if (step == State) - { - StateInfo si = *st; - set_state(&si); - if (std::memcmp(&si, st, sizeof(StateInfo))) - return false; - } + for (PieceType p1 = PAWN; p1 <= KING; ++p1) + for (PieceType p2 = PAWN; p2 <= KING; ++p2) + if (p1 != p2 && (pieces(p1) & pieces(p2))) + assert(0 && "pos_is_ok: Bitboards"); - if (step == Lists) - for (Piece pc : Pieces) - { - if (pieceCount[pc] != popcount(pieces(color_of(pc), type_of(pc)))) - return false; + StateInfo si = *st; + set_state(&si); + if (std::memcmp(&si, st, sizeof(StateInfo))) + assert(0 && "pos_is_ok: State"); - for (int i = 0; i < pieceCount[pc]; ++i) - if (board[pieceList[pc][i]] != pc || index[pieceList[pc][i]] != i) - return false; - } + for (Piece pc : Pieces) + { + if ( pieceCount[pc] != popcount(pieces(color_of(pc), type_of(pc))) + || pieceCount[pc] != std::count(board, board + SQUARE_NB, pc)) + assert(0 && "pos_is_ok: Pieces"); - if (step == Castling) - for (Color c = WHITE; c <= BLACK; ++c) - for (CastlingSide s = KING_SIDE; s <= QUEEN_SIDE; s = CastlingSide(s + 1)) - { - if (!can_castle(c | s)) - continue; - - if ( piece_on(castlingRookSquare[c | s]) != make_piece(c, ROOK) - || castlingRightsMask[castlingRookSquare[c | s]] != (c | s) - ||(castlingRightsMask[square(c)] & (c | s)) != (c | s)) - return false; - } + for (int i = 0; i < pieceCount[pc]; ++i) + if (board[pieceList[pc][i]] != pc || index[pieceList[pc][i]] != i) + assert(0 && "pos_is_ok: Index"); } + for (Color c = WHITE; c <= BLACK; ++c) + for (CastlingSide s = KING_SIDE; s <= QUEEN_SIDE; s = CastlingSide(s + 1)) + { + if (!can_castle(c | s)) + continue; + + if ( piece_on(castlingRookSquare[c | s]) != make_piece(c, ROOK) + || castlingRightsMask[castlingRookSquare[c | s]] != (c | s) + || (castlingRightsMask[square(c)] & (c | s)) != (c | s)) + assert(0 && "pos_is_ok: Castling"); + } + return true; } diff --git a/Engines/Linux64/stockfish/src/position.h b/Engines/Linux64/stockfish/src/position.h index 9aa4c44..34e2f7e 100644 --- a/Engines/Linux64/stockfish/src/position.h +++ b/Engines/Linux64/stockfish/src/position.h @@ -2,7 +2,7 @@ Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad + Copyright (C) 2015-2018 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -56,7 +56,10 @@ struct StateInfo { Bitboard checkSquares[PIECE_TYPE_NB]; }; -// In a std::deque references to elements are unaffected upon resizing +/// A list to keep track of the position states along the setup moves (from the +/// start position to the position just before the search starts). Needed by +/// 'draw by repetition' detection. Use a std::deque because pointers to +/// elements are not invalidated upon list resizing. typedef std::unique_ptr> StateListPtr; @@ -76,6 +79,7 @@ class Position { // FEN string input/output Position& set(const std::string& fenStr, bool isChess960, StateInfo* si, Thread* th); + Position& set(const std::string& code, Color c, StateInfo* si); const std::string fen() const; // Position representation @@ -89,6 +93,7 @@ class Position { Square ep_square() const; bool empty(Square s) const; template int count(Color c) const; + template int count() const; template const Square* squares(Color c) const; template Square square(Color c) const; @@ -107,7 +112,7 @@ class Position { // Attacks to/from a given square Bitboard attackers_to(Square s) const; Bitboard attackers_to(Square s, Bitboard occupied) const; - Bitboard attacks_from(Piece pc, Square s) const; + Bitboard attacks_from(PieceType pt, Square s) const; template Bitboard attacks_from(Square s) const; template Bitboard attacks_from(Square s, Color c) const; Bitboard slider_blockers(Bitboard sliders, Square s, Bitboard& pinners) const; @@ -127,13 +132,14 @@ class Position { bool opposite_bishops() const; // Doing and undoing moves - void do_move(Move m, StateInfo& st, bool givesCheck); + void do_move(Move m, StateInfo& newSt); + void do_move(Move m, StateInfo& newSt, bool givesCheck); void undo_move(Move m); - void do_null_move(StateInfo& st); + void do_null_move(StateInfo& newSt); void undo_null_move(); // Static Exchange Evaluation - bool see_ge(Move m, Value value) const; + bool see_ge(Move m, Value threshold = VALUE_ZERO) const; // Accessing hash keys Key key() const; @@ -143,18 +149,17 @@ class Position { // Other properties of the position Color side_to_move() const; - Phase game_phase() const; int game_ply() const; bool is_chess960() const; Thread* this_thread() const; - uint64_t nodes_searched() const; - bool is_draw() const; + bool is_draw(int ply) const; int rule50_count() const; Score psq_score() const; Value non_pawn_material(Color c) const; + Value non_pawn_material() const; // Position consistency check, for debugging - bool pos_is_ok(int* failedStep = nullptr) const; + bool pos_is_ok() const; void flip(); private: @@ -180,7 +185,6 @@ class Position { int castlingRightsMask[SQUARE_NB]; Square castlingRookSquare[CASTLING_RIGHT_NB]; Bitboard castlingPath[CASTLING_RIGHT_NB]; - uint64_t nodes; int gamePly; Color sideToMove; Thread* thisThread; @@ -234,6 +238,10 @@ template inline int Position::count(Color c) const { return pieceCount[make_piece(c, Pt)]; } +template inline int Position::count() const { + return pieceCount[make_piece(WHITE, Pt)] + pieceCount[make_piece(BLACK, Pt)]; +} + template inline const Square* Position::squares(Color c) const { return pieceList[make_piece(c, Pt)]; } @@ -265,18 +273,19 @@ inline Square Position::castling_rook_square(CastlingRight cr) const { template inline Bitboard Position::attacks_from(Square s) const { + assert(Pt != PAWN); return Pt == BISHOP || Pt == ROOK ? attacks_bb(s, byTypeBB[ALL_PIECES]) : Pt == QUEEN ? attacks_from(s) | attacks_from(s) - : StepAttacksBB[Pt][s]; + : PseudoAttacks[Pt][s]; } template<> inline Bitboard Position::attacks_from(Square s, Color c) const { - return StepAttacksBB[make_piece(c, PAWN)][s]; + return PawnAttacks[c][s]; } -inline Bitboard Position::attacks_from(Piece pc, Square s) const { - return attacks_bb(pc, s, byTypeBB[ALL_PIECES]); +inline Bitboard Position::attacks_from(PieceType pt, Square s) const { + return attacks_bb(pt, s, byTypeBB[ALL_PIECES]); } inline Bitboard Position::attackers_to(Square s) const { @@ -328,6 +337,10 @@ inline Value Position::non_pawn_material(Color c) const { return st->nonPawnMaterial[c]; } +inline Value Position::non_pawn_material() const { + return st->nonPawnMaterial[WHITE] + st->nonPawnMaterial[BLACK]; +} + inline int Position::game_ply() const { return gamePly; } @@ -336,10 +349,6 @@ inline int Position::rule50_count() const { return st->rule50; } -inline uint64_t Position::nodes_searched() const { - return nodes; -} - inline bool Position::opposite_bishops() const { return pieceCount[W_BISHOP] == 1 && pieceCount[B_BISHOP] == 1 @@ -411,4 +420,8 @@ inline void Position::move_piece(Piece pc, Square from, Square to) { pieceList[pc][index[to]] = to; } +inline void Position::do_move(Move m, StateInfo& newSt) { + do_move(m, newSt, gives_check(m)); +} + #endif // #ifndef POSITION_H_INCLUDED diff --git a/Engines/Linux64/stockfish/src/psqt.cpp b/Engines/Linux64/stockfish/src/psqt.cpp index 41a9b49..3f447dc 100644 --- a/Engines/Linux64/stockfish/src/psqt.cpp +++ b/Engines/Linux64/stockfish/src/psqt.cpp @@ -2,7 +2,7 @@ Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad + Copyright (C) 2015-2018 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -39,32 +39,32 @@ const Score Bonus[][RANK_NB][int(FILE_NB) / 2] = { { }, { // Pawn { S( 0, 0), S( 0, 0), S( 0, 0), S( 0, 0) }, - { S(-16, 7), S( 1,-4), S( 7, 8), S( 3,-2) }, - { S(-23,-4), S( -7,-5), S( 19, 5), S(24, 4) }, - { S(-22, 3), S(-14, 3), S( 20,-8), S(35,-3) }, - { S(-11, 8), S( 0, 9), S( 3, 7), S(21,-6) }, - { S(-11, 8), S(-13,-5), S( -6, 2), S(-2, 4) }, - { S( -9, 3), S( 15,-9), S( -8, 1), S(-4,18) } + { S(-11, 7), S( 6,-4), S( 7, 8), S( 3,-2) }, + { S(-18,-4), S( -2,-5), S( 19, 5), S(24, 4) }, + { S(-17, 3), S( -9, 3), S( 20,-8), S(35,-3) }, + { S( -6, 8), S( 5, 9), S( 3, 7), S(21,-6) }, + { S( -6, 8), S( -8,-5), S( -6, 2), S(-2, 4) }, + { S( -4, 3), S( 20,-9), S( -8, 1), S(-4,18) } }, { // Knight - { S(-143, -97), S(-96,-82), S(-80,-46), S(-73,-14) }, - { S( -83, -69), S(-43,-55), S(-21,-17), S(-10, 9) }, - { S( -71, -50), S(-22,-39), S( 0, -8), S( 9, 28) }, - { S( -25, -41), S( 18,-25), S( 43, 7), S( 47, 38) }, - { S( -26, -46), S( 16,-25), S( 38, 2), S( 50, 41) }, - { S( -11, -55), S( 37,-38), S( 56, -8), S( 71, 27) }, - { S( -62, -64), S(-17,-50), S( 5,-24), S( 14, 13) }, - { S(-195,-110), S(-66,-90), S(-42,-50), S(-29,-13) } + { S(-161,-105), S(-96,-82), S(-80,-46), S(-73,-14) }, + { S( -83, -69), S(-43,-54), S(-21,-17), S(-10, 9) }, + { S( -71, -50), S(-22,-39), S( 0, -7), S( 9, 28) }, + { S( -25, -41), S( 18,-25), S( 43, 6), S( 47, 38) }, + { S( -26, -46), S( 16,-25), S( 38, 3), S( 50, 40) }, + { S( -11, -54), S( 37,-38), S( 56, -7), S( 65, 27) }, + { S( -63, -65), S(-19,-50), S( 5,-24), S( 14, 13) }, + { S(-195,-109), S(-67,-89), S(-42,-50), S(-29,-13) } }, { // Bishop - { S(-54,-68), S(-23,-40), S(-35,-46), S(-44,-28) }, - { S(-30,-43), S( 10,-17), S( 2,-23), S( -9, -5) }, - { S(-19,-32), S( 17, -9), S( 11,-13), S( 1, 8) }, - { S(-21,-36), S( 18,-13), S( 11,-15), S( 0, 7) }, - { S(-21,-36), S( 14,-14), S( 6,-17), S( -1, 3) }, - { S(-27,-35), S( 6,-13), S( 2,-10), S( -8, 1) }, - { S(-33,-44), S( 7,-21), S( -4,-22), S(-12, -4) }, - { S(-45,-65), S(-21,-42), S(-29,-46), S(-39,-27) } + { S(-44,-58), S(-13,-31), S(-25,-37), S(-34,-19) }, + { S(-20,-34), S( 20, -9), S( 12,-14), S( 1, 4) }, + { S( -9,-23), S( 27, 0), S( 21, -3), S( 11, 16) }, + { S(-11,-26), S( 28, -3), S( 21, -5), S( 10, 16) }, + { S(-11,-26), S( 27, -4), S( 16, -7), S( 9, 14) }, + { S(-17,-24), S( 16, -2), S( 12, 0), S( 2, 13) }, + { S(-23,-34), S( 17,-10), S( 6,-12), S( -2, 6) }, + { S(-35,-55), S(-11,-32), S(-19,-36), S(-29,-17) } }, { // Rook { S(-25, 0), S(-16, 0), S(-16, 0), S(-9, 0) }, @@ -77,24 +77,24 @@ const Score Bonus[][RANK_NB][int(FILE_NB) / 2] = { { S(-23, 0), S(-15, 0), S(-11, 0), S(-5, 0) } }, { // Queen - { S( 0,-70), S(-3,-57), S(-4,-41), S(-1,-29) }, - { S(-4,-58), S( 6,-30), S( 9,-21), S( 8, -4) }, - { S(-2,-39), S( 6,-17), S( 9, -7), S( 9, 5) }, - { S(-1,-29), S( 8, -5), S(10, 9), S( 7, 17) }, - { S(-3,-27), S( 9, -5), S( 8, 10), S( 7, 23) }, - { S(-2,-40), S( 6,-16), S( 8,-11), S(10, 3) }, - { S(-2,-54), S( 7,-30), S( 7,-21), S( 6, -7) }, - { S(-1,-75), S(-4,-54), S(-1,-44), S( 0,-30) } + { S( 0,-71), S(-4,-56), S(-3,-42), S(-1,-29) }, + { S(-4,-56), S( 6,-30), S( 9,-21), S( 8, -5) }, + { S(-2,-39), S( 6,-17), S( 9, -8), S( 9, 5) }, + { S(-1,-29), S( 8, -5), S(10, 9), S( 7, 19) }, + { S(-3,-27), S( 9, -5), S( 8, 10), S( 7, 21) }, + { S(-2,-40), S( 6,-16), S( 8,-10), S(10, 3) }, + { S(-2,-55), S( 7,-30), S( 7,-21), S( 6, -6) }, + { S(-1,-74), S(-4,-55), S(-1,-43), S( 0,-30) } }, { // King - { S(291, 28), S(344, 76), S(294,103), S(219,112) }, - { S(289, 70), S(329,119), S(263,170), S(205,159) }, - { S(226,109), S(271,164), S(202,195), S(136,191) }, - { S(204,131), S(212,194), S(175,194), S(137,204) }, - { S(177,132), S(205,187), S(143,224), S( 94,227) }, - { S(147,118), S(188,178), S(113,199), S( 70,197) }, - { S(116, 72), S(158,121), S( 93,142), S( 48,161) }, - { S( 94, 30), S(120, 76), S( 78,101), S( 31,111) } + { S(267, 0), S(320, 48), S(270, 75), S(195, 84) }, + { S(264, 43), S(304, 92), S(238,143), S(180,132) }, + { S(200, 83), S(245,138), S(176,167), S(110,165) }, + { S(177,106), S(185,169), S(148,169), S(110,179) }, + { S(149,108), S(177,163), S(115,200), S( 66,203) }, + { S(118, 95), S(159,155), S( 84,176), S( 41,174) }, + { S( 87, 50), S(128, 99), S( 63,122), S( 20,139) }, + { S( 63, 9), S( 88, 55), S( 47, 80), S( 0, 90) } } }; @@ -116,7 +116,7 @@ void init() { for (Square s = SQ_A1; s <= SQ_H8; ++s) { - File f = std::min(file_of(s), FILE_H - file_of(s)); + File f = std::min(file_of(s), ~file_of(s)); psq[ pc][ s] = v + Bonus[pc][rank_of(s)][f]; psq[~pc][~s] = -psq[pc][s]; } diff --git a/Engines/Linux64/stockfish/src/search.cpp b/Engines/Linux64/stockfish/src/search.cpp index 19749b6..b9ce9a6 100644 --- a/Engines/Linux64/stockfish/src/search.cpp +++ b/Engines/Linux64/stockfish/src/search.cpp @@ -2,7 +2,7 @@ Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad + Copyright (C) 2015-2018 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -39,7 +39,6 @@ namespace Search { - SignalsType Signals; LimitsType Limits; } @@ -63,8 +62,12 @@ namespace { // Different node types, used as a template parameter enum NodeType { NonPV, PV }; + // Sizes and phases of the skip-blocks, used for distributing search depths across the threads + const int skipSize[] = { 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4 }; + const int skipPhase[] = { 0, 1, 0, 1, 2, 3, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 7 }; + // Razoring and futility margin based on depth - const int razor_margin[4] = { 483, 570, 603, 554 }; + const int razor_margin = 600; Value futility_margin(Depth d) { return Value(150 * d / ONE_PLY); } // Futility and reductions lookup tables, initialized at startup @@ -75,101 +78,62 @@ namespace { return Reductions[PvNode][i][std::min(d / ONE_PLY, 63)][std::min(mn, 63)] * ONE_PLY; } + // History and stats update bonus, based on depth + int stat_bonus(Depth depth) { + int d = depth / ONE_PLY; + return d > 17 ? 0 : d * d + 2 * d - 2; + } + // Skill structure is used to implement strength limit struct Skill { - Skill(int l) : level(l) {} + explicit Skill(int l) : level(l) {} bool enabled() const { return level < 20; } bool time_to_pick(Depth depth) const { return depth / ONE_PLY == 1 + level; } - Move best_move(size_t multiPV) { return best ? best : pick_best(multiPV); } Move pick_best(size_t multiPV); int level; Move best = MOVE_NONE; }; - // EasyMoveManager structure is used to detect an 'easy move'. When the PV is - // stable across multiple search iterations, we can quickly return the best move. - struct EasyMoveManager { - - void clear() { - stableCnt = 0; - expectedPosKey = 0; - pv[0] = pv[1] = pv[2] = MOVE_NONE; - } - - Move get(Key key) const { - return expectedPosKey == key ? pv[2] : MOVE_NONE; - } - - void update(Position& pos, const std::vector& newPv) { - - assert(newPv.size() >= 3); - - // Keep track of how many times in a row the 3rd ply remains stable - stableCnt = (newPv[2] == pv[2]) ? stableCnt + 1 : 0; - - if (!std::equal(newPv.begin(), newPv.begin() + 3, pv)) - { - std::copy(newPv.begin(), newPv.begin() + 3, pv); - - StateInfo st[2]; - pos.do_move(newPv[0], st[0], pos.gives_check(newPv[0])); - pos.do_move(newPv[1], st[1], pos.gives_check(newPv[1])); - expectedPosKey = pos.key(); - pos.undo_move(newPv[1]); - pos.undo_move(newPv[0]); - } - } - - int stableCnt; - Key expectedPosKey; - Move pv[3]; - }; - - // Set of rows with half bits set to 1 and half to 0. It is used to allocate - // the search depths across the threads. - typedef std::vector Row; - - const Row HalfDensity[] = { - {0, 1}, - {1, 0}, - {0, 0, 1, 1}, - {0, 1, 1, 0}, - {1, 1, 0, 0}, - {1, 0, 0, 1}, - {0, 0, 0, 1, 1, 1}, - {0, 0, 1, 1, 1, 0}, - {0, 1, 1, 1, 0, 0}, - {1, 1, 1, 0, 0, 0}, - {1, 1, 0, 0, 0, 1}, - {1, 0, 0, 0, 1, 1}, - {0, 0, 0, 0, 1, 1, 1, 1}, - {0, 0, 0, 1, 1, 1, 1, 0}, - {0, 0, 1, 1, 1, 1, 0 ,0}, - {0, 1, 1, 1, 1, 0, 0 ,0}, - {1, 1, 1, 1, 0, 0, 0 ,0}, - {1, 1, 1, 0, 0, 0, 0 ,1}, - {1, 1, 0, 0, 0, 0, 1 ,1}, - {1, 0, 0, 0, 0, 1, 1 ,1}, - }; - - const size_t HalfDensitySize = std::extent::value; - - EasyMoveManager EasyMove; - Value DrawValue[COLOR_NB]; - template - Value search(Position& pos, Stack* ss, Value alpha, Value beta, Depth depth, bool cutNode); + Value search(Position& pos, Stack* ss, Value alpha, Value beta, Depth depth, bool cutNode, bool skipEarlyPruning); template - Value qsearch(Position& pos, Stack* ss, Value alpha, Value beta, Depth depth); + Value qsearch(Position& pos, Stack* ss, Value alpha, Value beta, Depth depth = DEPTH_ZERO); Value value_to_tt(Value v, int ply); Value value_from_tt(Value v, int ply); void update_pv(Move* pv, Move move, Move* childPv); - void update_cm_stats(Stack* ss, Piece pc, Square s, Value bonus); - void update_stats(const Position& pos, Stack* ss, Move move, Move* quiets, int quietsCnt, Value bonus); - void check_time(); + void update_continuation_histories(Stack* ss, Piece pc, Square to, int bonus); + void update_stats(const Position& pos, Stack* ss, Move move, Move* quiets, int quietsCnt, int bonus); + void update_capture_stats(const Position& pos, Move move, Move* captures, int captureCnt, int bonus); + bool pv_is_draw(Position& pos); + + // perft() is our utility to verify move generation. All the leaf nodes up + // to the given depth are generated and counted, and the sum is returned. + template + uint64_t perft(Position& pos, Depth depth) { + + StateInfo st; + uint64_t cnt, nodes = 0; + const bool leaf = (depth == 2 * ONE_PLY); + + for (const auto& m : MoveList(pos)) + { + if (Root && depth <= ONE_PLY) + cnt = 1, nodes++; + else + { + pos.do_move(m, st); + cnt = leaf ? MoveList(pos).size() : perft(pos, depth - ONE_PLY); + nodes += cnt; + pos.undo_move(m); + } + if (Root) + sync_cout << UCI::move(m, pos.is_chess960()) << ": " << cnt << sync_endl; + } + return nodes; + } } // namespace @@ -182,9 +146,7 @@ void Search::init() { for (int d = 1; d < 64; ++d) for (int mc = 1; mc < 64; ++mc) { - double r = log(d) * log(mc) / 2; - if (r < 0.80) - continue; + double r = log(d) * log(mc) / 1.95; Reductions[NonPV][imp][d][mc] = int(std::round(r)); Reductions[PV][imp][d][mc] = std::max(Reductions[NonPV][imp][d][mc] - 1, 0); @@ -196,74 +158,48 @@ void Search::init() { for (int d = 0; d < 16; ++d) { - FutilityMoveCounts[0][d] = int(2.4 + 0.773 * pow(d + 0.00, 1.8)); - FutilityMoveCounts[1][d] = int(2.9 + 1.045 * pow(d + 0.49, 1.8)); + FutilityMoveCounts[0][d] = int(2.4 + 0.74 * pow(d, 1.78)); + FutilityMoveCounts[1][d] = int(5.0 + 1.00 * pow(d, 2.00)); } } -/// Search::clear() resets search state to zero, to obtain reproducible results +/// Search::clear() resets search state to its initial value void Search::clear() { - TT.clear(); - - for (Thread* th : Threads) - { - th->history.clear(); - th->counterMoves.clear(); - th->fromTo.clear(); - th->counterMoveHistory.clear(); - } - - Threads.main()->previousScore = VALUE_INFINITE; -} - - -/// Search::perft() is our utility to verify move generation. All the leaf nodes -/// up to the given depth are generated and counted, and the sum is returned. -template -uint64_t Search::perft(Position& pos, Depth depth) { - - StateInfo st; - uint64_t cnt, nodes = 0; - const bool leaf = (depth == 2 * ONE_PLY); + Threads.main()->wait_for_search_finished(); - for (const auto& m : MoveList(pos)) - { - if (Root && depth <= ONE_PLY) - cnt = 1, nodes++; - else - { - pos.do_move(m, st, pos.gives_check(m)); - cnt = leaf ? MoveList(pos).size() : perft(pos, depth - ONE_PLY); - nodes += cnt; - pos.undo_move(m); - } - if (Root) - sync_cout << UCI::move(m, pos.is_chess960()) << ": " << cnt << sync_endl; - } - return nodes; + Time.availableNodes = 0; + TT.clear(); + Threads.clear(); } -template uint64_t Search::perft(Position&, Depth); - /// MainThread::search() is called by the main thread when the program receives /// the UCI 'go' command. It searches from the root position and outputs the "bestmove". void MainThread::search() { + if (Limits.perft) + { + nodes = perft(rootPos, Limits.perft * ONE_PLY); + sync_cout << "\nNodes searched: " << nodes << "\n" << sync_endl; + return; + } + Color us = rootPos.side_to_move(); Time.init(Limits, us, rootPos.game_ply()); + TT.new_search(); int contempt = Options["Contempt"] * PawnValueEg / 100; // From centipawns - DrawValue[ us] = VALUE_DRAW - Value(contempt); - DrawValue[~us] = VALUE_DRAW + Value(contempt); + + Eval::Contempt = (us == WHITE ? make_score(contempt, contempt / 2) + : -make_score(contempt, contempt / 2)); if (rootMoves.empty()) { - rootMoves.push_back(RootMove(MOVE_NONE)); + rootMoves.emplace_back(MOVE_NONE); sync_cout << "info depth 0 score " << UCI::value(rootPos.checkers() ? -VALUE_MATE : VALUE_DRAW) << sync_endl; @@ -277,42 +213,47 @@ void MainThread::search() { Thread::search(); // Let's start searching! } - // When playing in 'nodes as time' mode, subtract the searched nodes from - // the available ones before exiting. - if (Limits.npmsec) - Time.availableNodes += Limits.inc[us] - Threads.nodes_searched(); - // When we reach the maximum depth, we can arrive here without a raise of - // Signals.stop. However, if we are pondering or in an infinite search, + // Threads.stop. However, if we are pondering or in an infinite search, // the UCI protocol states that we shouldn't print the best move before the // GUI sends a "stop" or "ponderhit" command. We therefore simply wait here - // until the GUI sends one of those commands (which also raises Signals.stop). - if (!Signals.stop && (Limits.ponder || Limits.infinite)) - { - Signals.stopOnPonderhit = true; - wait(Signals.stop); - } + // until the GUI sends one of those commands (which also raises Threads.stop). + Threads.stopOnPonderhit = true; + + while (!Threads.stop && (Threads.ponder || Limits.infinite)) + {} // Busy wait for a stop or a ponder reset - // Stop the threads if not already stopped - Signals.stop = true; + // Stop the threads if not already stopped (also raise the stop if + // "ponderhit" just reset Threads.ponder). + Threads.stop = true; // Wait until all threads have finished for (Thread* th : Threads) if (th != this) th->wait_for_search_finished(); + // When playing in 'nodes as time' mode, subtract the searched nodes from + // the available ones before exiting. + if (Limits.npmsec) + Time.availableNodes += Limits.inc[us] - Threads.nodes_searched(); + // Check if there are threads with a better score than main thread Thread* bestThread = this; - if ( !this->easyMovePlayed - && Options["MultiPV"] == 1 + if ( Options["MultiPV"] == 1 && !Limits.depth && !Skill(Options["Skill Level"]).enabled() && rootMoves[0].pv[0] != MOVE_NONE) { for (Thread* th : Threads) - if ( th->completedDepth > bestThread->completedDepth - && th->rootMoves[0].score > bestThread->rootMoves[0].score) + { + Depth depthDiff = th->completedDepth - bestThread->completedDepth; + Value scoreDiff = th->rootMoves[0].score - bestThread->rootMoves[0].score; + + // Select the thread with the best score, always if it is a mate + if ( scoreDiff > 0 + && (depthDiff >= 0 || th->rootMoves[0].score >= VALUE_MATE_IN_MAX_PLY)) bestThread = th; + } } previousScore = bestThread->rootMoves[0].score; @@ -330,30 +271,30 @@ void MainThread::search() { } -// Thread::search() is the main iterative deepening loop. It calls search() -// repeatedly with increasing depth until the allocated thinking time has been -// consumed, the user stops the search, or the maximum search depth is reached. +/// Thread::search() is the main iterative deepening loop. It calls search() +/// repeatedly with increasing depth until the allocated thinking time has been +/// consumed, the user stops the search, or the maximum search depth is reached. void Thread::search() { - Stack stack[MAX_PLY+7], *ss = stack+5; // To allow referencing (ss-5) and (ss+2) + Stack stack[MAX_PLY+7], *ss = stack+4; // To reference from (ss-4) to (ss+2) Value bestValue, alpha, beta, delta; - Move easyMove = MOVE_NONE; + Move lastBestMove = MOVE_NONE; + Depth lastBestMoveDepth = DEPTH_ZERO; MainThread* mainThread = (this == Threads.main() ? Threads.main() : nullptr); + double timeReduction = 1.0; - std::memset(ss-5, 0, 8 * sizeof(Stack)); + std::memset(ss-4, 0, 7 * sizeof(Stack)); + for (int i = 4; i > 0; i--) + (ss-i)->contHistory = &this->contHistory[NO_PIECE][0]; // Use as sentinel bestValue = delta = alpha = -VALUE_INFINITE; beta = VALUE_INFINITE; - completedDepth = DEPTH_ZERO; if (mainThread) { - easyMove = EasyMove.get(rootPos.key()); - EasyMove.clear(); - mainThread->easyMovePlayed = mainThread->failedLow = false; + mainThread->failedLow = false; mainThread->bestMoveChanges = 0; - TT.new_search(); } size_t multiPV = Options["MultiPV"]; @@ -368,16 +309,15 @@ void Thread::search() { // Iterative deepening loop until requested to stop or the target depth is reached while ( (rootDepth += ONE_PLY) < DEPTH_MAX - && !Signals.stop - && (!Limits.depth || Threads.main()->rootDepth / ONE_PLY <= Limits.depth)) + && !Threads.stop + && !(Limits.depth && mainThread && rootDepth / ONE_PLY > Limits.depth)) { - // Set up the new depths for the helper threads skipping on average every - // 2nd ply (using a half-density matrix). - if (!mainThread) + // Distribute search depths across the threads + if (idx) { - const Row& row = HalfDensity[(idx - 1) % HalfDensitySize]; - if (row[(rootDepth / ONE_PLY + rootPos.game_ply()) % row.size()]) - continue; + int i = (idx - 1) % 20; + if (((rootDepth / ONE_PLY + rootPos.game_ply() + skipPhase[i]) / skipSize[i]) % 2) + continue; } // Age out PV variability metric @@ -390,8 +330,11 @@ void Thread::search() { rm.previousScore = rm.score; // MultiPV loop. We perform a full root search for each PV line - for (PVIdx = 0; PVIdx < multiPV && !Signals.stop; ++PVIdx) + for (PVIdx = 0; PVIdx < multiPV && !Threads.stop; ++PVIdx) { + // Reset UCI info selDepth for each depth and each PV line + selDepth = 0; + // Reset aspiration window starting size if (rootDepth >= 5 * ONE_PLY) { @@ -405,7 +348,7 @@ void Thread::search() { // high/low anymore. while (true) { - bestValue = ::search(rootPos, ss, alpha, beta, rootDepth, false); + bestValue = ::search(rootPos, ss, alpha, beta, rootDepth, false, false); // Bring the best move to the front. It is critical that sorting // is done with a stable algorithm because all the values but the @@ -415,10 +358,10 @@ void Thread::search() { // search the already searched PV lines are preserved. std::stable_sort(rootMoves.begin() + PVIdx, rootMoves.end()); - // If search has been stopped, break immediately. Sorting and + // If search has been stopped, we break immediately. Sorting and // writing PV back to TT is safe because RootMoves is still // valid, although it refers to the previous iteration. - if (Signals.stop) + if (Threads.stop) break; // When failing high/low give some update (without cluttering @@ -439,14 +382,11 @@ void Thread::search() { if (mainThread) { mainThread->failedLow = true; - Signals.stopOnPonderhit = false; + Threads.stopOnPonderhit = false; } } else if (bestValue >= beta) - { - alpha = (alpha + beta) / 2; beta = std::min(bestValue + delta, VALUE_INFINITE); - } else break; @@ -458,16 +398,25 @@ void Thread::search() { // Sort the PV lines searched so far and update the GUI std::stable_sort(rootMoves.begin(), rootMoves.begin() + PVIdx + 1); - if (!mainThread) - continue; - - if (Signals.stop || PVIdx + 1 == multiPV || Time.elapsed() > 3000) + if ( mainThread + && (Threads.stop || PVIdx + 1 == multiPV || Time.elapsed() > 3000)) sync_cout << UCI::pv(rootPos, rootDepth, alpha, beta) << sync_endl; } - if (!Signals.stop) + if (!Threads.stop) completedDepth = rootDepth; + if (rootMoves[0].pv[0] != lastBestMove) { + lastBestMove = rootMoves[0].pv[0]; + lastBestMoveDepth = rootDepth; + } + + // Have we found a "mate in x"? + if ( Limits.mate + && bestValue >= VALUE_MATE_IN_MAX_PLY + && VALUE_MATE - bestValue <= 2 * Limits.mate) + Threads.stop = true; + if (!mainThread) continue; @@ -475,62 +424,56 @@ void Thread::search() { if (skill.enabled() && skill.time_to_pick(rootDepth)) skill.pick_best(multiPV); - // Have we found a "mate in x"? - if ( Limits.mate - && bestValue >= VALUE_MATE_IN_MAX_PLY - && VALUE_MATE - bestValue <= 2 * Limits.mate) - Signals.stop = true; - // Do we have time for the next iteration? Can we stop searching now? if (Limits.use_time_management()) { - if (!Signals.stop && !Signals.stopOnPonderhit) + if (!Threads.stop && !Threads.stopOnPonderhit) { // Stop the search if only one legal move is available, or if all - // of the available time has been used, or if we matched an easyMove - // from the previous search and just did a fast verification. + // of the available time has been used const int F[] = { mainThread->failedLow, bestValue - mainThread->previousScore }; - int improvingFactor = std::max(229, std::min(715, 357 + 119 * F[0] - 6 * F[1])); - double unstablePvFactor = 1 + mainThread->bestMoveChanges; - bool doEasyMove = rootMoves[0].pv[0] == easyMove - && mainThread->bestMoveChanges < 0.03 - && Time.elapsed() > Time.optimum() * 5 / 42; + Color us = rootPos.side_to_move(); + bool thinkHard = bestValue == VALUE_DRAW + && Limits.time[us] - Time.elapsed() > Limits.time[~us] + && ::pv_is_draw(rootPos); + + double unstablePvFactor = 1 + mainThread->bestMoveChanges + thinkHard; + + // if the bestMove is stable over several iterations, reduce time for this move, + // the longer the move has been stable, the more. + // Use part of the gained time from a previous stable move for the current move. + timeReduction = 1; + for (int i : {3, 4, 5}) + if (lastBestMoveDepth * i < completedDepth && !thinkHard) + timeReduction *= 1.3; + unstablePvFactor *= std::pow(mainThread->previousTimeReduction, 0.51) / timeReduction; if ( rootMoves.size() == 1 - || Time.elapsed() > Time.optimum() * unstablePvFactor * improvingFactor / 628 - || (mainThread->easyMovePlayed = doEasyMove, doEasyMove)) + || Time.elapsed() > Time.optimum() * unstablePvFactor * improvingFactor / 628) { // If we are allowed to ponder do not stop the search now but // keep pondering until the GUI sends "ponderhit" or "stop". - if (Limits.ponder) - Signals.stopOnPonderhit = true; + if (Threads.ponder) + Threads.stopOnPonderhit = true; else - Signals.stop = true; + Threads.stop = true; } } - - if (rootMoves[0].pv.size() >= 3) - EasyMove.update(rootPos, rootMoves[0].pv); - else - EasyMove.clear(); } } if (!mainThread) return; - // Clear any candidate easy move that wasn't stable for the last search - // iterations; the second condition prevents consecutive fast moves. - if (EasyMove.stableCnt < 6 || mainThread->easyMovePlayed) - EasyMove.clear(); + mainThread->previousTimeReduction = timeReduction; // If skill level is enabled, swap best PV line with the sub-optimal one if (skill.enabled()) - std::swap(rootMoves[0], *std::find(rootMoves.begin(), - rootMoves.end(), skill.best_move(multiPV))); + std::swap(rootMoves[0], *std::find(rootMoves.begin(), rootMoves.end(), + skill.best ? skill.best : skill.pick_best(multiPV))); } @@ -539,10 +482,10 @@ namespace { // search<>() is the main search function for both PV and non-PV nodes template - Value search(Position& pos, Stack* ss, Value alpha, Value beta, Depth depth, bool cutNode) { + Value search(Position& pos, Stack* ss, Value alpha, Value beta, Depth depth, bool cutNode, bool skipEarlyPruning) { const bool PvNode = NT == PV; - const bool rootNode = PvNode && (ss-1)->ply == 0; + const bool rootNode = PvNode && ss->ply == 0; assert(-VALUE_INFINITE <= alpha && alpha < beta && beta <= VALUE_INFINITE); assert(PvNode || (alpha == beta - 1)); @@ -550,50 +493,39 @@ namespace { assert(!(PvNode && cutNode)); assert(depth / ONE_PLY * ONE_PLY == depth); - Move pv[MAX_PLY+1], quietsSearched[64]; + Move pv[MAX_PLY+1], capturesSearched[32], quietsSearched[64]; StateInfo st; TTEntry* tte; Key posKey; Move ttMove, move, excludedMove, bestMove; Depth extension, newDepth; - Value bestValue, value, ttValue, eval, nullValue; + Value bestValue, value, ttValue, eval, maxValue; bool ttHit, inCheck, givesCheck, singularExtensionNode, improving; - bool captureOrPromotion, doFullDepthSearch, moveCountPruning; - Piece moved_piece; - int moveCount, quietCount; + bool captureOrPromotion, doFullDepthSearch, moveCountPruning, skipQuiets, ttCapture, pvExact; + Piece movedPiece; + int moveCount, captureCount, quietCount; // Step 1. Initialize node Thread* thisThread = pos.this_thread(); inCheck = pos.checkers(); - moveCount = quietCount = ss->moveCount = 0; - ss->history = VALUE_ZERO; + moveCount = captureCount = quietCount = ss->moveCount = 0; + ss->statScore = 0; bestValue = -VALUE_INFINITE; - ss->ply = (ss-1)->ply + 1; + maxValue = VALUE_INFINITE; // Check for the available remaining time - if (thisThread->resetCalls.load(std::memory_order_relaxed)) - { - thisThread->resetCalls = false; - thisThread->callsCnt = 0; - } - if (++thisThread->callsCnt > 4096) - { - for (Thread* th : Threads) - th->resetCalls = true; - - check_time(); - } + if (thisThread == Threads.main()) + static_cast(thisThread)->check_time(); - // Used to send selDepth info to GUI - if (PvNode && thisThread->maxPly < ss->ply) - thisThread->maxPly = ss->ply; + // Used to send selDepth info to GUI (selDepth counts from 1, ply from 0) + if (PvNode && thisThread->selDepth < ss->ply + 1) + thisThread->selDepth = ss->ply + 1; if (!rootNode) { // Step 2. Check for aborted search and immediate draw - if (Signals.stop.load(std::memory_order_relaxed) || pos.is_draw() || ss->ply >= MAX_PLY) - return ss->ply >= MAX_PLY && !inCheck ? evaluate(pos) - : DrawValue[pos.side_to_move()]; + if (Threads.stop.load(std::memory_order_relaxed) || pos.is_draw(ss->ply) || ss->ply >= MAX_PLY) + return ss->ply >= MAX_PLY && !inCheck ? evaluate(pos) : VALUE_DRAW; // Step 3. Mate distance pruning. Even if we mate at the next move our score // would be at best mate_in(ss->ply+1), but if alpha is already bigger because @@ -609,16 +541,17 @@ namespace { assert(0 <= ss->ply && ss->ply < MAX_PLY); + (ss+1)->ply = ss->ply + 1; ss->currentMove = (ss+1)->excludedMove = bestMove = MOVE_NONE; - ss->counterMoves = nullptr; - (ss+1)->skipEarlyPruning = false; + ss->contHistory = &thisThread->contHistory[NO_PIECE][0]; (ss+2)->killers[0] = (ss+2)->killers[1] = MOVE_NONE; + Square prevSq = to_sq((ss-1)->currentMove); // Step 4. Transposition table lookup. We don't want the score of a partial // search to overwrite a previous full search TT value, so we use a different // position key in case of an excluded move. excludedMove = ss->excludedMove; - posKey = pos.key() ^ Key(excludedMove); + posKey = pos.key() ^ Key(excludedMove << 16); // isn't a very good hash tte = TT.probe(posKey, ttHit); ttValue = ttHit ? value_from_tt(tte->value(), ss->ply) : VALUE_NONE; ttMove = rootNode ? thisThread->rootMoves[thisThread->PVIdx].pv[0] @@ -632,23 +565,24 @@ namespace { && (ttValue >= beta ? (tte->bound() & BOUND_LOWER) : (tte->bound() & BOUND_UPPER))) { - // If ttMove is quiet, update killers, history, counter move on TT hit - if (ttValue >= beta && ttMove) + // If ttMove is quiet, update move sorting heuristics on TT hit + if (ttMove) { - int d = depth / ONE_PLY; - - if (!pos.capture_or_promotion(ttMove)) + if (ttValue >= beta) { - Value bonus = Value(d * d + 2 * d - 2); - update_stats(pos, ss, ttMove, nullptr, 0, bonus); - } + if (!pos.capture_or_promotion(ttMove)) + update_stats(pos, ss, ttMove, nullptr, 0, stat_bonus(depth)); - // Extra penalty for a quiet TT move in previous ply when it gets refuted - if ((ss-1)->moveCount == 1 && !pos.captured_piece()) + // Extra penalty for a quiet TT move in previous ply when it gets refuted + if ((ss-1)->moveCount == 1 && !pos.captured_piece()) + update_continuation_histories(ss-1, pos.piece_on(prevSq), prevSq, -stat_bonus(depth + ONE_PLY)); + } + // Penalty for a quiet ttMove that fails low + else if (!pos.capture_or_promotion(ttMove)) { - Value penalty = Value(d * d + 4 * d + 1); - Square prevSq = to_sq((ss-1)->currentMove); - update_cm_stats(ss-1, pos.piece_on(prevSq), prevSq, -penalty); + int penalty = -stat_bonus(depth); + thisThread->mainHistory.update(pos.side_to_move(), ttMove, penalty); + update_continuation_histories(ss, pos.moved_piece(ttMove), to_sq(ttMove), penalty); } } return ttValue; @@ -657,30 +591,46 @@ namespace { // Step 4a. Tablebase probe if (!rootNode && TB::Cardinality) { - int piecesCnt = pos.count(WHITE) + pos.count(BLACK); + int piecesCount = pos.count(); - if ( piecesCnt <= TB::Cardinality - && (piecesCnt < TB::Cardinality || depth >= TB::ProbeDepth) + if ( piecesCount <= TB::Cardinality + && (piecesCount < TB::Cardinality || depth >= TB::ProbeDepth) && pos.rule50_count() == 0 && !pos.can_castle(ANY_CASTLING)) { - int found, v = Tablebases::probe_wdl(pos, &found); + TB::ProbeState err; + TB::WDLScore wdl = Tablebases::probe_wdl(pos, &err); - if (found) + if (err != TB::ProbeState::FAIL) { - thisThread->tbHits++; + thisThread->tbHits.fetch_add(1, std::memory_order_relaxed); int drawScore = TB::UseRule50 ? 1 : 0; - value = v < -drawScore ? -VALUE_MATE + MAX_PLY + ss->ply - : v > drawScore ? VALUE_MATE - MAX_PLY - ss->ply - : VALUE_DRAW + 2 * v * drawScore; + value = wdl < -drawScore ? -VALUE_MATE + MAX_PLY + ss->ply + 1 + : wdl > drawScore ? VALUE_MATE - MAX_PLY - ss->ply - 1 + : VALUE_DRAW + 2 * wdl * drawScore; + + Bound b = wdl < -drawScore ? BOUND_UPPER + : wdl > drawScore ? BOUND_LOWER : BOUND_EXACT; - tte->save(posKey, value_to_tt(value, ss->ply), BOUND_EXACT, - std::min(DEPTH_MAX - ONE_PLY, depth + 6 * ONE_PLY), - MOVE_NONE, VALUE_NONE, TT.generation()); + if ( b == BOUND_EXACT + || (b == BOUND_LOWER ? value >= beta : value <= alpha)) + { + tte->save(posKey, value_to_tt(value, ss->ply), b, + std::min(DEPTH_MAX - ONE_PLY, depth + 6 * ONE_PLY), + MOVE_NONE, VALUE_NONE, TT.generation()); - return value; + return value; + } + + if (PvNode) + { + if (b == BOUND_LOWER) + bestValue = value, alpha = std::max(alpha, bestValue); + else + maxValue = value; + } } } } @@ -699,9 +649,9 @@ namespace { eval = ss->staticEval = evaluate(pos); // Can ttValue be used as a better position evaluation? - if (ttValue != VALUE_NONE) - if (tte->bound() & (ttValue > eval ? BOUND_LOWER : BOUND_UPPER)) - eval = ttValue; + if ( ttValue != VALUE_NONE + && (tte->bound() & (ttValue > eval ? BOUND_LOWER : BOUND_UPPER))) + eval = ttValue; } else { @@ -713,20 +663,19 @@ namespace { ss->staticEval, TT.generation()); } - if (ss->skipEarlyPruning) + if (skipEarlyPruning || !pos.non_pawn_material(pos.side_to_move())) goto moves_loop; // Step 6. Razoring (skipped when in check) if ( !PvNode && depth < 4 * ONE_PLY - && ttMove == MOVE_NONE - && eval + razor_margin[depth / ONE_PLY] <= alpha) + && eval + razor_margin <= alpha) { if (depth <= ONE_PLY) - return qsearch(pos, ss, alpha, beta, DEPTH_ZERO); + return qsearch(pos, ss, alpha, alpha+1); - Value ralpha = alpha - razor_margin[depth / ONE_PLY]; - Value v = qsearch(pos, ss, ralpha, ralpha+1, DEPTH_ZERO); + Value ralpha = alpha - razor_margin; + Value v = qsearch(pos, ss, ralpha, ralpha+1); if (v <= ralpha) return v; } @@ -735,29 +684,27 @@ namespace { if ( !rootNode && depth < 7 * ONE_PLY && eval - futility_margin(depth) >= beta - && eval < VALUE_KNOWN_WIN // Do not return unproven wins - && pos.non_pawn_material(pos.side_to_move())) + && eval < VALUE_KNOWN_WIN) // Do not return unproven wins return eval; // Step 8. Null move search with verification search (is omitted in PV nodes) if ( !PvNode && eval >= beta - && (ss->staticEval >= beta - 35 * (depth / ONE_PLY - 6) || depth >= 13 * ONE_PLY) - && pos.non_pawn_material(pos.side_to_move())) + && ss->staticEval >= beta - 36 * depth / ONE_PLY + 225 + && (ss->ply >= thisThread->nmp_ply || ss->ply % 2 != thisThread->nmp_odd)) { - ss->currentMove = MOVE_NULL; - ss->counterMoves = nullptr; assert(eval - beta >= 0); // Null move dynamic reduction based on depth and value Depth R = ((823 + 67 * depth / ONE_PLY) / 256 + std::min((eval - beta) / PawnValueMg, 3)) * ONE_PLY; + ss->currentMove = MOVE_NULL; + ss->contHistory = &thisThread->contHistory[NO_PIECE][0]; + pos.do_null_move(st); - (ss+1)->skipEarlyPruning = true; - nullValue = depth-R < ONE_PLY ? -qsearch(pos, ss+1, -beta, -beta+1, DEPTH_ZERO) - : - search(pos, ss+1, -beta, -beta+1, depth-R, !cutNode); - (ss+1)->skipEarlyPruning = false; + Value nullValue = depth-R < ONE_PLY ? -qsearch(pos, ss+1, -beta, -beta+1) + : - search(pos, ss+1, -beta, -beta+1, depth-R, !cutNode, true); pos.undo_null_move(); if (nullValue >= beta) @@ -766,14 +713,18 @@ namespace { if (nullValue >= VALUE_MATE_IN_MAX_PLY) nullValue = beta; - if (depth < 12 * ONE_PLY && abs(beta) < VALUE_KNOWN_WIN) + if (abs(beta) < VALUE_KNOWN_WIN && (depth < 12 * ONE_PLY || thisThread->nmp_ply)) return nullValue; // Do verification search at high depths - ss->skipEarlyPruning = true; - Value v = depth-R < ONE_PLY ? qsearch(pos, ss, beta-1, beta, DEPTH_ZERO) - : search(pos, ss, beta-1, beta, depth-R, false); - ss->skipEarlyPruning = false; + // disable null move pruning for side to move for the first part of the remaining search tree + thisThread->nmp_ply = ss->ply + 3 * (depth-R) / 4; + thisThread->nmp_odd = ss->ply % 2; + + Value v = depth-R < ONE_PLY ? qsearch(pos, ss, beta-1, beta) + : search(pos, ss, beta-1, beta, depth-R, false, true); + + thisThread->nmp_odd = thisThread->nmp_ply = 0; if (v >= beta) return nullValue; @@ -788,21 +739,20 @@ namespace { && abs(beta) < VALUE_MATE_IN_MAX_PLY) { Value rbeta = std::min(beta + 200, VALUE_INFINITE); - Depth rdepth = depth - 4 * ONE_PLY; - assert(rdepth >= ONE_PLY); - assert((ss-1)->currentMove != MOVE_NONE); - assert((ss-1)->currentMove != MOVE_NULL); + assert(is_ok((ss-1)->currentMove)); - MovePicker mp(pos, ttMove, rbeta - ss->staticEval); + MovePicker mp(pos, ttMove, rbeta - ss->staticEval, &thisThread->captureHistory); while ((move = mp.next_move()) != MOVE_NONE) if (pos.legal(move)) { ss->currentMove = move; - ss->counterMoves = &thisThread->counterMoveHistory[pos.moved_piece(move)][to_sq(move)]; - pos.do_move(move, st, pos.gives_check(move)); - value = -search(pos, ss+1, -rbeta, -rbeta+1, rdepth, !cutNode); + ss->contHistory = &thisThread->contHistory[pos.moved_piece(move)][to_sq(move)]; + + assert(depth >= 5 * ONE_PLY); + pos.do_move(move, st); + value = -search(pos, ss+1, -rbeta, -rbeta+1, depth - 4 * ONE_PLY, !cutNode, false); pos.undo_move(move); if (value >= rbeta) return value; @@ -815,9 +765,7 @@ namespace { && (PvNode || ss->staticEval + 256 >= beta)) { Depth d = (3 * depth / (4 * ONE_PLY) - 2) * ONE_PLY; - ss->skipEarlyPruning = true; - search(pos, ss, alpha, beta, d, cutNode); - ss->skipEarlyPruning = false; + search(pos, ss, alpha, beta, d, cutNode, true); tte = TT.probe(posKey, ttHit); ttMove = ttHit ? tte->move() : MOVE_NONE; @@ -825,11 +773,10 @@ namespace { moves_loop: // When in check search starts from here - const CounterMoveStats* cmh = (ss-1)->counterMoves; - const CounterMoveStats* fmh = (ss-2)->counterMoves; - const CounterMoveStats* fmh2 = (ss-4)->counterMoves; + const PieceToHistory* contHist[] = { (ss-1)->contHistory, (ss-2)->contHistory, nullptr, (ss-4)->contHistory }; + Move countermove = thisThread->counterMoves[pos.piece_on(prevSq)][prevSq]; - MovePicker mp(pos, ttMove, depth, ss); + MovePicker mp(pos, ttMove, depth, &thisThread->mainHistory, &thisThread->captureHistory, contHist, countermove, ss->killers); value = bestValue; // Workaround a bogus 'uninitialized' warning under gcc improving = ss->staticEval >= (ss-2)->staticEval /* || ss->staticEval == VALUE_NONE Already implicit in the previous condition */ @@ -842,10 +789,13 @@ namespace { && !excludedMove // Recursive singular search is not allowed && (tte->bound() & BOUND_LOWER) && tte->depth() >= depth - 3 * ONE_PLY; + skipQuiets = false; + ttCapture = false; + pvExact = PvNode && ttHit && tte->bound() == BOUND_EXACT; // Step 11. Loop through moves // Loop through all pseudo-legal moves until no moves remain or a beta cutoff occurs - while ((move = mp.next_move()) != MOVE_NONE) + while ((move = mp.next_move(skipQuiets)) != MOVE_NONE) { assert(is_ok(move)); @@ -871,66 +821,66 @@ namespace { extension = DEPTH_ZERO; captureOrPromotion = pos.capture_or_promotion(move); - moved_piece = pos.moved_piece(move); + movedPiece = pos.moved_piece(move); givesCheck = type_of(move) == NORMAL && !pos.discovered_check_candidates() - ? pos.check_squares(type_of(pos.piece_on(from_sq(move)))) & to_sq(move) + ? pos.check_squares(type_of(movedPiece)) & to_sq(move) : pos.gives_check(move); moveCountPruning = depth < 16 * ONE_PLY && moveCount >= FutilityMoveCounts[improving][depth / ONE_PLY]; - // Step 12. Extend checks - if ( givesCheck - && !moveCountPruning - && pos.see_ge(move, VALUE_ZERO)) - extension = ONE_PLY; + // Step 12. Singular and Gives Check Extensions // Singular extension search. If all moves but one fail low on a search of // (alpha-s, beta-s), and just one fails high on (alpha, beta), then that move // is singular and should be extended. To verify this we do a reduced search // on all the other moves but the ttMove and if the result is lower than - // ttValue minus a margin then we extend the ttMove. + // ttValue minus a margin then we will extend the ttMove. if ( singularExtensionNode && move == ttMove - && !extension && pos.legal(move)) { Value rBeta = std::max(ttValue - 2 * depth / ONE_PLY, -VALUE_MATE); Depth d = (depth / (2 * ONE_PLY)) * ONE_PLY; ss->excludedMove = move; - ss->skipEarlyPruning = true; - value = search(pos, ss, rBeta - 1, rBeta, d, cutNode); - ss->skipEarlyPruning = false; + value = search(pos, ss, rBeta - 1, rBeta, d, cutNode, true); ss->excludedMove = MOVE_NONE; if (value < rBeta) extension = ONE_PLY; } + else if ( givesCheck + && !moveCountPruning + && pos.see_ge(move)) + extension = ONE_PLY; - // Update the current move (this must be done after singular extension search) + // Calculate new depth for this move newDepth = depth - ONE_PLY + extension; // Step 13. Pruning at shallow depth if ( !rootNode + && pos.non_pawn_material(pos.side_to_move()) && bestValue > VALUE_MATED_IN_MAX_PLY) { if ( !captureOrPromotion && !givesCheck - && !pos.advanced_pawn_push(move)) + && (!pos.advanced_pawn_push(move) || pos.non_pawn_material() >= Value(5000))) { // Move count based pruning if (moveCountPruning) + { + skipQuiets = true; continue; + } // Reduced depth of the next LMR search int lmrDepth = std::max(newDepth - reduction(improving, depth, moveCount), DEPTH_ZERO) / ONE_PLY; // Countermoves based pruning if ( lmrDepth < 3 - && (!cmh || (*cmh )[moved_piece][to_sq(move)] < VALUE_ZERO) - && (!fmh || (*fmh )[moved_piece][to_sq(move)] < VALUE_ZERO) - && (!fmh2 || (*fmh2)[moved_piece][to_sq(move)] < VALUE_ZERO || (cmh && fmh))) + && (*contHist[0])[movedPiece][to_sq(move)] < CounterMovePruneThreshold + && (*contHist[1])[movedPiece][to_sq(move)] < CounterMovePruneThreshold) continue; // Futility pruning: parent node @@ -944,9 +894,9 @@ namespace { && !pos.see_ge(move, Value(-35 * lmrDepth * lmrDepth))) continue; } - else if ( depth < 7 * ONE_PLY + else if ( depth < 7 * ONE_PLY && !extension - && !pos.see_ge(move, Value(-35 * depth / ONE_PLY * depth / ONE_PLY))) + && !pos.see_ge(move, -PawnValueEg * (depth / ONE_PLY))) continue; } @@ -960,8 +910,12 @@ namespace { continue; } + if (move == ttMove && captureOrPromotion) + ttCapture = true; + + // Update the current move (this must be done after singular extension search) ss->currentMove = move; - ss->counterMoves = &thisThread->counterMoveHistory[moved_piece][to_sq(move)]; + ss->contHistory = &thisThread->contHistory[movedPiece][to_sq(move)]; // Step 14. Make the move pos.do_move(move, st, givesCheck); @@ -978,40 +932,49 @@ namespace { r -= r ? ONE_PLY : DEPTH_ZERO; else { + // Decrease reduction if opponent's move count is high + if ((ss-1)->moveCount > 15) + r -= ONE_PLY; + + // Decrease reduction for exact PV nodes + if (pvExact) + r -= ONE_PLY; + + // Increase reduction if ttMove is a capture + if (ttCapture) + r += ONE_PLY; + // Increase reduction for cut nodes if (cutNode) r += 2 * ONE_PLY; // Decrease reduction for moves that escape a capture. Filter out // castling moves, because they are coded as "king captures rook" and - // hence break make_move(). Also use see() instead of see_sign(), - // because the destination square is empty. - else if ( type_of(move) == NORMAL - && type_of(pos.piece_on(to_sq(move))) != PAWN - && !pos.see_ge(make_move(to_sq(move), from_sq(move)), VALUE_ZERO)) + // hence break make_move(). + else if ( type_of(move) == NORMAL + && !pos.see_ge(make_move(to_sq(move), from_sq(move)))) r -= 2 * ONE_PLY; - ss->history = thisThread->history[moved_piece][to_sq(move)] - + (cmh ? (*cmh )[moved_piece][to_sq(move)] : VALUE_ZERO) - + (fmh ? (*fmh )[moved_piece][to_sq(move)] : VALUE_ZERO) - + (fmh2 ? (*fmh2)[moved_piece][to_sq(move)] : VALUE_ZERO) - + thisThread->fromTo.get(~pos.side_to_move(), move) - - 8000; // Correction factor + ss->statScore = thisThread->mainHistory[~pos.side_to_move()][from_to(move)] + + (*contHist[0])[movedPiece][to_sq(move)] + + (*contHist[1])[movedPiece][to_sq(move)] + + (*contHist[3])[movedPiece][to_sq(move)] + - 4000; // Decrease/increase reduction by comparing opponent's stat score - if (ss->history > VALUE_ZERO && (ss-1)->history < VALUE_ZERO) + if (ss->statScore >= 0 && (ss-1)->statScore < 0) r -= ONE_PLY; - else if (ss->history < VALUE_ZERO && (ss-1)->history > VALUE_ZERO) + else if ((ss-1)->statScore >= 0 && ss->statScore < 0) r += ONE_PLY; // Decrease/increase reduction for moves with a good/bad history - r = std::max(DEPTH_ZERO, (r / ONE_PLY - ss->history / 20000) * ONE_PLY); + r = std::max(DEPTH_ZERO, (r / ONE_PLY - ss->statScore / 20000) * ONE_PLY); } Depth d = std::max(newDepth - r, ONE_PLY); - value = -search(pos, ss+1, -(alpha+1), -alpha, d, true); + value = -search(pos, ss+1, -(alpha+1), -alpha, d, true, false); doFullDepthSearch = (value > alpha && d != newDepth); } @@ -1021,9 +984,9 @@ namespace { // Step 16. Full depth search when LMR is skipped or fails high if (doFullDepthSearch) value = newDepth < ONE_PLY ? - givesCheck ? -qsearch(pos, ss+1, -(alpha+1), -alpha, DEPTH_ZERO) - : -qsearch(pos, ss+1, -(alpha+1), -alpha, DEPTH_ZERO) - : - search(pos, ss+1, -(alpha+1), -alpha, newDepth, !cutNode); + givesCheck ? -qsearch(pos, ss+1, -(alpha+1), -alpha) + : -qsearch(pos, ss+1, -(alpha+1), -alpha) + : - search(pos, ss+1, -(alpha+1), -alpha, newDepth, !cutNode, false); // For PV nodes only, do a full PV search on the first move or after a fail // high (in the latter case search only if value < beta), otherwise let the @@ -1034,9 +997,9 @@ namespace { (ss+1)->pv[0] = MOVE_NONE; value = newDepth < ONE_PLY ? - givesCheck ? -qsearch(pos, ss+1, -beta, -alpha, DEPTH_ZERO) - : -qsearch(pos, ss+1, -beta, -alpha, DEPTH_ZERO) - : - search(pos, ss+1, -beta, -alpha, newDepth, false); + givesCheck ? -qsearch(pos, ss+1, -beta, -alpha) + : -qsearch(pos, ss+1, -beta, -alpha) + : - search(pos, ss+1, -beta, -alpha, newDepth, false, false); } // Step 17. Undo move @@ -1048,7 +1011,7 @@ namespace { // Finished searching the move. If a stop occurred, the return value of // the search cannot be trusted, and we return immediately without // updating best move, PV and TT. - if (Signals.stop.load(std::memory_order_relaxed)) + if (Threads.stop.load(std::memory_order_relaxed)) return VALUE_ZERO; if (rootNode) @@ -1060,6 +1023,7 @@ namespace { if (moveCount == 1 || value > alpha) { rm.score = value; + rm.selDepth = thisThread->selDepth; rm.pv.resize(1); assert((ss+1)->pv); @@ -1074,8 +1038,8 @@ namespace { ++static_cast(thisThread)->bestMoveChanges; } else - // All other moves but the PV are set to the lowest value: this is - // not a problem when sorting because the sort is stable and the + // All other moves but the PV are set to the lowest value: this + // is not a problem when sorting because the sort is stable and the // move position in the list is preserved - just the PV is pushed up. rm.score = -VALUE_INFINITE; } @@ -1086,13 +1050,6 @@ namespace { if (value > alpha) { - // If there is an easy move for this position, clear it if unstable - if ( PvNode - && thisThread == Threads.main() - && EasyMove.get(pos.key()) - && (move != EasyMove.get(pos.key()) || moveCount > 1)) - EasyMove.clear(); - bestMove = move; if (PvNode && !rootNode) // Update pv even in fail-high case @@ -1110,13 +1067,15 @@ namespace { if (!captureOrPromotion && move != bestMove && quietCount < 64) quietsSearched[quietCount++] = move; + else if (captureOrPromotion && move != bestMove && captureCount < 32) + capturesSearched[captureCount++] = move; } // The following condition would detect a stop only after move loop has been // completed. But in this case bestValue is valid because we have fully // searched our subtree, and we can anyhow save the result in TT. /* - if (Signals.stop) + if (Threads.stop) return VALUE_DRAW; */ @@ -1129,41 +1088,33 @@ namespace { if (!moveCount) bestValue = excludedMove ? alpha - : inCheck ? mated_in(ss->ply) : DrawValue[pos.side_to_move()]; + : inCheck ? mated_in(ss->ply) : VALUE_DRAW; else if (bestMove) { - int d = depth / ONE_PLY; - - // Quiet best move: update killers, history and countermoves + // Quiet best move: update move sorting heuristics if (!pos.capture_or_promotion(bestMove)) - { - Value bonus = Value(d * d + 2 * d - 2); - update_stats(pos, ss, bestMove, quietsSearched, quietCount, bonus); - } + update_stats(pos, ss, bestMove, quietsSearched, quietCount, stat_bonus(depth)); + else + update_capture_stats(pos, bestMove, capturesSearched, captureCount, stat_bonus(depth)); // Extra penalty for a quiet TT move in previous ply when it gets refuted if ((ss-1)->moveCount == 1 && !pos.captured_piece()) - { - Value penalty = Value(d * d + 4 * d + 1); - Square prevSq = to_sq((ss-1)->currentMove); - update_cm_stats(ss-1, pos.piece_on(prevSq), prevSq, -penalty); - } + update_continuation_histories(ss-1, pos.piece_on(prevSq), prevSq, -stat_bonus(depth + ONE_PLY)); } // Bonus for prior countermove that caused the fail low else if ( depth >= 3 * ONE_PLY && !pos.captured_piece() && is_ok((ss-1)->currentMove)) - { - int d = depth / ONE_PLY; - Value bonus = Value(d * d + 2 * d - 2); - Square prevSq = to_sq((ss-1)->currentMove); - update_cm_stats(ss-1, pos.piece_on(prevSq), prevSq, bonus); - } + update_continuation_histories(ss-1, pos.piece_on(prevSq), prevSq, stat_bonus(depth)); - tte->save(posKey, value_to_tt(bestValue, ss->ply), - bestValue >= beta ? BOUND_LOWER : - PvNode && bestMove ? BOUND_EXACT : BOUND_UPPER, - depth, bestMove, ss->staticEval, TT.generation()); + if (PvNode) + bestValue = std::min(bestValue, maxValue); + + if (!excludedMove) + tte->save(posKey, value_to_tt(bestValue, ss->ply), + bestValue >= beta ? BOUND_LOWER : + PvNode && bestMove ? BOUND_EXACT : BOUND_UPPER, + depth, bestMove, ss->staticEval, TT.generation()); assert(bestValue > -VALUE_INFINITE && bestValue < VALUE_INFINITE); @@ -1172,15 +1123,14 @@ namespace { // qsearch() is the quiescence search function, which is called by the main - // search function when the remaining depth is zero (or, to be more precise, - // less than ONE_PLY). + // search function with depth zero, or recursively with depth less than ONE_PLY. template Value qsearch(Position& pos, Stack* ss, Value alpha, Value beta, Depth depth) { const bool PvNode = NT == PV; - assert(InCheck == !!pos.checkers()); + assert(InCheck == bool(pos.checkers())); assert(alpha >= -VALUE_INFINITE && alpha < beta && beta <= VALUE_INFINITE); assert(PvNode || (alpha == beta - 1)); assert(depth <= DEPTH_ZERO); @@ -1194,6 +1144,7 @@ namespace { Value bestValue, value, ttValue, futilityValue, futilityBase, oldAlpha; bool ttHit, givesCheck, evasionPrunable; Depth ttDepth; + int moveCount; if (PvNode) { @@ -1203,12 +1154,12 @@ namespace { } ss->currentMove = bestMove = MOVE_NONE; - ss->ply = (ss-1)->ply + 1; + (ss+1)->ply = ss->ply + 1; + moveCount = 0; // Check for an instant draw or if the maximum ply has been reached - if (pos.is_draw() || ss->ply >= MAX_PLY) - return ss->ply >= MAX_PLY && !InCheck ? evaluate(pos) - : DrawValue[pos.side_to_move()]; + if (pos.is_draw(ss->ply) || ss->ply >= MAX_PLY) + return ss->ply >= MAX_PLY && !InCheck ? evaluate(pos) : VALUE_DRAW; assert(0 <= ss->ply && ss->ply < MAX_PLY); @@ -1217,7 +1168,6 @@ namespace { // only two types of depth in TT: DEPTH_QS_CHECKS or DEPTH_QS_NO_CHECKS. ttDepth = InCheck || depth >= DEPTH_QS_CHECKS ? DEPTH_QS_CHECKS : DEPTH_QS_NO_CHECKS; - // Transposition table lookup posKey = pos.key(); tte = TT.probe(posKey, ttHit); @@ -1247,9 +1197,9 @@ namespace { ss->staticEval = bestValue = evaluate(pos); // Can ttValue be used as a better position evaluation? - if (ttValue != VALUE_NONE) - if (tte->bound() & (ttValue > bestValue ? BOUND_LOWER : BOUND_UPPER)) - bestValue = ttValue; + if ( ttValue != VALUE_NONE + && (tte->bound() & (ttValue > bestValue ? BOUND_LOWER : BOUND_UPPER))) + bestValue = ttValue; } else ss->staticEval = bestValue = @@ -1260,7 +1210,7 @@ namespace { if (bestValue >= beta) { if (!ttHit) - tte->save(pos.key(), value_to_tt(bestValue, ss->ply), BOUND_LOWER, + tte->save(posKey, value_to_tt(bestValue, ss->ply), BOUND_LOWER, DEPTH_NONE, MOVE_NONE, ss->staticEval, TT.generation()); return bestValue; @@ -1276,7 +1226,7 @@ namespace { // to search the moves. Because the depth is <= 0 here, only captures, // queen promotions and checks (only if depth >= DEPTH_QS_CHECKS) will // be generated. - MovePicker mp(pos, ttMove, depth, to_sq((ss-1)->currentMove)); + MovePicker mp(pos, ttMove, depth, &pos.this_thread()->mainHistory, &pos.this_thread()->captureHistory, to_sq((ss-1)->currentMove)); // Loop through the moves until no moves remain or a beta cutoff occurs while ((move = mp.next_move()) != MOVE_NONE) @@ -1284,9 +1234,11 @@ namespace { assert(is_ok(move)); givesCheck = type_of(move) == NORMAL && !pos.discovered_check_candidates() - ? pos.check_squares(type_of(pos.piece_on(from_sq(move)))) & to_sq(move) + ? pos.check_squares(type_of(pos.moved_piece(move))) & to_sq(move) : pos.gives_check(move); + moveCount++; + // Futility pruning if ( !InCheck && !givesCheck @@ -1312,13 +1264,13 @@ namespace { // Detect non-capture evasions that are candidates to be pruned evasionPrunable = InCheck + && (depth != DEPTH_ZERO || moveCount > 2) && bestValue > VALUE_MATED_IN_MAX_PLY && !pos.capture(move); // Don't search moves with negative SEE values if ( (!InCheck || evasionPrunable) - && type_of(move) != PROMOTION - && !pos.see_ge(move, VALUE_ZERO)) + && !pos.see_ge(move)) continue; // Speculative prefetch as early as possible @@ -1326,7 +1278,10 @@ namespace { // Check for legality just before making the move if (!pos.legal(move)) + { + moveCount--; continue; + } ss->currentMove = move; @@ -1414,30 +1369,41 @@ namespace { } - // update_cm_stats() updates countermove and follow-up move history + // update_continuation_histories() updates histories of the move pairs formed + // by moves at ply -1, -2, and -4 with current move. + + void update_continuation_histories(Stack* ss, Piece pc, Square to, int bonus) { + + for (int i : {1, 2, 4}) + if (is_ok((ss-i)->currentMove)) + (ss-i)->contHistory->update(pc, to, bonus); + } - void update_cm_stats(Stack* ss, Piece pc, Square s, Value bonus) { - CounterMoveStats* cmh = (ss-1)->counterMoves; - CounterMoveStats* fmh1 = (ss-2)->counterMoves; - CounterMoveStats* fmh2 = (ss-4)->counterMoves; + // update_capture_stats() updates move sorting heuristics when a new capture best move is found - if (cmh) - cmh->update(pc, s, bonus); + void update_capture_stats(const Position& pos, Move move, + Move* captures, int captureCnt, int bonus) { - if (fmh1) - fmh1->update(pc, s, bonus); + CapturePieceToHistory& captureHistory = pos.this_thread()->captureHistory; + Piece moved_piece = pos.moved_piece(move); + PieceType captured = type_of(pos.piece_on(to_sq(move))); + captureHistory.update(moved_piece, to_sq(move), captured, bonus); - if (fmh2) - fmh2->update(pc, s, bonus); + // Decrease all the other played capture moves + for (int i = 0; i < captureCnt; ++i) + { + moved_piece = pos.moved_piece(captures[i]); + captured = type_of(pos.piece_on(to_sq(captures[i]))); + captureHistory.update(moved_piece, to_sq(captures[i]), captured, -bonus); + } } - // update_stats() updates killers, history, countermove and countermove plus - // follow-up move history when a new quiet best move is found. + // update_stats() updates move sorting heuristics when a new quiet best move is found void update_stats(const Position& pos, Stack* ss, Move move, - Move* quiets, int quietsCnt, Value bonus) { + Move* quiets, int quietsCnt, int bonus) { if (ss->killers[0] != move) { @@ -1447,26 +1413,42 @@ namespace { Color c = pos.side_to_move(); Thread* thisThread = pos.this_thread(); - thisThread->fromTo.update(c, move, bonus); - thisThread->history.update(pos.moved_piece(move), to_sq(move), bonus); - update_cm_stats(ss, pos.moved_piece(move), to_sq(move), bonus); + thisThread->mainHistory.update(c, move, bonus); + update_continuation_histories(ss, pos.moved_piece(move), to_sq(move), bonus); - if ((ss-1)->counterMoves) + if (is_ok((ss-1)->currentMove)) { Square prevSq = to_sq((ss-1)->currentMove); - thisThread->counterMoves.update(pos.piece_on(prevSq), prevSq, move); + thisThread->counterMoves[pos.piece_on(prevSq)][prevSq] = move; } // Decrease all the other played quiet moves for (int i = 0; i < quietsCnt; ++i) { - thisThread->fromTo.update(c, quiets[i], -bonus); - thisThread->history.update(pos.moved_piece(quiets[i]), to_sq(quiets[i]), -bonus); - update_cm_stats(ss, pos.moved_piece(quiets[i]), to_sq(quiets[i]), -bonus); + thisThread->mainHistory.update(c, quiets[i], -bonus); + update_continuation_histories(ss, pos.moved_piece(quiets[i]), to_sq(quiets[i]), -bonus); } } + // Is the PV leading to a draw position? Assumes all pv moves are legal + bool pv_is_draw(Position& pos) { + + StateInfo st[MAX_PLY]; + auto& pv = pos.this_thread()->rootMoves[0].pv; + + for (size_t i = 0; i < pv.size(); ++i) + pos.do_move(pv[i], st[i]); + + bool isDraw = pos.is_draw(pv.size()); + + for (size_t i = pv.size(); i > 0; --i) + pos.undo_move(pv[i-1]); + + return isDraw; + } + + // When playing with strength handicap, choose best move among a set of RootMoves // using a statistical rule dependent on 'level'. Idea by Heinz van Saanen. @@ -1490,7 +1472,7 @@ namespace { int push = ( weakness * int(topScore - rootMoves[i].score) + delta * (rng.rand() % weakness)) / 128; - if (rootMoves[i].score + push > maxScore) + if (rootMoves[i].score + push >= maxScore) { maxScore = rootMoves[i].score + push; best = rootMoves[i].pv[0]; @@ -1500,11 +1482,19 @@ namespace { return best; } +} // namespace // check_time() is used to print debug info and, more importantly, to detect // when we are out of available time and thus stop the search. - void check_time() { + void MainThread::check_time() { + + if (--callsCnt > 0) + return; + + // At low node count increase the checking rate to about 0.1% of nodes + // otherwise use a default value. + callsCnt = Limits.nodes ? std::min(4096, int(Limits.nodes / 1024)) : 4096; static TimePoint lastInfoTime = now(); @@ -1518,17 +1508,15 @@ namespace { } // An engine may not stop pondering until told so by the GUI - if (Limits.ponder) + if (Threads.ponder) return; if ( (Limits.use_time_management() && elapsed > Time.maximum() - 10) || (Limits.movetime && elapsed >= Limits.movetime) || (Limits.nodes && Threads.nodes_searched() >= (uint64_t)Limits.nodes)) - Signals.stop = true; + Threads.stop = true; } -} // namespace - /// UCI::pv() formats PV information according to the UCI protocol. UCI requires /// that all (if any) unsearched PV lines are sent using a previous search score. @@ -1545,7 +1533,7 @@ string UCI::pv(const Position& pos, Depth depth, Value alpha, Value beta) { for (size_t i = 0; i < multiPV; ++i) { - bool updated = (i <= PVIdx); + bool updated = (i <= PVIdx && rootMoves[i].score != -VALUE_INFINITE); if (depth == ONE_PLY && !updated) continue; @@ -1561,7 +1549,7 @@ string UCI::pv(const Position& pos, Depth depth, Value alpha, Value beta) { ss << "info" << " depth " << d / ONE_PLY - << " seldepth " << pos.this_thread()->maxPly + << " seldepth " << rootMoves[i].selDepth << " multipv " << i + 1 << " score " << UCI::value(v); @@ -1601,7 +1589,7 @@ bool RootMove::extract_ponder_from_tt(Position& pos) { if (!pv[0]) return false; - pos.do_move(pv[0], st, pos.gives_check(pv[0])); + pos.do_move(pv[0], st); TTEntry* tte = TT.probe(pos.key(), ttHit); if (ttHit) @@ -1632,6 +1620,10 @@ void Tablebases::filter_root_moves(Position& pos, Search::RootMoves& rootMoves) if (Cardinality < popcount(pos.pieces()) || pos.can_castle(ANY_CASTLING)) return; + // Don't filter any moves if the user requested analysis on multiple + if (Options["MultiPV"] != 1) + return; + // If the current root position is in the tablebases, then RootMoves // contains only moves that preserve the draw or the win. RootInTB = root_probe(pos, rootMoves, TB::Score); @@ -1653,4 +1645,9 @@ void Tablebases::filter_root_moves(Position& pos, Search::RootMoves& rootMoves) TB::Score = TB::Score > VALUE_DRAW ? VALUE_MATE - MAX_PLY - 1 : TB::Score < VALUE_DRAW ? -VALUE_MATE + MAX_PLY + 1 : VALUE_DRAW; + + // Since root_probe() and root_probe_wdl() dirty the root move scores, + // we reset them to -VALUE_INFINITE + for (RootMove& rm : rootMoves) + rm.score = -VALUE_INFINITE; } diff --git a/Engines/Linux64/stockfish/src/search.h b/Engines/Linux64/stockfish/src/search.h index d8051ec..1274b96 100644 --- a/Engines/Linux64/stockfish/src/search.h +++ b/Engines/Linux64/stockfish/src/search.h @@ -2,7 +2,7 @@ Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad + Copyright (C) 2015-2018 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -21,7 +21,6 @@ #ifndef SEARCH_H_INCLUDED #define SEARCH_H_INCLUDED -#include #include #include "misc.h" @@ -32,21 +31,24 @@ class Position; namespace Search { +/// Threshold used for countermoves based pruning +const int CounterMovePruneThreshold = 0; + + /// Stack struct keeps track of the information we need to remember from nodes /// shallower and deeper in the tree during the search. Each search thread has /// its own array of Stack objects, indexed by the current ply. struct Stack { Move* pv; + PieceToHistory* contHistory; int ply; Move currentMove; Move excludedMove; Move killers[2]; Value staticEval; - Value history; - bool skipEarlyPruning; + int statScore; int moveCount; - CounterMoveStats* counterMoves; }; @@ -57,13 +59,16 @@ struct Stack { struct RootMove { explicit RootMove(Move m) : pv(1, m) {} - - bool operator<(const RootMove& m) const { return m.score < score; } // Descending sort - bool operator==(const Move& m) const { return pv[0] == m; } bool extract_ponder_from_tt(Position& pos); + bool operator==(const Move& m) const { return pv[0] == m; } + bool operator<(const RootMove& m) const { // Sort in descending order + return m.score != score ? m.score < score + : m.previousScore < previousScore; + } Value score = -VALUE_INFINITE; Value previousScore = -VALUE_INFINITE; + int selDepth = 0; std::vector pv; }; @@ -71,40 +76,30 @@ typedef std::vector RootMoves; /// LimitsType struct stores information sent by GUI about available time to -/// search the current move, maximum depth/time, if we are in analysis mode or -/// if we have to ponder while it's our opponent's turn to move. +/// search the current move, maximum depth/time, or if we are in analysis mode. struct LimitsType { LimitsType() { // Init explicitly due to broken value-initialization of non POD in MSVC nodes = time[WHITE] = time[BLACK] = inc[WHITE] = inc[BLACK] = - npmsec = movestogo = depth = movetime = mate = infinite = ponder = 0; + npmsec = movestogo = depth = movetime = mate = perft = infinite = 0; } bool use_time_management() const { - return !(mate | movetime | depth | nodes | infinite); + return !(mate | movetime | depth | nodes | perft | infinite); } std::vector searchmoves; - int time[COLOR_NB], inc[COLOR_NB], npmsec, movestogo, depth, movetime, mate, infinite, ponder; + int time[COLOR_NB], inc[COLOR_NB], npmsec, movestogo, depth, + movetime, mate, perft, infinite; int64_t nodes; TimePoint startTime; }; - -/// SignalsType struct stores atomic flags updated during the search, typically -/// in an async fashion e.g. to stop the search by the GUI. - -struct SignalsType { - std::atomic_bool stop, stopOnPonderhit; -}; - -extern SignalsType Signals; extern LimitsType Limits; void init(); void clear(); -template uint64_t perft(Position& pos, Depth depth); } // namespace Search diff --git a/Engines/Linux64/stockfish/src/syzygy/tbprobe.cpp b/Engines/Linux64/stockfish/src/syzygy/tbprobe.cpp index 0281ccc..b50275e 100644 --- a/Engines/Linux64/stockfish/src/syzygy/tbprobe.cpp +++ b/Engines/Linux64/stockfish/src/syzygy/tbprobe.cpp @@ -1,560 +1,1416 @@ /* + Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (c) 2013 Ronald de Man - This file may be redistributed and/or modified without restrictions. + Copyright (C) 2016-2018 Marco Costalba, Lucas Braesch - tbprobe.cpp contains the Stockfish-specific routines of the - tablebase probing code. It should be relatively easy to adapt - this code to other chess engines. -*/ + Stockfish is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. -#define NOMINMAX + Stockfish is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ #include +#include +#include +#include // For std::memset +#include +#include +#include +#include +#include +#include -#include "../position.h" -#include "../movegen.h" #include "../bitboard.h" +#include "../movegen.h" +#include "../position.h" #include "../search.h" +#include "../thread_win32.h" +#include "../types.h" #include "tbprobe.h" -#include "tbcore.h" -#include "tbcore.cpp" +#ifndef _WIN32 +#include +#include +#include +#include +#else +#define WIN32_LEAN_AND_MEAN +#define NOMINMAX +#include +#endif -namespace Zobrist { - extern Key psq[PIECE_NB][SQUARE_NB]; -} +using namespace Tablebases; -int Tablebases::MaxCardinality = 0; +int Tablebases::MaxCardinality; -// Given a position with 6 or fewer pieces, produce a text string -// of the form KQPvKRP, where "KQP" represents the white pieces if -// mirror == 0 and the black pieces if mirror == 1. -static void prt_str(Position& pos, char *str, int mirror) -{ - Color color; - PieceType pt; - int i; - - color = !mirror ? WHITE : BLACK; - for (pt = KING; pt >= PAWN; --pt) - for (i = popcount(pos.pieces(color, pt)); i > 0; i--) - *str++ = pchr[6 - pt]; - *str++ = 'v'; - color = ~color; - for (pt = KING; pt >= PAWN; --pt) - for (i = popcount(pos.pieces(color, pt)); i > 0; i--) - *str++ = pchr[6 - pt]; - *str++ = 0; -} +namespace { -// Given a position, produce a 64-bit material signature key. -// If the engine supports such a key, it should equal the engine's key. -static uint64 calc_key(Position& pos, int mirror) -{ - Color color; - PieceType pt; - int i; - uint64 key = 0; - - color = !mirror ? WHITE : BLACK; - for (pt = PAWN; pt <= KING; ++pt) - for (i = popcount(pos.pieces(color, pt)); i > 0; i--) - key ^= Zobrist::psq[make_piece(WHITE, pt)][i - 1]; - color = ~color; - for (pt = PAWN; pt <= KING; ++pt) - for (i = popcount(pos.pieces(color, pt)); i > 0; i--) - key ^= Zobrist::psq[make_piece(BLACK, pt)][i - 1]; - - return key; -} +// Each table has a set of flags: all of them refer to DTZ tables, the last one to WDL tables +enum TBFlag { STM = 1, Mapped = 2, WinPlies = 4, LossPlies = 8, SingleValue = 128 }; -// Produce a 64-bit material key corresponding to the material combination -// defined by pcs[16], where pcs[1], ..., pcs[6] is the number of white -// pawns, ..., kings and pcs[9], ..., pcs[14] is the number of black -// pawns, ..., kings. -static uint64 calc_key_from_pcs(int *pcs, int mirror) -{ - int color; - PieceType pt; - int i; - uint64 key = 0; - - color = !mirror ? 0 : 8; - for (pt = PAWN; pt <= KING; ++pt) - for (i = 0; i < pcs[color + pt]; i++) - key ^= Zobrist::psq[make_piece(WHITE, pt)][i]; - color ^= 8; - for (pt = PAWN; pt <= KING; ++pt) - for (i = 0; i < pcs[color + pt]; i++) - key ^= Zobrist::psq[make_piece(BLACK, pt)][i]; - - return key; +inline WDLScore operator-(WDLScore d) { return WDLScore(-int(d)); } +inline Square operator^=(Square& s, int i) { return s = Square(int(s) ^ i); } +inline Square operator^(Square s, int i) { return Square(int(s) ^ i); } + +// DTZ tables don't store valid scores for moves that reset the rule50 counter +// like captures and pawn moves but we can easily recover the correct dtz of the +// previous move if we know the position's WDL score. +int dtz_before_zeroing(WDLScore wdl) { + return wdl == WDLWin ? 1 : + wdl == WDLCursedWin ? 101 : + wdl == WDLBlessedLoss ? -101 : + wdl == WDLLoss ? -1 : 0; } -bool is_little_endian() { - union { - int i; - char c[sizeof(int)]; - } x; - x.i = 1; - return x.c[0] == 1; +// Return the sign of a number (-1, 0, 1) +template int sign_of(T val) { + return (T(0) < val) - (val < T(0)); } -static ubyte decompress_pairs(struct PairsData *d, uint64 idx) +// Numbers in little endian used by sparseIndex[] to point into blockLength[] +struct SparseEntry { + char block[4]; // Number of block + char offset[2]; // Offset within the block +}; + +static_assert(sizeof(SparseEntry) == 6, "SparseEntry must be 6 bytes"); + +typedef uint16_t Sym; // Huffman symbol + +struct LR { + enum Side { Left, Right, Value }; + + uint8_t lr[3]; // The first 12 bits is the left-hand symbol, the second 12 + // bits is the right-hand symbol. If symbol has length 1, + // then the first byte is the stored value. + template + Sym get() { + return S == Left ? ((lr[1] & 0xF) << 8) | lr[0] : + S == Right ? (lr[2] << 4) | (lr[1] >> 4) : + S == Value ? lr[0] : (assert(false), Sym(-1)); + } +}; + +static_assert(sizeof(LR) == 3, "LR tree entry must be 3 bytes"); + +const int TBPIECES = 6; + +struct PairsData { + int flags; + size_t sizeofBlock; // Block size in bytes + size_t span; // About every span values there is a SparseIndex[] entry + int blocksNum; // Number of blocks in the TB file + int maxSymLen; // Maximum length in bits of the Huffman symbols + int minSymLen; // Minimum length in bits of the Huffman symbols + Sym* lowestSym; // lowestSym[l] is the symbol of length l with the lowest value + LR* btree; // btree[sym] stores the left and right symbols that expand sym + uint16_t* blockLength; // Number of stored positions (minus one) for each block: 1..65536 + int blockLengthSize; // Size of blockLength[] table: padded so it's bigger than blocksNum + SparseEntry* sparseIndex; // Partial indices into blockLength[] + size_t sparseIndexSize; // Size of SparseIndex[] table + uint8_t* data; // Start of Huffman compressed data + std::vector base64; // base64[l - min_sym_len] is the 64bit-padded lowest symbol of length l + std::vector symlen; // Number of values (-1) represented by a given Huffman symbol: 1..256 + Piece pieces[TBPIECES]; // Position pieces: the order of pieces defines the groups + uint64_t groupIdx[TBPIECES+1]; // Start index used for the encoding of the group's pieces + int groupLen[TBPIECES+1]; // Number of pieces in a given group: KRKN -> (3, 1) +}; + +// Helper struct to avoid manually defining entry copy constructor as we +// should because the default one is not compatible with std::atomic_bool. +struct Atomic { + Atomic() = default; + Atomic(const Atomic& e) { ready = e.ready.load(); } // MSVC 2013 wants assignment within body + std::atomic_bool ready; +}; + +// We define types for the different parts of the WDLEntry and DTZEntry with +// corresponding specializations for pieces or pawns. + +struct WDLEntryPiece { + PairsData* precomp; +}; + +struct WDLEntryPawn { + uint8_t pawnCount[2]; // [Lead color / other color] + WDLEntryPiece file[2][4]; // [wtm / btm][FILE_A..FILE_D] +}; + +struct DTZEntryPiece { + PairsData* precomp; + uint16_t map_idx[4]; // WDLWin, WDLLoss, WDLCursedWin, WDLBlessedLoss + uint8_t* map; +}; + +struct DTZEntryPawn { + uint8_t pawnCount[2]; + DTZEntryPiece file[4]; + uint8_t* map; +}; + +struct TBEntry : public Atomic { + void* baseAddress; + uint64_t mapping; + Key key; + Key key2; + int pieceCount; + bool hasPawns; + bool hasUniquePieces; +}; + +// Now the main types: WDLEntry and DTZEntry +struct WDLEntry : public TBEntry { + WDLEntry(const std::string& code); + ~WDLEntry(); + union { + WDLEntryPiece pieceTable[2]; // [wtm / btm] + WDLEntryPawn pawnTable; + }; +}; + +struct DTZEntry : public TBEntry { + DTZEntry(const WDLEntry& wdl); + ~DTZEntry(); + union { + DTZEntryPiece pieceTable; + DTZEntryPawn pawnTable; + }; +}; + +typedef decltype(WDLEntry::pieceTable) WDLPieceTable; +typedef decltype(DTZEntry::pieceTable) DTZPieceTable; +typedef decltype(WDLEntry::pawnTable ) WDLPawnTable; +typedef decltype(DTZEntry::pawnTable ) DTZPawnTable; + +auto item(WDLPieceTable& e, int stm, int ) -> decltype(e[stm])& { return e[stm]; } +auto item(DTZPieceTable& e, int , int ) -> decltype(e)& { return e; } +auto item(WDLPawnTable& e, int stm, int f) -> decltype(e.file[stm][f])& { return e.file[stm][f]; } +auto item(DTZPawnTable& e, int , int f) -> decltype(e.file[f])& { return e.file[f]; } + +template struct Ret { typedef int type; }; +template<> struct Ret { typedef WDLScore type; }; + +int MapPawns[SQUARE_NB]; +int MapB1H1H7[SQUARE_NB]; +int MapA1D1D4[SQUARE_NB]; +int MapKK[10][SQUARE_NB]; // [MapA1D1D4][SQUARE_NB] + +// Comparison function to sort leading pawns in ascending MapPawns[] order +bool pawns_comp(Square i, Square j) { return MapPawns[i] < MapPawns[j]; } +int off_A1H8(Square sq) { return int(rank_of(sq)) - file_of(sq); } + +const Value WDL_to_value[] = { + -VALUE_MATE + MAX_PLY + 1, + VALUE_DRAW - 2, + VALUE_DRAW, + VALUE_DRAW + 2, + VALUE_MATE - MAX_PLY - 1 +}; + +const std::string PieceToChar = " PNBRQK pnbrqk"; + +int Binomial[6][SQUARE_NB]; // [k][n] k elements from a set of n elements +int LeadPawnIdx[5][SQUARE_NB]; // [leadPawnsCnt][SQUARE_NB] +int LeadPawnsSize[5][4]; // [leadPawnsCnt][FILE_A..FILE_D] + +enum { BigEndian, LittleEndian }; + +template +inline void swap_byte(T& x) { - static const bool isLittleEndian = is_little_endian(); - return isLittleEndian ? decompress_pairs(d, idx) - : decompress_pairs(d, idx); + char tmp, *c = (char*)&x; + for (int i = 0; i < Half; ++i) + tmp = c[i], c[i] = c[End - i], c[End - i] = tmp; } +template<> inline void swap_byte(uint8_t&) {} -// probe_wdl_table and probe_dtz_table require similar adaptations. -static int probe_wdl_table(Position& pos, int *success) +template T number(void* addr) { - struct TBEntry *ptr; - struct TBHashEntry *ptr2; - uint64 idx; - uint64 key; - int i; - ubyte res; - int p[TBPIECES]; - - // Obtain the position's material signature key. - key = pos.material_key(); - - // Test for KvK. - if (key == (Zobrist::psq[W_KING][0] ^ Zobrist::psq[B_KING][0])) - return 0; - - ptr2 = TB_hash[key >> (64 - TBHASHBITS)]; - for (i = 0; i < HSHMAX; i++) - if (ptr2[i].key == key) break; - if (i == HSHMAX) { - *success = 0; - return 0; + const union { uint32_t i; char c[4]; } Le = { 0x01020304 }; + const bool IsLittleEndian = (Le.c[0] == 4); + + T v; + + if ((uintptr_t)addr & (alignof(T) - 1)) // Unaligned pointer (very rare) + std::memcpy(&v, addr, sizeof(T)); + else + v = *((T*)addr); + + if (LE != IsLittleEndian) + swap_byte(v); + return v; +} + +class HashTable { + + typedef std::pair EntryPair; + typedef std::pair Entry; + + static const int TBHASHBITS = 10; + static const int HSHMAX = 5; + + Entry hashTable[1 << TBHASHBITS][HSHMAX]; + + std::deque wdlTable; + std::deque dtzTable; + + void insert(Key key, WDLEntry* wdl, DTZEntry* dtz) { + Entry* entry = hashTable[key >> (64 - TBHASHBITS)]; + + for (int i = 0; i < HSHMAX; ++i, ++entry) + if (!entry->second.first || entry->first == key) { + *entry = std::make_pair(key, std::make_pair(wdl, dtz)); + return; + } + + std::cerr << "HSHMAX too low!" << std::endl; + exit(1); + } + +public: + template::value ? 0 : 1> + E* get(Key key) { + Entry* entry = hashTable[key >> (64 - TBHASHBITS)]; + + for (int i = 0; i < HSHMAX; ++i, ++entry) + if (entry->first == key) + return std::get(entry->second); + + return nullptr; } - ptr = ptr2[i].ptr; - if (!ptr->ready) { - LOCK(TB_mutex); - if (!ptr->ready) { - char str[16]; - prt_str(pos, str, ptr->key != key); - if (!init_table_wdl(ptr, str)) { - ptr2[i].key = 0ULL; - *success = 0; - UNLOCK(TB_mutex); - return 0; - } - // Memory barrier to ensure ptr->ready = 1 is not reordered. -#ifdef _MSC_VER - _ReadWriteBarrier(); + void clear() { + std::memset(hashTable, 0, sizeof(hashTable)); + wdlTable.clear(); + dtzTable.clear(); + } + size_t size() const { return wdlTable.size(); } + void insert(const std::vector& pieces); +}; + +HashTable EntryTable; + +class TBFile : public std::ifstream { + + std::string fname; + +public: + // Look for and open the file among the Paths directories where the .rtbw + // and .rtbz files can be found. Multiple directories are separated by ";" + // on Windows and by ":" on Unix-based operating systems. + // + // Example: + // C:\tb\wdl345;C:\tb\wdl6;D:\tb\dtz345;D:\tb\dtz6 + static std::string Paths; + + TBFile(const std::string& f) { + +#ifndef _WIN32 + const char SepChar = ':'; #else - __asm__ __volatile__ ("" ::: "memory"); + const char SepChar = ';'; #endif - ptr->ready = 1; + std::stringstream ss(Paths); + std::string path; + + while (std::getline(ss, path, SepChar)) { + fname = path + "/" + f; + std::ifstream::open(fname); + if (is_open()) + return; + } } - UNLOCK(TB_mutex); - } - int bside, mirror, cmirror; - if (!ptr->symmetric) { - if (key != ptr->key) { - cmirror = 8; - mirror = 0x38; - bside = (pos.side_to_move() == WHITE); - } else { - cmirror = mirror = 0; - bside = !(pos.side_to_move() == WHITE); + // Memory map the file and check it. File should be already open and will be + // closed after mapping. + uint8_t* map(void** baseAddress, uint64_t* mapping, const uint8_t* TB_MAGIC) { + + assert(is_open()); + + close(); // Need to re-open to get native file descriptor + +#ifndef _WIN32 + struct stat statbuf; + int fd = ::open(fname.c_str(), O_RDONLY); + + if (fd == -1) + return *baseAddress = nullptr, nullptr; + + fstat(fd, &statbuf); + *mapping = statbuf.st_size; + *baseAddress = mmap(nullptr, statbuf.st_size, PROT_READ, MAP_SHARED, fd, 0); + ::close(fd); + + if (*baseAddress == MAP_FAILED) { + std::cerr << "Could not mmap() " << fname << std::endl; + exit(1); + } +#else + HANDLE fd = CreateFile(fname.c_str(), GENERIC_READ, FILE_SHARE_READ, nullptr, + OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, nullptr); + + if (fd == INVALID_HANDLE_VALUE) + return *baseAddress = nullptr, nullptr; + + DWORD size_high; + DWORD size_low = GetFileSize(fd, &size_high); + HANDLE mmap = CreateFileMapping(fd, nullptr, PAGE_READONLY, size_high, size_low, nullptr); + CloseHandle(fd); + + if (!mmap) { + std::cerr << "CreateFileMapping() failed" << std::endl; + exit(1); + } + + *mapping = (uint64_t)mmap; + *baseAddress = MapViewOfFile(mmap, FILE_MAP_READ, 0, 0, 0); + + if (!*baseAddress) { + std::cerr << "MapViewOfFile() failed, name = " << fname + << ", error = " << GetLastError() << std::endl; + exit(1); + } +#endif + uint8_t* data = (uint8_t*)*baseAddress; + + if ( *data++ != *TB_MAGIC++ + || *data++ != *TB_MAGIC++ + || *data++ != *TB_MAGIC++ + || *data++ != *TB_MAGIC) { + std::cerr << "Corrupted table in file " << fname << std::endl; + unmap(*baseAddress, *mapping); + return *baseAddress = nullptr, nullptr; + } + + return data; } - } else { - cmirror = pos.side_to_move() == WHITE ? 0 : 8; - mirror = pos.side_to_move() == WHITE ? 0 : 0x38; - bside = 0; - } - // p[i] is to contain the square 0-63 (A1-H8) for a piece of type - // pc[i] ^ cmirror, where 1 = white pawn, ..., 14 = black king. - // Pieces of the same type are guaranteed to be consecutive. - if (!ptr->has_pawns) { - struct TBEntry_piece *entry = (struct TBEntry_piece *)ptr; - ubyte *pc = entry->pieces[bside]; - for (i = 0; i < entry->num;) { - Bitboard bb = pos.pieces((Color)((pc[i] ^ cmirror) >> 3), - (PieceType)(pc[i] & 0x07)); - do { - p[i++] = pop_lsb(&bb); - } while (bb); + static void unmap(void* baseAddress, uint64_t mapping) { + +#ifndef _WIN32 + munmap(baseAddress, mapping); +#else + UnmapViewOfFile(baseAddress); + CloseHandle((HANDLE)mapping); +#endif } - idx = encode_piece(entry, entry->norm[bside], p, entry->factor[bside]); - res = decompress_pairs(entry->precomp[bside], idx); - } else { - struct TBEntry_pawn *entry = (struct TBEntry_pawn *)ptr; - int k = entry->file[0].pieces[0][0] ^ cmirror; - Bitboard bb = pos.pieces((Color)(k >> 3), (PieceType)(k & 0x07)); - i = 0; - do { - p[i++] = pop_lsb(&bb) ^ mirror; - } while (bb); - int f = pawn_file(entry, p); - ubyte *pc = entry->file[f].pieces[bside]; - for (; i < entry->num;) { - bb = pos.pieces((Color)((pc[i] ^ cmirror) >> 3), - (PieceType)(pc[i] & 0x07)); - do { - p[i++] = pop_lsb(&bb) ^ mirror; - } while (bb); +}; + +std::string TBFile::Paths; + +WDLEntry::WDLEntry(const std::string& code) { + + StateInfo st; + Position pos; + + memset(this, 0, sizeof(WDLEntry)); + + ready = false; + key = pos.set(code, WHITE, &st).material_key(); + pieceCount = popcount(pos.pieces()); + hasPawns = pos.pieces(PAWN); + + for (Color c = WHITE; c <= BLACK; ++c) + for (PieceType pt = PAWN; pt < KING; ++pt) + if (popcount(pos.pieces(c, pt)) == 1) + hasUniquePieces = true; + + if (hasPawns) { + // Set the leading color. In case both sides have pawns the leading color + // is the side with less pawns because this leads to better compression. + bool c = !pos.count(BLACK) + || ( pos.count(WHITE) + && pos.count(BLACK) >= pos.count(WHITE)); + + pawnTable.pawnCount[0] = pos.count(c ? WHITE : BLACK); + pawnTable.pawnCount[1] = pos.count(c ? BLACK : WHITE); } - idx = encode_pawn(entry, entry->file[f].norm[bside], p, entry->file[f].factor[bside]); - res = decompress_pairs(entry->file[f].precomp[bside], idx); - } - return ((int)res) - 2; + key2 = pos.set(code, BLACK, &st).material_key(); } -static int probe_dtz_table(Position& pos, int wdl, int *success) -{ - struct TBEntry *ptr; - uint64 idx; - int i, res; - int p[TBPIECES]; - - // Obtain the position's material signature key. - uint64 key = pos.material_key(); - - if (DTZ_table[0].key1 != key && DTZ_table[0].key2 != key) { - for (i = 1; i < DTZ_ENTRIES; i++) - if (DTZ_table[i].key1 == key) break; - if (i < DTZ_ENTRIES) { - struct DTZTableEntry table_entry = DTZ_table[i]; - for (; i > 0; i--) - DTZ_table[i] = DTZ_table[i - 1]; - DTZ_table[0] = table_entry; - } else { - struct TBHashEntry *ptr2 = TB_hash[key >> (64 - TBHASHBITS)]; - for (i = 0; i < HSHMAX; i++) - if (ptr2[i].key == key) break; - if (i == HSHMAX) { - *success = 0; - return 0; - } - ptr = ptr2[i].ptr; - char str[16]; - int mirror = (ptr->key != key); - prt_str(pos, str, mirror); - if (DTZ_table[DTZ_ENTRIES - 1].entry) - free_dtz_entry(DTZ_table[DTZ_ENTRIES-1].entry); - for (i = DTZ_ENTRIES - 1; i > 0; i--) - DTZ_table[i] = DTZ_table[i - 1]; - load_dtz_table(str, calc_key(pos, mirror), calc_key(pos, !mirror)); - } - } +WDLEntry::~WDLEntry() { - ptr = DTZ_table[0].entry; - if (!ptr) { - *success = 0; - return 0; - } + if (baseAddress) + TBFile::unmap(baseAddress, mapping); + + for (int i = 0; i < 2; ++i) + if (hasPawns) + for (File f = FILE_A; f <= FILE_D; ++f) + delete pawnTable.file[i][f].precomp; + else + delete pieceTable[i].precomp; +} + +DTZEntry::DTZEntry(const WDLEntry& wdl) { + + memset(this, 0, sizeof(DTZEntry)); - int bside, mirror, cmirror; - if (!ptr->symmetric) { - if (key != ptr->key) { - cmirror = 8; - mirror = 0x38; - bside = (pos.side_to_move() == WHITE); - } else { - cmirror = mirror = 0; - bside = !(pos.side_to_move() == WHITE); + ready = false; + key = wdl.key; + key2 = wdl.key2; + pieceCount = wdl.pieceCount; + hasPawns = wdl.hasPawns; + hasUniquePieces = wdl.hasUniquePieces; + + if (hasPawns) { + pawnTable.pawnCount[0] = wdl.pawnTable.pawnCount[0]; + pawnTable.pawnCount[1] = wdl.pawnTable.pawnCount[1]; } - } else { - cmirror = pos.side_to_move() == WHITE ? 0 : 8; - mirror = pos.side_to_move() == WHITE ? 0 : 0x38; - bside = 0; - } +} + +DTZEntry::~DTZEntry() { + + if (baseAddress) + TBFile::unmap(baseAddress, mapping); + + if (hasPawns) + for (File f = FILE_A; f <= FILE_D; ++f) + delete pawnTable.file[f].precomp; + else + delete pieceTable.precomp; +} + +void HashTable::insert(const std::vector& pieces) { + + std::string code; + + for (PieceType pt : pieces) + code += PieceToChar[pt]; + + TBFile file(code.insert(code.find('K', 1), "v") + ".rtbw"); // KRK -> KRvK + + if (!file.is_open()) // Only WDL file is checked + return; + + file.close(); + + MaxCardinality = std::max((int)pieces.size(), MaxCardinality); + + wdlTable.emplace_back(code); + dtzTable.emplace_back(wdlTable.back()); + + insert(wdlTable.back().key , &wdlTable.back(), &dtzTable.back()); + insert(wdlTable.back().key2, &wdlTable.back(), &dtzTable.back()); +} + +// TB tables are compressed with canonical Huffman code. The compressed data is divided into +// blocks of size d->sizeofBlock, and each block stores a variable number of symbols. +// Each symbol represents either a WDL or a (remapped) DTZ value, or a pair of other symbols +// (recursively). If you keep expanding the symbols in a block, you end up with up to 65536 +// WDL or DTZ values. Each symbol represents up to 256 values and will correspond after +// Huffman coding to at least 1 bit. So a block of 32 bytes corresponds to at most +// 32 x 8 x 256 = 65536 values. This maximum is only reached for tables that consist mostly +// of draws or mostly of wins, but such tables are actually quite common. In principle, the +// blocks in WDL tables are 64 bytes long (and will be aligned on cache lines). But for +// mostly-draw or mostly-win tables this can leave many 64-byte blocks only half-filled, so +// in such cases blocks are 32 bytes long. The blocks of DTZ tables are up to 1024 bytes long. +// The generator picks the size that leads to the smallest table. The "book" of symbols and +// Huffman codes is the same for all blocks in the table. A non-symmetric pawnless TB file +// will have one table for wtm and one for btm, a TB file with pawns will have tables per +// file a,b,c,d also in this case one set for wtm and one for btm. +int decompress_pairs(PairsData* d, uint64_t idx) { + + // Special case where all table positions store the same value + if (d->flags & TBFlag::SingleValue) + return d->minSymLen; + + // First we need to locate the right block that stores the value at index "idx". + // Because each block n stores blockLength[n] + 1 values, the index i of the block + // that contains the value at position idx is: + // + // for (i = -1, sum = 0; sum <= idx; i++) + // sum += blockLength[i + 1] + 1; + // + // This can be slow, so we use SparseIndex[] populated with a set of SparseEntry that + // point to known indices into blockLength[]. Namely SparseIndex[k] is a SparseEntry + // that stores the blockLength[] index and the offset within that block of the value + // with index I(k), where: + // + // I(k) = k * d->span + d->span / 2 (1) + + // First step is to get the 'k' of the I(k) nearest to our idx, using definition (1) + uint32_t k = idx / d->span; + + // Then we read the corresponding SparseIndex[] entry + uint32_t block = number(&d->sparseIndex[k].block); + int offset = number(&d->sparseIndex[k].offset); + + // Now compute the difference idx - I(k). From definition of k we know that + // + // idx = k * d->span + idx % d->span (2) + // + // So from (1) and (2) we can compute idx - I(K): + int diff = idx % d->span - d->span / 2; + + // Sum the above to offset to find the offset corresponding to our idx + offset += diff; + + // Move to previous/next block, until we reach the correct block that contains idx, + // that is when 0 <= offset <= d->blockLength[block] + while (offset < 0) + offset += d->blockLength[--block] + 1; + + while (offset > d->blockLength[block]) + offset -= d->blockLength[block++] + 1; + + // Finally, we find the start address of our block of canonical Huffman symbols + uint32_t* ptr = (uint32_t*)(d->data + block * d->sizeofBlock); + + // Read the first 64 bits in our block, this is a (truncated) sequence of + // unknown number of symbols of unknown length but we know the first one + // is at the beginning of this 64 bits sequence. + uint64_t buf64 = number(ptr); ptr += 2; + int buf64Size = 64; + Sym sym; + + while (true) { + int len = 0; // This is the symbol length - d->min_sym_len + + // Now get the symbol length. For any symbol s64 of length l right-padded + // to 64 bits we know that d->base64[l-1] >= s64 >= d->base64[l] so we + // can find the symbol length iterating through base64[]. + while (buf64 < d->base64[len]) + ++len; + + // All the symbols of a given length are consecutive integers (numerical + // sequence property), so we can compute the offset of our symbol of + // length len, stored at the beginning of buf64. + sym = (buf64 - d->base64[len]) >> (64 - len - d->minSymLen); + + // Now add the value of the lowest symbol of length len to get our symbol + sym += number(&d->lowestSym[len]); + + // If our offset is within the number of values represented by symbol sym + // we are done... + if (offset < d->symlen[sym] + 1) + break; - if (!ptr->has_pawns) { - struct DTZEntry_piece *entry = (struct DTZEntry_piece *)ptr; - if ((entry->flags & 1) != bside && !entry->symmetric) { - *success = -1; - return 0; + // ...otherwise update the offset and continue to iterate + offset -= d->symlen[sym] + 1; + len += d->minSymLen; // Get the real length + buf64 <<= len; // Consume the just processed symbol + buf64Size -= len; + + if (buf64Size <= 32) { // Refill the buffer + buf64Size += 32; + buf64 |= (uint64_t)number(ptr++) << (64 - buf64Size); + } } - ubyte *pc = entry->pieces; - for (i = 0; i < entry->num;) { - Bitboard bb = pos.pieces((Color)((pc[i] ^ cmirror) >> 3), - (PieceType)(pc[i] & 0x07)); - do { - p[i++] = pop_lsb(&bb); - } while (bb); + + // Ok, now we have our symbol that expands into d->symlen[sym] + 1 symbols. + // We binary-search for our value recursively expanding into the left and + // right child symbols until we reach a leaf node where symlen[sym] + 1 == 1 + // that will store the value we need. + while (d->symlen[sym]) { + + Sym left = d->btree[sym].get(); + + // If a symbol contains 36 sub-symbols (d->symlen[sym] + 1 = 36) and + // expands in a pair (d->symlen[left] = 23, d->symlen[right] = 11), then + // we know that, for instance the ten-th value (offset = 10) will be on + // the left side because in Recursive Pairing child symbols are adjacent. + if (offset < d->symlen[left] + 1) + sym = left; + else { + offset -= d->symlen[left] + 1; + sym = d->btree[sym].get(); + } } - idx = encode_piece((struct TBEntry_piece *)entry, entry->norm, p, entry->factor); - res = decompress_pairs(entry->precomp, idx); - - if (entry->flags & 2) - res = entry->map[entry->map_idx[wdl_to_map[wdl + 2]] + res]; - - if (!(entry->flags & pa_flags[wdl + 2]) || (wdl & 1)) - res *= 2; - } else { - struct DTZEntry_pawn *entry = (struct DTZEntry_pawn *)ptr; - int k = entry->file[0].pieces[0] ^ cmirror; - Bitboard bb = pos.pieces((Color)(k >> 3), (PieceType)(k & 0x07)); - i = 0; + + return d->btree[sym].get(); +} + +bool check_dtz_stm(WDLEntry*, int, File) { return true; } + +bool check_dtz_stm(DTZEntry* entry, int stm, File f) { + + int flags = entry->hasPawns ? entry->pawnTable.file[f].precomp->flags + : entry->pieceTable.precomp->flags; + + return (flags & TBFlag::STM) == stm + || ((entry->key == entry->key2) && !entry->hasPawns); +} + +// DTZ scores are sorted by frequency of occurrence and then assigned the +// values 0, 1, 2, ... in order of decreasing frequency. This is done for each +// of the four WDLScore values. The mapping information necessary to reconstruct +// the original values is stored in the TB file and read during map[] init. +WDLScore map_score(WDLEntry*, File, int value, WDLScore) { return WDLScore(value - 2); } + +int map_score(DTZEntry* entry, File f, int value, WDLScore wdl) { + + const int WDLMap[] = { 1, 3, 0, 2, 0 }; + + int flags = entry->hasPawns ? entry->pawnTable.file[f].precomp->flags + : entry->pieceTable.precomp->flags; + + uint8_t* map = entry->hasPawns ? entry->pawnTable.map + : entry->pieceTable.map; + + uint16_t* idx = entry->hasPawns ? entry->pawnTable.file[f].map_idx + : entry->pieceTable.map_idx; + if (flags & TBFlag::Mapped) + value = map[idx[WDLMap[wdl + 2]] + value]; + + // DTZ tables store distance to zero in number of moves or plies. We + // want to return plies, so we have convert to plies when needed. + if ( (wdl == WDLWin && !(flags & TBFlag::WinPlies)) + || (wdl == WDLLoss && !(flags & TBFlag::LossPlies)) + || wdl == WDLCursedWin + || wdl == WDLBlessedLoss) + value *= 2; + + return value + 1; +} + +// Compute a unique index out of a position and use it to probe the TB file. To +// encode k pieces of same type and color, first sort the pieces by square in +// ascending order s1 <= s2 <= ... <= sk then compute the unique index as: +// +// idx = Binomial[1][s1] + Binomial[2][s2] + ... + Binomial[k][sk] +// +template::type> +T do_probe_table(const Position& pos, Entry* entry, WDLScore wdl, ProbeState* result) { + + const bool IsWDL = std::is_same::value; + + Square squares[TBPIECES]; + Piece pieces[TBPIECES]; + uint64_t idx; + int next = 0, size = 0, leadPawnsCnt = 0; + PairsData* d; + Bitboard b, leadPawns = 0; + File tbFile = FILE_A; + + // A given TB entry like KRK has associated two material keys: KRvk and Kvkr. + // If both sides have the same pieces keys are equal. In this case TB tables + // only store the 'white to move' case, so if the position to lookup has black + // to move, we need to switch the color and flip the squares before to lookup. + bool symmetricBlackToMove = (entry->key == entry->key2 && pos.side_to_move()); + + // TB files are calculated for white as stronger side. For instance we have + // KRvK, not KvKR. A position where stronger side is white will have its + // material key == entry->key, otherwise we have to switch the color and + // flip the squares before to lookup. + bool blackStronger = (pos.material_key() != entry->key); + + int flipColor = (symmetricBlackToMove || blackStronger) * 8; + int flipSquares = (symmetricBlackToMove || blackStronger) * 070; + int stm = (symmetricBlackToMove || blackStronger) ^ pos.side_to_move(); + + // For pawns, TB files store 4 separate tables according if leading pawn is on + // file a, b, c or d after reordering. The leading pawn is the one with maximum + // MapPawns[] value, that is the one most toward the edges and with lowest rank. + if (entry->hasPawns) { + + // In all the 4 tables, pawns are at the beginning of the piece sequence and + // their color is the reference one. So we just pick the first one. + Piece pc = Piece(item(entry->pawnTable, 0, 0).precomp->pieces[0] ^ flipColor); + + assert(type_of(pc) == PAWN); + + leadPawns = b = pos.pieces(color_of(pc), PAWN); + do + squares[size++] = pop_lsb(&b) ^ flipSquares; + while (b); + + leadPawnsCnt = size; + + std::swap(squares[0], *std::max_element(squares, squares + leadPawnsCnt, pawns_comp)); + + tbFile = file_of(squares[0]); + if (tbFile > FILE_D) + tbFile = file_of(squares[0] ^ 7); // Horizontal flip: SQ_H1 -> SQ_A1 + + d = item(entry->pawnTable , stm, tbFile).precomp; + } else + d = item(entry->pieceTable, stm, tbFile).precomp; + + // DTZ tables are one-sided, i.e. they store positions only for white to + // move or only for black to move, so check for side to move to be stm, + // early exit otherwise. + if (!IsWDL && !check_dtz_stm(entry, stm, tbFile)) + return *result = CHANGE_STM, T(); + + // Now we are ready to get all the position pieces (but the lead pawns) and + // directly map them to the correct color and square. + b = pos.pieces() ^ leadPawns; do { - p[i++] = pop_lsb(&bb) ^ mirror; - } while (bb); - int f = pawn_file((struct TBEntry_pawn *)entry, p); - if ((entry->flags[f] & 1) != bside) { - *success = -1; - return 0; + Square s = pop_lsb(&b); + squares[size] = s ^ flipSquares; + pieces[size++] = Piece(pos.piece_on(s) ^ flipColor); + } while (b); + + assert(size >= 2); + + // Then we reorder the pieces to have the same sequence as the one stored + // in precomp->pieces[i]: the sequence that ensures the best compression. + for (int i = leadPawnsCnt; i < size; ++i) + for (int j = i; j < size; ++j) + if (d->pieces[i] == pieces[j]) + { + std::swap(pieces[i], pieces[j]); + std::swap(squares[i], squares[j]); + break; + } + + // Now we map again the squares so that the square of the lead piece is in + // the triangle A1-D1-D4. + if (file_of(squares[0]) > FILE_D) + for (int i = 0; i < size; ++i) + squares[i] ^= 7; // Horizontal flip: SQ_H1 -> SQ_A1 + + // Encode leading pawns starting with the one with minimum MapPawns[] and + // proceeding in ascending order. + if (entry->hasPawns) { + idx = LeadPawnIdx[leadPawnsCnt][squares[0]]; + + std::sort(squares + 1, squares + leadPawnsCnt, pawns_comp); + + for (int i = 1; i < leadPawnsCnt; ++i) + idx += Binomial[i][MapPawns[squares[i]]]; + + goto encode_remaining; // With pawns we have finished special treatments } - ubyte *pc = entry->file[f].pieces; - for (; i < entry->num;) { - bb = pos.pieces((Color)((pc[i] ^ cmirror) >> 3), - (PieceType)(pc[i] & 0x07)); - do { - p[i++] = pop_lsb(&bb) ^ mirror; - } while (bb); + + // In positions withouth pawns, we further flip the squares to ensure leading + // piece is below RANK_5. + if (rank_of(squares[0]) > RANK_4) + for (int i = 0; i < size; ++i) + squares[i] ^= 070; // Vertical flip: SQ_A8 -> SQ_A1 + + // Look for the first piece of the leading group not on the A1-D4 diagonal + // and ensure it is mapped below the diagonal. + for (int i = 0; i < d->groupLen[0]; ++i) { + if (!off_A1H8(squares[i])) + continue; + + if (off_A1H8(squares[i]) > 0) // A1-H8 diagonal flip: SQ_A3 -> SQ_C3 + for (int j = i; j < size; ++j) + squares[j] = Square(((squares[j] >> 3) | (squares[j] << 3)) & 63); + break; } - idx = encode_pawn((struct TBEntry_pawn *)entry, entry->file[f].norm, p, entry->file[f].factor); - res = decompress_pairs(entry->file[f].precomp, idx); - if (entry->flags[f] & 2) - res = entry->map[entry->map_idx[f][wdl_to_map[wdl + 2]] + res]; + // Encode the leading group. + // + // Suppose we have KRvK. Let's say the pieces are on square numbers wK, wR + // and bK (each 0...63). The simplest way to map this position to an index + // is like this: + // + // index = wK * 64 * 64 + wR * 64 + bK; + // + // But this way the TB is going to have 64*64*64 = 262144 positions, with + // lots of positions being equivalent (because they are mirrors of each + // other) and lots of positions being invalid (two pieces on one square, + // adjacent kings, etc.). + // Usually the first step is to take the wK and bK together. There are just + // 462 ways legal and not-mirrored ways to place the wK and bK on the board. + // Once we have placed the wK and bK, there are 62 squares left for the wR + // Mapping its square from 0..63 to available squares 0..61 can be done like: + // + // wR -= (wR > wK) + (wR > bK); + // + // In words: if wR "comes later" than wK, we deduct 1, and the same if wR + // "comes later" than bK. In case of two same pieces like KRRvK we want to + // place the two Rs "together". If we have 62 squares left, we can place two + // Rs "together" in 62 * 61 / 2 ways (we divide by 2 because rooks can be + // swapped and still get the same position.) + // + // In case we have at least 3 unique pieces (inlcuded kings) we encode them + // together. + if (entry->hasUniquePieces) { + + int adjust1 = squares[1] > squares[0]; + int adjust2 = (squares[2] > squares[0]) + (squares[2] > squares[1]); + + // First piece is below a1-h8 diagonal. MapA1D1D4[] maps the b1-d1-d3 + // triangle to 0...5. There are 63 squares for second piece and and 62 + // (mapped to 0...61) for the third. + if (off_A1H8(squares[0])) + idx = ( MapA1D1D4[squares[0]] * 63 + + (squares[1] - adjust1)) * 62 + + squares[2] - adjust2; + + // First piece is on a1-h8 diagonal, second below: map this occurence to + // 6 to differentiate from the above case, rank_of() maps a1-d4 diagonal + // to 0...3 and finally MapB1H1H7[] maps the b1-h1-h7 triangle to 0..27. + else if (off_A1H8(squares[1])) + idx = ( 6 * 63 + rank_of(squares[0]) * 28 + + MapB1H1H7[squares[1]]) * 62 + + squares[2] - adjust2; + + // First two pieces are on a1-h8 diagonal, third below + else if (off_A1H8(squares[2])) + idx = 6 * 63 * 62 + 4 * 28 * 62 + + rank_of(squares[0]) * 7 * 28 + + (rank_of(squares[1]) - adjust1) * 28 + + MapB1H1H7[squares[2]]; + + // All 3 pieces on the diagonal a1-h8 + else + idx = 6 * 63 * 62 + 4 * 28 * 62 + 4 * 7 * 28 + + rank_of(squares[0]) * 7 * 6 + + (rank_of(squares[1]) - adjust1) * 6 + + (rank_of(squares[2]) - adjust2); + } else + // We don't have at least 3 unique pieces, like in KRRvKBB, just map + // the kings. + idx = MapKK[MapA1D1D4[squares[0]]][squares[1]]; + +encode_remaining: + idx *= d->groupIdx[0]; + Square* groupSq = squares + d->groupLen[0]; + + // Encode remainig pawns then pieces according to square, in ascending order + bool remainingPawns = entry->hasPawns && entry->pawnTable.pawnCount[1]; + + while (d->groupLen[++next]) + { + std::sort(groupSq, groupSq + d->groupLen[next]); + uint64_t n = 0; + + // Map down a square if "comes later" than a square in the previous + // groups (similar to what done earlier for leading group pieces). + for (int i = 0; i < d->groupLen[next]; ++i) + { + auto f = [&](Square s) { return groupSq[i] > s; }; + auto adjust = std::count_if(squares, groupSq, f); + n += Binomial[i + 1][groupSq[i] - adjust - 8 * remainingPawns]; + } - if (!(entry->flags[f] & pa_flags[wdl + 2]) || (wdl & 1)) - res *= 2; - } + remainingPawns = false; + idx += n * d->groupIdx[next]; + groupSq += d->groupLen[next]; + } - return res; + // Now that we have the index, decompress the pair and get the score + return map_score(entry, tbFile, decompress_pairs(d, idx), wdl); } -// Add underpromotion captures to list of captures. -static ExtMove *add_underprom_caps(Position& pos, ExtMove *stack, ExtMove *end) -{ - ExtMove *moves, *extra = end; - - for (moves = stack; moves < end; moves++) { - Move move = moves->move; - if (type_of(move) == PROMOTION && !pos.empty(to_sq(move))) { - (*extra++).move = (Move)(move - (1 << 12)); - (*extra++).move = (Move)(move - (2 << 12)); - (*extra++).move = (Move)(move - (3 << 12)); +// Group together pieces that will be encoded together. The general rule is that +// a group contains pieces of same type and color. The exception is the leading +// group that, in case of positions withouth pawns, can be formed by 3 different +// pieces (default) or by the king pair when there is not a unique piece apart +// from the kings. When there are pawns, pawns are always first in pieces[]. +// +// As example KRKN -> KRK + N, KNNK -> KK + NN, KPPKP -> P + PP + K + K +// +// The actual grouping depends on the TB generator and can be inferred from the +// sequence of pieces in piece[] array. +template +void set_groups(T& e, PairsData* d, int order[], File f) { + + int n = 0, firstLen = e.hasPawns ? 0 : e.hasUniquePieces ? 3 : 2; + d->groupLen[n] = 1; + + // Number of pieces per group is stored in groupLen[], for instance in KRKN + // the encoder will default on '111', so groupLen[] will be (3, 1). + for (int i = 1; i < e.pieceCount; ++i) + if (--firstLen > 0 || d->pieces[i] == d->pieces[i - 1]) + d->groupLen[n]++; + else + d->groupLen[++n] = 1; + + d->groupLen[++n] = 0; // Zero-terminated + + // The sequence in pieces[] defines the groups, but not the order in which + // they are encoded. If the pieces in a group g can be combined on the board + // in N(g) different ways, then the position encoding will be of the form: + // + // g1 * N(g2) * N(g3) + g2 * N(g3) + g3 + // + // This ensures unique encoding for the whole position. The order of the + // groups is a per-table parameter and could not follow the canonical leading + // pawns/pieces -> remainig pawns -> remaining pieces. In particular the + // first group is at order[0] position and the remaining pawns, when present, + // are at order[1] position. + bool pp = e.hasPawns && e.pawnTable.pawnCount[1]; // Pawns on both sides + int next = pp ? 2 : 1; + int freeSquares = 64 - d->groupLen[0] - (pp ? d->groupLen[1] : 0); + uint64_t idx = 1; + + for (int k = 0; next < n || k == order[0] || k == order[1]; ++k) + if (k == order[0]) // Leading pawns or pieces + { + d->groupIdx[0] = idx; + idx *= e.hasPawns ? LeadPawnsSize[d->groupLen[0]][f] + : e.hasUniquePieces ? 31332 : 462; + } + else if (k == order[1]) // Remaining pawns + { + d->groupIdx[1] = idx; + idx *= Binomial[d->groupLen[1]][48 - d->groupLen[0]]; + } + else // Remainig pieces + { + d->groupIdx[next] = idx; + idx *= Binomial[d->groupLen[next]][freeSquares]; + freeSquares -= d->groupLen[next++]; + } + + d->groupIdx[n] = idx; +} + +// In Recursive Pairing each symbol represents a pair of childern symbols. So +// read d->btree[] symbols data and expand each one in his left and right child +// symbol until reaching the leafs that represent the symbol value. +uint8_t set_symlen(PairsData* d, Sym s, std::vector& visited) { + + visited[s] = true; // We can set it now because tree is acyclic + Sym sr = d->btree[s].get(); + + if (sr == 0xFFF) + return 0; + + Sym sl = d->btree[s].get(); + + if (!visited[sl]) + d->symlen[sl] = set_symlen(d, sl, visited); + + if (!visited[sr]) + d->symlen[sr] = set_symlen(d, sr, visited); + + return d->symlen[sl] + d->symlen[sr] + 1; +} + +uint8_t* set_sizes(PairsData* d, uint8_t* data) { + + d->flags = *data++; + + if (d->flags & TBFlag::SingleValue) { + d->blocksNum = d->blockLengthSize = 0; + d->span = d->sparseIndexSize = 0; // Broken MSVC zero-init + d->minSymLen = *data++; // Here we store the single value + return data; + } + + // groupLen[] is a zero-terminated list of group lengths, the last groupIdx[] + // element stores the biggest index that is the tb size. + uint64_t tbSize = d->groupIdx[std::find(d->groupLen, d->groupLen + 7, 0) - d->groupLen]; + + d->sizeofBlock = 1ULL << *data++; + d->span = 1ULL << *data++; + d->sparseIndexSize = (tbSize + d->span - 1) / d->span; // Round up + int padding = number(data++); + d->blocksNum = number(data); data += sizeof(uint32_t); + d->blockLengthSize = d->blocksNum + padding; // Padded to ensure SparseIndex[] + // does not point out of range. + d->maxSymLen = *data++; + d->minSymLen = *data++; + d->lowestSym = (Sym*)data; + d->base64.resize(d->maxSymLen - d->minSymLen + 1); + + // The canonical code is ordered such that longer symbols (in terms of + // the number of bits of their Huffman code) have lower numeric value, + // so that d->lowestSym[i] >= d->lowestSym[i+1] (when read as LittleEndian). + // Starting from this we compute a base64[] table indexed by symbol length + // and containing 64 bit values so that d->base64[i] >= d->base64[i+1]. + // See http://www.eecs.harvard.edu/~michaelm/E210/huffman.pdf + for (int i = d->base64.size() - 2; i >= 0; --i) { + d->base64[i] = (d->base64[i + 1] + number(&d->lowestSym[i]) + - number(&d->lowestSym[i + 1])) / 2; + + assert(d->base64[i] * 2 >= d->base64[i+1]); } - } - return extra; + // Now left-shift by an amount so that d->base64[i] gets shifted 1 bit more + // than d->base64[i+1] and given the above assert condition, we ensure that + // d->base64[i] >= d->base64[i+1]. Moreover for any symbol s64 of length i + // and right-padded to 64 bits holds d->base64[i-1] >= s64 >= d->base64[i]. + for (size_t i = 0; i < d->base64.size(); ++i) + d->base64[i] <<= 64 - i - d->minSymLen; // Right-padding to 64 bits + + data += d->base64.size() * sizeof(Sym); + d->symlen.resize(number(data)); data += sizeof(uint16_t); + d->btree = (LR*)data; + + // The comrpession scheme used is "Recursive Pairing", that replaces the most + // frequent adjacent pair of symbols in the source message by a new symbol, + // reevaluating the frequencies of all of the symbol pairs with respect to + // the extended alphabet, and then repeating the process. + // See http://www.larsson.dogma.net/dcc99.pdf + std::vector visited(d->symlen.size()); + + for (Sym sym = 0; sym < d->symlen.size(); ++sym) + if (!visited[sym]) + d->symlen[sym] = set_symlen(d, sym, visited); + + return data + d->symlen.size() * sizeof(LR) + (d->symlen.size() & 1); } -static int probe_ab(Position& pos, int alpha, int beta, int *success) -{ - int v; - ExtMove stack[64]; - ExtMove *moves, *end; - StateInfo st; - - // Generate (at least) all legal non-ep captures including (under)promotions. - // It is OK to generate more, as long as they are filtered out below. - if (!pos.checkers()) { - end = generate(pos, stack); - // Since underpromotion captures are not included, we need to add them. - end = add_underprom_caps(pos, stack, end); - } else - end = generate(pos, stack); - - for (moves = stack; moves < end; moves++) { - Move capture = moves->move; - if (!pos.capture(capture) || type_of(capture) == ENPASSANT - || !pos.legal(capture)) - continue; - pos.do_move(capture, st, pos.gives_check(capture)); - v = -probe_ab(pos, -beta, -alpha, success); - pos.undo_move(capture); - if (*success == 0) return 0; - if (v > alpha) { - if (v >= beta) { - *success = 2; - return v; - } - alpha = v; +template +uint8_t* set_dtz_map(WDLEntry&, T&, uint8_t*, File) { return nullptr; } + +template +uint8_t* set_dtz_map(DTZEntry&, T& p, uint8_t* data, File maxFile) { + + p.map = data; + + for (File f = FILE_A; f <= maxFile; ++f) { + if (item(p, 0, f).precomp->flags & TBFlag::Mapped) + for (int i = 0; i < 4; ++i) { // Sequence like 3,x,x,x,1,x,0,2,x,x + item(p, 0, f).map_idx[i] = (uint16_t)(data - p.map + 1); + data += *data + 1; + } } - } - v = probe_wdl_table(pos, success); - if (*success == 0) return 0; - if (alpha >= v) { - *success = 1 + (alpha > 0); - return alpha; - } else { - *success = 1; - return v; - } + return data += (uintptr_t)data & 1; // Word alignment } -// Probe the WDL table for a particular position. -// If *success != 0, the probe was successful. -// The return value is from the point of view of the side to move: -// -2 : loss -// -1 : loss, but draw under 50-move rule -// 0 : draw -// 1 : win, but draw under 50-move rule -// 2 : win -int Tablebases::probe_wdl(Position& pos, int *success) -{ - int v; +template +void do_init(Entry& e, T& p, uint8_t* data) { - *success = 1; - v = probe_ab(pos, -2, 2, success); + const bool IsWDL = std::is_same::value; - // If en passant is not possible, we are done. - if (pos.ep_square() == SQ_NONE) - return v; - if (!(*success)) return 0; - - // Now handle en passant. - int v1 = -3; - // Generate (at least) all legal en passant captures. - ExtMove stack[192]; - ExtMove *moves, *end; - StateInfo st; - - if (!pos.checkers()) - end = generate(pos, stack); - else - end = generate(pos, stack); - - for (moves = stack; moves < end; moves++) { - Move capture = moves->move; - if (type_of(capture) != ENPASSANT - || !pos.legal(capture)) - continue; - pos.do_move(capture, st, pos.gives_check(capture)); - int v0 = -probe_ab(pos, -2, 2, success); - pos.undo_move(capture); - if (*success == 0) return 0; - if (v0 > v1) v1 = v0; - } - if (v1 > -3) { - if (v1 >= v) v = v1; - else if (v == 0) { - // Check whether there is at least one legal non-ep move. - for (moves = stack; moves < end; moves++) { - Move capture = moves->move; - if (type_of(capture) == ENPASSANT) continue; - if (pos.legal(capture)) break; - } - if (moves == end && !pos.checkers()) { - end = generate(pos, end); - for (; moves < end; moves++) { - Move move = moves->move; - if (pos.legal(move)) - break; - } - } - // If not, then we are forced to play the losing ep capture. - if (moves == end) - v = v1; + PairsData* d; + + enum { Split = 1, HasPawns = 2 }; + + assert(e.hasPawns == !!(*data & HasPawns)); + assert((e.key != e.key2) == !!(*data & Split)); + + data++; // First byte stores flags + + const int Sides = IsWDL && (e.key != e.key2) ? 2 : 1; + const File MaxFile = e.hasPawns ? FILE_D : FILE_A; + + bool pp = e.hasPawns && e.pawnTable.pawnCount[1]; // Pawns on both sides + + assert(!pp || e.pawnTable.pawnCount[0]); + + for (File f = FILE_A; f <= MaxFile; ++f) { + + for (int i = 0; i < Sides; i++) + item(p, i, f).precomp = new PairsData(); + + int order[][2] = { { *data & 0xF, pp ? *(data + 1) & 0xF : 0xF }, + { *data >> 4, pp ? *(data + 1) >> 4 : 0xF } }; + data += 1 + pp; + + for (int k = 0; k < e.pieceCount; ++k, ++data) + for (int i = 0; i < Sides; i++) + item(p, i, f).precomp->pieces[k] = Piece(i ? *data >> 4 : *data & 0xF); + + for (int i = 0; i < Sides; ++i) + set_groups(e, item(p, i, f).precomp, order[i], f); } - } - return v; + data += (uintptr_t)data & 1; // Word alignment + + for (File f = FILE_A; f <= MaxFile; ++f) + for (int i = 0; i < Sides; i++) + data = set_sizes(item(p, i, f).precomp, data); + + if (!IsWDL) + data = set_dtz_map(e, p, data, MaxFile); + + for (File f = FILE_A; f <= MaxFile; ++f) + for (int i = 0; i < Sides; i++) { + (d = item(p, i, f).precomp)->sparseIndex = (SparseEntry*)data; + data += d->sparseIndexSize * sizeof(SparseEntry); + } + + for (File f = FILE_A; f <= MaxFile; ++f) + for (int i = 0; i < Sides; i++) { + (d = item(p, i, f).precomp)->blockLength = (uint16_t*)data; + data += d->blockLengthSize * sizeof(uint16_t); + } + + for (File f = FILE_A; f <= MaxFile; ++f) + for (int i = 0; i < Sides; i++) { + data = (uint8_t*)(((uintptr_t)data + 0x3F) & ~0x3F); // 64 byte alignment + (d = item(p, i, f).precomp)->data = data; + data += d->blocksNum * d->sizeofBlock; + } } -// This routine treats a position with en passant captures as one without. -static int probe_dtz_no_ep(Position& pos, int *success) -{ - int wdl, dtz; +template +void* init(Entry& e, const Position& pos) { - wdl = probe_ab(pos, -2, 2, success); - if (*success == 0) return 0; + const bool IsWDL = std::is_same::value; - if (wdl == 0) return 0; + static Mutex mutex; - if (*success == 2) - return wdl == 2 ? 1 : 101; + // Avoid a thread reads 'ready' == true while another is still in do_init(), + // this could happen due to compiler reordering. + if (e.ready.load(std::memory_order_acquire)) + return e.baseAddress; - ExtMove stack[192]; - ExtMove *moves, *end = NULL; - StateInfo st; + std::unique_lock lk(mutex); - if (wdl > 0) { - // Generate at least all legal non-capturing pawn moves - // including non-capturing promotions. - if (!pos.checkers()) - end = generate(pos, stack); - else - end = generate(pos, stack); - - for (moves = stack; moves < end; moves++) { - Move move = moves->move; - if (type_of(pos.moved_piece(move)) != PAWN || pos.capture(move) - || !pos.legal(move)) - continue; - pos.do_move(move, st, pos.gives_check(move)); - int v = -Tablebases::probe_wdl(pos, success); - pos.undo_move(move); - if (*success == 0) return 0; - if (v == wdl) - return v == 2 ? 1 : 101; + if (e.ready.load(std::memory_order_relaxed)) // Recheck under lock + return e.baseAddress; + + // Pieces strings in decreasing order for each color, like ("KPP","KR") + std::string fname, w, b; + for (PieceType pt = KING; pt >= PAWN; --pt) { + w += std::string(popcount(pos.pieces(WHITE, pt)), PieceToChar[pt]); + b += std::string(popcount(pos.pieces(BLACK, pt)), PieceToChar[pt]); } - } - dtz = 1 + probe_dtz_table(pos, wdl, success); - if (*success >= 0) { - if (wdl & 1) dtz += 100; - return wdl >= 0 ? dtz : -dtz; - } + const uint8_t TB_MAGIC[][4] = { { 0xD7, 0x66, 0x0C, 0xA5 }, + { 0x71, 0xE8, 0x23, 0x5D } }; + + fname = (e.key == pos.material_key() ? w + 'v' + b : b + 'v' + w) + + (IsWDL ? ".rtbw" : ".rtbz"); + + uint8_t* data = TBFile(fname).map(&e.baseAddress, &e.mapping, TB_MAGIC[IsWDL]); + if (data) + e.hasPawns ? do_init(e, e.pawnTable, data) : do_init(e, e.pieceTable, data); + + e.ready.store(true, std::memory_order_release); + return e.baseAddress; +} - if (wdl > 0) { - int best = 0xffff; - for (moves = stack; moves < end; moves++) { - Move move = moves->move; - if (pos.capture(move) || type_of(pos.moved_piece(move)) == PAWN - || !pos.legal(move)) - continue; - pos.do_move(move, st, pos.gives_check(move)); - int v = -Tablebases::probe_dtz(pos, success); - pos.undo_move(move); - if (*success == 0) return 0; - if (v > 0 && v + 1 < best) - best = v + 1; +template::type> +T probe_table(const Position& pos, ProbeState* result, WDLScore wdl = WDLDraw) { + + if (!(pos.pieces() ^ pos.pieces(KING))) + return T(WDLDraw); // KvK + + E* entry = EntryTable.get(pos.material_key()); + + if (!entry || !init(*entry, pos)) + return *result = FAIL, T(); + + return do_probe_table(pos, entry, wdl, result); +} + +// For a position where the side to move has a winning capture it is not necessary +// to store a winning value so the generator treats such positions as "don't cares" +// and tries to assign to it a value that improves the compression ratio. Similarly, +// if the side to move has a drawing capture, then the position is at least drawn. +// If the position is won, then the TB needs to store a win value. But if the +// position is drawn, the TB may store a loss value if that is better for compression. +// All of this means that during probing, the engine must look at captures and probe +// their results and must probe the position itself. The "best" result of these +// probes is the correct result for the position. +// DTZ table don't store values when a following move is a zeroing winning move +// (winning capture or winning pawn move). Also DTZ store wrong values for positions +// where the best move is an ep-move (even if losing). So in all these cases set +// the state to ZEROING_BEST_MOVE. +template +WDLScore search(Position& pos, ProbeState* result) { + + WDLScore value, bestValue = WDLLoss; + StateInfo st; + + auto moveList = MoveList(pos); + size_t totalCount = moveList.size(), moveCount = 0; + + for (const Move& move : moveList) + { + if ( !pos.capture(move) + && (!CheckZeroingMoves || type_of(pos.moved_piece(move)) != PAWN)) + continue; + + moveCount++; + + pos.do_move(move, st); + value = -search(pos, result); + pos.undo_move(move); + + if (*result == FAIL) + return WDLDraw; + + if (value > bestValue) + { + bestValue = value; + + if (value >= WDLWin) + { + *result = ZEROING_BEST_MOVE; // Winning DTZ-zeroing move + return value; + } + } } - return best; - } else { - int best = -1; - if (!pos.checkers()) - end = generate(pos, stack); + + // In case we have already searched all the legal moves we don't have to probe + // the TB because the stored score could be wrong. For instance TB tables + // do not contain information on position with ep rights, so in this case + // the result of probe_wdl_table is wrong. Also in case of only capture + // moves, for instance here 4K3/4q3/6p1/2k5/6p1/8/8/8 w - - 0 7, we have to + // return with ZEROING_BEST_MOVE set. + bool noMoreMoves = (moveCount && moveCount == totalCount); + + if (noMoreMoves) + value = bestValue; else - end = generate(pos, stack); - for (moves = stack; moves < end; moves++) { - int v; - Move move = moves->move; - if (!pos.legal(move)) - continue; - pos.do_move(move, st, pos.gives_check(move)); - if (st.rule50 == 0) { - if (wdl == -2) v = -1; - else { - v = probe_ab(pos, 1, 2, success); - v = (v == 2) ? 0 : -101; + { + value = probe_table(pos, result); + + if (*result == FAIL) + return WDLDraw; + } + + // DTZ stores a "don't care" value if bestValue is a win + if (bestValue >= value) + return *result = ( bestValue > WDLDraw + || noMoreMoves ? ZEROING_BEST_MOVE : OK), bestValue; + + return *result = OK, value; +} + +} // namespace + +void Tablebases::init(const std::string& paths) { + + EntryTable.clear(); + MaxCardinality = 0; + TBFile::Paths = paths; + + if (paths.empty() || paths == "") + return; + + // MapB1H1H7[] encodes a square below a1-h8 diagonal to 0..27 + int code = 0; + for (Square s = SQ_A1; s <= SQ_H8; ++s) + if (off_A1H8(s) < 0) + MapB1H1H7[s] = code++; + + // MapA1D1D4[] encodes a square in the a1-d1-d4 triangle to 0..9 + std::vector diagonal; + code = 0; + for (Square s = SQ_A1; s <= SQ_D4; ++s) + if (off_A1H8(s) < 0 && file_of(s) <= FILE_D) + MapA1D1D4[s] = code++; + + else if (!off_A1H8(s) && file_of(s) <= FILE_D) + diagonal.push_back(s); + + // Diagonal squares are encoded as last ones + for (auto s : diagonal) + MapA1D1D4[s] = code++; + + // MapKK[] encodes all the 461 possible legal positions of two kings where + // the first is in the a1-d1-d4 triangle. If the first king is on the a1-d4 + // diagonal, the other one shall not to be above the a1-h8 diagonal. + std::vector> bothOnDiagonal; + code = 0; + for (int idx = 0; idx < 10; idx++) + for (Square s1 = SQ_A1; s1 <= SQ_D4; ++s1) + if (MapA1D1D4[s1] == idx && (idx || s1 == SQ_B1)) // SQ_B1 is mapped to 0 + { + for (Square s2 = SQ_A1; s2 <= SQ_H8; ++s2) + if ((PseudoAttacks[KING][s1] | s1) & s2) + continue; // Illegal position + + else if (!off_A1H8(s1) && off_A1H8(s2) > 0) + continue; // First on diagonal, second above + + else if (!off_A1H8(s1) && !off_A1H8(s2)) + bothOnDiagonal.push_back(std::make_pair(idx, s2)); + + else + MapKK[idx][s2] = code++; + } + + // Legal positions with both kings on diagonal are encoded as last ones + for (auto p : bothOnDiagonal) + MapKK[p.first][p.second] = code++; + + // Binomial[] stores the Binomial Coefficents using Pascal rule. There + // are Binomial[k][n] ways to choose k elements from a set of n elements. + Binomial[0][0] = 1; + + for (int n = 1; n < 64; n++) // Squares + for (int k = 0; k < 6 && k <= n; ++k) // Pieces + Binomial[k][n] = (k > 0 ? Binomial[k - 1][n - 1] : 0) + + (k < n ? Binomial[k ][n - 1] : 0); + + // MapPawns[s] encodes squares a2-h7 to 0..47. This is the number of possible + // available squares when the leading one is in 's'. Moreover the pawn with + // highest MapPawns[] is the leading pawn, the one nearest the edge and, + // among pawns with same file, the one with lowest rank. + int availableSquares = 47; // Available squares when lead pawn is in a2 + + // Init the tables for the encoding of leading pawns group: with 6-men TB we + // can have up to 4 leading pawns (KPPPPK). + for (int leadPawnsCnt = 1; leadPawnsCnt <= 4; ++leadPawnsCnt) + for (File f = FILE_A; f <= FILE_D; ++f) + { + // Restart the index at every file because TB table is splitted + // by file, so we can reuse the same index for different files. + int idx = 0; + + // Sum all possible combinations for a given file, starting with + // the leading pawn on rank 2 and increasing the rank. + for (Rank r = RANK_2; r <= RANK_7; ++r) + { + Square sq = make_square(f, r); + + // Compute MapPawns[] at first pass. + // If sq is the leading pawn square, any other pawn cannot be + // below or more toward the edge of sq. There are 47 available + // squares when sq = a2 and reduced by 2 for any rank increase + // due to mirroring: sq == a3 -> no a2, h2, so MapPawns[a3] = 45 + if (leadPawnsCnt == 1) + { + MapPawns[sq] = availableSquares--; + MapPawns[sq ^ 7] = availableSquares--; // Horizontal flip + } + LeadPawnIdx[leadPawnsCnt][sq] = idx; + idx += Binomial[leadPawnsCnt - 1][MapPawns[sq]]; + } + // After a file is traversed, store the cumulated per-file index + LeadPawnsSize[leadPawnsCnt][f] = idx; + } + + for (PieceType p1 = PAWN; p1 < KING; ++p1) { + EntryTable.insert({KING, p1, KING}); + + for (PieceType p2 = PAWN; p2 <= p1; ++p2) { + EntryTable.insert({KING, p1, p2, KING}); + EntryTable.insert({KING, p1, KING, p2}); + + for (PieceType p3 = PAWN; p3 < KING; ++p3) + EntryTable.insert({KING, p1, p2, KING, p3}); + + for (PieceType p3 = PAWN; p3 <= p2; ++p3) { + EntryTable.insert({KING, p1, p2, p3, KING}); + + for (PieceType p4 = PAWN; p4 <= p3; ++p4) + EntryTable.insert({KING, p1, p2, p3, p4, KING}); + + for (PieceType p4 = PAWN; p4 < KING; ++p4) + EntryTable.insert({KING, p1, p2, p3, KING, p4}); + } + + for (PieceType p3 = PAWN; p3 <= p1; ++p3) + for (PieceType p4 = PAWN; p4 <= (p1 == p3 ? p2 : p3); ++p4) + EntryTable.insert({KING, p1, p2, KING, p3, p4}); } - } else { - v = -Tablebases::probe_dtz(pos, success) - 1; - } - pos.undo_move(move); - if (*success == 0) return 0; - if (v < best) - best = v; } - return best; - } + + sync_cout << "info string Found " << EntryTable.size() << " tablebases" << sync_endl; } -static int wdl_to_dtz[] = { - -1, -101, 0, 101, 1 -}; +// Probe the WDL table for a particular position. +// If *result != FAIL, the probe was successful. +// The return value is from the point of view of the side to move: +// -2 : loss +// -1 : loss, but draw under 50-move rule +// 0 : draw +// 1 : win, but draw under 50-move rule +// 2 : win +WDLScore Tablebases::probe_wdl(Position& pos, ProbeState* result) { + + *result = OK; + return search(pos, result); +} // Probe the DTZ table for a particular position. -// If *success != 0, the probe was successful. +// If *result != FAIL, the probe was successful. // The return value is from the point of view of the side to move: // n < -100 : loss, but draw under 50-move rule // -100 <= n < -1 : loss in n ply (assuming 50-move counter == 0) @@ -578,103 +1434,90 @@ static int wdl_to_dtz[] = { // // In short, if a move is available resulting in dtz + 50-move-counter <= 99, // then do not accept moves leading to dtz + 50-move-counter == 100. -// -int Tablebases::probe_dtz(Position& pos, int *success) -{ - *success = 1; - int v = probe_dtz_no_ep(pos, success); +int Tablebases::probe_dtz(Position& pos, ProbeState* result) { - if (pos.ep_square() == SQ_NONE) - return v; - if (*success == 0) return 0; - - // Now handle en passant. - int v1 = -3; - - ExtMove stack[192]; - ExtMove *moves, *end; - StateInfo st; - - if (!pos.checkers()) - end = generate(pos, stack); - else - end = generate(pos, stack); - - for (moves = stack; moves < end; moves++) { - Move capture = moves->move; - if (type_of(capture) != ENPASSANT - || !pos.legal(capture)) - continue; - pos.do_move(capture, st, pos.gives_check(capture)); - int v0 = -probe_ab(pos, -2, 2, success); - pos.undo_move(capture); - if (*success == 0) return 0; - if (v0 > v1) v1 = v0; - } - if (v1 > -3) { - v1 = wdl_to_dtz[v1 + 2]; - if (v < -100) { - if (v1 >= 0) - v = v1; - } else if (v < 0) { - if (v1 >= 0 || v1 < -100) - v = v1; - } else if (v > 100) { - if (v1 > 0) - v = v1; - } else if (v > 0) { - if (v1 == 1) - v = v1; - } else if (v1 >= 0) { - v = v1; - } else { - for (moves = stack; moves < end; moves++) { - Move move = moves->move; - if (type_of(move) == ENPASSANT) continue; - if (pos.legal(move)) break; - } - if (moves == end && !pos.checkers()) { - end = generate(pos, end); - for (; moves < end; moves++) { - Move move = moves->move; - if (pos.legal(move)) - break; - } - } - if (moves == end) - v = v1; + *result = OK; + WDLScore wdl = search(pos, result); + + if (*result == FAIL || wdl == WDLDraw) // DTZ tables don't store draws + return 0; + + // DTZ stores a 'don't care' value in this case, or even a plain wrong + // one as in case the best move is a losing ep, so it cannot be probed. + if (*result == ZEROING_BEST_MOVE) + return dtz_before_zeroing(wdl); + + int dtz = probe_table(pos, result, wdl); + + if (*result == FAIL) + return 0; + + if (*result != CHANGE_STM) + return (dtz + 100 * (wdl == WDLBlessedLoss || wdl == WDLCursedWin)) * sign_of(wdl); + + // DTZ stores results for the other side, so we need to do a 1-ply search and + // find the winning move that minimizes DTZ. + StateInfo st; + int minDTZ = 0xFFFF; + + for (const Move& move : MoveList(pos)) + { + bool zeroing = pos.capture(move) || type_of(pos.moved_piece(move)) == PAWN; + + pos.do_move(move, st); + + // For zeroing moves we want the dtz of the move _before_ doing it, + // otherwise we will get the dtz of the next move sequence. Search the + // position after the move to get the score sign (because even in a + // winning position we could make a losing capture or going for a draw). + dtz = zeroing ? -dtz_before_zeroing(search(pos, result)) + : -probe_dtz(pos, result); + + pos.undo_move(move); + + if (*result == FAIL) + return 0; + + // Convert result from 1-ply search. Zeroing moves are already accounted + // by dtz_before_zeroing() that returns the DTZ of the previous move. + if (!zeroing) + dtz += sign_of(dtz); + + // Skip the draws and if we are winning only pick positive dtz + if (dtz < minDTZ && sign_of(dtz) == sign_of(wdl)) + minDTZ = dtz; } - } - return v; + // Special handle a mate position, when there are no legal moves, in this + // case return value is somewhat arbitrary, so stick to the original TB code + // that returns -1 in this case. + return minDTZ == 0xFFFF ? -1 : minDTZ; } // Check whether there has been at least one repetition of positions // since the last capture or pawn move. static int has_repeated(StateInfo *st) { - while (1) { - int i = 4, e = std::min(st->rule50, st->pliesFromNull); - if (e < i) - return 0; - StateInfo *stp = st->previous->previous; - do { - stp = stp->previous->previous; - if (stp->key == st->key) - return 1; - i += 2; - } while (i <= e); - st = st->previous; - } -} + while (1) { + int i = 4, e = std::min(st->rule50, st->pliesFromNull); -static Value wdl_to_Value[5] = { - -VALUE_MATE + MAX_PLY + 1, - VALUE_DRAW - 2, - VALUE_DRAW, - VALUE_DRAW + 2, - VALUE_MATE - MAX_PLY - 1 -}; + if (e < i) + return 0; + + StateInfo *stp = st->previous->previous; + + do { + stp = stp->previous->previous; + + if (stp->key == st->key) + return 1; + + i += 2; + } while (i <= e); + + st = st->previous; + } +} // Use the DTZ tables to filter out moves that don't preserve the win or draw. // If the position is lost, but DTZ is fairly high, only keep moves that @@ -684,103 +1527,130 @@ static Value wdl_to_Value[5] = { // no moves were filtered out. bool Tablebases::root_probe(Position& pos, Search::RootMoves& rootMoves, Value& score) { - int success; - - int dtz = probe_dtz(pos, &success); - if (!success) return false; - - StateInfo st; - - // Probe each move. - for (size_t i = 0; i < rootMoves.size(); i++) { - Move move = rootMoves[i].pv[0]; - pos.do_move(move, st, pos.gives_check(move)); - int v = 0; - if (pos.checkers() && dtz > 0) { - ExtMove s[192]; - if (generate(pos, s) == s) - v = 1; - } - if (!v) { - if (st.rule50 != 0) { - v = -Tablebases::probe_dtz(pos, &success); - if (v > 0) v++; - else if (v < 0) v--; - } else { - v = -Tablebases::probe_wdl(pos, &success); - v = wdl_to_dtz[v + 2]; - } - } - pos.undo_move(move); - if (!success) return false; - rootMoves[i].score = (Value)v; - } + assert(rootMoves.size()); - // Obtain 50-move counter for the root position. - // In Stockfish there seems to be no clean way, so we do it like this: - int cnt50 = st.previous->rule50; - - // Use 50-move counter to determine whether the root position is - // won, lost or drawn. - int wdl = 0; - if (dtz > 0) - wdl = (dtz + cnt50 <= 100) ? 2 : 1; - else if (dtz < 0) - wdl = (-dtz + cnt50 <= 100) ? -2 : -1; - - // Determine the score to report to the user. - score = wdl_to_Value[wdl + 2]; - // If the position is winning or losing, but too few moves left, adjust the - // score to show how close it is to winning or losing. - // NOTE: int(PawnValueEg) is used as scaling factor in score_to_uci(). - if (wdl == 1 && dtz <= 100) - score = (Value)(((200 - dtz - cnt50) * int(PawnValueEg)) / 200); - else if (wdl == -1 && dtz >= -100) - score = -(Value)(((200 + dtz - cnt50) * int(PawnValueEg)) / 200); - - // Now be a bit smart about filtering out moves. - size_t j = 0; - if (dtz > 0) { // winning (or 50-move rule draw) - int best = 0xffff; - for (size_t i = 0; i < rootMoves.size(); i++) { - int v = rootMoves[i].score; - if (v > 0 && v < best) - best = v; - } - int max = best; - // If the current phase has not seen repetitions, then try all moves - // that stay safely within the 50-move budget, if there are any. - if (!has_repeated(st.previous) && best + cnt50 <= 99) - max = 99 - cnt50; - for (size_t i = 0; i < rootMoves.size(); i++) { - int v = rootMoves[i].score; - if (v > 0 && v <= max) - rootMoves[j++] = rootMoves[i]; - } - } else if (dtz < 0) { // losing (or 50-move rule draw) - int best = 0; - for (size_t i = 0; i < rootMoves.size(); i++) { - int v = rootMoves[i].score; - if (v < best) - best = v; - } - // Try all moves, unless we approach or have a 50-move rule draw. - if (-best * 2 + cnt50 < 100) - return true; - for (size_t i = 0; i < rootMoves.size(); i++) { - if (rootMoves[i].score == best) - rootMoves[j++] = rootMoves[i]; + ProbeState result; + int dtz = probe_dtz(pos, &result); + + if (result == FAIL) + return false; + + StateInfo st; + + // Probe each move + for (size_t i = 0; i < rootMoves.size(); ++i) { + Move move = rootMoves[i].pv[0]; + pos.do_move(move, st); + int v = 0; + + if (pos.checkers() && dtz > 0) { + ExtMove s[MAX_MOVES]; + + if (generate(pos, s) == s) + v = 1; + } + + if (!v) { + if (st.rule50 != 0) { + v = -probe_dtz(pos, &result); + + if (v > 0) + ++v; + else if (v < 0) + --v; + } else { + v = -probe_wdl(pos, &result); + v = dtz_before_zeroing(WDLScore(v)); + } + } + + pos.undo_move(move); + + if (result == FAIL) + return false; + + rootMoves[i].score = (Value)v; } - } else { // drawing - // Try all moves that preserve the draw. - for (size_t i = 0; i < rootMoves.size(); i++) { - if (rootMoves[i].score == 0) - rootMoves[j++] = rootMoves[i]; + + // Obtain 50-move counter for the root position. + // In Stockfish there seems to be no clean way, so we do it like this: + int cnt50 = st.previous ? st.previous->rule50 : 0; + + // Use 50-move counter to determine whether the root position is + // won, lost or drawn. + WDLScore wdl = WDLDraw; + + if (dtz > 0) + wdl = (dtz + cnt50 <= 100) ? WDLWin : WDLCursedWin; + else if (dtz < 0) + wdl = (-dtz + cnt50 <= 100) ? WDLLoss : WDLBlessedLoss; + + // Determine the score to report to the user. + score = WDL_to_value[wdl + 2]; + + // If the position is winning or losing, but too few moves left, adjust the + // score to show how close it is to winning or losing. + // NOTE: int(PawnValueEg) is used as scaling factor in score_to_uci(). + if (wdl == WDLCursedWin && dtz <= 100) + score = (Value)(((200 - dtz - cnt50) * int(PawnValueEg)) / 200); + else if (wdl == WDLBlessedLoss && dtz >= -100) + score = -(Value)(((200 + dtz - cnt50) * int(PawnValueEg)) / 200); + + // Now be a bit smart about filtering out moves. + size_t j = 0; + + if (dtz > 0) { // winning (or 50-move rule draw) + int best = 0xffff; + + for (size_t i = 0; i < rootMoves.size(); ++i) { + int v = rootMoves[i].score; + + if (v > 0 && v < best) + best = v; + } + + int max = best; + + // If the current phase has not seen repetitions, then try all moves + // that stay safely within the 50-move budget, if there are any. + if (!has_repeated(st.previous) && best + cnt50 <= 99) + max = 99 - cnt50; + + for (size_t i = 0; i < rootMoves.size(); ++i) { + int v = rootMoves[i].score; + + if (v > 0 && v <= max) + rootMoves[j++] = rootMoves[i]; + } + } else if (dtz < 0) { // losing (or 50-move rule draw) + int best = 0; + + for (size_t i = 0; i < rootMoves.size(); ++i) { + int v = rootMoves[i].score; + + if (v < best) + best = v; + } + + // Try all moves, unless we approach or have a 50-move rule draw. + if (-best * 2 + cnt50 < 100) + return true; + + for (size_t i = 0; i < rootMoves.size(); ++i) { + if (rootMoves[i].score == best) + rootMoves[j++] = rootMoves[i]; + } + } else { // drawing + // Try all moves that preserve the draw. + for (size_t i = 0; i < rootMoves.size(); ++i) { + if (rootMoves[i].score == 0) + rootMoves[j++] = rootMoves[i]; + } } - } - rootMoves.resize(j, Search::RootMove(MOVE_NONE)); - return true; + rootMoves.resize(j, Search::RootMove(MOVE_NONE)); + + return true; } // Use the WDL tables to filter out moves that don't preserve the win or draw. @@ -790,35 +1660,43 @@ bool Tablebases::root_probe(Position& pos, Search::RootMoves& rootMoves, Value& // no moves were filtered out. bool Tablebases::root_probe_wdl(Position& pos, Search::RootMoves& rootMoves, Value& score) { - int success; - - int wdl = Tablebases::probe_wdl(pos, &success); - if (!success) return false; - score = wdl_to_Value[wdl + 2]; - - StateInfo st; - - int best = -2; - - // Probe each move. - for (size_t i = 0; i < rootMoves.size(); i++) { - Move move = rootMoves[i].pv[0]; - pos.do_move(move, st, pos.gives_check(move)); - int v = -Tablebases::probe_wdl(pos, &success); - pos.undo_move(move); - if (!success) return false; - rootMoves[i].score = (Value)v; - if (v > best) - best = v; - } + ProbeState result; - size_t j = 0; - for (size_t i = 0; i < rootMoves.size(); i++) { - if (rootMoves[i].score == best) - rootMoves[j++] = rootMoves[i]; - } - rootMoves.resize(j, Search::RootMove(MOVE_NONE)); + WDLScore wdl = Tablebases::probe_wdl(pos, &result); - return true; -} + if (result == FAIL) + return false; + + score = WDL_to_value[wdl + 2]; + + StateInfo st; + int best = WDLLoss; + + // Probe each move + for (size_t i = 0; i < rootMoves.size(); ++i) { + Move move = rootMoves[i].pv[0]; + pos.do_move(move, st); + WDLScore v = -Tablebases::probe_wdl(pos, &result); + pos.undo_move(move); + + if (result == FAIL) + return false; + + rootMoves[i].score = (Value)v; + + if (v > best) + best = v; + } + + size_t j = 0; + + for (size_t i = 0; i < rootMoves.size(); ++i) { + if (rootMoves[i].score == best) + rootMoves[j++] = rootMoves[i]; + } + + rootMoves.resize(j, Search::RootMove(MOVE_NONE)); + + return true; +} diff --git a/Engines/Linux64/stockfish/src/syzygy/tbprobe.h b/Engines/Linux64/stockfish/src/syzygy/tbprobe.h index b23fdf6..287b617 100644 --- a/Engines/Linux64/stockfish/src/syzygy/tbprobe.h +++ b/Engines/Linux64/stockfish/src/syzygy/tbprobe.h @@ -1,19 +1,79 @@ +/* + Stockfish, a UCI chess playing engine derived from Glaurung 2.1 + Copyright (c) 2013 Ronald de Man + Copyright (C) 2016-2018 Marco Costalba, Lucas Braesch + + Stockfish is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Stockfish is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + #ifndef TBPROBE_H #define TBPROBE_H +#include + #include "../search.h" namespace Tablebases { +enum WDLScore { + WDLLoss = -2, // Loss + WDLBlessedLoss = -1, // Loss, but draw under 50-move rule + WDLDraw = 0, // Draw + WDLCursedWin = 1, // Win, but draw under 50-move rule + WDLWin = 2, // Win + + WDLScoreNone = -1000 +}; + +// Possible states after a probing operation +enum ProbeState { + FAIL = 0, // Probe failed (missing file table) + OK = 1, // Probe succesful + CHANGE_STM = -1, // DTZ should check the other side + ZEROING_BEST_MOVE = 2 // Best move zeroes DTZ (capture or pawn move) +}; + extern int MaxCardinality; -void init(const std::string& path); -int probe_wdl(Position& pos, int *success); -int probe_dtz(Position& pos, int *success); +void init(const std::string& paths); +WDLScore probe_wdl(Position& pos, ProbeState* result); +int probe_dtz(Position& pos, ProbeState* result); bool root_probe(Position& pos, Search::RootMoves& rootMoves, Value& score); bool root_probe_wdl(Position& pos, Search::RootMoves& rootMoves, Value& score); void filter_root_moves(Position& pos, Search::RootMoves& rootMoves); +inline std::ostream& operator<<(std::ostream& os, const WDLScore v) { + + os << (v == WDLLoss ? "Loss" : + v == WDLBlessedLoss ? "Blessed loss" : + v == WDLDraw ? "Draw" : + v == WDLCursedWin ? "Cursed win" : + v == WDLWin ? "Win" : "None"); + + return os; +} + +inline std::ostream& operator<<(std::ostream& os, const ProbeState v) { + + os << (v == FAIL ? "Failed" : + v == OK ? "Success" : + v == CHANGE_STM ? "Probed opponent side" : + v == ZEROING_BEST_MOVE ? "Best move zeroes DTZ" : "None"); + + return os; +} + } #endif diff --git a/Engines/Linux64/stockfish/src/thread.cpp b/Engines/Linux64/stockfish/src/thread.cpp index 1f1490a..97beb58 100644 --- a/Engines/Linux64/stockfish/src/thread.cpp +++ b/Engines/Linux64/stockfish/src/thread.cpp @@ -2,7 +2,7 @@ Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad + Copyright (C) 2015-2018 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -29,172 +29,144 @@ ThreadPool Threads; // Global object -/// Thread constructor launches the thread and then waits until it goes to sleep -/// in idle_loop(). -Thread::Thread() { +/// Thread constructor launches the thread and waits until it goes to sleep +/// in idle_loop(). Note that 'searching' and 'exit' should be alredy set. - resetCalls = exit = false; - maxPly = callsCnt = 0; - tbHits = 0; - history.clear(); - counterMoves.clear(); - idx = Threads.size(); // Start from 0 +Thread::Thread(size_t n) : idx(n), stdThread(&Thread::idle_loop, this) { - std::unique_lock lk(mutex); - searching = true; - nativeThread = std::thread(&Thread::idle_loop, this); - sleepCondition.wait(lk, [&]{ return !searching; }); + wait_for_search_finished(); } -/// Thread destructor waits for thread termination before returning +/// Thread destructor wakes up the thread in idle_loop() and waits +/// for its termination. Thread should be already waiting. Thread::~Thread() { - mutex.lock(); + assert(!searching); + exit = true; - sleepCondition.notify_one(); - mutex.unlock(); - nativeThread.join(); + start_searching(); + stdThread.join(); } -/// Thread::wait_for_search_finished() waits on sleep condition -/// until not searching +/// Thread::clear() reset histories, usually before a new game -void Thread::wait_for_search_finished() { +void Thread::clear() { - std::unique_lock lk(mutex); - sleepCondition.wait(lk, [&]{ return !searching; }); -} + counterMoves.fill(MOVE_NONE); + mainHistory.fill(0); + captureHistory.fill(0); + for (auto& to : contHistory) + for (auto& h : to) + h.fill(0); -/// Thread::wait() waits on sleep condition until condition is true + contHistory[NO_PIECE][0].fill(Search::CounterMovePruneThreshold - 1); +} -void Thread::wait(std::atomic_bool& condition) { +/// Thread::start_searching() wakes up the thread that will start the search - std::unique_lock lk(mutex); - sleepCondition.wait(lk, [&]{ return bool(condition); }); +void Thread::start_searching() { + + std::lock_guard lk(mutex); + searching = true; + cv.notify_one(); // Wake up the thread in idle_loop() } -/// Thread::start_searching() wakes up the thread that will start the search +/// Thread::wait_for_search_finished() blocks on the condition variable +/// until the thread has finished searching. -void Thread::start_searching(bool resume) { +void Thread::wait_for_search_finished() { std::unique_lock lk(mutex); - - if (!resume) - searching = true; - - sleepCondition.notify_one(); + cv.wait(lk, [&]{ return !searching; }); } -/// Thread::idle_loop() is where the thread is parked when it has no work to do +/// Thread::idle_loop() is where the thread is parked, blocked on the +/// condition variable, when it has no work to do. void Thread::idle_loop() { - while (!exit) + // If OS already scheduled us on a different group than 0 then don't overwrite + // the choice, eventually we are one of many one-threaded processes running on + // some Windows NUMA hardware, for instance in fishtest. To make it simple, + // just check if running threads are below a threshold, in this case all this + // NUMA machinery is not needed. + if (Options["Threads"] >= 8) + WinProcGroup::bindThisThread(idx); + + while (true) { std::unique_lock lk(mutex); - searching = false; + cv.notify_one(); // Wake up anyone waiting for search finished + cv.wait(lk, [&]{ return searching; }); - while (!searching && !exit) - { - sleepCondition.notify_one(); // Wake up any waiting thread - sleepCondition.wait(lk); - } + if (exit) + return; lk.unlock(); - if (!exit) - search(); + search(); } } +/// ThreadPool::set() creates/destroys threads to match the requested number. +/// Created and launced threads wil go immediately to sleep in idle_loop. +/// Upon resizing, threads are recreated to allow for binding if necessary. -/// ThreadPool::init() creates and launches requested threads that will go -/// immediately to sleep. We cannot use a constructor because Threads is a -/// static object and we need a fully initialized engine at this point due to -/// allocation of Endgames in the Thread constructor. - -void ThreadPool::init() { - - push_back(new MainThread); - read_uci_options(); -} - - -/// ThreadPool::exit() terminates threads before the program exits. Cannot be -/// done in destructor because threads must be terminated before deleting any -/// static objects while still in main(). - -void ThreadPool::exit() { - - while (size()) - delete back(), pop_back(); -} - - -/// ThreadPool::read_uci_options() updates internal threads parameters from the -/// corresponding UCI options and creates/destroys threads to match requested -/// number. Thread objects are dynamically allocated. +void ThreadPool::set(size_t requested) { -void ThreadPool::read_uci_options() { + if (size() > 0) { // destroy any existing thread(s) + main()->wait_for_search_finished(); - size_t requested = Options["Threads"]; - - assert(requested > 0); + while (size() > 0) + delete back(), pop_back(); + } - while (size() < requested) - push_back(new Thread); + if (requested > 0) { // create new thread(s) + push_back(new MainThread(0)); - while (size() > requested) - delete back(), pop_back(); + while (size() < requested) + push_back(new Thread(size())); + clear(); + } } +/// ThreadPool::clear() sets threadPool data to initial values. -/// ThreadPool::nodes_searched() returns the number of nodes searched - -uint64_t ThreadPool::nodes_searched() const { +void ThreadPool::clear() { - uint64_t nodes = 0; for (Thread* th : *this) - nodes += th->rootPos.nodes_searched(); - return nodes; -} - - -/// ThreadPool::tb_hits() returns the number of TB hits + th->clear(); -uint64_t ThreadPool::tb_hits() const { - - uint64_t hits = 0; - for (Thread* th : *this) - hits += th->tbHits; - return hits; + main()->callsCnt = 0; + main()->previousScore = VALUE_INFINITE; + main()->previousTimeReduction = 1; } - -/// ThreadPool::start_thinking() wakes up the main thread sleeping in idle_loop() -/// and starts a new search, then returns immediately. +/// ThreadPool::start_thinking() wakes up main thread waiting in idle_loop() and +/// returns immediately. Main thread will wake up other threads and start the search. void ThreadPool::start_thinking(Position& pos, StateListPtr& states, - const Search::LimitsType& limits) { + const Search::LimitsType& limits, bool ponderMode) { main()->wait_for_search_finished(); - Search::Signals.stopOnPonderhit = Search::Signals.stop = false; + stopOnPonderhit = stop = false; + ponder = ponderMode; Search::Limits = limits; Search::RootMoves rootMoves; for (const auto& m : MoveList(pos)) if ( limits.searchmoves.empty() || std::count(limits.searchmoves.begin(), limits.searchmoves.end(), m)) - rootMoves.push_back(Search::RootMove(m)); + rootMoves.emplace_back(m); if (!rootMoves.empty()) Tablebases::filter_root_moves(pos, rootMoves); @@ -206,18 +178,22 @@ void ThreadPool::start_thinking(Position& pos, StateListPtr& states, if (states.get()) setupStates = std::move(states); // Ownership transfer, states is now empty + // We use Position::set() to set root position across threads. But there are + // some StateInfo fields (previous, pliesFromNull, capturedPiece) that cannot + // be deduced from a fen string, so set() clears them and to not lose the info + // we need to backup and later restore setupStates->back(). Note that setupStates + // is shared by threads but is accessed in read-only mode. StateInfo tmp = setupStates->back(); - for (Thread* th : Threads) + for (Thread* th : *this) { - th->maxPly = 0; - th->tbHits = 0; - th->rootDepth = DEPTH_ZERO; + th->nodes = th->tbHits = th->nmp_ply = th->nmp_odd = 0; + th->rootDepth = th->completedDepth = DEPTH_ZERO; th->rootMoves = rootMoves; th->rootPos.set(pos.fen(), pos.is_chess960(), &setupStates->back(), th); } - setupStates->back() = tmp; // Restore st->previous, cleared by Position::set() + setupStates->back() = tmp; main()->start_searching(); } diff --git a/Engines/Linux64/stockfish/src/thread.h b/Engines/Linux64/stockfish/src/thread.h index d1165bb..1397449 100644 --- a/Engines/Linux64/stockfish/src/thread.h +++ b/Engines/Linux64/stockfish/src/thread.h @@ -2,7 +2,7 @@ Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad + Copyright (C) 2015-2018 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -22,7 +22,6 @@ #define THREAD_H_INCLUDED #include -#include #include #include #include @@ -36,74 +35,87 @@ #include "thread_win32.h" -/// Thread struct keeps together all the thread-related stuff. We also use -/// per-thread pawn and material hash tables so that once we get a pointer to an -/// entry its life time is unlimited and we don't have to care about someone -/// changing the entry under our feet. +/// Thread class keeps together all the thread-related stuff. We use +/// per-thread pawn and material hash tables so that once we get a +/// pointer to an entry its life time is unlimited and we don't have +/// to care about someone changing the entry under our feet. class Thread { - std::thread nativeThread; Mutex mutex; - ConditionVariable sleepCondition; - bool exit, searching; + ConditionVariable cv; + size_t idx; + bool exit = false, searching = true; // Set before starting std::thread + std::thread stdThread; public: - Thread(); + explicit Thread(size_t); virtual ~Thread(); virtual void search(); + void clear(); void idle_loop(); - void start_searching(bool resume = false); + void start_searching(); void wait_for_search_finished(); - void wait(std::atomic_bool& b); Pawns::Table pawnsTable; Material::Table materialTable; Endgames endgames; - size_t idx, PVIdx; - int maxPly, callsCnt; - uint64_t tbHits; + size_t PVIdx; + int selDepth, nmp_ply, nmp_odd; + std::atomic nodes, tbHits; Position rootPos; Search::RootMoves rootMoves; - Depth rootDepth; - Depth completedDepth; - std::atomic_bool resetCalls; - HistoryStats history; - MoveStats counterMoves; - FromToStats fromTo; - CounterMoveHistoryStats counterMoveHistory; + Depth rootDepth, completedDepth; + CounterMoveHistory counterMoves; + ButterflyHistory mainHistory; + CapturePieceToHistory captureHistory; + ContinuationHistory contHistory; }; -/// MainThread is a derived class with a specific overload for the main thread +/// MainThread is a derived class specific for main thread struct MainThread : public Thread { - virtual void search(); - bool easyMovePlayed, failedLow; - double bestMoveChanges; + using Thread::Thread; + + void search() override; + void check_time(); + + bool failedLow; + double bestMoveChanges, previousTimeReduction; Value previousScore; + int callsCnt; }; /// ThreadPool struct handles all the threads-related stuff like init, starting, /// parking and, most importantly, launching a thread. All the access to threads -/// data is done through this class. +/// is done through this class. struct ThreadPool : public std::vector { - void init(); // No constructor and destructor, threads rely on globals that should - void exit(); // be initialized and valid during the whole thread lifetime. + void start_thinking(Position&, StateListPtr&, const Search::LimitsType&, bool = false); + void clear(); + void set(size_t); - MainThread* main() { return static_cast(at(0)); } - void start_thinking(Position&, StateListPtr&, const Search::LimitsType&); - void read_uci_options(); - uint64_t nodes_searched() const; - uint64_t tb_hits() const; + MainThread* main() const { return static_cast(front()); } + uint64_t nodes_searched() const { return accumulate(&Thread::nodes); } + uint64_t tb_hits() const { return accumulate(&Thread::tbHits); } + + std::atomic_bool stop, ponder, stopOnPonderhit; private: StateListPtr setupStates; + + uint64_t accumulate(std::atomic Thread::* member) const { + + uint64_t sum = 0; + for (Thread* th : *this) + sum += (th->*member).load(std::memory_order_relaxed); + return sum; + } }; extern ThreadPool Threads; diff --git a/Engines/Linux64/stockfish/src/thread_win32.h b/Engines/Linux64/stockfish/src/thread_win32.h index 47516c6..5da186a 100644 --- a/Engines/Linux64/stockfish/src/thread_win32.h +++ b/Engines/Linux64/stockfish/src/thread_win32.h @@ -2,7 +2,7 @@ Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad + Copyright (C) 2015-2018 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/Engines/Linux64/stockfish/src/timeman.cpp b/Engines/Linux64/stockfish/src/timeman.cpp index 6d3b731..035fe33 100644 --- a/Engines/Linux64/stockfish/src/timeman.cpp +++ b/Engines/Linux64/stockfish/src/timeman.cpp @@ -2,7 +2,7 @@ Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad + Copyright (C) 2015-2018 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/Engines/Linux64/stockfish/src/timeman.h b/Engines/Linux64/stockfish/src/timeman.h index 9930a4b..f4e3a95 100644 --- a/Engines/Linux64/stockfish/src/timeman.h +++ b/Engines/Linux64/stockfish/src/timeman.h @@ -2,7 +2,7 @@ Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad + Copyright (C) 2015-2018 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/Engines/Linux64/stockfish/src/tt.cpp b/Engines/Linux64/stockfish/src/tt.cpp index f5b72ba..25f1cd0 100644 --- a/Engines/Linux64/stockfish/src/tt.cpp +++ b/Engines/Linux64/stockfish/src/tt.cpp @@ -2,7 +2,7 @@ Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad + Copyright (C) 2015-2018 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -33,7 +33,7 @@ TranspositionTable TT; // Our global transposition table void TranspositionTable::resize(size_t mbSize) { - size_t newClusterCount = size_t(1) << msb((mbSize * 1024 * 1024) / sizeof(Cluster)); + size_t newClusterCount = mbSize * 1024 * 1024 / sizeof(Cluster); if (newClusterCount == clusterCount) return; @@ -41,7 +41,7 @@ void TranspositionTable::resize(size_t mbSize) { clusterCount = newClusterCount; free(mem); - mem = calloc(clusterCount * sizeof(Cluster) + CacheLineSize - 1, 1); + mem = malloc(clusterCount * sizeof(Cluster) + CacheLineSize - 1); if (!mem) { @@ -51,6 +51,7 @@ void TranspositionTable::resize(size_t mbSize) { } table = (Cluster*)((uintptr_t(mem) + CacheLineSize - 1) & ~(CacheLineSize - 1)); + clear(); } diff --git a/Engines/Linux64/stockfish/src/tt.h b/Engines/Linux64/stockfish/src/tt.h index 677f38e..ca7dfbf 100644 --- a/Engines/Linux64/stockfish/src/tt.h +++ b/Engines/Linux64/stockfish/src/tt.h @@ -2,7 +2,7 @@ Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad + Copyright (C) 2015-2018 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -104,9 +104,9 @@ class TranspositionTable { void resize(size_t mbSize); void clear(); - // The lowest order bits of the key are used to get the index of the cluster + // The 32 lowest order bits of the key are used to get the index of the cluster TTEntry* first_entry(const Key key) const { - return &table[(size_t)key & (clusterCount - 1)].entry[0]; + return &table[(uint32_t(key) * uint64_t(clusterCount)) >> 32].entry[0]; } private: diff --git a/Engines/Linux64/stockfish/src/types.h b/Engines/Linux64/stockfish/src/types.h index 519f6af..009a933 100644 --- a/Engines/Linux64/stockfish/src/types.h +++ b/Engines/Linux64/stockfish/src/types.h @@ -2,7 +2,7 @@ Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad + Copyright (C) 2015-2018 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -76,7 +76,7 @@ # include // Header for _pext_u64() intrinsic # define pext(b, m) _pext_u64(b, m) #else -# define pext(b, m) (0) +# define pext(b, m) 0 #endif #ifdef USE_POPCNT @@ -128,7 +128,7 @@ enum MoveType { }; enum Color { - WHITE, BLACK, NO_COLOR, COLOR_NB = 2 + WHITE, BLACK, COLOR_NB = 2 }; enum CastlingSide { @@ -146,7 +146,7 @@ enum CastlingRight { }; template struct MakeCastling { - static const CastlingRight + static constexpr CastlingRight right = C == WHITE ? S == QUEEN_SIDE ? WHITE_OOO : WHITE_OO : S == QUEEN_SIDE ? BLACK_OOO : BLACK_OO; }; @@ -183,11 +183,11 @@ enum Value : int { VALUE_MATE_IN_MAX_PLY = VALUE_MATE - 2 * MAX_PLY, VALUE_MATED_IN_MAX_PLY = -VALUE_MATE + 2 * MAX_PLY, - PawnValueMg = 188, PawnValueEg = 248, - KnightValueMg = 753, KnightValueEg = 832, - BishopValueMg = 826, BishopValueEg = 897, - RookValueMg = 1285, RookValueEg = 1371, - QueenValueMg = 2513, QueenValueEg = 2650, + PawnValueMg = 171, PawnValueEg = 240, + KnightValueMg = 764, KnightValueEg = 848, + BishopValueMg = 826, BishopValueEg = 891, + RookValueMg = 1282, RookValueEg = 1373, + QueenValueMg = 2526, QueenValueEg = 2646, MidgameLimit = 15258, EndgameLimit = 3915 }; @@ -195,6 +195,7 @@ enum Value : int { enum PieceType { NO_PIECE_TYPE, PAWN, KNIGHT, BISHOP, ROOK, QUEEN, KING, ALL_PIECES = 0, + QUEEN_DIAGONAL = 7, PIECE_TYPE_NB = 8 }; @@ -205,11 +206,9 @@ enum Piece { PIECE_NB = 16 }; -const Piece Pieces[] = { W_PAWN, W_KNIGHT, W_BISHOP, W_ROOK, W_QUEEN, W_KING, - B_PAWN, B_KNIGHT, B_BISHOP, B_ROOK, B_QUEEN, B_KING }; extern Value PieceValue[PHASE_NB][PIECE_NB]; -enum Depth { +enum Depth : int { ONE_PLY = 1, @@ -224,7 +223,7 @@ enum Depth { static_assert(!(ONE_PLY & (ONE_PLY - 1)), "ONE_PLY is not a power of 2"); -enum Square { +enum Square : int { SQ_A1, SQ_B1, SQ_C1, SQ_D1, SQ_E1, SQ_F1, SQ_G1, SQ_H1, SQ_A2, SQ_B2, SQ_C2, SQ_D2, SQ_E2, SQ_F2, SQ_G2, SQ_H2, SQ_A3, SQ_B3, SQ_C3, SQ_D3, SQ_E3, SQ_F3, SQ_G3, SQ_H3, @@ -235,12 +234,14 @@ enum Square { SQ_A8, SQ_B8, SQ_C8, SQ_D8, SQ_E8, SQ_F8, SQ_G8, SQ_H8, SQ_NONE, - SQUARE_NB = 64, + SQUARE_NB = 64 +}; +enum Direction : int { NORTH = 8, EAST = 1, - SOUTH = -8, - WEST = -1, + SOUTH = -NORTH, + WEST = -EAST, NORTH_EAST = NORTH + EAST, SOUTH_EAST = SOUTH + EAST, @@ -263,7 +264,7 @@ enum Rank : int { /// care to avoid left-shifting a signed int to avoid undefined behavior. enum Score : int { SCORE_ZERO }; -inline Score make_score(int mg, int eg) { +constexpr Score make_score(int mg, int eg) { return Score((int)((unsigned int)eg << 16) + mg); } @@ -271,97 +272,123 @@ inline Score make_score(int mg, int eg) { /// according to the standard a simple cast to short is implementation defined /// and so is a right shift of a signed integer. inline Value eg_value(Score s) { - union { uint16_t u; int16_t s; } eg = { uint16_t(unsigned(s + 0x8000) >> 16) }; return Value(eg.s); } inline Value mg_value(Score s) { - union { uint16_t u; int16_t s; } mg = { uint16_t(unsigned(s)) }; return Value(mg.s); } -#define ENABLE_BASE_OPERATORS_ON(T) \ -inline T operator+(T d1, T d2) { return T(int(d1) + int(d2)); } \ -inline T operator-(T d1, T d2) { return T(int(d1) - int(d2)); } \ -inline T operator*(int i, T d) { return T(i * int(d)); } \ -inline T operator*(T d, int i) { return T(int(d) * i); } \ -inline T operator-(T d) { return T(-int(d)); } \ -inline T& operator+=(T& d1, T d2) { return d1 = d1 + d2; } \ -inline T& operator-=(T& d1, T d2) { return d1 = d1 - d2; } \ -inline T& operator*=(T& d, int i) { return d = T(int(d) * i); } - -#define ENABLE_FULL_OPERATORS_ON(T) \ -ENABLE_BASE_OPERATORS_ON(T) \ -inline T& operator++(T& d) { return d = T(int(d) + 1); } \ -inline T& operator--(T& d) { return d = T(int(d) - 1); } \ -inline T operator/(T d, int i) { return T(int(d) / i); } \ -inline int operator/(T d1, T d2) { return int(d1) / int(d2); } \ +#define ENABLE_BASE_OPERATORS_ON(T) \ +constexpr T operator+(T d1, T d2) { return T(int(d1) + int(d2)); } \ +constexpr T operator-(T d1, T d2) { return T(int(d1) - int(d2)); } \ +constexpr T operator-(T d) { return T(-int(d)); } \ +inline T& operator+=(T& d1, T d2) { return d1 = d1 + d2; } \ +inline T& operator-=(T& d1, T d2) { return d1 = d1 - d2; } + +#define ENABLE_INCR_OPERATORS_ON(T) \ +inline T& operator++(T& d) { return d = T(int(d) + 1); } \ +inline T& operator--(T& d) { return d = T(int(d) - 1); } + +#define ENABLE_FULL_OPERATORS_ON(T) \ +ENABLE_BASE_OPERATORS_ON(T) \ +ENABLE_INCR_OPERATORS_ON(T) \ +constexpr T operator*(int i, T d) { return T(i * int(d)); } \ +constexpr T operator*(T d, int i) { return T(int(d) * i); } \ +constexpr T operator/(T d, int i) { return T(int(d) / i); } \ +constexpr int operator/(T d1, T d2) { return int(d1) / int(d2); } \ +inline T& operator*=(T& d, int i) { return d = T(int(d) * i); } \ inline T& operator/=(T& d, int i) { return d = T(int(d) / i); } ENABLE_FULL_OPERATORS_ON(Value) -ENABLE_FULL_OPERATORS_ON(PieceType) -ENABLE_FULL_OPERATORS_ON(Piece) -ENABLE_FULL_OPERATORS_ON(Color) ENABLE_FULL_OPERATORS_ON(Depth) -ENABLE_FULL_OPERATORS_ON(Square) -ENABLE_FULL_OPERATORS_ON(File) -ENABLE_FULL_OPERATORS_ON(Rank) +ENABLE_FULL_OPERATORS_ON(Direction) + +ENABLE_INCR_OPERATORS_ON(PieceType) +ENABLE_INCR_OPERATORS_ON(Piece) +ENABLE_INCR_OPERATORS_ON(Color) +ENABLE_INCR_OPERATORS_ON(Square) +ENABLE_INCR_OPERATORS_ON(File) +ENABLE_INCR_OPERATORS_ON(Rank) ENABLE_BASE_OPERATORS_ON(Score) #undef ENABLE_FULL_OPERATORS_ON +#undef ENABLE_INCR_OPERATORS_ON #undef ENABLE_BASE_OPERATORS_ON /// Additional operators to add integers to a Value -inline Value operator+(Value v, int i) { return Value(int(v) + i); } -inline Value operator-(Value v, int i) { return Value(int(v) - i); } +constexpr Value operator+(Value v, int i) { return Value(int(v) + i); } +constexpr Value operator-(Value v, int i) { return Value(int(v) - i); } inline Value& operator+=(Value& v, int i) { return v = v + i; } inline Value& operator-=(Value& v, int i) { return v = v - i; } +/// Additional operators to add a Direction to a Square +inline Square operator+(Square s, Direction d) { return Square(int(s) + int(d)); } +inline Square operator-(Square s, Direction d) { return Square(int(s) - int(d)); } +inline Square& operator+=(Square &s, Direction d) { return s = s + d; } +inline Square& operator-=(Square &s, Direction d) { return s = s - d; } + /// Only declared but not defined. We don't want to multiply two scores due to /// a very high risk of overflow. So user should explicitly convert to integer. -inline Score operator*(Score s1, Score s2); +Score operator*(Score, Score) = delete; /// Division of a Score must be handled separately for each term inline Score operator/(Score s, int i) { return make_score(mg_value(s) / i, eg_value(s) / i); } -inline Color operator~(Color c) { +/// Multiplication of a Score by an integer. We check for overflow in debug mode. +inline Score operator*(Score s, int i) { + + Score result = Score(int(s) * i); + + assert(eg_value(result) == (i * eg_value(s))); + assert(mg_value(result) == (i * mg_value(s))); + assert((i == 0) || (result / i) == s ); + + return result; +} + +constexpr Color operator~(Color c) { return Color(c ^ BLACK); // Toggle color } -inline Square operator~(Square s) { +constexpr Square operator~(Square s) { return Square(s ^ SQ_A8); // Vertical flip SQ_A1 -> SQ_A8 } -inline Piece operator~(Piece pc) { +constexpr File operator~(File f) { + return File(f ^ FILE_H); // Horizontal flip FILE_A -> FILE_H +} + +constexpr Piece operator~(Piece pc) { return Piece(pc ^ 8); // Swap color of piece B_KNIGHT -> W_KNIGHT } -inline CastlingRight operator|(Color c, CastlingSide s) { +constexpr CastlingRight operator|(Color c, CastlingSide s) { return CastlingRight(WHITE_OO << ((s == QUEEN_SIDE) + 2 * c)); } -inline Value mate_in(int ply) { +constexpr Value mate_in(int ply) { return VALUE_MATE - ply; } -inline Value mated_in(int ply) { +constexpr Value mated_in(int ply) { return -VALUE_MATE + ply; } -inline Square make_square(File f, Rank r) { +constexpr Square make_square(File f, Rank r) { return Square((r << 3) + f); } -inline Piece make_piece(Color c, PieceType pt) { +constexpr Piece make_piece(Color c, PieceType pt) { return Piece((c << 3) + pt); } -inline PieceType type_of(Piece pc) { +constexpr PieceType type_of(Piece pc) { return PieceType(pc & 7); } @@ -370,27 +397,27 @@ inline Color color_of(Piece pc) { return Color(pc >> 3); } -inline bool is_ok(Square s) { +constexpr bool is_ok(Square s) { return s >= SQ_A1 && s <= SQ_H8; } -inline File file_of(Square s) { +constexpr File file_of(Square s) { return File(s & 7); } -inline Rank rank_of(Square s) { +constexpr Rank rank_of(Square s) { return Rank(s >> 3); } -inline Square relative_square(Color c, Square s) { +constexpr Square relative_square(Color c, Square s) { return Square(s ^ (c * 56)); } -inline Rank relative_rank(Color c, Rank r) { +constexpr Rank relative_rank(Color c, Rank r) { return Rank(r ^ (c * 7)); } -inline Rank relative_rank(Color c, Square s) { +constexpr Rank relative_rank(Color c, Square s) { return relative_rank(c, rank_of(s)); } @@ -399,23 +426,27 @@ inline bool opposite_colors(Square s1, Square s2) { return ((s >> 3) ^ s) & 1; } -inline Square pawn_push(Color c) { +constexpr Direction pawn_push(Color c) { return c == WHITE ? NORTH : SOUTH; } -inline Square from_sq(Move m) { +constexpr Square from_sq(Move m) { return Square((m >> 6) & 0x3F); } -inline Square to_sq(Move m) { +constexpr Square to_sq(Move m) { return Square(m & 0x3F); } -inline MoveType type_of(Move m) { +constexpr int from_to(Move m) { + return m & 0xFFF; +} + +constexpr MoveType type_of(Move m) { return MoveType(m & (3 << 14)); } -inline PieceType promotion_type(Move m) { +constexpr PieceType promotion_type(Move m) { return PieceType(((m >> 12) & 3) + KNIGHT); } @@ -424,11 +455,11 @@ inline Move make_move(Square from, Square to) { } template -inline Move make(Square from, Square to, PieceType pt = KNIGHT) { +constexpr Move make(Square from, Square to, PieceType pt = KNIGHT) { return Move(T + ((pt - KNIGHT) << 12) + (from << 6) + to); } -inline bool is_ok(Move m) { +constexpr bool is_ok(Move m) { return from_sq(m) != to_sq(m); // Catch MOVE_NULL and MOVE_NONE } diff --git a/Engines/Linux64/stockfish/src/uci.cpp b/Engines/Linux64/stockfish/src/uci.cpp index b195b87..adba98d 100644 --- a/Engines/Linux64/stockfish/src/uci.cpp +++ b/Engines/Linux64/stockfish/src/uci.cpp @@ -2,7 +2,7 @@ Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad + Copyright (C) 2015-2018 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -18,6 +18,7 @@ along with this program. If not, see . */ +#include #include #include #include @@ -27,30 +28,27 @@ #include "position.h" #include "search.h" #include "thread.h" +#include "tt.h" #include "timeman.h" #include "uci.h" +#include "syzygy/tbprobe.h" using namespace std; -extern void benchmark(const Position& pos, istream& is); +extern vector setup_bench(const Position&, istream&); namespace { // FEN string of the initial position, normal chess const char* StartFEN = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"; - // A list to keep track of the position states along the setup moves (from the - // start position to the position just before the search starts). Needed by - // 'draw by repetition' detection. - StateListPtr States(new std::deque(1)); - // position() is called when engine receives the "position" UCI command. // The function sets up the position described in the given FEN string ("fen") // or the starting position ("startpos") and then makes the moves given in the // following move list ("moves"). - void position(Position& pos, istringstream& is) { + void position(Position& pos, istringstream& is, StateListPtr& states) { Move m; string token, fen; @@ -68,14 +66,14 @@ namespace { else return; - States = StateListPtr(new std::deque(1)); - pos.set(fen, Options["UCI_Chess960"], &States->back(), Threads.main()); + states = StateListPtr(new std::deque(1)); // Drop old and create a new one + pos.set(fen, Options["UCI_Chess960"], &states->back(), Threads.main()); // Parse move list (if any) while (is >> token && (m = UCI::to_move(pos, token)) != MOVE_NONE) { - States->push_back(StateInfo()); - pos.do_move(m, States->back(), pos.gives_check(m)); + states->emplace_back(); + pos.do_move(m, states->back()); } } @@ -108,10 +106,11 @@ namespace { // the thinking time and other parameters from the input string, then starts // the search. - void go(Position& pos, istringstream& is) { + void go(Position& pos, istringstream& is, StateListPtr& states) { Search::LimitsType limits; string token; + bool ponderMode = false; limits.startTime = now(); // As early as possible! @@ -129,10 +128,53 @@ namespace { else if (token == "nodes") is >> limits.nodes; else if (token == "movetime") is >> limits.movetime; else if (token == "mate") is >> limits.mate; + else if (token == "perft") is >> limits.perft; else if (token == "infinite") limits.infinite = 1; - else if (token == "ponder") limits.ponder = 1; + else if (token == "ponder") ponderMode = true; + + Threads.start_thinking(pos, states, limits, ponderMode); + } + + + // bench() is called when engine receives the "bench" command. Firstly + // a list of UCI commands is setup according to bench parameters, then + // it is run one by one printing a summary at the end. + + void bench(Position& pos, istream& args, StateListPtr& states) { + + string token; + uint64_t num, nodes = 0, cnt = 1; + + vector list = setup_bench(pos, args); + num = count_if(list.begin(), list.end(), [](string s) { return s.find("go ") == 0; }); + + TimePoint elapsed = now(); - Threads.start_thinking(pos, States, limits); + for (const auto& cmd : list) + { + istringstream is(cmd); + is >> skipws >> token; + + if (token == "go") + { + cerr << "\nPosition: " << cnt++ << '/' << num << endl; + go(pos, is, states); + Threads.main()->wait_for_search_finished(); + nodes += Threads.nodes_searched(); + } + else if (token == "setoption") setoption(is); + else if (token == "position") position(pos, is, states); + else if (token == "ucinewgame") Search::clear(); + } + + elapsed = now() - elapsed + 1; // Ensure positivity to avoid a 'divide by zero' + + dbg_print(); // Just before exiting + + cerr << "\n===========================" + << "\nTotal time (ms) : " << elapsed + << "\nNodes searched : " << nodes + << "\nNodes/second : " << 1000 * nodes / elapsed << endl; } } // namespace @@ -148,8 +190,10 @@ void UCI::loop(int argc, char* argv[]) { Position pos; string token, cmd; + StateListPtr states(new std::deque(1)); + auto uiThread = std::make_shared(0); - pos.set(StartFEN, false, &States->back(), Threads.main()); + pos.set(StartFEN, false, &states->back(), uiThread.get()); for (int i = 1; i < argc; ++i) cmd += std::string(argv[i]) + " "; @@ -160,61 +204,42 @@ void UCI::loop(int argc, char* argv[]) { istringstream is(cmd); - token.clear(); // getline() could return empty or blank line + token.clear(); // Avoid a stale if getline() returns empty or blank line is >> skipws >> token; - // The GUI sends 'ponderhit' to tell us to ponder on the same move the - // opponent has played. In case Signals.stopOnPonderhit is set we are - // waiting for 'ponderhit' to stop the search (for instance because we - // already ran out of time), otherwise we should continue searching but - // switching from pondering to normal search. + // The GUI sends 'ponderhit' to tell us the user has played the expected move. + // So 'ponderhit' will be sent if we were told to ponder on the same move the + // user has played. We should continue searching but switch from pondering to + // normal search. In case Threads.stopOnPonderhit is set we are waiting for + // 'ponderhit' to stop the search, for instance if max search depth is reached. if ( token == "quit" || token == "stop" - || (token == "ponderhit" && Search::Signals.stopOnPonderhit)) - { - Search::Signals.stop = true; - Threads.main()->start_searching(true); // Could be sleeping - } + || (token == "ponderhit" && Threads.stopOnPonderhit)) + Threads.stop = true; + else if (token == "ponderhit") - Search::Limits.ponder = 0; // Switch to normal search + Threads.ponder = false; // Switch to normal search else if (token == "uci") sync_cout << "id name " << engine_info(true) << "\n" << Options << "\nuciok" << sync_endl; - else if (token == "ucinewgame") - { - Search::clear(); - Time.availableNodes = 0; - } - else if (token == "isready") sync_cout << "readyok" << sync_endl; - else if (token == "go") go(pos, is); - else if (token == "position") position(pos, is); else if (token == "setoption") setoption(is); + else if (token == "go") go(pos, is, states); + else if (token == "position") position(pos, is, states); + else if (token == "ucinewgame") Search::clear(); + else if (token == "isready") sync_cout << "readyok" << sync_endl; - // Additional custom non-UCI commands, useful for debugging - else if (token == "flip") pos.flip(); - else if (token == "bench") benchmark(pos, is); - else if (token == "d") sync_cout << pos << sync_endl; - else if (token == "eval") sync_cout << Eval::trace(pos) << sync_endl; - else if (token == "perft") - { - int depth; - stringstream ss; - - is >> depth; - ss << Options["Hash"] << " " - << Options["Threads"] << " " << depth << " current perft"; - - benchmark(pos, ss); - } + // Additional custom non-UCI commands, mainly for debugging + else if (token == "flip") pos.flip(); + else if (token == "bench") bench(pos, is, states); + else if (token == "d") sync_cout << pos << sync_endl; + else if (token == "eval") sync_cout << Eval::trace(pos) << sync_endl; else sync_cout << "Unknown command: " << cmd << sync_endl; - } while (token != "quit" && argc == 1); // Passed args have one-shot behaviour - - Threads.main()->wait_for_search_finished(); + } while (token != "quit" && argc == 1); // Command line args are one-shot } @@ -227,6 +252,8 @@ void UCI::loop(int argc, char* argv[]) { string UCI::value(Value v) { + assert(-VALUE_INFINITE < v && v < VALUE_INFINITE); + stringstream ss; if (abs(v) < VALUE_MATE - MAX_PLY) diff --git a/Engines/Linux64/stockfish/src/uci.h b/Engines/Linux64/stockfish/src/uci.h index 4697877..0b3550b 100644 --- a/Engines/Linux64/stockfish/src/uci.h +++ b/Engines/Linux64/stockfish/src/uci.h @@ -2,7 +2,7 @@ Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad + Copyright (C) 2015-2018 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -49,7 +49,7 @@ class Option { Option(OnChange = nullptr); Option(bool v, OnChange = nullptr); Option(const char* v, OnChange = nullptr); - Option(int v, int min, int max, OnChange = nullptr); + Option(int v, int minv, int maxv, OnChange = nullptr); Option& operator=(const std::string&); void operator<<(const Option&); diff --git a/Engines/Linux64/stockfish/src/ucioption.cpp b/Engines/Linux64/stockfish/src/ucioption.cpp index ab931bb..87ebaa8 100644 --- a/Engines/Linux64/stockfish/src/ucioption.cpp +++ b/Engines/Linux64/stockfish/src/ucioption.cpp @@ -2,7 +2,7 @@ Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad + Copyright (C) 2015-2018 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -39,7 +39,7 @@ namespace UCI { void on_clear_hash(const Option&) { Search::clear(); } void on_hash_size(const Option& o) { TT.resize(o); } void on_logger(const Option& o) { start_logger(o); } -void on_threads(const Option&) { Threads.read_uci_options(); } +void on_threads(const Option& o) { Threads.set(o); } void on_tb_path(const Option& o) { Tablebases::init(o); } @@ -55,11 +55,12 @@ bool CaseInsensitiveLess::operator() (const string& s1, const string& s2) const void init(OptionsMap& o) { - const int MaxHashMB = Is64Bit ? 1024 * 1024 : 2048; + // at most 2^32 clusters. + const int MaxHashMB = Is64Bit ? 131072 : 2048; o["Debug Log File"] << Option("", on_logger); - o["Contempt"] << Option(0, -100, 100); - o["Threads"] << Option(1, 1, 128, on_threads); + o["Contempt"] << Option(20, -100, 100); + o["Threads"] << Option(1, 1, 512, on_threads); o["Hash"] << Option(16, 1, MaxHashMB, on_hash_size); o["Clear Hash"] << Option(on_clear_hash); o["Ponder"] << Option(false); diff --git a/Engines/Windows/_tools/LCEngine.pyd b/Engines/Windows/_tools/LCEngine.pyd deleted file mode 100644 index 07b9d4ecc77a4062b60deb27184f83ab15e44196..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 207872 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�dck>va47~u1CNwKu5249=M^Y^T5GXl1G{HPSwT9Q(_J8=Y3mu#V~JEzr6i*0ece)LLdJ`d74%q9RSWBObwRT(Qf6Q) zBJ;kMM79OZWB8AC>~(f=nJt<8>bRqYFTaeU5=3pC(74qd*V*#)283*%QHp~XFeYW8 z1bWWcJ*Y~pl%9@YVv=%A<}0KFosH;>YWXp5B}91?Tqo#;-iR@uApOOMHhf zn?&l|@5`nLraSK6wKdpxB7z0`7W3~I{vCziyaXckM1Qrl4fBu^G+ziTr(x-_ekemv zcRAquC7h(+#18uHbBuno1N2*P1i!PECt7CECBev-KCO(5ImDN~2lz7JU0hZ_9uo@^ zxk!5Y3?Aho7A9>Q%fF$)QJx)3bpLtB4@Hg?#(NYc|6<`5;^QUO374SOX?|?Oc2EZ)9bigP; z9q8yU6Zc7gD*?R#U4M+0z5u)q*Z^1!cnq)v;0DYDOaP1kWCHpDY=9)dm4IkK*Lv^( z9042zv;ejPHUs_#umSK}z$(CFfFA=M2DkxLfSCaLi+ws;N(STr#sH=R76BduYyfNl zybU-Ch+YR;KssO);66YV;KzVp0G6yO3p3RneL57-Pi z{ad61*OP!=zmJx#1^fUo7;rb>KENEnGQc`O6X0#YM}QLm;~x+Pa2p^8a5rE&U;$t` z;Mah^0=5GV0=@u9NdL`%Ou#U}XOQ7tz~2EI0IL8E05@PdU=$z+a2p^Aa0Q@iEo1;} z2W$ka1}p*00Zajm0HgzK02AQ!nrP`5;BCMrz@GrW04xGj1Ev7(1`Gz=43Gd8z!$%P z+<={c{{j3SunMpY@I!zLPzopnqyv%xEzo5wuKK^iABIb88D7o=lmjXNvjEhBRRXF3 z4+81{ZooqT>YLI^vN9ZmRSu$Zyl^;crCGS2g?m?yBvs*lUOiww00F9N0JyKleGSpq z&X*kS8p#Gew*#;SN$L+s0ZW?U3F46R+1 z%Ms5#fU$safMUQDKp9{rpc=41s`kv2YG+qVwKesUqrQxiB-K|=2F#Y~Ycl|ulDll4 zv;Z>AEUS0Y`-;l)VaoL$=ucG5ABe zkPEm%w{_0?TDq@yR#6rrePcNdNM|NJI~;Cjy&|i7VJ-7pFi*ria=2hvmQl=%%Q9R! zl<$smm$Q5>^x>>^Q=%%I^%WEl`Y9&nbj9~DNe|U(f}n?c>7A>r-c7bOr|dxwg{gAR zcUIB0vcgFMR@FS@B)h6sloyDbeW%VO{^J*$QRZhwk$_si|O*hDenwfK)R0eA2XOam?b)IVGU9ZFeWG3Ou z%WB=8x-#gLZzw5b%VndhE2YZ%;jC!b>R8HZhoiR6SzA^|5psCg?`YT&zeKn(!;7kC zS5`9*@T+%2G%{56o{SV}BXYJAvOzU0r7d(1f=ntP_?w6Oq6L&Pq|Gxglb-3`;dszf zR#ja#k5iBGkMvYkQi|Xx-!-nzSysWiX4@E=F$%?>%0eb!EEyi#fr3XmSy+-)y(d|# z${jFeRuk-F+*sttJjz?>-RUkXuPUpr=K=w>)Xb}KSJoh}>MMs;l~p70pmW!il{;sa zk*T82sH>?iD`y($plAUl7DPx-<-AJRDHsDkT;xJMhMVf1A}9F#kZIYJaKS{T=}GrP7svn*i4Uz7L24BmoitR|8@J zCIEGYdI4epcLHeH2Q2}?twdcB>Y~v7DEj#~|ET}61YHu+DY~rPa-oqPdeNd>)#s+g z!p~Wb>l%QH-=m}3i(yp?ufE4Ylgy8v?_UyasR5+^DjfGj_=*Qs!1to>#4CTB;g6#y zB#qJFeoVeUaNYg=Z(rhn`x5_e?MuW(7cab*{T|0%PWMo^8;+bUj4M%bj;P{=V=Ccw z4iygAc+iwM;SW}qI~~Jos@-MqxTOC!I25uX#XpNO0^=B0Q|&Bq*LldhDwc{D4zHtHC3E2!j6Fs%?dWyNxuO_}#m0(J*SAw>vuFf&CrVeejBz;293(6hi;KKl4Qzw0` zU?##37MS_O0p4TvY{$@gaU(T?YD8tZ+ky0;rH7ZalO$EhiXN1tUn()(TVC!#(*zH* z1AHdI2Y{%PhL>a_k@Lupla__~Q>0RZ%6lBS^e+=1II9l&8CgeiqWQWB+T#aK)teOe zL>Kv6C2shoj^Pv~oEGUNZD>*w0{;W?2@R1(PE%M1`e+eiu|*D<=j#4}U$ zI_^NY;UhiO<>WUxSQ*j)N@)b@Ert6q^vDnk`XA)bJ*7x7j&imNa)n<>n$Un4nWMeeZl{-7Iv_@~p z7cp>2=Et*2m{RIri2%|=WJ$vox}8Jo>dF>6obzhk3mx@bq~Nz`UkQ$jf#cGJ8bqX` z3vp&N6&WM_^mT|sFcwVS!?Thz zWTCJhx3n{iQ*tNtO8Q3OI;nbQjipv}IIL2iDg{s4L3u-^Y69v448^o4GEqHTIn(1-bL5IJ2c?!) zISfJyN6)LRsYA_NQ8AYLwwUq*+S?GO8(HUcO2+W>UBewCFiP+(2B9`BR zUddIKV5*Wd0oF`yXQ>mFF>1DUN^yy!zPc7| zkb9Q&Xk-dRVun^%aAho=#anGFGs4LY&cu=EbUYLeskUUHaM$9UqSw*&WNgx2#H-jp z*K~Wr&&X|zG~k(P7O+z4mEBs33MbO?ATV5KhKVF6;i%>3{P=q~%!tbQ7yy!5!kDq1 zDtBdV)k3K$j8n>;LM$bO>SIDL%sg&{v9eRwT(BMxN`aa=0h+Fq?QBYMp4}26|us&15l5^J0p!e(% z)hiO#E<`m~ojK_C3TlrFV(Od^@c`F5##ytS?sDmd7&LWcX3|09tQw4CNk@#csMttv z8fTSP)zFBgF{ZMv%LT^k)!&o{Rbk9rK!N^_zxG)Ttjs6`&3`jCDSjZsZXkfR(!ZFAN46^?2T6fh&o zQNhL>qBlnKz$t>xlVZa64yTkDF^1;>8$AGcw3IDrP|@9nzRxFWDXkRs>dx=ax{c<)Zp+`L(sX>FF=j# zfj^4jUTJ=`gR#j5hk~g`D%eSJxS)qBXI++~yk_1!lxb4upH8}ynv4_05SiPlkYn!pd>+y}#!1yeGn884%qf{7{mzKy?ZU4O zqw7Z~$}7eYH#xlb6ipacG{&AON{qg5J+o^(78gj;+vt1Kn1KpA@w^An0!V*Tl0L*0 z^_w!1iUFev8U}W&2x4*GpZfB4ltyV|v?cT`hMOb{aGK#bDHYE%GNUX!Ac7#VpGI36 z07n91yg^HQDfglHv;%R;Nwwq6 zI}xU(JAG(~)H#SQ(6)BRUm;NEQEY$3*~_3)^L++%RP~wAk4mGzhSILQ&_Ap5A&bC! zO-?syR0z~LoOPhv*d3ihK%?C1*#92Twsxlj4Ny9tI z#Gg9nRSY`mgRs6V&{q~5-A&on={iQ@RM8=2`P%Tg>I0*wVUYQB*i zrjQIYzbHV%znH@6pSAM{{hmjeX$|u{b}ZWB2G1&7H?*M+QS3q+=0CX)$)aVVl~IS+ z&bPb^S=W3VmUR*2Tn#u0IVqi5+Do|)$)X|d4yT<{n(_h`m#hxwlR76G3a26FxiPf$ zD-dReCQJk^rmEDrxlN#3^GTR@h)y9;=k8iTw-I!z9lQoRpgOw=b=(wONf#>Z#jc?^ z6hi$o+$78!Nz%msLERPTMmB{2&LGn*0$tN{Q5GW!fxi$xg#eeaJb{IG>p0QtkB7QZ^hmh7(r2AdPK2^F4UA1x$L;W-773MMXUqn2gb(2n&0CKDIp)Sy_ zXzC`dDgkJb!W;Ce$ChyGdJ!pP*Fd z#z%qP)+4>3)J&O43lJu~$1qyz$a&A_5w@_$u&D4uv!vm<`woOF?lGL0#8l_YZ7-ob z_DC-%%au9tV$j$2NUu_2o?TfV(10*YdJH2dHPe#P^9Zw|$1q`P^=>?D>=?qWxukI8 zBj%G+|Bia(BH_Zb&pa<3ny;RLuuTZtT{%~YsCicB>{ozZIu^G53e;0ZfLeaFw3l)p zvUd$}cQ|@Ys|KtuBmOUXj-S_5DD-ML^%}t&g!*Ugx`jm)S4TJHOhYtFvj$-U=q=sR zYluWOi|)QMe}4#J(%36!I;pfrTDl9}hjgkXfPG&G5B2a`o({xoyMX?P0CY-6P^^_m`UmX3JHJmy zXoL^c@?TDY-+JJt>B7DSS(fQ^kc4i(BZnU7NA0hBY*l`*ibm$D9J?ffle(aWJ7xpZ>!F(_JChNhpT|ho1Tca(Aox7 zr{u36(8XbcPFoR2jE0W-c!zX!qkvn4{KyQ^Nzw+y;X+uoZYTLxf?q!JSFJw?*MW45 z(B=6$$g&bRZJr+i-5MQ^eD*cSBX(9PZt!~zbR9^qHf=57SEZAM`dt>C{sQ1vtD~c~ zWgYB~)}Zho;#dPZt1fH~=}M;;@~6A>x(7~z?zLr~{Lo~bjlYX@1Q3T-_r;Kx;R>Zv*>Uu!B2vG+BhnZj#wS82{X#=Y4sF?L04`NWw+vw$bh0diPK$Lmz6Q87gw^Kx67aL>;wXepm+AQBBaWSr znbsnyGUp?0i*)r>65`khI<1}VM0$7X^t=;cH|WaSM$onB=&Xo0pv#YZ(532RCjTo< zr{`3pElZalIgsy|j$c2dceyUTn-Fi7PR|Pv$0nW3%fat}PUbbB%STwPtxZH6tvWh4 zKy(cxADH$|71o51f~&}s8y6ZnnN#cQN===4$unJ4PfHVygFs^iy>;?>DQ zee!%Azmtf!pDsUA5yv!L9O($VLZ|0`hRTFR>pwrfqt%#!*deQm^Q^2nablNhw0$~^E@}mj*YthNF0AUa5aD~VZ zBXC;z4k6xG5U(~48na1*UbOYq2JlPQ;b{CwKv$)sn}K-UI@}@PT##8?zf=LY zM3?7hAm1om9B$Ah>(V<7xK&7p);5wM-$`AbAAo!(5mwtawm^SfI=bhfgGD--I}moY zPFGn7+n}Rsg3KG?C(;^W(UxIN9pp>Z$(#z@a$Q(A_%$KD+A;o=bYBRW_vmm(Aj|W*uxAjqMMu|!w7sjt zK{MFVG6$qQ9 z%k$Nsi`B)enxgiqjujBj;h5>c+&XVp3f+sX8h97pGeT38HcdeNGf~=Z>3e%-dV2jW zw#s^2b&cDGZ9>@MQbF;Qxow!Mug7`8qx@vh<91F&4Zc8TI>{ZR&>Wz zB%RV{d&q_9bz3k zJ`4*|T~j@P_&`=vhGi(xs9VpM!A&dSRdGQ(_o1GsiJ?mDaFkV}s^u+g-LlpaLuQhd zw&Rlgp?$f8qY9jH;W}TdH$hK3Q^ooX!G{;w5g*)W@UyFGW|m!01!R>nYzJQfm;EZ zCJmjf8(bQ2wwaP89U!=2Ul`G8o(Vq+xQ)QIYVZ@g!OZ}!xID~@!q#?!TLjz;9o_P7 zaI1i;)zPi%2DcHo^a{z+qM>c-2G;^y2k2G+NH+Rw1#Y7gIt2(!_rKabw^jQ@pOXTF z{Ml}TIUJ}$JlF<;++Tw*Er^5Ge|7hlU%rscg9@pwZ@mpJM&DZ6L#Oj4s!<~-u7l2R z;EFxub13eJ4V7gmK%}1$Ne{ky=b~O3R#w3czin1k+3b31upLtx1RnTtnhgRb{Jm*V|}$3fEQKc%lKRu~orf(5lv`o&?=uRVmU0591bh2wm-* zjhYwkjvADy)Q9f*P%dAbkD!7rSKQv0^13f1)VSZ0Xa}9Nkk~5?MmK3bs1Uz|9R4wOGsg;?+99hLQmzI#>GP8bPE1*FQM^{9s-8u zI6$M0yHWp>=2mI^uWqI!(S-MZvKJe+8U9~kQ*0VnaVy<3e!{SEh^uU7IU4xcF5F5P znf9#gfrGFk;=*_(m}Kjpas{QeZ#|V1zOs+gw_ITGd)_nNG49?0_euc#B3$_bWkF8GenR0@KJ^PUai!qCKSj&uuh3`eivTA94F>2D{Y?ToZ)GN+98dvp0%ieb16+VI z_|P)}<$wx+6EF)f8{h(z+3_Aw4yXV)0kZ(J0WLsU7TyEO0Tlq+?=TB68{h(zVFUS0 zKslfS-~`M9%m%msWdrdZP!6a7I03T&vjHwZ88)WR1e60R08YRxz-)jEP==hE2`C3t z0GxnXfY|^#Q-=N)9l}^2paHN9upF=guoAEeuo|!iunw>uumP|U@H}7>;1xg<;5EQb zz#c#g;9bB0z#%{@;0Pc9I0ondoCI_M&H$tjFvbFi1(*O9fEADgNCwydsepcfG(b8a z3y=fI2NVKE07e1E0Ez(<0aF0e05bp;02iPNPz!Ja767E;d&Wt_CXAPA=T=KI>mC$Z zx$rNtozD=s(3Q$AffYde{0Zn@#Z&!5K+kkG00G^rc-)5mC>(+IkLbR|9(tT(%=_u- z9o-X7<)OxP3^)SynciRQZ!hR+ul`3mAe{P+cvRGuUU;nnof zJ>k^%xIOPZ;nep;tLLwVCmB@v2uDDFs(fl1R9@;;O&`&bKDz_;o#1%>uNsEls4|kA zstoFTRW5p`z9*de9=D8F-_w=;)c0Dv_FjFj#wS9FUzNX_29;KOrFYse-Q5!(ZJgSB zdPjEHT{yzgyZ_towX%`C1lm8XepGo?9jWiM^xAusj&Le(^-4H;uclwct5CYKjE~0^j=MaDhtJ_hNE{>9;hs+6jOnFMaGtFy~A4+~RwKMbw zH;~T{f-A^lA5@OWuP6ULAy-3 zq#HA`GG=8g&G<>iV;QS6exLD7#)}!v8M`yy%6Kp1NXF+GUuB%iFl1hpd0l4T%sVm% zX69#(%$$^YU#2UwE^}e#BbmO;Rhhra{B!0DnXhDS$=s89Ff)*OBJ)(H!Jc5h&fdq~ z-=1yHw~w?J+wZf_uvgm`*dMX`>_4~v%Ko(dFZP%1TkL!6`|YjvqxO^bbM}}lbJq8= zQnPN$O3xaYRgg6z>+Y;)CvTCz_nB~iQENgYv@3WrC`dijNvi4-XmGxm(TUJNb zH(64)Ioq0jb9P#`Jv%phc=m+s$=S~An(X=6i?V;5{Y3UJv)5<;HT$LPSF?9zAISb7 zyFL5s>@(TX15E>O7-$=K`@o!mcMdEXc<;dJ1Iq_KIPgaUA04=C;C~HVJMa$!pBec4 zz`qY{9=LPhdjnes9vygW;5P$f2E`Bh-k_TY^&52ipqxP?2bBzZU{J-NIfLAT9v$@f zpr;0{8T6+?&kx!>X!oFfgANV)Xwb1irw2(n2|3s1BvH~-^L)7L?r(DcnESWfmvXn~w&cE-dpNf}_v_qmbE5`dIrzH4eFmot9xym> z@X*2I22UC67+g8He(>VK-oYyd|8nr!!G9k7!r)g2ZyUUO@PWaH2Y)*F^TC~iWAftj zlJaiOyEV_ASCDsC-o(7=dCt7Kd7iw6yr1R$GH*@Z@AEe1y_&ZtZ-3qgd7tJT&-*qn zD!+IBwfQ&Z_s#F0pPfG<|L**W`S<6Sm^FPUN z&;L6AOun_?`vrXq?kLDD7+x^C;NF5s1r-I=1)hQ*6*LyCEcj)?x`IC!Y%O@B;N60M z6$A=S6a)+6hFFGNJH$5Rjv?7Y?i@05$n+tuAvHr54)G505Bd3!r-uAy$nS?dGvseW z{ywC6NXwA-hkQ8XlObOYIXA?3=aqN3h2@ydl>1IBApM&$CHFG<6ddr1tz59u8J-?GPE*sl% z6jzGhj2p)-;#P6DI58d+kBG;|Gvj&j(s*@zF#aw6Bfc8n6GOKUcVhHNDkY2Zf>Ky1 zp{PnZ<#nZ&(m?5;^iUF&VaizLYh{MASXr%XQg$o9Drf1X>&iVPtD09WqLxuDwVYaA zZJ@rRwp81zebi6Yk?L4=zPe0Zqi&_Uj;m+XKh@jn6ZIJ_qn1-EroE&Yny=N-nrJPx z_F8xC6K#k#UYn|Yr!CS}X+P6jhqaU1E$xYxM$e+Zpcm6$(iPp(U(;*q_4UU3`+66> zmp)J*q0i8N(3k4#^zHgD`ceIq{)c`^zoFmL6J&Q4qPq+uHeNGo8ug9#Mt7qho%Mw= z#h7l)F%}rh=&eo04!Y|!-F4NtWjrySrMn84FPfqGhFQaGXtprhnw`w%c zeq~NI7nm!|wdQ7X5B>GKdCk0IK4;~jyI!&kE3ztDRjgW813Ijw)yC>%b+`IigRBwO z7uGauzV)NE#@cEfu#Q-N&|#_VXYHJJLA#W#+vV&kc5St=*5^9`0awv^&9_=FWGQyKCG{?snN> zC*4c#ZTFFz%FFEK^GbP|=XjA<$*b?R^xAt}yk6cwZ>;x~_no)MTj8zswt2sLC%nJB zo8AL21>Kd$FX5}c17W z203MS=|M<$)d(5}ErM1-*B~(%9E=Vo1v7(r!OCD$up>Aa{1#jcuF_wr!^~m!Fi%)C z)WVqlsuebp{na`ABpeZb5l#ue3m1jU!!6<7@NjrK{42Z}-VYO^G*RX#NAyBeI4T*v zOrHf&`KWT#FlrICjy{h1L_?y_qDj#-dTevFGde_%U8KiuMGvBsar!uSTsSTvJMHzj zTKrbrEbbnE5)X~Ph^NHg#oxz2#w+9X@z!{Ed?G#{Uyg6YkCFk7La${~vMB|X;!31c zQfex1Deo%nl%C1}Ww_6zxydqUIkW;=DRx<)RnXqn-qYG@UA07QnD(Xi ztu|ZxL0h41)poPT&d4p6LC>KV&`ats%Pm%2Z=g5V+v=UzVuSRr_1XFYeWkuh-<{lP z=k?3_L$+8(Bdd{DZZWaL8XNB$?Tl_le`B~Y+W3-An;|#YW@C?W#Q2>qyKOu&a+(Fr z;-+GHW<|4#S<9?%HZfb8ADSQ0XM@dA=6G|mIm=vXt}?fod(A)1f6TjbgXOaFSw+}k zZ_r=$t;W{-Ru?u{qBYq1%$j1&qPrGbtF4{Ze(N{7>yed~?#j*fDr38L1-h%2-NcbryE7pI>yNOsmt zXP&ddS?B!9&br`ScOE)v-0bYEV(v?>;Z|U4)pwh?UEF@|Aa|5I(VgKga#y(<-EHmx zHrAi+O*U3`wpB6jWxA=nSJQjTYv#T0b@cktO=IY$McyiJqqoaD?46c->amyFf7Z|M z7xfk2_G|iY`OW+f{my=0f4D!+pX^Wb=liSt4gMbgkbl{~<3IM(1=)gpL8(9wyr3LA z>aCz@&^Guu7#@rZCI_>Eg~3n3)?j~dgdVyO+zB298N#e#sZbBSuwqyvY#6>5b_lzM zy~9D_xNuT9J6sTM4flsf!n5I}@OJnxOc|w%o{I|5Ij=-+R3WMn)s337qY|TG(P+A6 zX0#w$8m(eGZHs=5&O{fY>(Rp~ZJarNfxdC$3UQUVZu}0rseRlz?kW3bVmvjTOV_N6 zcg4TNf5*4thjBu=goG0S>NIjU6{2IxD7sQ!sixFXnkXMAos{m%KxG8G=?7)0vQF8q z{GuFHPAOODnny}1HM5$J{qzd^sfOB6ZK}3bKV~}(V>eAwzg6d{KdI~0-ReR061(Y< znik}jS1U}nxLP@_idI)^O2-J~H(HydP1ELU%e3`!HyzN9YNxfU+Fk9jmRf%nvr1N1TaWN_d2`f_mJHvN!(;(wsNqDCphHeNL<8E?`tAJ8#9>6owB zN^^}R##&>WaR|J3-nc}!JY!}wbJH)j`Knn7wAa||VoovVo6Ffihs@LFCA#B*ncB)~ z<+h4iWi87Jt>M-d>!Fp=P6VTErKamR-PsFYJ2Ra%Y=!;K3Fj=BE3=#1t>VseH@Le% zRHxnZZcDGLH`6=lDOB1(=JaI$J5bOvs_V4>7Z~WSpED>CsIsye1?_`wLEm5?sOMIY zCCnWb3tNT#!=Y5o%CK(KIT{#^h}JVZFGn|{49v`8@k_A|200j?jT36Y_jubuWpBoi@%#P7f#18SQ-QEO2~!yNcT!G}^&k>h5$exY@jA z-WBhO=lk{ij(%@{vA>0Hbk~1AXa@Q#7?x!hy(4kn5cbe0kluuFayS*VH#=M${uFMY zn{q~tqIaWi(duYV^ir(G0jRBJ+#ntqkBwKw8{-}E{`eTXjZQ z#ZhX*Y`Q9alv#AZGCE)v9dKSLsk&^5X6khHzM6tB`Jwg^7;Cb&M!Tq8)9z@`>CaQM z&GlA#Z!l9TBbQOYc##VH3M}-i@tg67;hBxh_S9K#YV3r0&unj{cS<@ASYxxhhe~brh9s;531zb#*;v)`SslL)FF;;(1hmk+81LxS<_ z@{PfP;An6<$P^X~UkJ;9i_AKsWMdgT-m1lrKD6ds9Drlt;APYp>9;OfI5rN*WI+i zaJV_zVr>JP?*a8xNDuW2dS!hXU3yr5q~|aS8D;6r&U}x-#z?9Os){GH$T9 zikNSM2#3P6=9#<9eda+p);+o}m-V7m-D+mFhfR&L##@tNRExoPH`qbh*g-GbG1%@S zd#t_OJ`7Jv4Tj6^OZWmi;FZt>Mb!xFN)*+d4KO?$%?|i6+!$^P z_pk#lhIhlqVe07Fs9aPldMj!QUK#)|nG9B%9W7?&{}%lYR=NWl$q;9W^T(B`>3VUK zxPLr67E^v!ypY-!m3=z?D^5sENLbA~rc}}?nU$PO_x8M`KtrRb=^vGqaE{Dsb~U$J zNUaR&X{@$T+p4|Pamh1$C*1uH@Xj@AJ-t>^dl_aCY0b0_S{JRCHV~wx5BQrNIn7^`B!>S9~?`18uE?Ad&^GB9I^k3Su?H?pNzR!EV z$`o$lv~|Wf)12>|@15n&&%Esw=ce=6DFANx#2vvbUg$1!*Sp0%+Y7x4^w&`D3vZuy z*1P820#`o+1_&ggZtl19KlXe0pZa6`Fa0V00)HtuV2gjyKkEO@q`m{5&H|n;5tIc9 zgmhi);N75g&;hnOSmJ=)!6DxNevlBR;q}XgcKB-eM)Er!4yQ)*qeanj-t$!SXLL8p z7-x-hvAx5%yyTVxMGubRH!FC%6pEsFAlXLBdrCL9@qFIxr1Gpvi|OXLBC)PI)Q)w0>sa@GJV&{W{FS!Twf% zuYVqvbK6gluh1S=vpLwu^h;6+lrWHAU(CRt!csD!Ef^c8QEPRXUb z#5-BA`-be?p2|oV{UxO==*U-JRlBG?)kJlOx=>vUV?V84SMNwnR7lgc@?fF2*ux#Q z{&dq8ZHKl`YF`huLUhts`h2G6YUbyQk_9+MQ)9ld4!nQZIBQ%t?tu5xqE^MQ>H5sh zPP}g)Q2u-rsy*gm^DM7>$9!a_waTDO)d1JGfHQZq`he=^TkEVn)?w?cb=|rn@q8KP zXbro*-NNo9j_f~Q4iFjx!z)L6Uh4n{dUPq#~Wq`dAF7f^^*TW5C#2%>%raNagYwi zDe&;M@R5A2>`@VPnrhLTQRC=Cw3;qaKltO=Xks*jnYcV!!wx$foruozZV#dqaay{m zSX`R73*zd$TqnsNr!W=y>B)pvyjOyfp3P<}p;AF_;-8$}DQf>GIE_B;{=%(~Cc{BLl3sDZL zfEMccP5sZ9V$=OO{*QEum|ze5w}X#Bn0@5Dnj0*T+S*w-%N5=rJ^QLqSUgn1*TcqP z^YDZ4BQVzFaDKQJHEnzN3vVO1N}8y4v^_c(W#&6?iFfjakH?q9>{^c>Kp3Yt+Sa>j zD|D;w=)$AbZ{X64C1%*K-clccpE7EBV9~|cEFmnqGOAT`?S09l2WrD5H<+s}l-yvC z_6yA5cQj$a4AMzWxTs#1ebZ9^2(@aAK0)&6)%s>$;Ih=IQW-B8HH<#SCv2TD#!tq2 z<7Z=^ai8sz)y!oUHfx%1!GqVJHJvm6LTS2h=7skTml$Iz^KOrI5U!iX&XN2s?|^SR z+1=r^dr@Rh+Ld{argXxm&QRwIXEv|$j9ZHLc$W#*$?fgVk{joan+r}_ifK05`_h{N z2RP&XjgoT@gqz-f-Y?|81pl-^cGb~xn)@HHeY%0^K4bSJanMcve*aggl-~AJ2AP8F zL7t#!5CpHYdFsGH+Xvl)k-?WBkQu>TG}7(CUNq7Z!9T$RxPy4h66~PzVYTqh@U5_E z*g5Pg)tl+z+;E{(Zw`eg=(sy!3aO12kIF`RREdsj2nKmC>In)NA5BeGMz=)=q9all zy$=q_9A}U7#4Y32afi4EY;$xxDgG9nW)T|A&+(r42zuzb_)3ySvo9ebk-A8wWK?n} zdC+M}DX%JTDAmzJ+bSQi-}<4_e5FiNzEi$u&us*6?op1QiT*7$QK8l3QH!dj;GL#g z5v`^c%(JEXA!^MKe21~>M0Jk32yJw=x(n8GMEwo+`A|&>PA@2xQALYkJyo>^+B#k^^Q0WqxA9c&RO~jx_pm*P(P-h z(^DH6P(yQqa*7#&QC_mn_fSK783R#g=E9hkfpNEhdH$sGQkhxI=goZRGq0Of&DyvN z@0jnSehx5)nPX997MQEejp#B5;GJS_r?RqJB`p=*vpP&`Ixd3P!+UTL{sINPXqUAk zCPf2$gAR5Nro>cx5g2$4y!5br96j@fea}wi6h+MpU|(W>G;`jEul5B8f9Cw)EOWN9 zb5A?xox7mm!c?#4mUCZsYcWw;x?QPZft=>MOWZ9mv;FRI_o90hUmz{IWiD`3?A7ub z;Rtl_`g_BZXZ&{9%2DqE3diC{wRMuI^}va%A@}8{&l!r zh9C!6%BP~=l-lG+Z1Ew%XHxlJiz>N~iaw1hc{4~8W(u=~`Pk~^Wi<;$MKI&9m`}@? zO-I91AZZPLJcgaVhTZTaswlQKfoptC=KlvM?-P`p%3~!H^;A%Ok$Q^Mdg^;>8}%db z?@;w~b%Ht*6=RXQN-FI4)W>RS?OCl5C^*n+;#>*EPbll3Q9~EC%5dj;ps#Ukf%W=r zT|%YTTRlaFe0V=eRfD@G4t) z6EWle#JPFkq;|6=Z`C*4>by#OH_;t}raTY*YdM?tHyCpnzW-ovB)nOC{aapfzlGn* zZ!agvPX8S9K3iabPhFJSLv;ExC`%2aUD0`PPKh|CXJ?|TijLhCAI85xAG*fxu<@;g zo|;=JBGFBZI`k$8r-kx~G9 zf-=9P&cC;Rv{%}jK$sV)@N~|z@V%EDjViCljuaZhV0hjb$?+U*c~BLmu*v`+xX1{ft50ps-Y8;@~xua^XUKz_uLCgk2OYgW>&* zzIQsf7NiQ(htGjlOw_${VHGx{KrER+mer#+Ov@jlB5`dL?71-OQ=#Pn?zf`B7JbbTiSNEW; z{ic@DMrvQ6KCH#jd7$aK4+1%b2l}ef$ml9{uFJ+fm^ ze#w4CGJ)z$qHcCSc=$x=U9P~p+{Yw3VV}3t@IpnL5>8pi#lz#3&_j7jvHNO)Nh-37XVae8^wfu}?MLT#*{tQ5d~}67vrA@)2rP|LEK3 zJJ{i3=|3Jv-~BWCCrZE-$%(#O2#qg^@xL86k3Wn*jfcQWCa`T6!bvv8+fjFK#CPMz zqSg?!E>LT!*|ph~vS_<5Xty>z@&g=^kI}WJDASeMQrlXC?|4%A9Y^FLRhLzL9&NWc zl~+}IAx-f0`%!yB+no-ATdA&7x2Sv7t0;>1(G$~Z&q*J|q|d8s^|g1k*6h|E+E>~) z+6-+jdeBOV-A*wl@1hZ8*0brk*{`qaZ|K$aI_SDB@Ea5HK}PA{;Djtig%l|IZ~YpR z^dTBrMijKthHCgmWi;KUa;|nU#u<~0@8oVhjDqygaBvkXnAO>*!c+Xz9AbV(bthQq ztjzctC8az6hE+{EhaXy&3+F+5})m)gQTl+2=bX?RdY9F4m6yEqy>spx@B z>mTqlb~3SrpK;B;CEbkdXiOpMQX{!nJIcK}o|!YvneXg!4x&K_fAA6Rdp5lHlJ3i{ z<2GQoc4itSy2ISB+^;1@T#fU7-o1h!nBIHN%j1>6agV*%ysBP3+`v8{$MN1|Zx&wr zD*TK6sDWp^1V5ehE`-Zo9+&+saQ=IK2mf=X{(Lmk6->2#IP4evD@?V=eu3a+c7TWb zCpPSdK}YHS%?}m_E6}X=p;#QJo^MLkA_MhYP&(@&TecFoQLun^VK-E(q?(?KbFnmB zhi-KcMe$sCBfKZw^;}Ut_*$9Bk6xv+Ye&tZ_oKE^R}kb-IQCcQSU;dTu8np_zu>O_ zPIceLzeq!U=S2Z29eZ)P`1QCJ4#vA+%8zmWl4^Vw+V&!p+a2*fHq>bx_FM4-QRjvD zy(sGZ8LB+DQa~x0%Hn30 z^95>owVK)pO!=PLLG7Dd^TNsaS>30eQZJ&QC*gqnT2X3Vu=i>b3A8~G8vqs<3!eO5 zTaF^O50_o|7`LPnnw^Rl?w>6c(dux<7AVA>sQQ8Wa8SbxeXhO`)oi=I7uDvJeqFzV zUYgc;-pFSZG0IT+ucDyUHky%O>0x{-efDW60gI{soy_@j#ueixb3QY?CcjyNE@(g> zbR@TuXnu~X{*5^YSACTJRW*Z^LwXv4^*UWqpE=(FX4;QAKLN!@bjAj2 zpLI-PP0<%Z^AT>JZ@*?&wd;{oX-`fi$w!|japwl6{W13ORl4JeEjDrilx-Vzu9obO z4^jP-xRU6P1JWtE1j2a+|2!u?-^)yVfpHq30d)j@CNl58a%a1X-4$?Kfj&htS9rJR2m4ExBFC1%_ zKNeoR*k4Vr>|+0)k!h3!IM(y{e8mF|mL*hm;g)wm>#ai{v<7c>3HvbJr-i>$_X_pA z2A3f#IBGcjXJRbOm#JVUF?nA=bRgo6LU53hS{Y42M|HrF><8)NakWI4C5F52(@qt9rb~p0-n*B_it&mG6vx$%!XO4#Z%aB{DOA=$jA<- zFqwc=rQ_R4=9NaEq;D{{n!E9`8cHX3g7t&73>SAJDT#n>-4r&PXnzZu+RdImiFW=c zPHlQ8t5na6IHep5^}M2VYd4c8`qRlM(P&}UCgae^ZRUPR!eQ&bj6mqBmC@`LdF#EO zrPG=PhMUhXE*0}$|Edt%{j2^xRG-G+`-#C+SnE@SUnP7yS#el^)3pw@;aNE8i@2e+ zqn1&7G`bah?M=*&KX5JXf$c?NAU`P9<@>*e9xf(Fm$+B5CjJdmBT2D4j5;CG0wi5Z{?66xa{%a%E2(e7)Hlj6`&18lQ)>t}Z$)2hl4{#gEvueaFRYi)RWcJoY3qcu zHdea7>yy(G7xg^SW65x&$%=>5XZz?lAxxPFoqvPp>=U`y(+XL*?w(2w> zH`meWiZAq8vJSn>S&w(H&pG8>bgnx0oOEpN!ft6-b$wjQT6hV~U|=HI^Qk)q7WOss zDJj{roB1Ss-fQj?_Zd)WPE?IxP7u?;SAcUGK4%h6(hpKM42td-S+9{t|#mkZHFy_?!n|8E1n6VM$(M08Y`=aF%4aLYooE0I^p)MZKeS(H5Da$sH@P zh35HsJRlwxk75pO1P>mCd0Z5ml7er`o0JCgtx|5IbGB1=NM|^cR$Qw{P3O}y<5iZV zYMYRhY=`rkq?>((*WCF)Z&(+~WNps@pgPY0xTKI+O5)zjGGJ{UDMcg=MZP zK$qy}4h8)mhw(n(8}~_Oasm}?Ac2?zk4~s*tz{BwBsl07^o3LYMbw2NK}qnB!z6zv zXo+Grio}NKgr!WL(Lz38q%epzb)Pm&sk+ zC9hNm_wDI~IrkKkbWHlzDZt(Z6klpwwUwsQ8AwzH;l6#VEW%S>t^BOKKsOXu6 z@_f5doKLFdwKq|ynrI)8A=;=tujgYol+iu>otgSt@^?*no0Uxck!EkwrITgyZ9fS1 z5>q3+RFU<6otY2e%!BQbeC1iVWk1=Q@nudXCrL9ndH!W&wVcMX7kZM$8S6|WL%I-7 zwv$dsVqPQN@hF$`WQJxJ`133ZW|9|^3w5WeUkg{dnarRK_viVGNT6+?vU3HMsq4CY z^P$1#eDQDaMvnw1gWvH+Uk;rx0$Y9?t_s(OKZpCmKkz?O!iXx67OTT|?nlaDcr=c@ z%k8Kv=?0N*=@j<{39gMdg9Hx>{Fj(QjGKg9$@$7ezV0}ZUNdp*x58`0G#5(G3&}c9 zXWW<4sLXq`BkbK9sC`eg^q{j)ugi34gO=P24zh$)$#MOR{-^#AiHIEN$i>KBoi;9@ z;pIg+E@7%D7N^Xb)><^;bmX5N*iTSuGN8zdjIHlhbK8-w9r!tB3ig~+;Z?c0gB2sl%B(_fVZ)(+#UgPUDl*!d@r0GO* z^{GR=K6w_Li>^eEqEzt4?4au6aTz9q*o{qOYPHk<;TNw>W{zjk?wJ##QX~xEd!|s* zDp^rzi{We;FvtIir$rLrE1bw>C>A?We~yz15c*GQyyX1ovt`+xuc~jr9-E`6bwN>k z3Cv^R9gFGRUH=50w-6O|9SW+*xurI;lhzhH(?dTMK5-NBCfjhg9vUglOiUS}5k;i0 zzc+uBF3JNlg_Rc1@_kT^NPmvUNm&hE-HMy?rfAP=!9g zyXuD1c$Um&VKkv$C7ka zCFub_@%y1qPC;!y6dYrQ{Dp6lFD%Ujc@^KJT3DZ~SEA%g<6-{?@U%n*`7y4^3sPSf zGrTF7=0nmvQ&G}0@mA$X6feeCOp&mHH)z1ueM}NKiH}UiJIqX0rxX~mJ@~Mo@rq#@ zwaB&iBHuI#wRsC%;5Bdk@~4&CBf-@Jjyct-t+0vUkJ1 zamkL+{F;nM7lfQy25-oxAvpDH3M$ZmGyx7$i_XRK}Aw zJ;=|0GzEIaKD@+s~!5JBK!D5FlHCCA9o6sVRqxKuTktC zSUK#jgErEX2-OpF(CI*C_{OrtzZk z)CCZoCMMPdb*lQEx&W_ojk<|<`V*xq9hteOy#FmWNGm-1o-lzy+9+860xnlp;otww zPPwn8gwG|ZTnai@RrX4MeXu?felUkOT(AGE?;}N@!N|?b6I~qhmfdhFKP44430}X9 zO_RjvGr{MRaF)13>4T;L%-7az*t%d2h0(Cy#y|c5 z|2UDf`y6|Ly%aD1EPlg3(i2KgCPQq0k;mxl^aKG9Ly2AOY$U^Y0N>#e+f3Yy{rEsB;MAA> zhklkIzr2vaqA|ds2xQhvTDSQzY zC=vj@qP@{+-uqINhm=N%*o-HW&G;@}5cB606GqU30UCQ9n8yI+Gc=#y@FuczQBhbe z!A(VN^({2bkJKOFT{cy2vl=+KiA-2eBZG0mylmbe!Ip|7Q&H;`ay3c0YLTJ- zl`PGCe7e0dBbim|h_5@&+vR1&-4Ofh4H5uP^Gvh+AL!vV^zZMW;v2X^xp|it z@i#h7+fD5-jm7Uatxl4ADa><9@V|I&?QBy{eNvtBdN^71wPx zZ19Sj6@8=u3i3dF+0EKcw6sIo3DjeurKQj_pq#bEkL?VS=#5%3Kp(=b$|y3xclG=z z#T7`eHaA+syeE>BISPhIP0BY5(=i`N!elSLN-lmBeKdg_)GaeN%CL*W`Zk*IXQ*Ds zWWua8DVPuGp003jag8+zM`M<~5VtNJ>B1~d4iu7nP9YM8y-5CO23_#P<$l11>q8!RI(Hfyz#Lc5X$!(t8gr4+ChUkJ)mx^6#SEQGKI0}>`e7J= z6Z?Ror=y!}AgggDx*ru}E;h!oZxeS!C+Ur6KTdk~bK`5U_q)>jOWI>99n@I*R3CG# zG*tNlw_p{SLE#o$LpjZ;=9HHcrBqGz{zZJkjqi$MFoqQ245sHk{P#R0L`$NUR?=$m zvdy)RrH1kke!wHGESG)0UXdLqF8h)geqXed$uir077TtzPfwDjn4!sQqpEQHkC>KY zxH4L7Y$jck#7f20o<^dh1u3`g=1B7kw69;7lci+psWo}FPr>TtU^aK0tnMo)DDT1K zyTIc&b3?ETJaf=J;+}xRpMzgsg2#7CCc=VF3`JaA4mD`;9~uKSm$j zKn2eXS}zHQuK=%n8;7S8JvErb^5l39EORBSXD541Y_Wf2q9SENMYQkdN$I`_POpN$ z(}488a2Ds0K>LTRerh~ffyov0?aFFRneh~eT;wIbWydWcslP`(rv9z|Bem^Z>^One zMH;6*v#~8H{eE=fIPl4Au3Fa7kC&5qQ#$hbIY20d^y2VSO?UK&cdWvVX8mM^yFFdn zlO7#{#{CWKbrIP_k!IVkUmzR$yio#eTLtyM#(icT;~mt^c5)96;=X0PF-=}*t|qm! z3yu3U+QSvpoF_&`dO5FIj69=(;wjXJ2H+i`cK5;e8Afl9GbfQHoo6mImyzz-_HUZ_ z1Y7f*d4bg9HPpAeIPwWrY8;|WRu6N)2BlBiuav7_a3^bf2ZL!2{$PPKRl^4C#nZ zC|KXPWY)JFH)V6QgG|nEWU>CjQMnssmu_M4*g+Gm2?7#+VJi|kqnXfO$1~sp?Vfz2Fa)T?yCm`F*B<4gO z$LCJ5F8HYf?7b_F9%MUz^G?{QUf#3D@gYEoJK z!0cuA=lv&}-{ER+;O+OILH*9XLS8bEy7emgR&h5t80BOg{>HEJQZOU#Msbn`I>|e6 z$@DG^=@WaHJ<6U=&Ugzf@*sJdb0}0PowQC~r#}AmAolYj$0aXQ$8AAfbcFBEB9pO) zIg$<+FZ5cFjOmXjF~?ir{XxpOq|A@|eq}k~M{)@(a>X~O2TMB5m4gOMjzQ>Bv$@3E z9^3;jrwyMaSx`G{5H?}Xf5A=bf^aoH^2sn8Db{MZ#@(Y)(G;nP?*ap-i=X4wE0BBS zvY}AQgb9+%=TM3=AH@C@mpz}OkZf1>!7YobFX4IBlnJU?q+KqO^%jY#44Ou6qXynq zSFJY=?i%?@Damd;PmjOGr2YUFKLnLzFUkIsdXZ!tTLEO$lk2p}#&WJdZ{SFkA?4JN z-s~fj2H$~-w(uf{z(xWYr6y}o9pu`GduegYIn^pas;P$k7Orc5sas9r+aHq`WLND1 z&MPuI@CjL&)$&R#!ObjP)t2P<=SiPvEt6baf@Q%Wa=5AN$_s3g?EWy_n2EVv60RxK zszLrp+@DFfK4+yz`p_@N?QuE${?_P&y&|HK*-ZcK4uA3RpCu4IK2O>d9$zOWsw+^_ys;E>| zdZP!;V9BHGq~gZh1~ruEemf_ z3FoLjNwsNU)&)4|n{dys;~(arYfKPP4WqBTe_A6og8iV@GbjbQxO{riERB{WFi{)y z+a5BDHXQwSiTRVclg>FqM*Kc%OEy?WW$R7esV#Yseq|};z=7|d8GYM_Id{h&j z*^=Gdi$um?HuMDU!e@e^7NNFpgL@o`jKT+^SRwJXDP2S;^A zC%bWq>w)Xkl(-tt!!I(F)>ItHh@GF5ZA;4F_GVVkMU_}i|8GSxJxcQVympBU?lW9^ zWR<#fSzVV~|841LKi&6(;JTBk#@Squuap<$d*$7DTA7v1i>Lik@-H(~Bhm3Tc)gX; ziEFdI#xSnTCNkaUa6!J*SY>Q5cH?mVCMW$Z;{o?)X}KZK&+SM__P>eyAaaxqWsXwh zKDx92M<=J6#4j~$VD}$p+K4-cyRc<3adN`P3bPF~ey<^-s%u*HK>zPk*OnOE%Iso<<1yyPhoE?B%ij9 z-LcC)zyv!@2I>+jRK?-&Hr|!UQ4My# z#I>3Mi(dyXNn-NpwRA)lC$~~zu*S@@VPJ-ewavpR!Y94YQZe-N}hRWvQ{8G zvc=&FnNt^8$J60?bc5^3w*=2IqYFjF$)~(dMz4;%v3d_ZNhGg^a$ozU>~oX9Gd*BVSR?TpT+QFqnpN=O>FrDkW)ycl;(@wpwB}gqQk6sWDwJg8$ z5P;7c$W(Jzy^sDWzoIgRB&lHMXeK9{o8p1ArB4T;QVCc4 zM=;oW(D@m%%|fjb3|sVNOuD%m_YRG4x_g z-nXz?!O@1v{QV+p1>VYL`CASbxiNiYJ#QBSp@~#h6K+!mauqQhUF%}9bC?h3uoU>9 z8rMZ{k;+fHDj!3ta0i*f8%}QY{_<{Bw+;Axh`b;FMzZtOBxrYYLH?WjJ9)yJAo^#> zHb2kxQE5*{5lu>A)lSY9illQFFn)h;7zxq|-q*>x_A+lZm*v~MJzOargVSGRkKOSe zkvvK7KbPz#lz`>yTyVy8iNGI?lQX)V{ht4J$^@B0+=9A#i_C6LGKjCqjDHiE)|wdz z7Fi3;bf8ROO@K}Qf~RnmYm7%Eo-0Uqasq7sFuz#x3>=^Y^;jP__zP|`l9KpWMXfbU zna~nkmcW7J^zQ686H@SO(60R;&(*qp~_4Gzkf$vi8SBe_-GmVEd!B{uSqtw9lG@#lD{T% zyEROGBES1F3&;43d7IRGYOepvp_X;Edh@#ji$Lg^$pV+ME%GYwku9B`{EGrNnWZJT zDyzWE?7@rAWEx(B-9K_tG5IXgL~o+R4B;1URxs;+=A8vwD}XQm3h((2mr03a))#<1 zekL=W-!BH2uK+qvx|wOoh35<~hq%#RkN0L(`*q7Y)k8(6UB(Jq<6qp_ejr`Axs(u5t@3`8W<` z3cSfST=~s_|E}YUrnB;+KWg{@UAUv1$o1?$c<)8H-z#U=L>-Omp;vqbP`$2V_nT_aK zMWPb?l1Mq`b|Vzvp6HLW@rAE*3oFt;N8*zt0>yDjBITV~dcmV`UnY}M{}JT08;8;+ zb5ckCs>kQ#sJ|iIzZd`Ita<^(Q6yP2XfMd=S_bapkY#ynxabkr*$cs|tMS2alF8v87N$&C zLQQ0XX)7@8a$vnmT%B!0oleb7bq+3Z^P$X)0I$s;-+hECNi7p&A}uz6%+Y+Vp^l)1 zremfnE0DzR*0^qlpL& zlD~TTu`s467F(2T@qZ; z5G8E{6Lmd0+FkPX3izQdzq&CQ)G(hbv?X3Xsz7`ZgFE#R@{3%eoAL#Pm~FN20tS%A z7|Y$+!=PkXhWS<(O|uoAP;aK(D0$bvgpIxpo^^tKehqCiHNTRPo1|%(NTDVw@*5cq znSE_hrW0YqWATM%lM`EwFSHMz;G9&b#r76^TWoBxtHqWU`&n#ev6E-R&sK8-v5#EA zIkHSr3B@Z)nJ^iymITEvQ()GOMLGG0$#OXNbOvpavpLsm&GiE z=4Rk9R${w1X18}VJ9D`-MAp=NW{s#TakDRK>mkaT(A0{NymqXBglR3RtR)(IcPecJ z2z#omx6NF`9HHt&%_Z2Wne(~9)@AH~*;I>N-x4LJJHIJ20xd>V;u3zbX&adO1c>?? z6HDmvLWvhRS|DhFods$ZxBlYFUtnZ`j(3q{IqjU|BK$6yu1w6WLZpfe9PUc8g4?3s zB=T!$W65;Q1{<%Yo`oVTv|v%ynQ*!au{jJ>g-T>j8{=U09NE-HOJIf8>| z`WJAwACk|`0y-{+-r#UoUX7jKj1;7p3Ze@pbN{rEZNHg0cm!WtbVNds8dp0vNu@I6 zPRr37b;&BV;<~RlxxG>NsWXBlOvY`b!%mPmNZ3bVGEYR$-_=udZ<-0bCSJCTeA{yJ zb?X`pVOQdPd&?Id#T(DyjaTr-yLe+UAH;M>N75n-2u{4RBHy{9eCh6JHVe%Y_{R^e zEWC_DHolTw&2DHXl1ux)e}Q8@s)*><)uehh%dXu=M*N8E-E*LoOaHnP36bdIOeiNg zWH%Rzit)QQqNk0>;a8(XXIEmk){_0*m@Iiq+2tK!=H2OaChC9x{r3g_`vU)cf&ae1 le_!CgFYwy!r-bw<$w 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 z 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