#include <searchFramework.h>
Public 型 | |
typedef Eval | eval_t |
typedef MoveGenerator | MoveGenerator_t |
typedef Probabilities | Probabilities_t |
Public メソッド | |
SearchFramework (const HashEffectState &s, checkmate_t &checker, Table *t, Recorder &r) | |
SearchFramework (const SearchFramework &) | |
~SearchFramework () | |
bool | abort (Move) const |
size_t | nodeCount () const |
const eval_t & | getEval () const |
template<Player P, class Policy> | |
int | quiescenceValue (const Policy &) |
template<Player P> | |
int | quiescenceValue (int alpha, int beta, int depth=8) |
bool | isReasonableMove (Move move, int pawn_sacrifice) |
move Żõδʤؼ꤫ɤ. | |
template<Player P, class Policy> | |
int | searchAllMoves (SimpleHashRecord *&record, const Policy &, SearchMove &best_move) |
(private)ؼäɾ | |
template<Player P, class Helper, bool isKingEscape> | |
bool | examineMoves (const char *category_name, const MoveLogProbVector &moves, const Helper &, SearchMove &best_move, int &max_value, SearchMoveSet &tried) |
(private) moves ơ̤ bestmove max_value . | |
template<Player P, class Helper> | |
bool | examineMoves (const char *category_name, const SearchMoveVector &moves, const Helper &, SearchMove &best_move, int &max_value) |
(private) moves ơ̤ bestmove max_value . | |
template<Player P, class Helper> | |
bool | examineOneMove (const SearchMove &move, const Helper &, SearchMove &best_move, int &max_value) |
Protected メソッド | |
template<Player P, class Helper> | |
int | searchWithMove (const SearchMove &move, Helper &helper) |
move ؤɾͤ | |
Protected 変数 | |
eval_t | eval |
Private 型 | |
typedef SearchBase< Eval, Table, Recorder, Probabilities > | base_t |
Private メソッド | |
BOOST_CLASS_REQUIRE (Eval, osl::eval, Concept) | |
Private 変数 | |
PassCounter | pass_count |
size_t | node_count |
֤ state, ߤ limit, root Ǥ depth, limit, ġ
null window search alpha beta search Ѥ ̤ι¤:
searchFramework.h の 54 行で定義されています。
typedef SearchBase<Eval,Table,Recorder,Probabilities> osl::search::SearchFramework< Eval, MoveGenerator, Table, Recorder, Probabilities >::base_t [private] |
searchFramework.h の 59 行で定義されています。
typedef Eval osl::search::SearchFramework< Eval, MoveGenerator, Table, Recorder, Probabilities >::eval_t |
osl::search::SearchBase< Eval, Table, Recorder, Probabilities >を再定義しています。
searchFramework.h の 61 行で定義されています。
typedef MoveGenerator osl::search::SearchFramework< Eval, MoveGenerator, Table, Recorder, Probabilities >::MoveGenerator_t |
searchFramework.h の 62 行で定義されています。
typedef Probabilities osl::search::SearchFramework< Eval, MoveGenerator, Table, Recorder, Probabilities >::Probabilities_t |
osl::search::SearchBase< Eval, Table, Recorder, Probabilities >を再定義しています。
searchFramework.h の 63 行で定義されています。
osl::search::SearchFramework< Eval, MoveGenerator, Table, Recorder, Probabilities >::SearchFramework | ( | const HashEffectState & | s, | |
checkmate_t & | checker, | |||
Table * | t, | |||
Recorder & | r | |||
) | [inline, explicit] |
osl::search::SearchFramework< Eval, MoveGenerator, Table, Recorder, Probabilities >::SearchFramework | ( | const SearchFramework< Eval, MoveGenerator, Table, Recorder, Probabilities > & | src | ) | [inline] |
searchFramework.tcc の 50 行で定義されています。
osl::search::SearchFramework< Eval, MoveGenerator, Table, Recorder, Probabilities >::~SearchFramework | ( | ) | [inline] |
searchFramework.tcc の 61 行で定義されています。
osl::search::SearchFramework< Eval, MoveGenerator, Table, Recorder, Probabilities >::BOOST_CLASS_REQUIRE | ( | Eval | , | |
osl::eval | , | |||
Concept | ||||
) | [private] |
bool osl::search::SearchFramework< Eval, MoveGenerator, Table, Recorder, Probabilities >::abort | ( | Move | best_move | ) | const [inline, virtual] |
size_t osl::search::SearchFramework< Eval, MoveGenerator, Table, Recorder, Probabilities >::nodeCount | ( | ) | const [inline] |
int osl::search::SearchFramework< Eval, MoveGenerator, Table, Recorder, Probabilities >::searchWithMove | ( | const SearchMove & | move, | |
Helper & | helper | |||
) | [inline, protected] |
move ؤɾͤ
move Ф doUndoMove Ԥʤ Helper Υɤ¹Ԥ롣 ؼ. CAVEAT: &move åˤȤ SimpleHashRecord ˤΤȤ褦ˤɬפ롣
P | ||
Helper | ˼¹Ԥ륳 | |
baseVal | ɾͤȤߤʤƺõ (null window search ξ) |
searchFramework.tcc の 124 行で定義されています。
参照先 osl::search::SimpleHashRecord::addNodeCount(), osl::alt(), osl::Move::capturePtype(), osl::search::SearchState::countSacrificeCheck2(), osl::search::SearchStateCore::curDepth(), osl::search::SearchStateCore::currentHash(), osl::search::PassCounter::dec(), osl::search::DominanceCheck::detect(), osl::search::FixedEval::drawValue(), osl::search::SearchFramework< Eval, MoveGenerator, Table, Recorder, Probabilities >::eval, osl::MoveLogProb::getMove(), osl::Sennichite::hasWinner(), osl::RepetitionCounter::history(), osl::search::PassCounter::inc(), osl::RepetitionCounter::isAlmostSennichite(), osl::Sennichite::isDraw(), osl::Move::isDrop(), osl::Sennichite::isNormal(), osl::Move::isPass(), osl::search::PassCounter::loopByBothPass(), osl::search::DominanceCheck::LOSE, osl::search::SearchFramework< Eval, MoveGenerator, Table, Recorder, Probabilities >::node_count, osl::search::SearchFramework< Eval, MoveGenerator, Table, Recorder, Probabilities >::nodeCount(), osl::search::SearchFramework< Eval, MoveGenerator, Table, Recorder, Probabilities >::pass_count, osl::Move::player(), osl::PTYPE_EMPTY, osl::search::SearchMove::record, osl::search::SearchBase< Eval, Table, Recorder, Probabilities >::recorder, osl::search::SearchStateCore::repetition_counter, osl::search::SearchStateCore::state(), osl::Move::to(), osl::search::DominanceCheck::WIN, osl::search::FixedEval::winByFoul(), osl::search::FixedEval::winByLoop(), と osl::Sennichite::winner().
const eval_t& osl::search::SearchFramework< Eval, MoveGenerator, Table, Recorder, Probabilities >::getEval | ( | ) | const [inline] |
int osl::search::SearchFramework< Eval, MoveGenerator, Table, Recorder, Probabilities >::quiescenceValue | ( | const Policy & | policy | ) | [inline] |
int osl::search::SearchFramework< Eval, MoveGenerator, Table, Recorder, Probabilities >::quiescenceValue | ( | int | alpha, | |
int | beta, | |||
int | depth = 8 | |||
) | [inline] |
searchFramework.tcc の 879 行で定義されています。
参照先 osl::alt(), osl::search::SearchFramework< Eval, MoveGenerator, Table, Recorder, Probabilities >::eval, osl::hasEffect(), osl::Move::isInvalid(), osl::Move::isNormal(), osl::search::SearchStateCore::lastMove(), osl::search::SearchFramework< Eval, MoveGenerator, Table, Recorder, Probabilities >::node_count, osl::Move::PASS(), osl::Move::ptypeO(), osl::search::SearchBase< Eval, Table, Recorder, Probabilities >::recorder, osl::search::SearchStateCore::state(), osl::search::SearchBase< Eval, Table, Recorder, Probabilities >::table, osl::search::SearchStateCore::testTimeOut(), と osl::Move::to().
bool osl::search::SearchFramework< Eval, MoveGenerator, Table, Recorder, Probabilities >::isReasonableMove | ( | Move | move, | |
int | pawn_sacrifice | |||
) | [inline] |
move Żõδʤؼ꤫ɤ.
pawn_sacrifice | »ޤǤϵ |
searchFramework.tcc の 948 行で定義されています。
参照先 osl::alt(), osl::eval::betterThan(), osl::BLACK, osl::search::SearchStateCore::currentHash(), osl::search::SearchFramework< Eval, MoveGenerator, Table, Recorder, Probabilities >::eval, osl::newPtypeO(), osl::PAWN, osl::Move::player(), osl::search::SearchStateCore::state(), と osl::search::FixedEval::winThreshold().
参照元 osl::search::MTDF< Eval, MoveGenerator, Table, Recorder, Probabilities >::isReasonableMove().
int osl::search::SearchFramework< Eval, MoveGenerator, Table, Recorder, Probabilities >::searchAllMoves | ( | SimpleHashRecord *& | record, | |
const Policy & | policy, | |||
SearchMove & | best_move | |||
) | [inline] |
(private)ؼäɾ
friend Ĺˤʤ뤿publicˤƤ뤬̤֤˰¸ ¼private
maxval | P μǤɾ | |
P | ||
Policy | examineMoves ǤɤΥåɤƤ֤ݲΡ | |
record | ߤζ̤record (0 ʤɬפ˱allocate) | |
best_move | ȿ§λʤɤǤʤ |
;Ϥ root β礭ˡޤ꿼oracle
searchFramework.tcc の 455 行で定義されています。
参照先 osl::alt(), osl::search::QuiescenceRecord::attack_oracle, osl::search::QuiescenceRecord::bestMove(), osl::search::SimpleHashRecord::bestMove(), osl::eval::betterThan(), osl::search::FixedEval::brinkmatePenalty(), osl::search::QuiescenceRecord::checkmateNodesLeft(), osl::search::SearchState::checkPointSearchAllMoves(), osl::search::ParallelSearch::checkStop(), osl::search::SearchStateCore::curDepth(), osl::search::SearchState::curLimit(), osl::search::SearchStateCore::currentHash(), depth, osl::container::MoveStack::dump(), osl::search::SearchFramework< Eval, MoveGenerator, Table, Recorder, Probabilities >::eval, osl::search::SearchMoveSet::find(), osl::search::SearchStateCore::getKillerMoves(), osl::MoveLogProb::getMove(), osl::search::NullWindowToQWindow::halfPawn(), osl::search::SearchStateCore::hasLastRecord(), osl::search::SearchMoveSet::hasOnlyPass(), osl::search::SearchStateCore::history(), osl::search::SearchStateCore::historyTable(), osl::Move::INVALID(), osl::search::SimpleHashRecord::is_king_in_check, osl::eval::isConsistentValue(), osl::Move::isNormal(), osl::search::DualThreatmateState::isThreatmate(), osl::search::SearchMoveSet::isValidAll(), osl::search::FixedEval::isWinValue(), osl::search::SearchStateCore::killer_moves, osl::search::RealizationProbability::KillerMove, osl::KING, osl::search::SearchStateCore::lastMove(), osl::search::SearchStateCore::lastRecord(), osl::checkmate::limitToCheckCount(), osl::search::PassCounter::loopByBothPass(), osl::search::LOWER_HIT, osl::eval::max(), osl::search::DualThreatmateState::maybeThreatmate(), osl::search::DualThreatmateState::mayHaveCheckmate(), osl::eval::min(), osl::search::FixedEval::minusInfty(), osl::search::SearchMove::moveLogProb(), osl::search::SimpleHashRecord::moves(), osl::newPtypeO(), osl::search::NO_HIT, osl::eval::notLessThan(), osl::search::parallelSearch, osl::search::SearchFramework< Eval, MoveGenerator, Table, Recorder, Probabilities >::pass_count, osl::PAWN, osl::search::SimpleHashRecord::prepareGenerate(), osl::search::SearchMoveVector::push_back(), osl::container::MoveLogProbVector::push_back(), osl::search::SimpleHashRecord::qrecord, osl::search::SearchBase< Eval, Table, Recorder, Probabilities >::recorder, osl::search::SearchBase< Eval, Table, Recorder, Probabilities >::recordWinByCheckmate(), osl::search::RealizationProbability::ReSearch, osl::search::SearchState::ReSearchLimitMargin, osl::search::SearchState::root_limit, search_assert, osl::search::SearchState::setKillerMove(), osl::search::SimpleHashRecord::setLowerBound(), osl::search::DualThreatmateState::setThreatmate(), osl::search::SimpleHashRecord::setUpperBound(), show(), osl::search::SearchMoveVector::sortByValue(), osl::search::SearchStateCore::state(), osl::search::SimpleHashRecord::sumOfNodeCountOfChildren(), osl::search::SearchBase< Eval, Table, Recorder, Probabilities >::table, osl::search::RealizationProbability::TableMove, osl::search::SearchStateCore::testTimeOut(), osl::search::SimpleHashRecord::threatmate(), osl::search::QuiescenceRecord::threatmate_oracle, osl::search::QuiescenceRecord::threatmateNodes(), osl::search::QuiescenceRecord::threatmateNodesLeft(), osl::search::SearchStateCore::tryThreatmate(), osl::search::DualThreatmateState::update(), osl::search::UPPER_HIT, osl::MoveLogProb::validMove(), osl::search::SearchBase< Eval, Table, Recorder, Probabilities >::validTableMove(), osl::search::FixedEval::winByCheckmate(), と osl::search::FixedEval::winThreshold().
bool osl::search::SearchFramework< Eval, MoveGenerator, Table, Recorder, Probabilities >::examineMoves | ( | const char * | category_name, | |
const MoveLogProbVector & | moves, | |||
const Policy & | policy, | |||
SearchMove & | best_move, | |||
int & | max_value, | |||
SearchMoveSet & | tried | |||
) | [inline] |
(private) moves ơ̤ bestmove max_value .
moves | β¿ξĤΥƥ꤬ä | |
tried | ˤμɤɤΤ | |
helper | ƻؼ˼¹Ԥ륳 null window search ξ nullWindowSearch ƤФ | |
isKingEscape | | |
P | turn |
searchFramework.tcc の 204 行で定義されています。
参照先 osl::search::SearchFramework< Eval, MoveGenerator, Table, Recorder, Probabilities >::abort(), osl::alt(), osl::search::SearchMoveSet::assignIfBetter(), osl::search::SearchState::curLimit(), osl::MoveLogProb::getMove(), osl::Move::isPass(), osl::search::FixedEval::isWinValue(), osl::search::SearchBase< Eval, Table, Recorder, Probabilities >::recorder, osl::search::SearchState::ReSearchLimitMargin, と osl::search::SearchStateCore::state().
bool osl::search::SearchFramework< Eval, MoveGenerator, Table, Recorder, Probabilities >::examineMoves | ( | const char * | category_name, | |
const SearchMoveVector & | moves, | |||
const Policy & | policy, | |||
SearchMove & | best_move, | |||
int & | max_value | |||
) | [inline] |
(private) moves ơ̤ bestmove max_value .
recordˤؼꡥ
searchFramework.tcc の 246 行で定義されています。
参照先 osl::alt(), osl::search::SearchState::curLimit(), osl::search::FixedEval::isWinValue(), osl::search::ParallelSearch::numCpus(), osl::search::parallelSearch, osl::search::SearchBase< Eval, Table, Recorder, Probabilities >::recorder, osl::search::SearchStateCore::shared, と osl::search::SearchStateCore::state().
bool osl::search::SearchFramework< Eval, MoveGenerator, Table, Recorder, Probabilities >::examineOneMove | ( | const SearchMove & | move, | |
const Policy & | policy, | |||
SearchMove & | best_move, | |||
int & | max_value | |||
) | [inline] |
searchFramework.tcc の 273 行で定義されています。
参照先 osl::MoveLogProb::getMove(), osl::Move::isPass(), と osl::search::SearchStateCore::state().
eval_t osl::search::SearchFramework< Eval, MoveGenerator, Table, Recorder, Probabilities >::eval [protected] |
searchFramework.h の 65 行で定義されています。
参照元 osl::search::SearchFramework< Eval, osl::search::MoveGenerator, Table, Recorder, Probabilities >::getEval(), osl::search::SearchFramework< Eval, MoveGenerator, Table, Recorder, Probabilities >::isReasonableMove(), osl::search::SearchFramework< Eval, MoveGenerator, Table, Recorder, Probabilities >::quiescenceValue(), osl::search::SearchFramework< Eval, MoveGenerator, Table, Recorder, Probabilities >::searchAllMoves(), と osl::search::SearchFramework< Eval, MoveGenerator, Table, Recorder, Probabilities >::searchWithMove().
PassCounter osl::search::SearchFramework< Eval, MoveGenerator, Table, Recorder, Probabilities >::pass_count [private] |
size_t osl::search::SearchFramework< Eval, MoveGenerator, Table, Recorder, Probabilities >::node_count [private] |
searchFramework.h の 72 行で定義されています。
参照元 osl::search::SearchFramework< Eval, osl::search::MoveGenerator, Table, Recorder, Probabilities >::nodeCount(), osl::search::SearchFramework< Eval, MoveGenerator, Table, Recorder, Probabilities >::quiescenceValue(), と osl::search::SearchFramework< Eval, MoveGenerator, Table, Recorder, Probabilities >::searchWithMove().