1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-06-01 06:28:13 +00:00

ChessEngine: Use reduced Board objects in MCTSTree

Monte-Carlo methods are known to intensively create nodes and in our
case each leaf of the tree stores a board. However, for this use case,
we don't need a full board object that also contains game information.

This patch adds a `clone_cleared()` method that return a clone without
game information and uses it when constructing the tree.
It allows the ChessEngine much more possibility before getting out of
memory.
This commit is contained in:
Lucas CHOLLET 2022-08-14 15:00:52 +02:00 committed by Andreas Kling
parent 5f13a87ce7
commit 351fc0cce2
3 changed files with 15 additions and 4 deletions

View file

@ -259,6 +259,16 @@ Board::Board()
set_piece(Square("h8"), { Color::Black, Type::Rook });
}
Board Board::clone_without_history() const
{
// Note: When used in the MCTSTree, the board doesn't need to have all information about previous states.
// It spares a huge amount of memory.
auto result = *this;
result.m_moves.clear();
result.m_previous_states.clear();
return result;
}
String Board::to_fen() const
{
StringBuilder builder;