"tree" of AlphaBeta2, copied by split More...
#include <alphaBeta2.h>
Classes | |
struct | BetaCut |
struct | NextMove |
struct | NextQMove |
Public Types | |
enum | { MaxDepth = SearchState2Core::MaxDepth } |
typedef EvalT | eval_t |
typedef AlphaBeta2Common< EvalT > | common_t |
typedef AlphaBeta2Window | Window |
Public Member Functions | |
bool | stopping () const |
void | testStop () |
size_t | nodeCount () const |
template<Player P> | |
const MoveLogProb | nextMove () |
Static Public Member Functions | |
static int | rootAlpha (Player P, int last_value, Progress16 progress) |
static int | stableThreshold (Player P, int last_value) |
Protected Member Functions | |
AlphaBeta2Tree (const NumEffectState &s, checkmate_t &checker, SimpleHashTable *t, CountRecorder &) | |
AlphaBeta2Tree (const AlphaBeta2Tree &src, AlphaBeta2Parallel< EvalT > *) | |
~AlphaBeta2Tree () | |
void | updateRootPV (Player P, std::ostream &, int, Move) |
void | addMultiPV (Player P, int, Move) |
bool | isStable (Player P, int new_value) const |
void | showFailLow (int result, Move m) const |
template<Player P> | |
int | alphaBetaSearch (const MoveLogProb &move, Window window, bool in_pv) |
alphaBetaSearch (move) | |
template<Player P> | |
int | alphaBetaSearchAfterMove (const MoveLogProb &move, Window window, bool in_pv) |
template<Player P> | |
int | quiesce (Window) |
template<Player P> | |
int | quiesceStable (Window) |
template<Player P> | |
int | quiesceExp (Window) |
template<Player P> | |
int | searchAllMoves (SimpleHashRecord *, Window w) |
template<Player P> | |
int | searchAllMoves (Move m, int limit_consumption, SimpleHashRecord *, Window w) |
template<Player P> | |
bool | tryCheckmate (SimpleHashRecord *record, bool in_pv, Move &checkmate_move) |
初めの方で詰みを読む | |
template<Player P> | |
bool | tryCheckmateAgain (SimpleHashRecord *record, Move &checkmate_move, int node_count, int best_value) |
負けそうな時にさらに詰みを読む | |
template<Player P> | |
void | testThreatmate (SimpleHashRecord *record, bool in_pv) |
詰めろの有無を確認 | |
template<Player P> | |
void | examineMovesRoot (const MoveLogProbVector &, size_t, Window, MoveLogProb &, int &) |
alpha値が求まった後で他の手を調べる | |
template<Player P> | |
int | quiesceRoot (Window, int depth_left, Move &best_move, DualThreatmateState) |
template<Player P> | |
int | quiesce (Window, int depth_left, DualThreatmateState) |
template<Player P> | |
bool | quiesceWithMove (Move, Window &, int, Move &, int &, const DualThreatmateState &) |
void | updateCheckmateCount () |
bool | tryPass (SimpleHashRecord *record, Player P) const |
MoveGenerator & | makeGenerator () |
Static Protected Member Functions | |
static MoveGenerator * | alloc () |
static void | dealloc (MoveGenerator *) |
Protected Attributes | |
size_t | node_count |
静止探索も含めたノード数 | |
FixedCapacityVector < MoveGenerator *, MaxDepth > | generators |
stat::Average | mpn |
stat::Average | mpn_cut |
stat::Average | alpha_update |
stat::Average | last_alpha_update |
stat::Average | ext |
stat::Average | ext_limit |
boost::shared_ptr < AlphaBeta2Parallel< EvalT > > | shared |
boost::shared_ptr < AlphaBeta2SharedRoot > | shared_root |
Static Protected Attributes | |
static CArray< int, SearchState2Core::MaxDepth > | depth_node_count |
Private Member Functions | |
void | throwStop () |
void | showPV (std::ostream &, int, Move, char stable) const |
Friends | |
struct | NextMove< BLACK > |
struct | NextMove< WHITE > |
struct | NextQMove< BLACK > |
struct | NextQMove< WHITE > |
"tree" of AlphaBeta2, copied by split
Definition at line 142 of file alphaBeta2.h.
typedef AlphaBeta2Common<EvalT> osl::search::AlphaBeta2Tree< EvalT >::common_t |
Definition at line 148 of file alphaBeta2.h.
typedef EvalT osl::search::AlphaBeta2Tree< EvalT >::eval_t |
Reimplemented from osl::search::SearchBase< EvalT, SimpleHashTable, CountRecorder, RealizationProbability >.
Definition at line 147 of file alphaBeta2.h.
typedef AlphaBeta2Window osl::search::AlphaBeta2Tree< EvalT >::Window |
Reimplemented in osl::search::AlphaBeta2< EvalT >.
Definition at line 179 of file alphaBeta2.h.
anonymous enum |
Definition at line 149 of file alphaBeta2.h.
osl::search::AlphaBeta2Tree< EvalT >::AlphaBeta2Tree | ( | const NumEffectState & | s, |
checkmate_t & | checker, | ||
SimpleHashTable * | t, | ||
CountRecorder & | r | ||
) | [protected] |
Definition at line 75 of file alphaBeta2.cc.
References osl::search::AlphaBeta2Tree< EvalT >::shared.
osl::search::AlphaBeta2Tree< EvalT >::AlphaBeta2Tree | ( | const AlphaBeta2Tree< EvalT > & | src, |
AlphaBeta2Parallel< EvalT > * | |||
) | [protected] |
Definition at line 103 of file alphaBeta2.cc.
References osl::search::SearchState2Core::pv.
osl::search::AlphaBeta2Tree< EvalT >::~AlphaBeta2Tree | ( | ) | [protected] |
Definition at line 114 of file alphaBeta2.cc.
void osl::search::AlphaBeta2Tree< EvalT >::addMultiPV | ( | Player | P, |
int | result, | ||
Move | m | ||
) | [protected] |
Definition at line 1385 of file alphaBeta2.cc.
References osl::alt(), osl::search::SimpleHashTable::isVerbose(), osl::OslConfig::lock_io, osl::newPtypeO(), osl::PAWN, and osl::OslConfig::usiOutputPawnValue().
osl::search::MoveGenerator * osl::search::AlphaBeta2Tree< EvalT >::alloc | ( | ) | [static, protected] |
Definition at line 126 of file alphaBeta2.cc.
int osl::search::AlphaBeta2Tree< EvalT >::alphaBetaSearch | ( | const MoveLogProb & | move, |
Window | window, | ||
bool | in_pv | ||
) | [protected] |
alphaBetaSearch (move)
Definition at line 1501 of file alphaBeta2.cc.
References osl::search::AlphaBeta2Window::alpha(), osl::alt(), osl::search::AlphaBeta2Window::beta(), osl::search::DominanceCheck::detect(), osl::Sennichite::hasWinner(), osl::Sennichite::isDraw(), osl::Sennichite::isNormal(), osl::search::DominanceCheck::LOSE, osl::MoveLogProb::move(), osl::eval::notLessThan(), result, osl::search::DominanceCheck::WIN, and osl::Sennichite::winner().
int osl::search::AlphaBeta2Tree< EvalT >::alphaBetaSearchAfterMove | ( | const MoveLogProb & | move, |
Window | window, | ||
bool | in_pv | ||
) | [protected] |
Definition at line 164 of file alphaBeta2.cc.
References osl::search::SimpleHashRecord::addNodeCount(), osl::search::AlphaBeta2Window::alpha(), osl::alt(), osl::search::SimpleHashRecord::bestMove(), osl::search::AlphaBeta2Window::beta(), osl::eval::betterThan(), osl::search::ThreatmateState::CHECK_AFTER_THREATMATE, osl::search::SimpleHashRecord::inCheck(), osl::Move::isNormal(), limit, osl::MoveLogProb::logProb(), osl::eval::max(), osl::search::DualThreatmateState::mayHaveCheckmate(), osl::OslConfig::memoryUseLimit(), osl::eval::min(), osl::MoveLogProb::move(), osl::eval::notLessThan(), osl::search::AlphaBeta2Window::null(), osl::Move::player(), result, osl::search::SimpleHashRecord::setInCheck(), osl::search::DualThreatmateState::status(), osl::search::ThreatmateState::status(), and osl::search::SimpleHashRecord::threatmate().
void osl::search::AlphaBeta2Tree< EvalT >::dealloc | ( | MoveGenerator * | p | ) | [static, protected] |
Definition at line 141 of file alphaBeta2.cc.
template void osl::search::AlphaBeta2Tree< EvalT >::examineMovesRoot< WHITE > | ( | const MoveLogProbVector & | , |
size_t | , | ||
Window | , | ||
MoveLogProb & | , | ||
int & | |||
) | [protected] |
alpha値が求まった後で他の手を調べる
Definition at line 1580 of file alphaBeta2.cc.
References osl::search::AlphaBeta2Window::alpha(), osl::alt(), osl::eval::betterThan(), osl::eval::delta(), osl::search::SimpleHashTable::isVerbose(), osl::OslConfig::lock_io, osl::MoveLogProb::move(), moves, osl::newPtypeO(), osl::PAWN, result, and width.
bool osl::search::AlphaBeta2Tree< EvalT >::isStable | ( | Player | P, |
int | new_value | ||
) | const [protected] |
osl::search::MoveGenerator & osl::search::AlphaBeta2Tree< EvalT >::makeGenerator | ( | ) | [protected] |
Definition at line 147 of file alphaBeta2.cc.
const osl::MoveLogProb osl::search::AlphaBeta2Tree< EvalT >::nextMove | ( | ) |
Definition at line 528 of file alphaBeta2.cc.
References osl::search::SimpleHashRecord::bestMove(), osl::Move::capturePtype(), osl::search::SimpleHashRecord::inCheck(), osl::search::MoveGenerator::init(), osl::search::DualThreatmateState::maybeThreatmate(), osl::MoveLogProb::move(), osl::search::MoveGenerator::nextMove(), osl::search::MoveGenerator::nextTacticalMove(), osl::Move::PASS(), osl::MoveLogProb::setLogProbAtMost(), osl::search::RealizationProbability::TableMove, osl::search::SimpleHashRecord::threatmate(), and osl::MoveLogProb::validMove().
size_t osl::search::AlphaBeta2Tree< EvalT >::nodeCount | ( | ) | const [inline] |
Definition at line 180 of file alphaBeta2.h.
References osl::search::AlphaBeta2Tree< EvalT >::node_count.
int osl::search::AlphaBeta2Tree< EvalT >::quiesce | ( | Window | w | ) | [protected] |
Definition at line 958 of file alphaBeta2.cc.
int osl::search::AlphaBeta2Tree< EvalT >::quiesce | ( | Window | w, |
int | depth_left, | ||
DualThreatmateState | parent_threatmate | ||
) | [protected] |
Definition at line 1149 of file alphaBeta2.cc.
References osl::search::AlphaBeta2Window::alpha(), osl::alt(), osl::search::AlphaBeta2Window::beta(), osl::eval::betterThan(), osl::eval::delta(), finish, osl::search::SimpleHashRecord::inCheck(), osl::search::MoveGenerator::init(), osl::eval::max(), osl::search::DualThreatmateState::maybeThreatmate(), osl::search::DualThreatmateState::mayHaveCheckmate(), osl::search::MoveGenerator::nextMove(), osl::search::MoveGenerator::nextTacticalMove(), osl::Move::PASS(), osl::PAWN, osl::search::SimpleHashRecord::setInCheck(), osl::search::DualThreatmateState::updateInLock(), and osl::MoveLogProb::validMove().
int osl::search::AlphaBeta2Tree< EvalT >::quiesceExp | ( | Window | w | ) | [protected] |
Definition at line 999 of file alphaBeta2.cc.
References osl::search::SimpleHashRecord::qrecord, result, osl::search::QuiescenceRecord::setLowerBound(), and osl::search::SimpleHashRecord::threatmate().
int osl::search::AlphaBeta2Tree< EvalT >::quiesceRoot | ( | Window | w, |
int | depth_left, | ||
Move & | best_move, | ||
DualThreatmateState | threatmate | ||
) | [protected] |
Definition at line 1073 of file alphaBeta2.cc.
References osl::search::AlphaBeta2Window::alpha(), osl::alt(), osl::search::QuiescenceRecord::bestMove(), osl::search::AlphaBeta2Window::beta(), osl::eval::betterThan(), osl::eval::delta(), finish, osl::search::SimpleHashRecord::inCheck(), osl::search::MoveGenerator::init(), osl::Move::isNormal(), osl::eval::max(), osl::search::DualThreatmateState::maybeThreatmate(), osl::search::MoveGenerator::nextMove(), osl::search::MoveGenerator::nextTacticalMove(), osl::Move::PASS(), osl::PAWN, osl::search::SimpleHashRecord::qrecord, and osl::MoveLogProb::validMove().
int osl::search::AlphaBeta2Tree< EvalT >::quiesceStable | ( | Window | w | ) | [protected] |
Definition at line 970 of file alphaBeta2.cc.
References osl::search::AlphaBeta2Window::alpha(), osl::alt(), osl::search::AlphaBeta2Window::beta(), count, osl::Move::isInvalid(), osl::Move::PASS(), and result.
bool osl::search::AlphaBeta2Tree< EvalT >::quiesceWithMove | ( | Move | move, |
Window & | w, | ||
int | depth_left, | ||
Move & | best_move, | ||
int & | best_value, | ||
const DualThreatmateState & | threatmate | ||
) | [protected] |
Definition at line 1041 of file alphaBeta2.cc.
References osl::search::AlphaBeta2Window::alpha(), osl::search::AlphaBeta2Window::beta(), osl::eval::betterThan(), osl::eval::delta(), osl::search::AlphaBeta2Window::null(), and result.
int osl::search::AlphaBeta2Tree< EvalT >::rootAlpha | ( | Player | P, |
int | last_value, | ||
Progress16 | progress | ||
) | [static] |
Definition at line 1275 of file alphaBeta2.cc.
References osl::alt(), osl::eval::betterThan(), osl::eval::delta(), osl::KING, osl::newPtypeO(), osl::PAWN, and width.
int osl::search::AlphaBeta2Tree< EvalT >::searchAllMoves | ( | SimpleHashRecord * | record, |
Window | w | ||
) | [protected] |
Definition at line 613 of file alphaBeta2.cc.
References osl::search::AlphaBeta2Window::alpha(), osl::alt(), osl::search::AlphaBeta2Window::beta(), osl::eval::betterThan(), osl::search::QuiescenceRecord::checkmateNodesLeft(), osl::search::SearchTable::CheckmateSpecialDepth, osl::Move::DeclareWin(), osl::eval::delta(), osl::search::SimpleHashRecord::hasGreaterLowerBound(), osl::search::SimpleHashRecord::hasLesserUpperBound(), osl::search::SimpleHashRecord::hasLowerBound(), osl::search::SimpleHashRecord::hasUpperBound(), osl::search::SearchTable::HistorySpecialDepth, osl::search::SimpleHashRecord::inCheck(), osl::Move::INVALID(), osl::Move::isCapture(), osl::search::AlphaBeta2Window::isConsistent(), osl::eval::isConsistentValue(), osl::Move::isNormal(), osl::Move::isValid(), osl::MoveLogProb::logProb(), osl::search::SimpleHashRecord::lowerBound(), osl::eval::max(), osl::search::DualThreatmateState::maybeThreatmate(), osl::MoveLogProb::move(), osl::search::AlphaBeta2Window::null(), osl::Move::player(), osl::search::SimpleHashRecord::qrecord, result, search_assert, osl::search::SimpleHashRecord::threatmate(), osl::search::QuiescenceRecord::threatmateNodes(), osl::search::SimpleHashRecord::upperBound(), osl::OslConfig::usiMode(), and osl::MoveLogProb::validMove().
int osl::search::AlphaBeta2Tree< EvalT >::searchAllMoves | ( | Move | m, |
int | limit_consumption, | ||
SimpleHashRecord * | record, | ||
Window | w | ||
) | [protected] |
Definition at line 285 of file alphaBeta2.cc.
References osl::search::AlphaBeta2Window::alpha(), osl::eval::betterThan(), osl::search::AlphaBeta2Window::null(), and result.
void osl::search::AlphaBeta2Tree< EvalT >::showFailLow | ( | int | result, |
Move | m | ||
) | const [protected] |
Definition at line 1412 of file alphaBeta2.cc.
References osl::newPtypeO(), osl::PAWN, osl::record::csa::show(), and osl::WHITE.
void osl::search::AlphaBeta2Tree< EvalT >::showPV | ( | std::ostream & | os, |
int | result, | ||
Move | m, | ||
char | stable | ||
) | const [private] |
Definition at line 1423 of file alphaBeta2.cc.
References osl::container::GeneralSimpleHashTable< Record >::find(), osl::Move::isNormal(), osl::search::DualThreatmateState::isThreatmate(), K_TSUMERO, osl::OslConfig::memoryUseRatio(), osl::newPtypeO(), osl::PAWN, osl::record::csa::show(), osl::search::SimpleHashRecord::threatmate(), osl::OslConfig::usiMode(), and osl::WHITE.
int osl::search::AlphaBeta2Tree< EvalT >::stableThreshold | ( | Player | P, |
int | last_value | ||
) | [static] |
Definition at line 1309 of file alphaBeta2.cc.
References osl::alt(), osl::eval::betterThan(), osl::eval::delta(), osl::KING, osl::newPtypeO(), osl::PAWN, and width.
bool osl::search::AlphaBeta2Tree< EvalT >::stopping | ( | ) | const [inline] |
Reimplemented from osl::search::SearchTimer.
Definition at line 169 of file alphaBeta2.h.
References osl::search::SearchState2Core::stop_tree.
void osl::search::AlphaBeta2Tree< EvalT >::testStop | ( | ) | [inline] |
void osl::search::AlphaBeta2Tree< EvalT >::testThreatmate | ( | SimpleHashRecord * | record, |
bool | in_pv | ||
) | [protected] |
詰めろの有無を確認
Definition at line 307 of file alphaBeta2.cc.
References count, osl::search::SimpleHashRecord::inCheck(), osl::search::DualThreatmateState::isThreatmate(), osl::eval::max(), osl::search::SimpleHashRecord::nodeCount(), osl::search::SimpleHashRecord::qrecord, osl::search::DualThreatmateState::setThreatmate(), osl::search::SimpleHashRecord::threatmate(), and osl::search::QuiescenceRecord::threatmateNodesLeft().
void osl::search::AlphaBeta2Tree< EvalT >::throwStop | ( | ) | [private] |
Reimplemented from osl::search::SearchTimer.
bool osl::search::AlphaBeta2Tree< EvalT >::tryCheckmate | ( | SimpleHashRecord * | record, |
bool | in_pv, | ||
Move & | checkmate_move | ||
) | [protected] |
初めの方で詰みを読む
Definition at line 380 of file alphaBeta2.cc.
References osl::alt(), checkmate_limit, osl::search::QuiescenceRecord::checkmateNodesLeft(), count, depth, osl::checkmate::limitToCheckCount(), osl::eval::max(), osl::search::DualThreatmateState::maybeThreatmate(), osl::search::DualThreatmateState::mayHaveCheckmate(), osl::eval::min(), osl::search::SimpleHashRecord::nodeCount(), osl::search::SimpleHashRecord::qrecord, and osl::search::SimpleHashRecord::threatmate().
bool osl::search::AlphaBeta2Tree< EvalT >::tryCheckmateAgain | ( | SimpleHashRecord * | record, |
Move & | checkmate_move, | ||
int | node_count, | ||
int | best_value | ||
) | [protected] |
負けそうな時にさらに詰みを読む
Definition at line 448 of file alphaBeta2.cc.
References osl::alt(), osl::eval::betterThan(), checkmate_limit, osl::search::SimpleHashRecord::checkmateNodes(), osl::search::QuiescenceRecord::checkmateNodesLeft(), count, osl::search::SimpleHashRecord::inCheck(), osl::isMajorNonPieceOK(), osl::KING, osl::eval::max(), osl::search::DualThreatmateState::maybeThreatmate(), osl::search::DualThreatmateState::mayHaveCheckmate(), osl::newPtypeO(), osl::search::SimpleHashRecord::nodeCount(), osl::search::SimpleHashRecord::qrecord, and osl::search::SimpleHashRecord::threatmate().
bool osl::search::AlphaBeta2Tree< EvalT >::tryPass | ( | SimpleHashRecord * | record, |
Player | P | ||
) | const [protected] |
Definition at line 519 of file alphaBeta2.cc.
References osl::search::SimpleHashRecord::inCheck(), osl::search::DualThreatmateState::maybeThreatmate(), and osl::search::SimpleHashRecord::threatmate().
void osl::search::AlphaBeta2Tree< EvalT >::updateCheckmateCount | ( | ) | [protected] |
Definition at line 1259 of file alphaBeta2.cc.
void osl::search::AlphaBeta2Tree< EvalT >::updateRootPV | ( | Player | P, |
std::ostream & | os, | ||
int | result, | ||
Move | m | ||
) | [protected] |
Definition at line 1341 of file alphaBeta2.cc.
References osl::alt(), osl::eval::betterThan(), osl::search::SimpleHashTable::isVerbose(), osl::KING, osl::KNIGHT, osl::OslConfig::lock_io, osl::newPtypeO(), osl::PAWN, osl::eval::Ptype_Eval_Table, result, threshold, and osl::OslConfig::usiOutputPawnValue().
Definition at line 194 of file alphaBeta2.h.
Definition at line 196 of file alphaBeta2.h.
Definition at line 197 of file alphaBeta2.h.
Definition at line 199 of file alphaBeta2.h.
stat::Average osl::search::AlphaBeta2Tree< EvalT >::alpha_update [protected] |
Definition at line 154 of file alphaBeta2.h.
osl::CArray< int, osl::search::SearchState2Core::MaxDepth > osl::search::AlphaBeta2Tree< EvalT >::depth_node_count [static, protected] |
Definition at line 159 of file alphaBeta2.h.
stat::Average osl::search::AlphaBeta2Tree< EvalT >::ext [protected] |
Definition at line 155 of file alphaBeta2.h.
stat::Average osl::search::AlphaBeta2Tree< EvalT >::ext_limit [protected] |
Definition at line 155 of file alphaBeta2.h.
FixedCapacityVector<MoveGenerator*, MaxDepth> osl::search::AlphaBeta2Tree< EvalT >::generators [protected] |
Definition at line 153 of file alphaBeta2.h.
stat::Average osl::search::AlphaBeta2Tree< EvalT >::last_alpha_update [protected] |
Definition at line 154 of file alphaBeta2.h.
stat::Average osl::search::AlphaBeta2Tree< EvalT >::mpn [protected] |
Definition at line 154 of file alphaBeta2.h.
stat::Average osl::search::AlphaBeta2Tree< EvalT >::mpn_cut [protected] |
Definition at line 154 of file alphaBeta2.h.
size_t osl::search::AlphaBeta2Tree< EvalT >::node_count [protected] |
静止探索も含めたノード数
Definition at line 152 of file alphaBeta2.h.
Referenced by osl::search::AlphaBeta2Tree< EvalT >::nodeCount().
boost::shared_ptr<AlphaBeta2Parallel<EvalT> > osl::search::AlphaBeta2Tree< EvalT >::shared [protected] |
Reimplemented from osl::search::SearchState2Core.
Definition at line 156 of file alphaBeta2.h.
Referenced by osl::search::AlphaBeta2Tree< EvalT >::AlphaBeta2Tree().
boost::shared_ptr<AlphaBeta2SharedRoot> osl::search::AlphaBeta2Tree< EvalT >::shared_root [protected] |
Definition at line 157 of file alphaBeta2.h.
Referenced by osl::search::AlphaBeta2< EvalT >::sharedRootInfo().