Performs an AlphaBeta search using Resistance for evaluations. More...
#include <WolvePlayer.hpp>
Public Member Functions | |
WolveSearch () | |
virtual | ~WolveSearch () |
bitset_t | RootMovesToConsider () const |
Moves to consider in the root state -- this set is used instead of the GenerateMoves() since it could have more knowledge. | |
void | SetRootMovesToConsider (const bitset_t &consider) |
See RootMovesToConsider(). | |
void | SetTT (SearchTT *tt) |
Sets the transposition table to be used during search. | |
bool | GuiFx () const |
Writes progress of search in guifx format after each root move completes. | |
void | SetGuiFx (bool flag) |
Sets whether guifx output should be dumped. | |
HexEval | Search (HexBoard &brd, HexColor color, const std::vector< int > &plywidth, const std::vector< int > &depths_to_search, int timelimit, std::vector< HexPoint > &PV) |
Runs the AlphaBeta search. | |
std::string | DumpStats () |
Output stats from search. | |
Virtual methods from HexAbSearch. | |
virtual HexEval | Evaluate () |
Evaluates leaf position. | |
virtual void | GenerateMoves (std::vector< HexPoint > &moves) |
Generates moves for this position. | |
virtual void | ExecuteMove (HexPoint move) |
Plays the given move. | |
virtual void | UndoMove (HexPoint move) |
Undoes the given move. | |
virtual void | EnteredNewState () |
Hook function called upon entering new position. | |
virtual void | OnStartSearch () |
Hook function called at the very start of the search. | |
virtual void | OnSearchComplete () |
Hook function called after the search has completed. | |
virtual void | AfterStateSearched () |
Hook function called after a states moves have been searched. | |
Parameters | |
bool | BackupIceInfo () const |
Whether the backed-up ice info is used to reduce the moves to consider after a state has been searched. | |
void | SetBackupIceInfo (bool enable) |
BackupIceInfo(). | |
Protected Attributes | |
HexBoard * | m_brd |
The board we are playing on. | |
HexColor | m_toplay |
Color of player to move next. | |
SearchTT * | m_tt |
Transposition table to use during search, if any. | |
bool | m_use_guifx |
int | m_current_depth |
Number of moves from the root. | |
PointSequence | m_sequence |
Sequences of moves to the current state. | |
HexPoint | m_tt_bestmove |
If current state exists in TT, but TT state was not deep enough, this will hold the best move for that state; otherwise it will be INVALID_MOVE. | |
bool | m_tt_info_available |
Private Member Functions | |
void | ComputeResistance (Resistance &resist) |
Computes the evaluation on the no_fillin_board (if it exists) using the ConductanceGraph from m_brd. | |
Private Attributes | |
std::vector< bitset_t > | m_consider |
Consider sets for each depth. | |
bitset_t | m_rootMTC |
See RootMovesToConsider(). | |
TransTable< VariationInfo > | m_varTT |
Variation TT. | |
bool | m_backup_ice_info |
See BackupIceInfo(). |
Performs an AlphaBeta search using Resistance for evaluations.
Definition at line 80 of file WolvePlayer.hpp.
WolveSearch::WolveSearch | ( | ) |
Definition at line 89 of file WolvePlayer.cpp.
WolveSearch::~WolveSearch | ( | ) | [virtual] |
Definition at line 95 of file WolvePlayer.cpp.
void WolveSearch::AfterStateSearched | ( | ) | [virtual] |
Hook function called after a states moves have been searched.
Default implementation does nothing.
Reimplemented from HexAbSearch.
Definition at line 179 of file WolvePlayer.cpp.
References SequenceHash::Hash(), hash_t, m_backup_ice_info, HexAbSearch::m_brd, m_consider, HexAbSearch::m_current_depth, HexAbSearch::m_sequence, HexAbSearch::m_toplay, m_varTT, EndgameUtils::MovesToConsider(), and TransTable< T >::Put().
bool WolveSearch::BackupIceInfo | ( | ) | const [inline] |
Whether the backed-up ice info is used to reduce the moves to consider after a state has been searched.
This is useful if using iterative deepening, since the next time the state is visited a smaller number of moves need to be considered.
Definition at line 164 of file WolvePlayer.hpp.
References m_backup_ice_info.
Referenced by WolveEngine::WolveParam().
void WolveSearch::ComputeResistance | ( | Resistance & | resist | ) | [private] |
Computes the evaluation on the no_fillin_board (if it exists) using the ConductanceGraph from m_brd.
Computes resistance on game board using vcs from filled-in board.
Definition at line 199 of file WolvePlayer.cpp.
References ResistanceUtil::AddAdjacencies(), BLACK_AND_WHITE, GroupBuilder::Build(), Resistance::Evaluate(), HexBoard::GetPosition(), HexBoard::Height(), HexAbSearch::m_brd, and HexBoard::Width().
Referenced by Evaluate(), and GenerateMoves().
std::string HexAbSearch::DumpStats | ( | ) | [inherited] |
Output stats from search.
Definition at line 379 of file HexAbSearch.cpp.
References HexAbSearch::Statistics::Dump(), HexAbSearch::m_eval, and HexAbSearch::m_statistics.
Referenced by WolvePlayer::Search().
void WolveSearch::EnteredNewState | ( | ) | [virtual] |
Hook function called upon entering new position.
Default implementation does nothing.
Reimplemented from HexAbSearch.
Definition at line 105 of file WolvePlayer.cpp.
HexEval WolveSearch::Evaluate | ( | ) | [virtual] |
Evaluates leaf position.
Implements HexAbSearch.
Definition at line 109 of file WolvePlayer.cpp.
References BLACK, ComputeResistance(), HexEval, LogFine(), HexAbSearch::m_toplay, and Resistance::Score().
void WolveSearch::ExecuteMove | ( | HexPoint | move | ) | [virtual] |
Plays the given move.
Implements HexAbSearch.
Definition at line 168 of file WolvePlayer.cpp.
References HexAbSearch::m_brd, HexAbSearch::m_toplay, and HexBoard::PlayMove().
void WolveSearch::GenerateMoves | ( | std::vector< HexPoint > & | moves | ) | [virtual] |
Generates moves for this position.
Moves will be played in the returned order.
Implements HexAbSearch.
Definition at line 118 of file WolvePlayer.cpp.
References ComputeResistance(), VariationInfo::consider, TransTable< T >::Get(), SequenceHash::Hash(), HexAssert, HexEval, LogFine(), HexAbSearch::m_brd, m_consider, HexAbSearch::m_current_depth, m_rootMTC, HexAbSearch::m_sequence, HexAbSearch::m_toplay, HexAbSearch::m_tt_bestmove, m_varTT, EndgameUtils::MovesToConsider(), Resistance::Score(), and HexPointUtil::ToString().
bool HexAbSearch::GuiFx | ( | ) | const [inline, inherited] |
Writes progress of search in guifx format after each root move completes.
Off by default.
Definition at line 200 of file HexAbSearch.hpp.
References HexAbSearch::m_use_guifx.
Referenced by WolveEngine::WolveParam().
void WolveSearch::OnSearchComplete | ( | ) | [virtual] |
Hook function called after the search has completed.
Default implementation does nothing.
Reimplemented from HexAbSearch.
Definition at line 193 of file WolvePlayer.cpp.
void WolveSearch::OnStartSearch | ( | ) | [virtual] |
Hook function called at the very start of the search.
Default implementation does nothing.
Reimplemented from HexAbSearch.
Definition at line 99 of file WolvePlayer.cpp.
References TransTable< T >::Clear(), m_consider, and m_varTT.
bitset_t WolveSearch::RootMovesToConsider | ( | ) | const [inline] |
Moves to consider in the root state -- this set is used instead of the GenerateMoves() since it could have more knowledge.
Definition at line 154 of file WolvePlayer.hpp.
References m_rootMTC.
HexEval HexAbSearch::Search | ( | HexBoard & | brd, | |
HexColor | color, | |||
const std::vector< int > & | plywidth, | |||
const std::vector< int > & | depths_to_search, | |||
int | timelimit, | |||
std::vector< HexPoint > & | PV | |||
) | [inherited] |
Runs the AlphaBeta search.
brd | board to play one. | |
color | color to play. | |
plywidth | depth of the search set to plywidth.size() and plywidth[j] top moves are explored. | |
depths_to_search | successive depths to search (like in ID). | |
timelimit | amount of time in which to finish search. | |
PV | the principal variation will be stored here. |
If search is aborted by the user or the timelimit is reached, then the last valid result from interative deepening is returned. If the first iteration has not completed, then a score of -EVAL_INFINITY and a PV containing only INVALID_POINT are returned.
Definition at line 95 of file HexAbSearch.cpp.
References HexAbSearch::Statistics::elapsed_time, EVAL_INFINITY, Get(), IMMEDIATE_LOSS, IMMEDIATE_WIN, INVALID_POINT, LogInfo(), HexAbSearch::m_aborted, HexAbSearch::m_brd, HexAbSearch::m_current_depth, HexAbSearch::m_eval, HexAbSearch::m_sequence, HexAbSearch::m_statistics, HexAbSearch::m_toplay, HexAbSearch::OnSearchComplete(), HexAbSearch::OnStartSearch(), HexAbSearch::Statistics::pv, HexAbSearch::SearchState(), UNUSED(), and HexAbSearch::Statistics::value.
Referenced by WolvePlayer::Search().
void WolveSearch::SetBackupIceInfo | ( | bool | enable | ) | [inline] |
Definition at line 169 of file WolvePlayer.hpp.
References m_backup_ice_info.
Referenced by WolveEngine::WolveParam().
void HexAbSearch::SetGuiFx | ( | bool | flag | ) | [inline, inherited] |
Sets whether guifx output should be dumped.
Definition at line 195 of file HexAbSearch.hpp.
References HexAbSearch::m_use_guifx.
Referenced by WolveEngine::WolveParam().
void WolveSearch::SetRootMovesToConsider | ( | const bitset_t & | consider | ) | [inline] |
Definition at line 159 of file WolvePlayer.hpp.
References m_rootMTC.
Referenced by WolvePlayer::Search().
void HexAbSearch::SetTT | ( | SearchTT * | tt | ) | [inline, inherited] |
Sets the transposition table to be used during search.
Definition at line 190 of file HexAbSearch.hpp.
References HexAbSearch::m_tt.
Referenced by WolvePlayer::WolvePlayer().
void WolveSearch::UndoMove | ( | HexPoint | move | ) | [virtual] |
Undoes the given move.
Implements HexAbSearch.
Definition at line 173 of file WolvePlayer.cpp.
References HexAbSearch::m_brd, HexBoard::UndoMove(), and UNUSED().
bool WolveSearch::m_backup_ice_info [private] |
See BackupIceInfo().
Definition at line 151 of file WolvePlayer.hpp.
Referenced by AfterStateSearched(), BackupIceInfo(), and SetBackupIceInfo().
HexBoard* HexAbSearch::m_brd [protected, inherited] |
The board we are playing on.
Definition at line 112 of file HexAbSearch.hpp.
Referenced by AfterStateSearched(), HexAbSearch::CheckTerminalState(), ComputeResistance(), ExecuteMove(), GenerateMoves(), HexAbSearch::Search(), HexAbSearch::SearchState(), and UndoMove().
std::vector<bitset_t> WolveSearch::m_consider [private] |
Consider sets for each depth.
Definition at line 142 of file WolvePlayer.hpp.
Referenced by AfterStateSearched(), GenerateMoves(), and OnStartSearch().
int HexAbSearch::m_current_depth [protected, inherited] |
Number of moves from the root.
Definition at line 124 of file HexAbSearch.hpp.
Referenced by AfterStateSearched(), HexAbSearch::CheckTerminalState(), GenerateMoves(), HexAbSearch::Search(), and HexAbSearch::SearchState().
bitset_t WolveSearch::m_rootMTC [private] |
Definition at line 145 of file WolvePlayer.hpp.
Referenced by GenerateMoves(), RootMovesToConsider(), and SetRootMovesToConsider().
PointSequence HexAbSearch::m_sequence [protected, inherited] |
Sequences of moves to the current state.
Definition at line 127 of file HexAbSearch.hpp.
Referenced by AfterStateSearched(), GenerateMoves(), HexAbSearch::Search(), and HexAbSearch::SearchState().
HexColor HexAbSearch::m_toplay [protected, inherited] |
Color of player to move next.
Definition at line 115 of file HexAbSearch.hpp.
Referenced by AfterStateSearched(), HexAbSearch::CheckTerminalState(), Evaluate(), ExecuteMove(), GenerateMoves(), HexAbSearch::Search(), and HexAbSearch::SearchState().
SearchTT* HexAbSearch::m_tt [protected, inherited] |
Transposition table to use during search, if any.
Definition at line 118 of file HexAbSearch.hpp.
Referenced by HexAbSearch::SearchState(), and HexAbSearch::SetTT().
HexPoint HexAbSearch::m_tt_bestmove [protected, inherited] |
If current state exists in TT, but TT state was not deep enough, this will hold the best move for that state; otherwise it will be INVALID_MOVE.
Could be used in GenerateMoves() to improve move ordering when using iterative deepening.
Definition at line 133 of file HexAbSearch.hpp.
Referenced by GenerateMoves(), and HexAbSearch::SearchState().
bool HexAbSearch::m_tt_info_available [protected, inherited] |
Definition at line 134 of file HexAbSearch.hpp.
Referenced by HexAbSearch::SearchState().
bool HexAbSearch::m_use_guifx [protected, inherited] |
Definition at line 121 of file HexAbSearch.hpp.
Referenced by HexAbSearch::GuiFx(), HexAbSearch::SearchState(), and HexAbSearch::SetGuiFx().
TransTable<VariationInfo> WolveSearch::m_varTT [private] |
Variation TT.
Definition at line 148 of file WolvePlayer.hpp.
Referenced by AfterStateSearched(), GenerateMoves(), and OnStartSearch().