Fixed a bug that the training data generation crashes if eval_limit is high.

This commit is contained in:
nodchip
2020-08-08 18:23:11 +09:00
parent 70d88364fe
commit b0d28ac3ab

View File

@@ -634,11 +634,19 @@ void MultiThinkGenSfen::thread_worker(size_t thread_id)
// reach leaf
// cout << pos;
auto v = Eval::evaluate(pos);
Value v;
if (pos.checkers()) {
// HACK: If a king is checkmated, Eval::evalute(pos) crashes with an
// assertion. To avoid crashes, return value1 instead.
v = value1;
}
else {
v = Eval::evaluate(pos);
// evaluate() returns the evaluation value on the turn side, so
// If it's a turn different from root_color, you must invert v and return it.
if (rootColor != pos.side_to_move())
v = -v;
}
// Rewind.
// Is it C++x14, and isn't there even foreach to turn in reverse?