mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-08-21 18:00:16 +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:
parent
5f13a87ce7
commit
351fc0cce2
Notes:
sideshowbarker
2024-07-17 08:03:33 +09:00
Author: https://github.com/LucasChollet
Commit: 351fc0cce2
Pull-request: https://github.com/SerenityOS/serenity/pull/14855
Reviewed-by: https://github.com/linusg
Reviewed-by: https://github.com/petelliott ✅
3 changed files with 15 additions and 4 deletions
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue