"tree" of AlphaBeta2, copied by split [詳細]
#include <alphaBeta2.h>
構成 | |
struct | BetaCut |
class | NextMove |
struct | NextQMove |
Public 型 | |
enum | { MaxDepth = SearchState2Core::MaxDepth } |
typedef EvalT | eval_t |
typedef AlphaBeta2Common< EvalT > | common_t |
typedef AlphaBeta2Window | Window |
Public メソッド | |
bool | stopping () const |
void | testStop () |
size_t | nodeCount () const |
template<Player P> | |
const MoveLogProb | nextMove () |
Static Public メソッド | |
static int | rootAlpha (Player P, int last_value, Progress16 progress) |
static int | stableThreshold (Player P, int last_value) |
Protected メソッド | |
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 メソッド | |
static MoveGenerator * | alloc () |
static void | dealloc (MoveGenerator *) |
Protected 変数 | |
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 変数 | |
static CArray< int, SearchState2Core::MaxDepth > | depth_node_count |
Private メソッド | |
void | throwStop () |
void | showPV (std::ostream &, int, Move, char stable) const |
フレンド | |
class | NextMove< BLACK > |
class | NextMove< WHITE > |
class | NextQMove< BLACK > |
class | NextQMove< WHITE > |
"tree" of AlphaBeta2, copied by split
alphaBeta2.h の 133 行で定義されています。
typedef AlphaBeta2Common<EvalT> osl::search::AlphaBeta2Tree< EvalT >::common_t |
alphaBeta2.h の 139 行で定義されています。
typedef EvalT osl::search::AlphaBeta2Tree< EvalT >::eval_t |
osl::search::SearchBase< EvalT, SimpleHashTable, CountRecorder, RealizationProbability >を再定義しています。
alphaBeta2.h の 138 行で定義されています。
typedef AlphaBeta2Window osl::search::AlphaBeta2Tree< EvalT >::Window |
osl::search::AlphaBeta2< EvalT >で再定義されています。
alphaBeta2.h の 170 行で定義されています。
anonymous enum |
alphaBeta2.h の 140 行で定義されています。
osl::search::AlphaBeta2Tree< EvalT >::AlphaBeta2Tree | ( | const NumEffectState & | s, | |
checkmate_t & | checker, | |||
SimpleHashTable * | t, | |||
CountRecorder & | r | |||
) | [inline, protected] |
alphaBeta2.cc の 75 行で定義されています。
osl::search::AlphaBeta2Tree< EvalT >::AlphaBeta2Tree | ( | const AlphaBeta2Tree< EvalT > & | src, | |
AlphaBeta2Parallel< EvalT > * | ||||
) | [inline, protected] |
alphaBeta2.cc の 103 行で定義されています。
osl::search::AlphaBeta2Tree< EvalT >::~AlphaBeta2Tree | ( | ) | [inline, protected] |
void osl::search::AlphaBeta2Tree< EvalT >::addMultiPV | ( | Player | P, | |
int | result, | |||
Move | m | |||
) | [inline, protected] |
alphaBeta2.cc の 1300 行で定義されています。
参照先 osl::search::CountRecorder::allNodeCount(), osl::alt(), osl::search::SearchTimer::elapsed(), osl::search::SearchTimer::hasMonitor(), osl::search::SimpleHashTable::isVerbose(), osl::OslConfig::lock_io, osl::search::SearchState2Core::makePV(), osl::search::SearchTimer::monitors(), osl::newPtypeO(), osl::PAWN, osl::search::AlphaBeta2Common< EvalT >::prediction_for_speculative_search, osl::search::SearchState2Core::pv, osl::search::SearchBase< EvalT, SimpleHashTable, CountRecorder, RealizationProbability >::recorder, osl::search::SearchState2::root_limit, osl::search::AlphaBeta2Tree< EvalT >::shared, osl::search::AlphaBeta2Tree< EvalT >::shared_root, osl::search::AlphaBeta2Tree< EvalT >::showPV(), osl::search::SearchBase< EvalT, SimpleHashTable, CountRecorder, RealizationProbability >::table, と osl::OslConfig::usiOutputPawnValue().
参照元 osl::search::AlphaBeta2Tree< EvalT >::examineMovesRoot().
osl::search::MoveGenerator * osl::search::AlphaBeta2Tree< EvalT >::alloc | ( | ) | [inline, static, protected] |
alphaBeta2.cc の 126 行で定義されています。
int osl::search::AlphaBeta2Tree< EvalT >::alphaBetaSearch | ( | const MoveLogProb & | move, | |
Window | window, | |||
bool | in_pv | |||
) | [inline, protected] |
alphaBetaSearch (move)
-- => searchAllMoves => alphaBetaSearch (child move)
alphaBeta2.cc の 1415 行で定義されています。
参照先 osl::search::CountRecorder::addNodeCount(), osl::search::AlphaBeta2Window::alpha(), osl::alt(), osl::search::AlphaBeta2Window::beta(), osl::RepetitionCounter::checkCount(), osl::search::SearchState2::countSacrificeCheck2(), osl::search::SearchState2Core::curDepth(), osl::search::SearchState2Core::currentHash(), osl::search::PassCounter::dec(), osl::search::DominanceCheck::detect(), osl::search::FixedEval::drawValue(), osl::search::AlphaBeta2Common< EvalT >::eval, osl::MoveLogProb::getMove(), osl::Sennichite::hasWinner(), osl::RepetitionCounter::history(), osl::search::SearchState2Core::history(), osl::search::PassCounter::inc(), osl::RepetitionCounter::isAlmostSennichite(), osl::Sennichite::isDraw(), osl::Sennichite::isNormal(), osl::search::PassCounter::loopByBothPass(), osl::search::DominanceCheck::LOSE, osl::eval::notLessThan(), osl::search::AlphaBeta2Common< EvalT >::pass_count, osl::PTYPE_EMPTY, osl::search::SearchState2Core::pv, osl::search::SearchBase< EvalT, SimpleHashTable, CountRecorder, RealizationProbability >::recorder, osl::search::SearchState2Core::repetition_counter, osl::search::SearchState2Core::repetitionCounter(), result, osl::search::SearchState2Core::state(), osl::search::AlphaBeta2Tree< EvalT >::testStop(), osl::search::DominanceCheck::WIN, osl::search::FixedEval::winByFoul(), osl::search::FixedEval::winByLoop(), と osl::Sennichite::winner().
int osl::search::AlphaBeta2Tree< EvalT >::alphaBetaSearchAfterMove | ( | const MoveLogProb & | move, | |
Window | window, | |||
bool | in_pv | |||
) | [inline, protected] |
alphaBeta2.cc の 164 行で定義されています。
参照先 osl::stat::Average::add(), osl::search::SimpleHashRecord::addNodeCount(), osl::search::SearchState2Core::AllNode, osl::search::SimpleHashTable::allocate(), 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::SearchState2Core::curDepth(), osl::search::SearchState2::curLimit(), osl::search::SearchState2Core::currentHash(), osl::search::AlphaBeta2Common< EvalT >::eval, osl::search::AlphaBeta2Tree< EvalT >::ext, osl::search::AlphaBeta2Tree< EvalT >::ext_limit, osl::MoveLogProb::getLogProb(), osl::MoveLogProb::getMove(), osl::search::SimpleHashRecord::inCheck(), osl::Move::isNormal(), osl::search::SearchState2Core::lastRecord(), limit, osl::search::PassCounter::loopByBothPass(), osl::search::DualThreatmateState::mayHaveCheckmate(), osl::eval::min(), osl::search::FixedEval::minusInfty(), osl::search::AlphaBeta2Tree< EvalT >::node_count, osl::search::SearchState2Core::node_type, osl::search::AlphaBeta2Tree< EvalT >::nodeCount(), osl::eval::notLessThan(), osl::search::AlphaBeta2Window::null(), osl::search::AlphaBeta2Common< EvalT >::pass_count, osl::Move::player(), osl::search::SearchState2Core::pv, osl::search::SearchState2Core::PvNode, result, osl::search::SearchState2Core::setCurrentRecord(), osl::search::SimpleHashRecord::setInCheck(), osl::search::SearchState2Core::state(), osl::search::ThreatmateState::status(), osl::search::DualThreatmateState::status(), osl::search::SearchBase< EvalT, SimpleHashTable, CountRecorder, RealizationProbability >::table, と osl::search::SimpleHashRecord::threatmate().
void osl::search::AlphaBeta2Tree< EvalT >::dealloc | ( | MoveGenerator * | p | ) | [inline, static, protected] |
alphaBeta2.cc の 141 行で定義されています。
参照元 osl::search::AlphaBeta2Tree< EvalT >::~AlphaBeta2Tree().
template void osl::search::AlphaBeta2Tree< EvalT >::examineMovesRoot< WHITE > | ( | const MoveLogProbVector & | , | |
size_t | , | |||
Window | , | |||
MoveLogProb & | , | |||
int & | ||||
) | [inline, protected] |
alpha値が求まった後で他の手を調べる
alphaBeta2.cc の 1495 行で定義されています。
参照先 osl::search::AlphaBeta2Tree< EvalT >::addMultiPV(), osl::search::AlphaBeta2Window::alpha(), osl::alt(), osl::eval::betterThan(), osl::eval::delta(), osl::search::AlphaBeta2Common< EvalT >::eval, osl::MoveLogProb::getMove(), osl::search::FixedEval::isWinValue(), osl::OslConfig::lock_io, osl::search::SearchTimer::monitors(), osl::search::AlphaBeta2Common< EvalT >::multi_pv, osl::newPtypeO(), osl::PAWN, result, osl::search::AlphaBeta2Tree< EvalT >::shared, osl::search::AlphaBeta2Tree< EvalT >::testStop(), osl::search::AlphaBeta2Tree< EvalT >::updateRootPV(), と width.
bool osl::search::AlphaBeta2Tree< EvalT >::isStable | ( | Player | P, | |
int | new_value | |||
) | const [protected] |
osl::search::MoveGenerator & osl::search::AlphaBeta2Tree< EvalT >::makeGenerator | ( | ) | [inline, protected] |
alphaBeta2.cc の 147 行で定義されています。
参照先 osl::search::AlphaBeta2Tree< EvalT >::alloc(), osl::search::SearchState2Core::curDepth(), と osl::search::AlphaBeta2Tree< EvalT >::generators.
参照元 osl::search::AlphaBeta2< EvalT >::alphaBetaSearchRoot(), osl::search::AlphaBeta2Tree< EvalT >::nextMove(), osl::search::AlphaBeta2Tree< EvalT >::quiesce(), と osl::search::AlphaBeta2Tree< EvalT >::quiesceRoot().
const osl::MoveLogProb osl::search::AlphaBeta2Tree< EvalT >::nextMove | ( | ) | [inline] |
alphaBeta2.cc の 478 行で定義されています。
参照先 osl::search::AlphaBeta2Common< EvalT >::ALL, osl::search::SimpleHashRecord::bestMove(), osl::search::SearchState2Core::curDepth(), osl::search::SearchState2::curLimit(), osl::search::SearchState2Core::CutNode, osl::search::AlphaBeta2Common< EvalT >::eval, osl::search::AlphaBeta2Common< EvalT >::FINISH, osl::search::SearchState2Core::getKillerMoves(), osl::MoveLogProb::getMove(), osl::search::AlphaBeta2Common< EvalT >::HASH, osl::search::SimpleHashRecord::inCheck(), osl::search::MoveGenerator::init(), osl::search::AlphaBeta2Common< EvalT >::KILLER, osl::search::AlphaBeta2Common< EvalT >::killers, osl::search::SearchState2Core::lastRecord(), osl::search::AlphaBeta2Common< EvalT >::leafLimit(), osl::search::AlphaBeta2Tree< EvalT >::makeGenerator(), osl::search::DualThreatmateState::maybeThreatmate(), osl::search::AlphaBeta2Common< EvalT >::move_type, osl::search::MoveGenerator::nextMove(), osl::search::MoveGenerator::nextTacticalMove(), osl::search::SearchState2Core::node_type, osl::Move::PASS(), osl::search::AlphaBeta2Common< EvalT >::PASS, osl::search::SearchState2Core::state(), osl::search::AlphaBeta2Common< EvalT >::TACTICAL, osl::search::SimpleHashRecord::threatmate(), osl::search::AlphaBeta2Tree< EvalT >::tryPass(), osl::MoveLogProb::validMove(), と osl::search::SearchBase< EvalT, SimpleHashTable, CountRecorder, RealizationProbability >::validTableMove().
size_t osl::search::AlphaBeta2Tree< EvalT >::nodeCount | ( | ) | const [inline] |
alphaBeta2.h の 171 行で定義されています。
参照先 osl::search::AlphaBeta2Tree< EvalT >::node_count.
参照元 osl::search::AlphaBeta2Tree< EvalT >::alphaBetaSearchAfterMove(), osl::search::AlphaBeta2< EvalT >::computeBestMoveIteratively(), osl::search::AlphaBeta2Tree< EvalT >::quiesceExp(), と osl::search::AlphaBeta2Tree< EvalT >::searchAllMoves().
int osl::search::AlphaBeta2Tree< EvalT >::quiesce | ( | Window | w, | |
int | depth_left, | |||
DualThreatmateState | parent_threatmate | |||
) | [inline, protected] |
alphaBeta2.cc の 1082 行で定義されています。
参照先 osl::search::AlphaBeta2Window::alpha(), osl::alt(), osl::search::AlphaBeta2Window::beta(), osl::eval::betterThan(), osl::Move::capturePtype(), osl::search::SearchState2Core::curDepth(), osl::eval::delta(), osl::search::SearchState2Core::depth_node_count_quiesce, osl::search::AlphaBeta2Common< EvalT >::eval, finish(), osl::search::SimpleHashRecord::inCheck(), osl::search::MoveGenerator::init(), osl::search::SearchState2Core::initPV(), osl::Move::isDrop(), osl::search::SearchState2Core::lastMove(), osl::search::AlphaBeta2Tree< EvalT >::makeGenerator(), osl::eval::max(), osl::search::DualThreatmateState::maybeThreatmate(), osl::search::DualThreatmateState::mayHaveCheckmate(), osl::search::FixedEval::minusInfty(), osl::search::MoveGenerator::nextMove(), osl::search::MoveGenerator::nextTacticalMove(), osl::search::AlphaBeta2Tree< EvalT >::node_count, osl::search::AlphaBeta2Common< EvalT >::PASS, osl::PAWN, osl::Move::ptype(), osl::PTYPE_EMPTY, osl::search::SimpleHashRecord::setInCheck(), osl::search::SearchState2Core::state(), osl::search::FixedEval::threatmatePenalty(), osl::search::DualThreatmateState::updateInLock(), osl::MoveLogProb::validMove(), osl::search::FixedEval::winByCheckmate(), と osl::search::FixedEval::winByFoul().
int osl::search::AlphaBeta2Tree< EvalT >::quiesce | ( | Window | w | ) | [inline, protected] |
alphaBeta2.cc の 891 行で定義されています。
int osl::search::AlphaBeta2Tree< EvalT >::quiesceExp | ( | Window | w | ) | [inline, protected] |
alphaBeta2.cc の 932 行で定義されています。
参照先 osl::search::CountRecorder::addQuiescenceCount(), osl::search::SearchState2Core::lastRecord(), osl::search::AlphaBeta2Tree< EvalT >::nodeCount(), osl::search::SimpleHashRecord::qrecord, osl::search::SearchBase< EvalT, SimpleHashTable, CountRecorder, RealizationProbability >::recorder, result, osl::search::QuiescenceRecord::setLowerBound(), osl::search::AlphaBeta2Tree< EvalT >::testStop(), と osl::search::SimpleHashRecord::threatmate().
int osl::search::AlphaBeta2Tree< EvalT >::quiesceRoot | ( | Window | w, | |
int | depth_left, | |||
Move & | best_move, | |||
DualThreatmateState | threatmate | |||
) | [inline, protected] |
alphaBeta2.cc の 1006 行で定義されています。
参照先 osl::search::AlphaBeta2Window::alpha(), osl::alt(), osl::search::QuiescenceRecord::bestMove(), osl::search::AlphaBeta2Window::beta(), osl::eval::betterThan(), osl::eval::delta(), osl::search::AlphaBeta2Common< EvalT >::eval, finish(), osl::search::SimpleHashRecord::inCheck(), osl::search::MoveGenerator::init(), osl::search::SearchState2Core::initPV(), osl::Move::isDrop(), osl::Move::isNormal(), osl::search::SearchState2Core::lastMove(), osl::search::SearchState2Core::lastRecord(), osl::search::AlphaBeta2Tree< EvalT >::makeGenerator(), osl::eval::max(), osl::search::DualThreatmateState::maybeThreatmate(), osl::search::FixedEval::minusInfty(), osl::search::MoveGenerator::nextMove(), osl::search::MoveGenerator::nextTacticalMove(), osl::search::AlphaBeta2Common< EvalT >::PASS, osl::PAWN, osl::Move::ptype(), osl::search::SimpleHashRecord::qrecord, osl::search::SearchState2Core::state(), osl::search::FixedEval::threatmatePenalty(), osl::MoveLogProb::validMove(), osl::search::FixedEval::winByCheckmate(), と osl::search::FixedEval::winByFoul().
int osl::search::AlphaBeta2Tree< EvalT >::quiesceStable | ( | Window | w | ) | [inline, protected] |
alphaBeta2.cc の 903 行で定義されています。
参照先 osl::search::CountRecorder::addQuiescenceCount(), osl::search::AlphaBeta2Window::alpha(), osl::alt(), osl::search::AlphaBeta2Window::beta(), osl::search::SearchState2Core::checkmateSearcher(), osl::search::AlphaBeta2Common< EvalT >::eval, osl::search::SearchState2Core::initPV(), osl::Move::isInvalid(), osl::search::SearchState2Core::lastMove(), osl::search::AlphaBeta2Tree< EvalT >::node_count, osl::Move::PASS(), osl::search::SearchBase< EvalT, SimpleHashTable, CountRecorder, RealizationProbability >::recorder, result, osl::search::SearchBase< EvalT, SimpleHashTable, CountRecorder, RealizationProbability >::table, と osl::search::AlphaBeta2Tree< EvalT >::testStop().
bool osl::search::AlphaBeta2Tree< EvalT >::quiesceWithMove | ( | Move | move, | |
Window & | w, | |||
int | depth_left, | |||
Move & | best_move, | |||
int & | best_value, | |||
const DualThreatmateState & | threatmate | |||
) | [inline, protected] |
alphaBeta2.cc の 974 行で定義されています。
参照先 osl::search::AlphaBeta2Window::alpha(), osl::search::AlphaBeta2Window::beta(), osl::eval::betterThan(), osl::search::SearchState2Core::currentHash(), osl::eval::delta(), osl::search::AlphaBeta2Common< EvalT >::eval, osl::search::AlphaBeta2Common< EvalT >::in_pv, osl::search::SearchState2Core::makePV(), osl::search::AlphaBeta2Window::null(), と result.
int osl::search::AlphaBeta2Tree< EvalT >::rootAlpha | ( | Player | P, | |
int | last_value, | |||
Progress16 | progress | |||
) | [inline, static] |
alphaBeta2.cc の 1207 行で定義されています。
参照先 osl::alt(), osl::eval::betterThan(), osl::eval::delta(), osl::KING, osl::newPtypeO(), osl::PAWN, と width.
参照元 osl::search::AlphaBeta2< EvalT >::alphaBetaSearchRoot().
int osl::search::AlphaBeta2Tree< EvalT >::searchAllMoves | ( | Move | m, | |
int | limit_consumption, | |||
SimpleHashRecord * | record, | |||
Window | w | |||
) | [inline, protected] |
alphaBeta2.cc の 265 行で定義されています。
参照先 osl::search::SearchState2::addLimit(), osl::search::AlphaBeta2Window::alpha(), osl::eval::betterThan(), osl::search::SearchState2Core::curDepth(), osl::search::SearchState2::curLimit(), osl::search::SearchState2Core::node_type, osl::search::AlphaBeta2Window::null(), osl::search::SearchState2Core::PvNode, osl::search::SearchBase< EvalT, SimpleHashTable, CountRecorder, RealizationProbability >::recorder, osl::search::CountRecorder::recordValue(), result, osl::search::SearchState2::subLimit(), と osl::search::CountRecorder::tryMove().
int osl::search::AlphaBeta2Tree< EvalT >::searchAllMoves | ( | SimpleHashRecord * | record, | |
Window | w | |||
) | [inline, protected] |
alphaBeta2.cc の 558 行で定義されています。
参照先 osl::search::HistoryTable::add(), osl::stat::Average::add(), osl::search::AlphaBeta2Common< EvalT >::ALL, osl::search::AlphaBeta2Window::alpha(), osl::search::AlphaBeta2Tree< EvalT >::alpha_update, osl::alt(), osl::search::CountRecorder::backFromCheckmateSearch(), osl::search::AlphaBeta2Window::beta(), osl::eval::betterThan(), osl::search::FixedEval::brinkmatePenalty(), osl::Move::capturePtype(), osl::search::QuiescenceRecord::checkmateNodesLeft(), osl::search::SearchTable::CheckmateSpecialDepth, osl::search::SearchState2::checkPointSearchAllMoves(), osl::search::SearchState2Core::curDepth(), osl::search::SearchState2::curLimit(), osl::Move::DeclareWin(), osl::eval::delta(), osl::search::AlphaBeta2Tree< EvalT >::depth_node_count, osl::search::AlphaBeta2Common< EvalT >::eval, osl::MoveLogProb::getLogProb(), osl::MoveLogProb::getMove(), osl::search::CountRecorder::gotoCheckmateSearch(), osl::search::SimpleHashRecord::hasGreaterLowerBound(), osl::search::SearchState2Core::hasLastRecord(), osl::search::SimpleHashRecord::hasLesserUpperBound(), osl::search::SimpleHashRecord::hasLowerBound(), osl::search::SimpleHashRecord::hasUpperBound(), osl::search::SearchTable::HistorySpecialDepth, osl::search::SearchState2Core::historyTable(), osl::search::AlphaBeta2Common< EvalT >::in_pv, osl::search::SimpleHashRecord::inCheck(), osl::search::AlphaBeta2Common< EvalT >::INITIAL, osl::Move::INVALID(), osl::search::AlphaBeta2Window::isConsistent(), osl::eval::isConsistentValue(), osl::Move::isNormal(), osl::Move::isValid(), osl::search::FixedEval::isWinValue(), osl::search::AlphaBeta2Tree< EvalT >::last_alpha_update, osl::search::SearchState2Core::lastMove(), osl::search::SearchState2Core::lastRecord(), osl::search::AlphaBeta2Common< EvalT >::leafLimit(), osl::search::SimpleHashRecord::lowerBound(), osl::search::SearchState2Core::makePV(), osl::eval::max(), osl::search::DualThreatmateState::maybeThreatmate(), osl::search::FixedEval::minusInfty(), osl::search::AlphaBeta2Common< EvalT >::move_type, osl::search::AlphaBeta2Tree< EvalT >::mpn, osl::search::AlphaBeta2Tree< EvalT >::mpn_cut, osl::search::AlphaBeta2Tree< EvalT >::nodeCount(), osl::search::AlphaBeta2Window::null(), osl::Move::player(), osl::PTYPE_EMPTY, osl::search::SearchState2Core::pv, osl::search::SimpleHashRecord::qrecord, osl::search::SearchBase< EvalT, SimpleHashTable, CountRecorder, RealizationProbability >::recorder, osl::search::SearchBase< EvalT, SimpleHashTable, CountRecorder, RealizationProbability >::recordLowerBound(), osl::search::SearchBase< EvalT, SimpleHashTable, CountRecorder, RealizationProbability >::recordUpperBound(), osl::search::SearchBase< EvalT, SimpleHashTable, CountRecorder, RealizationProbability >::recordWinByCheckmate(), result, osl::search::AlphaBeta2Common< EvalT >::rootLimitBias(), search_assert, osl::search::SearchState2::setKillerMove(), osl::MoveLogProb::setLogProb(), osl::search::AlphaBeta2Tree< EvalT >::shared, osl::search::SearchState2Core::state(), osl::search::CountRecorder::tableHitLowerBound(), osl::search::CountRecorder::tableHitUpperBound(), osl::search::RealizationProbability::TableMove, osl::search::AlphaBeta2Tree< EvalT >::testStop(), osl::search::SimpleHashRecord::threatmate(), osl::search::QuiescenceRecord::threatmateNodes(), osl::search::AlphaBeta2Tree< EvalT >::tryPass(), osl::search::AlphaBeta2Tree< EvalT >::updateCheckmateCount(), osl::search::SimpleHashRecord::upperBound(), osl::MoveLogProb::validMove(), と osl::search::FixedEval::winByCheckmate().
void osl::search::AlphaBeta2Tree< EvalT >::showFailLow | ( | int | result, | |
Move | m | |||
) | const [inline, protected] |
void osl::search::AlphaBeta2Tree< EvalT >::showPV | ( | std::ostream & | os, | |
int | result, | |||
Move | m, | |||
char | stable | |||
) | const [inline, private] |
alphaBeta2.cc の 1339 行で定義されています。
参照先 osl::search::AlphaBeta2Common< EvalT >::eval, osl::container::GeneralSimpleHashTable< Record >::find(), osl::Move::isNormal(), osl::search::DualThreatmateState::isThreatmate(), osl::record::K_TSUMERO, osl::newPtypeO(), osl::PAWN, osl::search::SearchState2Core::pv, osl::search::AlphaBeta2Common< EvalT >::root_ignore_moves, osl::record::csa::show(), osl::search::SearchState2Core::state(), osl::search::SearchBase< EvalT, SimpleHashTable, CountRecorder, RealizationProbability >::table, osl::search::SimpleHashRecord::threatmate(), osl::OslConfig::usiMode(), と osl::WHITE.
参照元 osl::search::AlphaBeta2Tree< EvalT >::addMultiPV(), と osl::search::AlphaBeta2Tree< EvalT >::updateRootPV().
int osl::search::AlphaBeta2Tree< EvalT >::stableThreshold | ( | Player | P, | |
int | last_value | |||
) | [inline, static] |
alphaBeta2.cc の 1241 行で定義されています。
参照先 osl::alt(), osl::eval::betterThan(), osl::eval::delta(), osl::KING, osl::newPtypeO(), osl::PAWN, と width.
bool osl::search::AlphaBeta2Tree< EvalT >::stopping | ( | ) | const [inline] |
osl::search::SearchTimerを再定義しています。
alphaBeta2.h の 160 行で定義されています。
参照先 osl::search::SearchState2Core::stop_tree.
参照元 osl::search::AlphaBeta2< EvalT >::computeBestMoveIteratively().
void osl::search::AlphaBeta2Tree< EvalT >::testStop | ( | ) | [inline] |
alphaBeta2.h の 164 行で定義されています。
参照先 osl::search::CountRecorder::allNodeCount(), osl::search::SearchBase< EvalT, SimpleHashTable, CountRecorder, RealizationProbability >::recorder, osl::search::SearchState2Core::stop_tree, と osl::search::SearchTimer::throwIfNoMoreTime().
参照元 osl::search::AlphaBeta2Tree< EvalT >::alphaBetaSearch(), osl::search::AlphaBeta2< EvalT >::alphaBetaSearchRoot(), osl::search::AlphaBeta2< EvalT >::computeBestMoveIteratively(), osl::search::AlphaBeta2Tree< EvalT >::examineMovesRoot(), osl::search::AlphaBeta2Tree< EvalT >::quiesceExp(), osl::search::AlphaBeta2Tree< EvalT >::quiesceStable(), osl::search::AlphaBeta2Tree< EvalT >::searchAllMoves(), と osl::search::AlphaBeta2Tree< EvalT >::testThreatmate().
void osl::search::AlphaBeta2Tree< EvalT >::testThreatmate | ( | SimpleHashRecord * | record, | |
bool | in_pv | |||
) | [inline, protected] |
詰めろの有無を確認
alphaBeta2.cc の 287 行で定義されています。
参照先 osl::search::CountRecorder::backFromCheckmateSearch(), osl::search::SearchState2Core::checkmateSearcher(), osl::search::SearchState2Core::curDepth(), osl::search::SearchState2::curLimit(), osl::search::CountRecorder::gotoCheckmateSearch(), osl::search::SimpleHashRecord::inCheck(), osl::search::DualThreatmateState::isThreatmate(), osl::eval::max(), osl::search::SimpleHashTable::minimumRecordLimit(), osl::search::SimpleHashRecord::qrecord, osl::search::SearchBase< EvalT, SimpleHashTable, CountRecorder, RealizationProbability >::recorder, osl::search::SearchState2::root_limit, osl::search::DualThreatmateState::setThreatmate(), osl::search::SearchState2Core::state(), osl::search::SearchBase< EvalT, SimpleHashTable, CountRecorder, RealizationProbability >::table, osl::search::AlphaBeta2Tree< EvalT >::testStop(), osl::search::SimpleHashRecord::threatmate(), osl::search::QuiescenceRecord::threatmateNodesLeft(), osl::search::SearchState2Core::tryThreatmate(), と osl::search::AlphaBeta2Tree< EvalT >::updateCheckmateCount().
void osl::search::AlphaBeta2Tree< EvalT >::throwStop | ( | ) | [private] |
osl::search::SearchTimerを再定義しています。
bool osl::search::AlphaBeta2Tree< EvalT >::tryCheckmate | ( | SimpleHashRecord * | record, | |
bool | in_pv, | |||
Move & | checkmate_move | |||
) | [inline, protected] |
初めの方で詰みを読む
alphaBeta2.cc の 348 行で定義されています。
参照先 osl::alt(), osl::search::CountRecorder::backFromCheckmateSearch(), checkmate_limit, osl::search::QuiescenceRecord::checkmateNodesLeft(), osl::search::SearchState2Core::checkmateSearcher(), osl::search::SearchState2Core::curDepth(), osl::search::SearchState2::curLimit(), depth, osl::search::CountRecorder::gotoCheckmateSearch(), osl::search::SearchState2Core::lastRecord(), osl::checkmate::limitToCheckCount(), osl::eval::max(), osl::search::DualThreatmateState::maybeThreatmate(), osl::search::DualThreatmateState::mayHaveCheckmate(), osl::search::SimpleHashTable::minimumRecordLimit(), osl::search::SimpleHashRecord::qrecord, osl::search::SearchBase< EvalT, SimpleHashTable, CountRecorder, RealizationProbability >::recorder, osl::search::SearchState2::root_limit, osl::search::AlphaBeta2Common< EvalT >::rootLimitBias(), osl::search::SearchState2Core::state(), osl::search::SearchBase< EvalT, SimpleHashTable, CountRecorder, RealizationProbability >::table, osl::search::SimpleHashRecord::threatmate(), と osl::search::AlphaBeta2Tree< EvalT >::updateCheckmateCount().
bool osl::search::AlphaBeta2Tree< EvalT >::tryCheckmateAgain | ( | SimpleHashRecord * | record, | |
Move & | checkmate_move, | |||
int | node_count, | |||
int | best_value | |||
) | [inline, protected] |
負けそうな時にさらに詰みを読む
alphaBeta2.cc の 411 行で定義されています。
参照先 osl::alt(), osl::search::CountRecorder::backFromCheckmateSearch(), osl::eval::betterThan(), checkmate_limit, osl::search::SimpleHashRecord::checkmateNodes(), osl::search::QuiescenceRecord::checkmateNodesLeft(), osl::search::SearchState2Core::checkmateSearcher(), osl::search::SearchState2Core::countCheckAfterThreatmate(), osl::search::SearchState2Core::curDepth(), osl::search::AlphaBeta2Common< EvalT >::eval, osl::search::CountRecorder::gotoCheckmateSearch(), osl::search::SearchState2Core::hasLastRecord(), osl::search::SimpleHashRecord::inCheck(), osl::isMajorNonPieceOK(), osl::KING, osl::search::SearchState2Core::lastMove(), osl::search::SearchState2Core::lastRecord(), osl::eval::max(), osl::search::DualThreatmateState::maybeThreatmate(), osl::search::DualThreatmateState::mayHaveCheckmate(), osl::newPtypeO(), osl::search::SearchTimer::nodeAffordable(), osl::search::SimpleHashRecord::nodeCount(), osl::search::SimpleHashRecord::qrecord, osl::search::SearchBase< EvalT, SimpleHashTable, CountRecorder, RealizationProbability >::recorder, osl::search::AlphaBeta2Tree< EvalT >::shared, osl::search::SearchState2Core::state(), osl::search::SimpleHashRecord::threatmate(), osl::search::SearchTimer::timeAssigned(), と osl::search::AlphaBeta2Tree< EvalT >::updateCheckmateCount().
bool osl::search::AlphaBeta2Tree< EvalT >::tryPass | ( | SimpleHashRecord * | record, | |
Player | P | |||
) | const [inline, protected] |
void osl::search::AlphaBeta2Tree< EvalT >::updateCheckmateCount | ( | ) | [inline, protected] |
alphaBeta2.cc の 1192 行で定義されています。
参照先 osl::search::SearchState2Core::checkmateSearcher(), osl::search::SearchBase< EvalT, SimpleHashTable, CountRecorder, RealizationProbability >::recorder, osl::search::CountRecorder::setCheckmateCount(), と osl::search::AlphaBeta2Tree< EvalT >::shared.
参照元 osl::search::AlphaBeta2< EvalT >::alphaBetaSearchRoot(), osl::search::AlphaBeta2< EvalT >::computeBestMoveIteratively(), osl::search::AlphaBeta2< EvalT >::findCheckmateInPV(), osl::search::AlphaBeta2Tree< EvalT >::searchAllMoves(), osl::search::AlphaBeta2Tree< EvalT >::testThreatmate(), osl::search::AlphaBeta2Tree< EvalT >::tryCheckmate(), と osl::search::AlphaBeta2Tree< EvalT >::tryCheckmateAgain().
void osl::search::AlphaBeta2Tree< EvalT >::updateRootPV | ( | Player | P, | |
std::ostream & | os, | |||
int | result, | |||
Move | m | |||
) | [inline, protected] |
alphaBeta2.cc の 1255 行で定義されています。
参照先 osl::search::CountRecorder::allNodeCount(), osl::alt(), osl::eval::betterThan(), osl::search::SearchTimer::elapsed(), osl::search::SearchTimer::hasMonitor(), osl::search::SimpleHashTable::isVerbose(), osl::KING, osl::KNIGHT, osl::OslConfig::lock_io, osl::search::SearchState2Core::makePV(), osl::search::SearchTimer::monitors(), osl::newPtypeO(), osl::PAWN, osl::search::AlphaBeta2Common< EvalT >::prediction_for_speculative_search, osl::eval::Ptype_Eval_Table, osl::search::SearchState2Core::pv, osl::search::SearchBase< EvalT, SimpleHashTable, CountRecorder, RealizationProbability >::recorder, osl::search::SearchState2::root_limit, osl::search::SearchTimer::setStable(), osl::search::AlphaBeta2Tree< EvalT >::shared, osl::search::AlphaBeta2Tree< EvalT >::shared_root, osl::search::AlphaBeta2Tree< EvalT >::showPV(), osl::search::AlphaBeta2Tree< EvalT >::stableThreshold(), osl::search::SearchState2Core::state(), osl::search::SearchBase< EvalT, SimpleHashTable, CountRecorder, RealizationProbability >::table, threshold, と osl::OslConfig::usiOutputPawnValue().
参照元 osl::search::AlphaBeta2< EvalT >::alphaBetaSearchRoot(), と osl::search::AlphaBeta2Tree< EvalT >::examineMovesRoot().
friend class NextMove< BLACK > [friend] |
alphaBeta2.h の 185 行で定義されています。
friend class NextMove< WHITE > [friend] |
alphaBeta2.h の 187 行で定義されています。
friend class NextQMove< BLACK > [friend] |
alphaBeta2.h の 188 行で定義されています。
friend class NextQMove< WHITE > [friend] |
alphaBeta2.h の 190 行で定義されています。
stat::Average osl::search::AlphaBeta2Tree< EvalT >::alpha_update [protected] |
osl::CArray< int, osl::search::SearchState2Core::MaxDepth > osl::search::AlphaBeta2Tree< EvalT >::depth_node_count [inline, static, protected] |
stat::Average osl::search::AlphaBeta2Tree< EvalT >::ext [protected] |
stat::Average osl::search::AlphaBeta2Tree< EvalT >::ext_limit [protected] |
FixedCapacityVector<MoveGenerator*, MaxDepth> osl::search::AlphaBeta2Tree< EvalT >::generators [protected] |
stat::Average osl::search::AlphaBeta2Tree< EvalT >::last_alpha_update [protected] |
stat::Average osl::search::AlphaBeta2Tree< EvalT >::mpn [protected] |
stat::Average osl::search::AlphaBeta2Tree< EvalT >::mpn_cut [protected] |
size_t osl::search::AlphaBeta2Tree< EvalT >::node_count [protected] |
boost::shared_ptr<AlphaBeta2Parallel<EvalT> > osl::search::AlphaBeta2Tree< EvalT >::shared [protected] |
osl::search::SearchState2Coreを再定義しています。
alphaBeta2.h の 147 行で定義されています。
参照元 osl::search::AlphaBeta2Tree< EvalT >::addMultiPV(), osl::search::AlphaBeta2Tree< EvalT >::AlphaBeta2Tree(), osl::search::AlphaBeta2< EvalT >::alphaBetaSearchRoot(), osl::search::AlphaBeta2< EvalT >::computeBestMoveIteratively(), osl::search::AlphaBeta2Tree< EvalT >::examineMovesRoot(), osl::search::AlphaBeta2Tree< EvalT >::searchAllMoves(), osl::search::AlphaBeta2Tree< EvalT >::tryCheckmateAgain(), osl::search::AlphaBeta2Tree< EvalT >::updateCheckmateCount(), osl::search::AlphaBeta2Tree< EvalT >::updateRootPV(), と osl::search::AlphaBeta2Tree< EvalT >::~AlphaBeta2Tree().
boost::shared_ptr<AlphaBeta2SharedRoot> osl::search::AlphaBeta2Tree< EvalT >::shared_root [protected] |
alphaBeta2.h の 148 行で定義されています。
参照元 osl::search::AlphaBeta2Tree< EvalT >::addMultiPV(), osl::search::AlphaBeta2< EvalT >::alphaBetaSearchRoot(), osl::search::AlphaBeta2< EvalT >::computeBestMoveIteratively(), osl::search::AlphaBeta2< EvalT >::findCheckmateInPV(), osl::search::AlphaBeta2< EvalT >::sharedRootInfo(), と osl::search::AlphaBeta2Tree< EvalT >::updateRootPV().