SimpleHashTable の中に記録するエントリ. [詳細]
#include <simpleHashRecord.h>
Public メソッド | |
SimpleHashRecord () | |
void | addNodeCount (size_t diff) |
void | setAbsoluteValue (Move best_move, int value, int limit) |
値を書き込む. | |
void | setBestMove (Move m) |
void | setAbsoluteValue (MoveLogProb best_move, int value, int limit) |
void | setLowerBound (Player P, int limit, const MoveLogProb &best_move, int value) |
lowerBound の設定. | |
void | setUpperBound (Player P, int limit, const MoveLogProb &best_move, int value) |
upperBound の設定. | |
int | upperLimit () const |
upperBound を記録したときのlimit | |
int | upperBound () const |
手番のプレイヤからみた評価値の上限 | |
int | lowerLimit () const |
lowerBound を記録したときのlimit | |
int | lowerBound () const |
手番のプレイヤからみた評価値の下限 | |
int | checkmateNodes () const |
今までに詰将棋で探したノード数 | |
int | threatmateNodes () const |
const MoveLogProb | bestMove () const |
bool | hasUpperBound (int limit) const |
bool | hasLowerBound (int limit) const |
bool | hasAbsoluteUpperBound (Player p, int limit) const |
bool | hasAbsoluteLowerBound (Player p, int limit) const |
int | absoluteUpperBound (Player p) const |
int | absoluteLowerBound (Player p) const |
void | resetValue () |
template<Player P> | |
bool | hasGreaterLowerBound (int limit, int threshold, int &val) const |
high fail するか | |
template<Player P> | |
bool | hasLesserUpperBound (int limit, int threshold, int &val) const |
low fail するか | |
const DualThreatmateState & | threatmate () const |
DualThreatmateState & | threatmate () |
void | dump (std::ostream &) const |
size_t | nodeCount () const |
bool | inCheck () const |
void | setInCheck (bool new_value) |
Public 変数 | |
QuiescenceRecord | qrecord |
静止探索用 | |
Private メソッド | |
template<bool PreferLowerBound> | |
void | makeConsistent (Player P) |
上限と下限に矛盾があったら調整する. | |
Private 変数 | |
MoveLogProb | best_move |
int | upper_bound |
int | lower_bound |
signed short | upper_limit |
signed short | lower_limit |
unsigned int | search_nodes |
CAVEAT: 32bit では 100万局面/秒で1時間ちょっと考えると溢れる. |
SimpleHashTable の中に記録するエントリ.
simpleHashRecord.h の 22 行で定義されています。
osl::search::SimpleHashRecord::SimpleHashRecord | ( | ) | [inline] |
simpleHashRecord.h の 36 行で定義されています。
int osl::search::SimpleHashRecord::absoluteLowerBound | ( | Player | p | ) | const [inline] |
simpleHashRecord.h の 196 行で定義されています。
参照先 osl::BLACK, lowerBound(), と upperBound().
int osl::search::SimpleHashRecord::absoluteUpperBound | ( | Player | p | ) | const [inline] |
simpleHashRecord.h の 192 行で定義されています。
参照先 osl::BLACK, lowerBound(), と upperBound().
void osl::search::SimpleHashRecord::addNodeCount | ( | size_t | diff | ) | [inline] |
const MoveLogProb osl::search::SimpleHashRecord::bestMove | ( | ) | const [inline] |
simpleHashRecord.h の 169 行で定義されています。
参照先 best_move, qrecord, と SCOPED_LOCK_CHAR.
参照元 osl::search::AlphaBeta2Tree< EvalT >::alphaBetaSearchAfterMove(), osl::search::AlphaBeta2< EvalT >::alphaBetaSearchRoot(), osl::search::SimpleHashTable::getPV(), osl::search::AlphaBeta2Tree< EvalT >::nextMove(), と osl::search::analyzer::DotWriter::showNode().
int osl::search::SimpleHashRecord::checkmateNodes | ( | ) | const [inline] |
今までに詰将棋で探したノード数
simpleHashRecord.h の 167 行で定義されています。
参照先 osl::search::QuiescenceRecordBase::checkmate_nodes, と qrecord.
参照元 osl::search::AlphaBeta2Tree< EvalT >::tryCheckmateAgain().
void osl::search::SimpleHashRecord::dump | ( | std::ostream & | os | ) | const |
simpleHashRecord.cc の 11 行で定義されています。
参照先 best_move, osl::search::QuiescenceRecord::dump(), osl::MoveLogProb::getLogProb(), osl::MoveLogProb::getMove(), hasLowerBound(), hasUpperBound(), inCheck(), lower_limit, lowerBound(), nodeCount(), qrecord, osl::record::csa::show(), upper_limit, と upperBound().
bool osl::search::SimpleHashRecord::hasAbsoluteLowerBound | ( | Player | p, | |
int | limit | |||
) | const [inline] |
simpleHashRecord.h の 188 行で定義されています。
参照先 osl::BLACK, hasLowerBound(), と hasUpperBound().
bool osl::search::SimpleHashRecord::hasAbsoluteUpperBound | ( | Player | p, | |
int | limit | |||
) | const [inline] |
simpleHashRecord.h の 184 行で定義されています。
参照先 osl::BLACK, hasLowerBound(), と hasUpperBound().
bool osl::search::SimpleHashRecord::hasGreaterLowerBound | ( | int | limit, | |
int | threshold, | |||
int & | val | |||
) | const [inline] |
high fail するか
simpleHashRecord.h の 210 行で定義されています。
参照先 osl::eval::betterThan(), lowerBound(), lowerLimit(), qrecord, と SCOPED_LOCK_CHAR.
参照元 osl::search::AlphaBeta2< EvalT >::alphaBetaSearchRoot(), と osl::search::AlphaBeta2Tree< EvalT >::searchAllMoves().
bool osl::search::SimpleHashRecord::hasLesserUpperBound | ( | int | limit, | |
int | threshold, | |||
int & | val | |||
) | const [inline] |
low fail するか
simpleHashRecord.h の 223 行で定義されています。
参照先 osl::eval::betterThan(), qrecord, SCOPED_LOCK_CHAR, upperBound(), と upperLimit().
bool osl::search::SimpleHashRecord::hasLowerBound | ( | int | limit | ) | const [inline] |
bool osl::search::SimpleHashRecord::hasUpperBound | ( | int | limit | ) | const [inline] |
bool osl::search::SimpleHashRecord::inCheck | ( | ) | const [inline] |
simpleHashRecord.h の 241 行で定義されています。
参照先 osl::search::DualThreatmateState::flags, osl::search::DualThreatmateState::Flags::is_king_in_check, qrecord, SCOPED_LOCK_CHAR, と osl::search::QuiescenceRecordBase::threatmate.
参照元 osl::search::AlphaBeta2Tree< EvalT >::alphaBetaSearchAfterMove(), dump(), osl::search::MoveGenerator::generateKingEscape(), osl::search::AlphaBeta2Tree< EvalT >::nextMove(), osl::search::MoveGenerator::nextTacticalMoveWithGeneration(), osl::search::AlphaBeta2Tree< EvalT >::quiesce(), osl::search::AlphaBeta2Tree< EvalT >::quiesceRoot(), osl::search::AlphaBeta2Tree< EvalT >::searchAllMoves(), osl::search::AlphaBeta2Tree< EvalT >::testThreatmate(), osl::search::AlphaBeta2Tree< EvalT >::tryCheckmateAgain(), と osl::search::AlphaBeta2Tree< EvalT >::tryPass().
int osl::search::SimpleHashRecord::lowerBound | ( | ) | const [inline] |
手番のプレイヤからみた評価値の下限
simpleHashRecord.h の 165 行で定義されています。
参照先 lower_bound.
参照元 absoluteLowerBound(), absoluteUpperBound(), osl::search::AlphaBeta2< EvalT >::computeBestMoveIteratively(), dump(), hasGreaterLowerBound(), osl::search::AlphaBeta2Tree< EvalT >::searchAllMoves(), と osl::search::analyzer::DotWriter::showNode().
int osl::search::SimpleHashRecord::lowerLimit | ( | ) | const [inline] |
lowerBound を記録したときのlimit
simpleHashRecord.h の 163 行で定義されています。
参照先 lower_limit.
参照元 osl::search::AlphaBeta2< EvalT >::computeBestMoveIteratively(), hasGreaterLowerBound(), hasLowerBound(), と osl::search::analyzer::DotWriter::showNode().
void osl::search::SimpleHashRecord::makeConsistent | ( | Player | P | ) | [inline, private] |
上限と下限に矛盾があったら調整する.
同じ深さだったら後から来た方を優先しないと,再々探索の結果を記録できない
PreferLowerBound | 同じ深さだったら lower bound を優先する |
simpleHashRecord.h の 140 行で定義されています。
参照先 osl::eval::betterThan(), hasLowerBound(), hasUpperBound(), lower_bound, lower_limit, upper_bound, と upper_limit.
size_t osl::search::SimpleHashRecord::nodeCount | ( | ) | const [inline] |
simpleHashRecord.h の 240 行で定義されています。
参照先 search_nodes.
参照元 dump(), と osl::search::AlphaBeta2Tree< EvalT >::tryCheckmateAgain().
void osl::search::SimpleHashRecord::resetValue | ( | ) | [inline] |
simpleHashRecord.h の 200 行で定義されています。
参照先 lower_limit, qrecord, SCOPED_LOCK_CHAR, と upper_limit.
参照元 osl::search::AlphaBeta2< EvalT >::alphaBetaSearchRoot().
void osl::search::SimpleHashRecord::setAbsoluteValue | ( | MoveLogProb | best_move, | |
int | value, | |||
int | limit | |||
) | [inline] |
simpleHashRecord.h の 72 行で定義されています。
参照先 lower_bound, lower_limit, qrecord, SCOPED_LOCK_CHAR, upper_bound, と upper_limit.
void osl::search::SimpleHashRecord::setAbsoluteValue | ( | Move | best_move, | |
int | value, | |||
int | limit | |||
) | [inline] |
値を書き込む.
詰将棋や千日手対策を想定.
simpleHashRecord.h の 51 行で定義されています。
参照先 osl::Move::isNormal(), lower_bound, lower_limit, qrecord, SCOPED_LOCK_CHAR, upper_bound, と upper_limit.
void osl::search::SimpleHashRecord::setBestMove | ( | Move | m | ) | [inline] |
void osl::search::SimpleHashRecord::setInCheck | ( | bool | new_value | ) | [inline] |
simpleHashRecord.h の 248 行で定義されています。
参照先 osl::search::DualThreatmateState::flags, osl::search::DualThreatmateState::Flags::is_king_in_check, qrecord, SCOPED_LOCK_CHAR, と osl::search::QuiescenceRecordBase::threatmate.
参照元 osl::search::AlphaBeta2Tree< EvalT >::alphaBetaSearchAfterMove(), osl::search::AlphaBeta2< EvalT >::alphaBetaSearchRoot(), osl::search::AlphaBeta2< EvalT >::makeMove(), と osl::search::AlphaBeta2Tree< EvalT >::quiesce().
void osl::search::SimpleHashRecord::setLowerBound | ( | Player | P, | |
int | limit, | |||
const MoveLogProb & | best_move, | |||
int | value | |||
) | [inline] |
lowerBound の設定.
simpleHashRecord.h の 89 行で定義されています。
参照先 hasUpperBound(), lower_bound, lower_limit, qrecord, SCOPED_LOCK_CHAR, と osl::MoveLogProb::validMove().
参照元 osl::search::AlphaBeta2< EvalT >::alphaBetaSearchRoot(), osl::search::SearchBase< EvalT, SimpleHashTable, CountRecorder, RealizationProbability >::recordLowerBound(), と osl::search::AlphaBeta3::searchRoot().
void osl::search::SimpleHashRecord::setUpperBound | ( | Player | P, | |
int | limit, | |||
const MoveLogProb & | best_move, | |||
int | value | |||
) | [inline] |
upperBound の設定.
simpleHashRecord.h の 112 行で定義されています。
参照先 hasLowerBound(), qrecord, SCOPED_LOCK_CHAR, upper_bound, upper_limit, と osl::MoveLogProb::validMove().
DualThreatmateState& osl::search::SimpleHashRecord::threatmate | ( | ) | [inline] |
simpleHashRecord.h の 236 行で定義されています。
参照先 qrecord, と osl::search::QuiescenceRecordBase::threatmate.
const DualThreatmateState& osl::search::SimpleHashRecord::threatmate | ( | ) | const [inline] |
simpleHashRecord.h の 235 行で定義されています。
参照先 qrecord, と osl::search::QuiescenceRecordBase::threatmate.
参照元 osl::search::AlphaBeta2Tree< EvalT >::alphaBetaSearchAfterMove(), osl::search::AlphaBeta2< EvalT >::alphaBetaSearchRoot(), osl::search::AlphaBeta2< EvalT >::findCheckmateInPV(), osl::search::MoveGenerator::generateBreakThreatmate(), osl::search::AlphaBeta2Tree< EvalT >::nextMove(), osl::search::AlphaBeta2Tree< EvalT >::quiesceExp(), osl::search::AlphaBeta2Tree< EvalT >::searchAllMoves(), osl::search::AlphaBeta2Tree< EvalT >::showPV(), osl::search::QuiescenceSearch2< EvalT >::staticValue(), osl::search::AlphaBeta2Tree< EvalT >::testThreatmate(), osl::search::AlphaBeta2Tree< EvalT >::tryCheckmate(), osl::search::AlphaBeta2Tree< EvalT >::tryCheckmateAgain(), と osl::search::AlphaBeta2Tree< EvalT >::tryPass().
int osl::search::SimpleHashRecord::threatmateNodes | ( | ) | const [inline] |
simpleHashRecord.h の 168 行で定義されています。
参照先 qrecord, と osl::search::QuiescenceRecordBase::threatmate_nodes.
int osl::search::SimpleHashRecord::upperBound | ( | ) | const [inline] |
手番のプレイヤからみた評価値の上限
simpleHashRecord.h の 161 行で定義されています。
参照先 upper_bound.
参照元 absoluteLowerBound(), absoluteUpperBound(), osl::search::AlphaBeta2< EvalT >::alphaBetaSearchRoot(), osl::search::AlphaBeta2< EvalT >::computeBestMoveIteratively(), dump(), hasLesserUpperBound(), osl::search::AlphaBeta2Tree< EvalT >::searchAllMoves(), と osl::search::analyzer::DotWriter::showNode().
int osl::search::SimpleHashRecord::upperLimit | ( | ) | const [inline] |
upperBound を記録したときのlimit
simpleHashRecord.h の 159 行で定義されています。
参照先 upper_limit.
参照元 hasLesserUpperBound(), hasUpperBound(), と osl::search::analyzer::DotWriter::showNode().
simpleHashRecord.h の 28 行で定義されています。
参照元 bestMove(), dump(), と setBestMove().
int osl::search::SimpleHashRecord::lower_bound [private] |
simpleHashRecord.h の 30 行で定義されています。
参照元 lowerBound(), makeConsistent(), setAbsoluteValue(), と setLowerBound().
signed short osl::search::SimpleHashRecord::lower_limit [private] |
simpleHashRecord.h の 32 行で定義されています。
参照元 dump(), lowerLimit(), makeConsistent(), resetValue(), setAbsoluteValue(), と setLowerBound().
静止探索用
simpleHashRecord.h の 26 行で定義されています。
参照元 addNodeCount(), osl::search::AlphaBeta2< EvalT >::alphaBetaSearchRoot(), bestMove(), checkmateNodes(), dump(), osl::search::SimpleHashTable::getPV(), hasGreaterLowerBound(), hasLesserUpperBound(), inCheck(), osl::search::qallocate(), qsearch(), osl::search::AlphaBeta2Tree< EvalT >::quiesceExp(), osl::search::AlphaBeta2Tree< EvalT >::quiesceRoot(), resetValue(), osl::search::AlphaBeta2Tree< EvalT >::searchAllMoves(), osl::search::QuiescenceSearch2< EvalT >::searchInternal(), osl::search::QuiescenceSearch2< EvalT >::searchMain(), setAbsoluteValue(), setBestMove(), setInCheck(), setLowerBound(), setUpperBound(), osl::search::analyzer::DotWriter::showNodeQuiescence(), osl::search::AlphaBeta2Tree< EvalT >::testThreatmate(), threatmate(), threatmateNodes(), osl::search::AlphaBeta2Tree< EvalT >::tryCheckmate(), と osl::search::AlphaBeta2Tree< EvalT >::tryCheckmateAgain().
unsigned int osl::search::SimpleHashRecord::search_nodes [private] |
CAVEAT: 32bit では 100万局面/秒で1時間ちょっと考えると溢れる.
simpleHashRecord.h の 34 行で定義されています。
参照元 addNodeCount(), と nodeCount().
int osl::search::SimpleHashRecord::upper_bound [private] |
simpleHashRecord.h の 29 行で定義されています。
参照元 makeConsistent(), setAbsoluteValue(), setUpperBound(), と upperBound().
signed short osl::search::SimpleHashRecord::upper_limit [private] |
simpleHashRecord.h の 31 行で定義されています。
参照元 dump(), makeConsistent(), resetValue(), setAbsoluteValue(), setUpperBound(), と upperLimit().