Re: IvanHoe 999946 Beta
Posted: Mon Dec 12, 2011 8:24 pm
Code: Select all
db5cc6b67fdbe18eedf5b75173a04153 ./Android/RobboBaseLib.so
cb097cfaadd7cbf9e3a66986e2febc43 ./Android/IvanHoe999946h
Code: Select all
option name Hash type spin min 1 max 1024 default 8
option name Threads type spin min 1 max 4 default 4
option name Ponder type check default false
option name RobboBaseDynamicLibraryFile type string default NULL
option name RobboTripleBaseDirectory type string default NULL
option name RobboTotalBaseDirectory type string default NULL
option name LoadOnWeakProbe type combo var AllWays var UnlessPondered var Refrain default AllWays
option name UnloadDeregisterInform type combo var Inert var DeRegisterTotal var UnLoadTriple default Inert
option name MultiPV type spin min 1 max 250 default 1
option name SendCurrmove type check default true
option name UCI_Chess960 type check default false
Code: Select all
49bdd436e2bb6a4c9a20a1df4d832173 ./Android/IvanHoe999946h
03268308db810c26158f0038b32737f5 ./Linux/Mode_Analysis/x86-64/IvanHoe999946h
671e0764ef8872e50128d4c59ff416ec ./Linux/Mode_Analysis/x86-32/IvanHoe999946h
9816ca86b40b14ba86844432d446710a ./Linux/Mode_Game_Play/x86-64/IvanHoe999946h
9b85680da0ba8f3856d5f6400210de10 ./Linux/Mode_Game_Play/x86-32/IvanHoe999946h
9385c0ad3bc0737cbeb538ca938eb8b9 ./Windows/Mode_Analysis/x86-64/IvanHoe999946h.exe
0486c66dda0ad59d9a4ad5d3b7a41b10 ./Windows/Mode_Analysis/x86-32/IvanHoe999946h.exe
afde44bfc3dd2e107650be658408ad9d ./Windows/Mode_Game_Play/x86-64/IvanHoe999946h.exe
e6d23ee6d6b7c89c034b8e0bdf6e837b ./Windows/Mode_Game_Play/x86-32/IvanHoe999946h.exe
Code: Select all
fba2000d8469a6ad99f77c9ad32cb4d1 ./Android/IvanHoe999946h
03268308db810c26158f0038b32737f5 ./Linux/Mode_Analysis/x86-64/IvanHoe999946h
671e0764ef8872e50128d4c59ff416ec ./Linux/Mode_Analysis/x86-32/IvanHoe999946h
1f320619080ccd3261666ff3c79d8c1d ./Linux/Mode_Game_Play/x86-64/IvanHoe999946h
ca7ea6a4cba41e2abdba794ca4275b35 ./Linux/Mode_Game_Play/x86-32/IvanHoe999946h
9385c0ad3bc0737cbeb538ca938eb8b9 ./Windows/Mode_Analysis/x86-64/IvanHoe999946h.exe
0486c66dda0ad59d9a4ad5d3b7a41b10 ./Windows/Mode_Analysis/x86-32/IvanHoe999946h.exe
7105066c9ce68235c47bab1d7dc9e13c ./Windows/Mode_Game_Play/x86-64/IvanHoe999946h.exe
93f4c2cbf2b40acfb4b75de62f4e1dce ./Windows/Mode_Game_Play/x86-32/IvanHoe999946h.exe
Code: Select all
49bdd436e2bb6a4c9a20a1df4d832173 ./Android/IvanHoe999946h
03268308db810c26158f0038b32737f5 ./Linux/Mode_Analysis/x86-64/IvanHoe999946h
671e0764ef8872e50128d4c59ff416ec ./Linux/Mode_Analysis/x86-32/IvanHoe999946h
9816ca86b40b14ba86844432d446710a ./Linux/Mode_Game_Play/x86-64/IvanHoe999946h
9b85680da0ba8f3856d5f6400210de10 ./Linux/Mode_Game_Play/x86-32/IvanHoe999946h
9385c0ad3bc0737cbeb538ca938eb8b9 ./Windows/Mode_Analysis/x86-64/IvanHoe999946h.exe
0486c66dda0ad59d9a4ad5d3b7a41b10 ./Windows/Mode_Analysis/x86-32/IvanHoe999946h.exe
afde44bfc3dd2e107650be658408ad9d ./Windows/Mode_Game_Play/x86-64/IvanHoe999946h.exe
e6d23ee6d6b7c89c034b8e0bdf6e837b ./Windows/Mode_Game_Play/x86-32/IvanHoe999946h.exe
Well, not quite. After some testing, that time management was still not efficient overall, so I reworked and cleaned it up a bit. It absolutely now should not lose on time, get into time trouble, or play too fast -- it will self-correct over the course of the game. I hope they decide to use it in the next release.kingliveson wrote: This is the most up-to-date and final release of the 999946h build
static void TimeManager (sint64 TIME, sint64 OPP_TIME, sint64 INCREMENT, int mtg) { double rat; if (mtg) { if (mtg > 25) mtg = 25; DESIRED_TIME = TIME / mtg + INCREMENT; ABSOLUTE_TIME = (TIME * mtg) / (4 * mtg - 3) - MIN (1000000, TIME / 10); if (mtg == 1) ABSOLUTE_TIME -= MIN (1000000, ABSOLUTE_TIME / 10); if (ABSOLUTE_TIME < 1000) /* porque? */ ABSOLUTE_TIME = 1000; } else { ABSOLUTE_TIME = (TIME * ABSOLUTE_PERCENT) / 100 - 10000; if (ABSOLUTE_TIME < 1000) ABSOLUTE_TIME = 1000; DESIRED_TIME = (TIME * DESIRED_MILLIS) / 1000 + INCREMENT; } if (SINCE_NEW_GAME < BOOK_EXIT_MOVES) DESIRED_TIME += (DESIRED_TIME * (BOOK_EXIT_MOVES - SINCE_NEW_GAME)) / BOOK_EXIT_MOVES; #if 1 if (!BUFFER_TIME && TIME > 10000000) BUFFER_TIME = 2000; if (!DESIRED_TIME_FLAG) { if (ROOT_DEPTH && TIME > 60000000 && ROOT_SCORE < -10) { if (ROOT_SCORE < -10 && ROOT_SCORE >= -20) DESIRED_TIME += DESIRED_TIME >> 5; else if (ROOT_SCORE < -20 && ROOT_SCORE >= -40) DESIRED_TIME += DESIRED_TIME >> 4; else if (ROOT_SCORE < -40 && ROOT_SCORE >= -60) DESIRED_TIME += DESIRED_TIME >> 3; else if (ROOT_SCORE < -60 && ROOT_SCORE >= -80) DESIRED_TIME += DESIRED_TIME >> 4; else if (ROOT_SCORE < -80 && ROOT_SCORE >= -100) DESIRED_TIME += DESIRED_TIME >> 5; } else if (ROOT_DEPTH && TIME > 60000000 && ROOT_SCORE > 10) { if (ROOT_SCORE > 10 && ROOT_SCORE <= 20) DESIRED_TIME += DESIRED_TIME >> 5; else if (ROOT_SCORE > 20 && ROOT_SCORE <= 40) DESIRED_TIME += DESIRED_TIME >> 4; else if (ROOT_SCORE > 40 && ROOT_SCORE <= 60) DESIRED_TIME += DESIRED_TIME >> 3; else if (ROOT_SCORE > 60 && ROOT_SCORE <= 80) DESIRED_TIME += DESIRED_TIME >> 4; else if (ROOT_SCORE > 80 && ROOT_SCORE <= 100) DESIRED_TIME += DESIRED_TIME >> 5; } DESIRED_TIME_FLAG = 1; } else if (DESIRED_TIME_FLAG) { rat = ((double) (TIME + 1)) / ((double) (OPP_TIME + 1)); if (rat > 1.125) DESIRED_TIME += (8 * DESIRED_TIME) >> 4; else if (rat < 0.875) DESIRED_TIME -= (8 * DESIRED_TIME) >> 4; DESIRED_TIME_FLAG = 0; } #endif if (DESIRED_TIME > ABSOLUTE_TIME) DESIRED_TIME = ABSOLUTE_TIME; if (DESIRED_TIME < 1000) DESIRED_TIME = 1000; EASY_TIME = (DESIRED_TIME * EASY_FACTOR) / 100; if (UCI_PONDER) EASY_TIME = (DESIRED_TIME * EASY_FACTOR_PONDER) / 100; BATTLE_TIME = (DESIRED_TIME * BATTLE_FACTOR) / 100; ORDINARY_TIME = (DESIRED_TIME * ORDINARY_FACTOR) / 100; }
Code: Select all
DESIRED_TIME_FLAG = 0;
EASY_FACTOR_PONDER = 25;
BATTLE_FACTOR = 80;
ORDINARY_FACTOR = 60;
ABSOLUTE_PERCENT = 20;
Code: Select all
int DESIRED_TIME_FLAG;
Code: Select all
87d35b20edb9774a6d661b2cdefdf56a ./Android/IvanHoe999946h
71a4c1b85e06ea9b75202bed27699cce ./Linux/Mode_Analysis/x86-64/IvanHoe999946h
93f76295865ab412a9095e0bf5dd2e22 ./Linux/Mode_Analysis/x86-32/IvanHoe999946h
1836d5a0ac63062bc8f7c2d08448ed75 ./Linux/Mode_Game_Play/x86-64/IvanHoe999946h
72641a69177860069912f65dc8d782cb ./Linux/Mode_Game_Play/x86-32/IvanHoe999946h
cbc12a704d2fe4fe6539cfb4a5855cbc ./Windows/Mode_Analysis/x86-64/IvanHoe999946h.exe
cd38cb8b5b116b753428be38199fe499 ./Windows/Mode_Analysis/x86-32/IvanHoe999946h.exe
60521c66f10e69651d805339dc94fae7 ./Windows/Mode_Game_Play/x86-64/IvanHoe999946h.exe
1881abb97f6263a6dc2e8ee1559d0d4a ./Windows/Mode_Game_Play/x86-32/IvanHoe999946h.exe
void TimeManager (sint64 TIME, sint64 OPP_TIME, sint64 INCREMENT, int mtg) { double rat; if (mtg) { if (mtg > 25) mtg = 25; DESIRED_TIME = TIME / mtg + INCREMENT; ABSOLUTE_TIME = (TIME * mtg) / (4 * mtg - 3) - MIN (1000000, TIME / 10); if (mtg == 1) ABSOLUTE_TIME -= MIN (1000000, ABSOLUTE_TIME / 10); if (ABSOLUTE_TIME < 1000) /* porque? */ ABSOLUTE_TIME = 1000; } else { ABSOLUTE_TIME = (TIME * ABSOLUTE_PERCENT) / 100 - 10000; if (ABSOLUTE_TIME < 1000) ABSOLUTE_TIME = 1000; DESIRED_TIME = (TIME * DESIRED_MILLIS) / 1000 + INCREMENT; } if (SINCE_NEW_GAME < BOOK_EXIT_MOVES) DESIRED_TIME += (DESIRED_TIME * (BOOK_EXIT_MOVES - SINCE_NEW_GAME)) / BOOK_EXIT_MOVES; #if 1 if (!BUFFER_TIME && !INCREMENT && TIME > 10000000) BUFFER_TIME = 2000; if (DESIRED_TIME_FLAG) { if (ROOT_DEPTH && TIME > 60000000 && ROOT_SCORE < -10) { if (ROOT_SCORE < -10 && ROOT_SCORE >= -20) DESIRED_TIME += DESIRED_TIME >> 5; else if (ROOT_SCORE < -20 && ROOT_SCORE >= -40) DESIRED_TIME += DESIRED_TIME >> 4; else if (ROOT_SCORE < -40 && ROOT_SCORE >= -60) DESIRED_TIME += DESIRED_TIME >> 3; else if (ROOT_SCORE < -60 && ROOT_SCORE >= -80) DESIRED_TIME += DESIRED_TIME >> 4; else if (ROOT_SCORE < -80 && ROOT_SCORE >= -100) DESIRED_TIME += DESIRED_TIME >> 5; } else if (ROOT_DEPTH && TIME > 60000000 && ROOT_SCORE > 10) { if (ROOT_SCORE > 10 && ROOT_SCORE <= 20) DESIRED_TIME += DESIRED_TIME >> 5; else if (ROOT_SCORE > 20 && ROOT_SCORE <= 40) DESIRED_TIME += DESIRED_TIME >> 4; else if (ROOT_SCORE > 40 && ROOT_SCORE <= 60) DESIRED_TIME += DESIRED_TIME >> 3; else if (ROOT_SCORE > 60 && ROOT_SCORE <= 80) DESIRED_TIME += DESIRED_TIME >> 4; else if (ROOT_SCORE > 80 && ROOT_SCORE <= 100) DESIRED_TIME += DESIRED_TIME >> 5; } DESIRED_TIME_FLAG = 0; } else { rat = ((double) (TIME + 1)) / ((double) (OPP_TIME + 1)); if (rat > 1.125) DESIRED_TIME += (8 * DESIRED_TIME) >> 4; else if (rat < 0.875) DESIRED_TIME -= (8 * DESIRED_TIME) >> 4; DESIRED_TIME_FLAG = 1; } #endif if (DESIRED_TIME > ABSOLUTE_TIME) DESIRED_TIME = ABSOLUTE_TIME; if (DESIRED_TIME < 1000) DESIRED_TIME = 1000; EASY_TIME = (DESIRED_TIME * EASY_FACTOR) / 100; if (UCI_PONDER) EASY_TIME = (DESIRED_TIME * EASY_FACTOR_PONDER) / 100; BATTLE_TIME = (DESIRED_TIME * BATTLE_FACTOR) / 100; ORDINARY_TIME = (DESIRED_TIME * ORDINARY_FACTOR) / 100; }
Code: Select all
DESIRED_TIME_FLAG = 0;
EASY_FACTOR_PONDER = 25;
BATTLE_FACTOR = 85;
ORDINARY_FACTOR = 64;
ABSOLUTE_PERCENT = 24;
Code: Select all
int DESIRED_TIME_FLAG;
First, If you are in America, that says Sept. 12, 2011, and other parts of the world, Dec. 9, 2011. And if in Eastern Time Zone, 11:33 PM.velmarin wrote: ¿As you in order that your archives have always the same date, 9-12-2011, 05,33 make,?
void TimeManager (sint64 TIME, sint64 OPP_TIME, sint64 INCREMENT, int mtg) { double rat; if (mtg) { if (mtg > 25) mtg = 25; DESIRED_TIME = TIME / mtg + INCREMENT; ABSOLUTE_TIME = (TIME * mtg) / (4 * mtg - 3) - MIN (1000000, TIME / 10); if (mtg == 1) ABSOLUTE_TIME -= MIN (1000000, ABSOLUTE_TIME / 10); if (ABSOLUTE_TIME < 1000) /* porque? */ ABSOLUTE_TIME = 1000; } else { ABSOLUTE_TIME = (TIME * ABSOLUTE_PERCENT) / 100 - 10000; if (ABSOLUTE_TIME < 1000) ABSOLUTE_TIME = 1000; DESIRED_TIME = (TIME * DESIRED_MILLIS) / 1000 + INCREMENT; } if (SINCE_NEW_GAME < BOOK_EXIT_MOVES) DESIRED_TIME += (DESIRED_TIME * (BOOK_EXIT_MOVES - SINCE_NEW_GAME)) / BOOK_EXIT_MOVES; #if 1 if (!BUFFER_TIME && !INCREMENT && TIME > 10000000) BUFFER_TIME = 2000; if (DESIRED_TIME_FLAG) { if (ROOT_DEPTH && TIME > 60000000 && ROOT_SCORE < -25) { if (ROOT_SCORE >= -50) DESIRED_TIME += DESIRED_TIME >> 4; else if (ROOT_SCORE < -50 && ROOT_SCORE >= -75) DESIRED_TIME += DESIRED_TIME >> 3; else if (ROOT_SCORE < -75 && ROOT_SCORE >= -100) DESIRED_TIME += DESIRED_TIME >> 4; } else if (ROOT_DEPTH && TIME > 60000000 && ROOT_SCORE > 25) { if (ROOT_SCORE <= 50) DESIRED_TIME += DESIRED_TIME >> 4; else if (ROOT_SCORE > 50 && ROOT_SCORE <= 75) DESIRED_TIME += DESIRED_TIME >> 3; else if (ROOT_SCORE > 75 && ROOT_SCORE <= 100) DESIRED_TIME += DESIRED_TIME >> 4; } DESIRED_TIME_FLAG = 0; } else { rat = ((double) (TIME + 1)) / ((double) (OPP_TIME + 1)); if (rat > 1.25) DESIRED_TIME += (DESIRED_TIME >> 2) + DESIRED_TIME >> 2; else if (rat < 0.90) DESIRED_TIME -= (DESIRED_TIME >> 2) + DESIRED_TIME >> 2; DESIRED_TIME_FLAG = 1; } #endif if (DESIRED_TIME > ABSOLUTE_TIME) DESIRED_TIME = ABSOLUTE_TIME; if (DESIRED_TIME < 1000) DESIRED_TIME = 1000; EASY_TIME = (DESIRED_TIME * EASY_FACTOR) / 100; if (UCI_PONDER) EASY_TIME = (DESIRED_TIME * EASY_FACTOR_PONDER) / 100; BATTLE_TIME = (DESIRED_TIME * BATTLE_FACTOR) / 100; ORDINARY_TIME = (DESIRED_TIME * ORDINARY_FACTOR) / 100; }
Code: Select all
DESIRED_TIME_FLAG = 0;
EASY_FACTOR_PONDER = 32;
BATTLE_FACTOR = 88;
ORDINARY_FACTOR = 64;
ABSOLUTE_PERCENT = 24;
Code: Select all
int DESIRED_TIME_FLAG;
void TimeManager (sint64 TIME, sint64 OPP_TIME, sint64 INCREMENT, int mtg) { double rat; if (mtg) { if (mtg > 25) mtg = 25; DESIRED_TIME = TIME / mtg + INCREMENT; ABSOLUTE_TIME = (TIME * mtg) / (4 * mtg - 3) - MIN (1000000, TIME / 10); if (mtg == 1) ABSOLUTE_TIME -= MIN (1000000, ABSOLUTE_TIME / 10); if (ABSOLUTE_TIME < 1000) /* porque? */ ABSOLUTE_TIME = 1000; } else { ABSOLUTE_TIME = (TIME * ABSOLUTE_PERCENT) / 100 - 10000; if (ABSOLUTE_TIME < 1000) ABSOLUTE_TIME = 1000; DESIRED_TIME = (TIME * DESIRED_MILLIS) / 1000 + INCREMENT; } if (SINCE_NEW_GAME < BOOK_EXIT_MOVES) DESIRED_TIME += (DESIRED_TIME * (BOOK_EXIT_MOVES - SINCE_NEW_GAME)) / BOOK_EXIT_MOVES; #if 1 if (!BUFFER_TIME && !INCREMENT && TIME > 10000000) BUFFER_TIME = 2000; if (DESIRED_TIME_FLAG) { rat = ((double) (TIME + 1)) / ((double) (OPP_TIME + 1)); if (rat > 1.25) DESIRED_TIME += (DESIRED_TIME >> 2) + DESIRED_TIME >> 2; else if (rat < 0.90) DESIRED_TIME -= (DESIRED_TIME >> 2) + DESIRED_TIME >> 2; DESIRED_TIME_FLAG = 0; } else DESIRED_TIME_FLAG = 1; #endif if (DESIRED_TIME > ABSOLUTE_TIME) DESIRED_TIME = ABSOLUTE_TIME; if (DESIRED_TIME < 1000) DESIRED_TIME = 1000; EASY_TIME = (DESIRED_TIME * EASY_FACTOR) / 100; if (UCI_PONDER) EASY_TIME = (DESIRED_TIME * EASY_FACTOR_PONDER) / 100; BATTLE_TIME = (DESIRED_TIME * BATTLE_FACTOR) / 100; ORDINARY_TIME = (DESIRED_TIME * ORDINARY_FACTOR) / 100; }
Code: Select all
DESIRED_TIME_FLAG = 0;
Code: Select all
int DESIRED_TIME_FLAG;