取り合い探索 (静止探索). [詳細]
#include <quiescenceSearch2.h>
Public 型 | |
enum | EvalUpdateState { AfterUpdate, BeforeUpdate } |
typedef EvalT | eval_t |
typedef NumEffectState | effect_state_t |
typedef container::MoveVector | MoveVector |
Public メソッド | |
QuiescenceSearch2 (SearchState2Core &s, SimpleHashTable &t) | |
template<Player P> | |
int | search (eval_t &ev, Move last_move, int depth=QSearchTraits::MaxDepth) |
int | search (Player P, eval_t &ev, Move last_move, int depth=QSearchTraits::MaxDepth) |
template<Player P> | |
int | searchIteratively (eval_t &ev, Move last_move, int depth=QSearchTraits::MaxDepth) |
int | searchIteratively (Player P, eval_t &ev, Move last_move, int depth=QSearchTraits::MaxDepth) |
template<Player P> | |
int | searchIteratively (int alpha, int beta, eval_t &ev, Move last_move, int depth) |
template<Player P> | |
int | search (int alpha, int beta, eval_t &ev, Move last_move, int depth=QSearchTraits::MaxDepth) |
int | search (Player P, int alpha, int beta, eval_t &ev, Move last_move, int depth) |
template<Player P> | |
int | searchProbCut (int alpha, int beta, eval_t &ev, Move last_move) |
int | searchProbCut (Player P, int alpha, int beta, eval_t &ev, Move last_move) |
template<Player P> | |
int | searchInternal (int alpha, int beta, eval_t &ev, Move last_move, int additional_depth=0, EvalUpdateState need_eval_update=AfterUpdate) |
template<Player P, bool has_record> | |
int | staticValue (eval_t const &ev, int alpha, int beta, QuiescenceRecord *record) |
template<Player P, bool has_record, bool has_dont_capture, MoveType move_type> | |
bool | examineMoves (QuiescenceRecord *record, int &curVal, const Move *first, const Move *last, int &alpha, int beta, eval_t const &ev, int additional_depth, Position dont_capture=Position::STAND()) |
template<Player P> | |
int | takeBackValue (int alpha, int beta, eval_t const &ev, Move last_move) |
単純な取り返しの探索. | |
template<Player P> | |
bool | examineTakeBack (const MoveVector &moves, int &cur_val, int &alpha, int beta, eval_t const &ev) |
template<Player P, bool calm_move_only, bool first_nolmal_move_only> | |
bool | examineTakeBack2 (const MoveVector &moves, QuiescenceThreat &threat2, QuiescenceThreat &threat1, int beta, int beta2, eval_t const &ev) |
末端の取り返し用. | |
template<Player P, Ptype PTYPE> | |
bool | generateAndExamineTakeBack2 (MoveVector &moves, QuiescenceThreat &threat2, QuiescenceThreat &threat1, int beta1, int beta2, eval_t const &ev) |
末端の取り返し用. | |
template<Player P> | |
int | takeBackOrChase (int alpha, int beta, eval_t const &ev, Move last_move) |
last_move が逃げる手で、逃げた先の取り返し、または追撃の価値を判定 | |
template<Player P> | |
int | staticValueWithThreat (eval_t const &ev, int alpha, QuiescenceThreat &threat1, QuiescenceThreat &threat2) |
template<Player P> | |
int | staticValueWithThreat (eval_t const &ev) |
int | staticValueWithThreat (eval_t const &ev) |
int | nodeCount () const |
const NumEffectState & | currentState () const |
Private 型 | |
typedef FixedEval | base_t |
Private メソッド | |
int | depthFromRoot () const |
rootからの深さ | |
int | depth () const |
残り深さ | |
template<Player P, bool has_record> | |
int | searchMain (QuiescenceRecord *record, int alpha, int beta, eval_t &ev, Move last_move, int additional_depth, EvalUpdateState &need_eval_update) |
template<Player P, Ptype PTYPE, bool has_record> | |
bool | examineCapture (QuiescenceRecord *record, int &curVal, MoveVector &working, int &alpha, int beta, eval_t const &ev, Piece last_piece, int additional_depth) |
PTYPE を取る手を生成して examineMoves を呼ぶ. | |
template<Player P> | |
int | passValue (int alpha, int beta, eval_t const &ev) |
int | currentValueWithLastThreat (eval_t const &ev, Piece last_move_piece) |
Private 変数 | |
SearchState2Core & | state |
SimpleHashTable & | table |
int | root_depth |
int | max_depth |
int | node_count |
探索ノード数 |
取り合い探索 (静止探索).
TODO:
quiescenceSearch2.h の 41 行で定義されています。
typedef FixedEval osl::search::QuiescenceSearch2< EvalT >::base_t [private] |
quiescenceSearch2.h の 43 行で定義されています。
typedef NumEffectState osl::search::QuiescenceSearch2< EvalT >::effect_state_t |
quiescenceSearch2.h の 64 行で定義されています。
typedef EvalT osl::search::QuiescenceSearch2< EvalT >::eval_t |
quiescenceSearch2.h の 63 行で定義されています。
typedef container::MoveVector osl::search::QuiescenceSearch2< EvalT >::MoveVector |
quiescenceSearch2.h の 67 行で定義されています。
enum osl::search::QuiescenceSearch2::EvalUpdateState |
quiescenceSearch2.h の 148 行で定義されています。
osl::search::QuiescenceSearch2< EvalT >::QuiescenceSearch2 | ( | SearchState2Core & | s, | |
SimpleHashTable & | t | |||
) | [inline] |
quiescenceSearch2.h の 69 行で定義されています。
const NumEffectState& osl::search::QuiescenceSearch2< EvalT >::currentState | ( | ) | const [inline] |
int osl::search::QuiescenceSearch2< EvalT >::currentValueWithLastThreat | ( | eval_t const & | ev, | |
Piece | last_move_piece | |||
) | [inline, private] |
quiescenceSearch2.tcc の 667 行で定義されています。
参照先 osl::alt(), osl::eval::betterThan(), osl::search::QuiescenceSearch2< EvalT >::depthFromRoot(), osl::search::QSearch2PrivateTraits::EscapeFromLastMoveDepthFromRoot, osl::Piece::isPiece(), osl::KING, osl::Piece::owner(), osl::Piece::position(), osl::Piece::ptypeO(), osl::search::QSearchTraits::SecondThreat, osl::search::SearchState2Core::state(), と osl::search::QuiescenceSearch2< EvalT >::state.
参照元 osl::search::QuiescenceSearch2< EvalT >::takeBackValue().
int osl::search::QuiescenceSearch2< EvalT >::depth | ( | ) | const [inline, private] |
残り深さ
quiescenceSearch2.h の 58 行で定義されています。
参照先 osl::search::QuiescenceSearch2< EvalT >::depthFromRoot(), と osl::search::QuiescenceSearch2< EvalT >::max_depth.
参照元 osl::search::QuiescenceSearch2< EvalT >::examineMoves(), osl::search::QuiescenceSearch2< EvalT >::examineTakeBack(), osl::search::QuiescenceSearch2< EvalT >::examineTakeBack2(), osl::search::QuiescenceSearch2< EvalT >::search(), osl::search::QuiescenceSearch2< EvalT >::searchInternal(), osl::search::QuiescenceSearch2< EvalT >::searchIteratively(), osl::search::QuiescenceSearch2< EvalT >::searchMain(), osl::search::QuiescenceSearch2< EvalT >::staticValue(), と osl::search::QuiescenceSearch2< EvalT >::staticValueWithThreat().
int osl::search::QuiescenceSearch2< EvalT >::depthFromRoot | ( | ) | const [inline, private] |
rootからの深さ
quiescenceSearch2.h の 53 行で定義されています。
参照先 osl::PathEncoding::getDepth(), osl::search::SearchState2Core::path(), osl::search::QuiescenceSearch2< EvalT >::root_depth, と osl::search::QuiescenceSearch2< EvalT >::state.
参照元 osl::search::QuiescenceSearch2< EvalT >::currentValueWithLastThreat(), osl::search::QuiescenceSearch2< EvalT >::depth(), osl::search::QuiescenceSearch2< EvalT >::examineMoves(), osl::search::QuiescenceSearch2< EvalT >::examineTakeBack2(), osl::search::QuiescenceSearch2< EvalT >::searchInternal(), osl::search::QuiescenceSearch2< EvalT >::searchMain(), osl::search::QuiescenceSearch2< EvalT >::staticValue(), と osl::search::QuiescenceSearch2< EvalT >::staticValueWithThreat().
bool osl::search::QuiescenceSearch2< EvalT >::examineCapture | ( | QuiescenceRecord * | record, | |
int & | curVal, | |||
MoveVector & | working, | |||
int & | alpha, | |||
int | beta, | |||
eval_t const & | ev, | |||
Piece | last_piece, | |||
int | additional_depth | |||
) | [inline, private] |
PTYPE を取る手を生成して examineMoves を呼ぶ.
quiescenceSearch2.tcc の 265 行で定義されています。
参照先 osl::Piece::position(), osl::search::SortCaptureMoves::sortByTakeBack(), osl::search::SearchState2Core::state(), と osl::search::QuiescenceSearch2< EvalT >::state.
bool osl::search::QuiescenceSearch2< EvalT >::examineMoves | ( | QuiescenceRecord * | record, | |
int & | curVal, | |||
const Move * | first, | |||
const Move * | last, | |||
int & | alpha, | |||
int | beta, | |||
eval_t const & | ev, | |||
int | additional_depth, | |||
Position | dont_capture = Position::STAND() | |||
) | [inline] |
dont_capture | TakeBack で試した手を後から重複して試さないために使う. template parameter の has_dont_capture がtrue の時だけ見る |
quiescenceSearch2.tcc の 310 行で定義されています。
参照先 osl::search::SearchState2Core::abort(), osl::search::HistoryTable::add(), osl::alt(), osl::search::QuiescenceRecord::bestMove(), osl::eval::betterThan(), osl::Move::capturePtype(), osl::search::QSearchTraits::CHECK, osl::RepetitionCounter::checkCount(), osl::search::QSearchTraits::CheckmateSpecialDepth, osl::search::SearchState2Core::curDepth(), osl::search::SearchState2Core::currentHash(), osl::eval::delta(), osl::search::QuiescenceSearch2< EvalT >::depth(), osl::search::QuiescenceSearch2< EvalT >::depthFromRoot(), osl::search::SearchState2Core::doUndoMoveOrPass(), osl::search::FixedEval::drawValue(), osl::PtypeTable::hasUnblockableEffect(), osl::Sennichite::hasWinner(), osl::search::SearchState2Core::history(), osl::search::SearchState2Core::historyTable(), osl::RepetitionCounter::isAlmostSennichite(), osl::Sennichite::isDraw(), osl::isMajor(), osl::Move::isNormal(), osl::Sennichite::isNormal(), osl::Move::isPass(), osl::search::FixedEval::isWinValue(), osl::search::QSearchTraits::KING_ESCAPE, osl::search::QuiescenceRecord::lowerBound(), osl::search::QuiescenceRecord::lowerDepth(), osl::search::QSearchTraits::MaxDepth, osl::eval::notLessThan(), osl::Move::ptype(), osl::PTYPE_EMPTY, osl::Ptype_Table, osl::Move::ptypeO(), osl::search::QuiescenceLog::pushMove(), osl::search::SearchState2Core::repetitionCounter(), result, osl::search::SearchState2Core::setKillerMove(), osl::search::QuiescenceRecord::setLowerBound(), osl::search::SearchState2Core::state(), osl::search::QuiescenceSearch2< EvalT >::state, osl::Move::to(), osl::search::QSearchTraits::UNKNOWN, osl::search::FixedEval::winByFoul(), と osl::Sennichite::winner().
bool osl::search::QuiescenceSearch2< EvalT >::examineTakeBack | ( | const MoveVector & | moves, | |
int & | cur_val, | |||
int & | alpha, | |||
int | beta, | |||
eval_t const & | ev | |||
) | [inline] |
quiescenceSearch2.tcc の 1424 行で定義されています。
参照先 osl::alt(), osl::eval::betterThan(), osl::eval::delta(), osl::search::QuiescenceSearch2< EvalT >::depth(), osl::search::SearchState2Core::doUndoMoveLight(), osl::importantMove(), osl::search::FixedEval::isWinValue(), osl::eval::max(), osl::eval::notLessThan(), osl::search::QuiescenceLog::pushMove(), result, osl::search::SearchState2Core::state(), と osl::search::QuiescenceSearch2< EvalT >::state.
bool osl::search::QuiescenceSearch2< EvalT >::examineTakeBack2 | ( | const MoveVector & | moves, | |
QuiescenceThreat & | threat2, | |||
QuiescenceThreat & | threat1, | |||
int | beta, | |||
int | beta2, | |||
eval_t const & | ev | |||
) | [inline] |
末端の取り返し用.
二つthreatを求める
threat1 | 最大の脅威 | |
threat2 | 2番目の脅威 | |
calm_move_only | 相手の利きがあるマスにはいかない | |
king_attack_piece | P に王手をかけている駒(のうちの一つ) |
quiescenceSearch2.tcc の 1469 行で定義されています。
参照先 osl::alt(), osl::eval::betterThan(), osl::BISHOP, osl::eval::delta(), osl::search::QuiescenceSearch2< EvalT >::depth(), osl::search::QuiescenceSearch2< EvalT >::depthFromRoot(), osl::search::SearchState2Core::doUndoMoveLight(), osl::record::usi::escape(), osl::search::QSearch2PrivateTraits::EscapeDepthFromRoot, osl::search::QSearch2PrivateTraits::EscapeFromLastMoveDepthFromRoot, finish(), osl::PtypeTable::getEffect(), osl::EffectContent::hasEffect(), osl::importantMove(), osl::isMajor(), osl::Move::isNormal(), osl::Move::isPass(), osl::search::FixedEval::isWinValue(), osl::search::SearchState2Core::lastMove(), osl::eval::notLessThan(), osl::Move::PASS(), osl::search::SearchState2Core::popPass(), osl::Move::ptype(), osl::Ptype_Table, osl::Move::ptypeO(), osl::search::QuiescenceLog::pushMove(), osl::search::SearchState2Core::pushPass(), result, osl::ROOK, osl::search::SearchState2Core::state(), osl::search::QuiescenceSearch2< EvalT >::state, target, osl::Move::to(), osl::unpromote(), と osl::search::QuiescenceThreat::value.
bool osl::search::QuiescenceSearch2< EvalT >::generateAndExamineTakeBack2 | ( | MoveVector & | moves, | |
QuiescenceThreat & | threat2, | |||
QuiescenceThreat & | threat1, | |||
int | beta1, | |||
int | beta2, | |||
eval_t const & | ev | |||
) | [inline] |
末端の取り返し用.
各取れる駒毎に指手を生成して examineTakeBack2 を呼ぶ
quiescenceSearch2.tcc の 235 行で定義されています。
参照先 osl::alt(), osl::search::QuiescenceSearch2< EvalT >::currentState(), osl::Piece::isOnBoardByOwner(), osl::KNIGHT, osl::LANCE, osl::PAWN, osl::Piece::position(), result, osl::search::SearchState2Core::state(), osl::search::QuiescenceSearch2< EvalT >::state, と target.
int osl::search::QuiescenceSearch2< EvalT >::nodeCount | ( | ) | const [inline] |
quiescenceSearch2.h の 242 行で定義されています。
int osl::search::QuiescenceSearch2< EvalT >::passValue | ( | int | alpha, | |
int | beta, | |||
eval_t const & | ev | |||
) | [inline, private] |
quiescenceSearch2.tcc の 710 行で定義されています。
参照先 osl::BOOST_STATIC_ASSERT(), osl::search::SearchState2Core::currentHash(), osl::search::SearchState2Core::doUndoMoveOrPass(), osl::search::QSearch2PrivateTraits::EscapeDepthFromRoot, osl::search::QuiescenceSearch2< EvalT >::max_depth, osl::Move::PASS(), osl::search::QSearch2PrivateTraits::PassExtraDepth, result, と osl::search::QuiescenceSearch2< EvalT >::state.
int osl::search::QuiescenceSearch2< EvalT >::search | ( | Player | P, | |
int | alpha, | |||
int | beta, | |||
eval_t & | ev, | |||
Move | last_move, | |||
int | depth | |||
) | [inline] |
quiescenceSearch2.h の 132 行で定義されています。
参照先 osl::BLACK.
int osl::search::QuiescenceSearch2< EvalT >::search | ( | int | alpha, | |
int | beta, | |||
eval_t & | ev, | |||
Move | last_move, | |||
int | depth = QSearchTraits::MaxDepth | |||
) | [inline] |
int osl::search::QuiescenceSearch2< EvalT >::search | ( | Player | P, | |
eval_t & | ev, | |||
Move | last_move, | |||
int | depth = QSearchTraits::MaxDepth | |||
) | [inline] |
quiescenceSearch2.h の 85 行で定義されています。
参照先 osl::BLACK, と osl::search::QuiescenceSearch2< EvalT >::depth().
int osl::search::QuiescenceSearch2< EvalT >::search | ( | eval_t & | ev, | |
Move | last_move, | |||
int | depth = QSearchTraits::MaxDepth | |||
) | [inline] |
quiescenceSearch2.h の 75 行で定義されています。
参照先 osl::alt(), osl::search::QuiescenceSearch2< EvalT >::depth(), osl::search::QuiescenceSearch2< EvalT >::max_depth, osl::Move::player(), osl::search::SearchState2Core::state(), osl::search::QuiescenceSearch2< EvalT >::state, と osl::search::FixedEval::winThreshold().
int osl::search::QuiescenceSearch2< EvalT >::searchInternal | ( | int | alpha, | |
int | beta, | |||
eval_t & | ev, | |||
Move | last_move, | |||
int | additional_depth = 0 , |
|||
EvalUpdateState | need_eval_update = AfterUpdate | |||
) | [inline] |
quiescenceSearch2.tcc の 587 行で定義されています。
参照先 allocate_depth_in_threatmate, osl::alt(), osl::eval::betterThan(), osl::search::ThreatmateState::CHECK_AFTER_THREATMATE, osl::search::SearchState2Core::currentHash(), osl::search::QuiescenceSearch2< EvalT >::depth(), osl::search::QuiescenceSearch2< EvalT >::depthFromRoot(), osl::search::QuiescenceLog::enter(), osl::search::SearchState2Core::hasLastRecord(), osl::search::SearchState2Core::initPV(), osl::search::SearchState2Core::lastRecord(), osl::search::SearchState2Core::makePV(), osl::search::QSearchTraits::MaxDepth, osl::search::QuiescenceLog::node(), osl::search::QuiescenceSearch2< EvalT >::node_count, osl::eval::notLessThan(), osl::Move::player(), osl::search::qallocate(), osl::search::SimpleHashRecord::qrecord, quiecence_assert, result, osl::search::SearchState2Core::state(), osl::search::QuiescenceSearch2< EvalT >::state, osl::search::QuiescenceSearch2< EvalT >::table, osl::search::FixedEval::winByFoul(), と osl::search::FixedEval::winThreshold().
int osl::search::QuiescenceSearch2< EvalT >::searchIteratively | ( | int | alpha, | |
int | beta, | |||
eval_t & | ev, | |||
Move | last_move, | |||
int | depth | |||
) | [inline] |
quiescenceSearch2.h の 113 行で定義されています。
参照先 osl::search::QuiescenceSearch2< EvalT >::max_depth, と result.
int osl::search::QuiescenceSearch2< EvalT >::searchIteratively | ( | Player | P, | |
eval_t & | ev, | |||
Move | last_move, | |||
int | depth = QSearchTraits::MaxDepth | |||
) | [inline] |
quiescenceSearch2.h の 103 行で定義されています。
参照先 osl::BLACK, と osl::search::QuiescenceSearch2< EvalT >::depth().
int osl::search::QuiescenceSearch2< EvalT >::searchIteratively | ( | eval_t & | ev, | |
Move | last_move, | |||
int | depth = QSearchTraits::MaxDepth | |||
) | [inline] |
int osl::search::QuiescenceSearch2< EvalT >::searchMain | ( | QuiescenceRecord * | record, | |
int | alpha, | |||
int | beta, | |||
eval_t & | ev, | |||
Move | last_move, | |||
int | additional_depth, | |||
EvalUpdateState & | need_eval_update | |||
) | [inline, private] |
quiescenceSearch2.tcc の 731 行で定義されています。
参照先 osl::stat::Ratio::add(), osl::search::QuiescenceRecord::addKillerMoves(), osl::search::QSearch2PrivateTraits::AdvanceBishopDepthFromRoot, osl::search::QuiescenceSearch2< EvalT >::AfterUpdate, allocate_depth_in_threatmate, osl::alt(), osl::search::QSearch2PrivateTraits::AttackGoldSilverDepthFromRoot, osl::search::QSearch2PrivateTraits::AttackKing8DepthFromRoot, osl::search::QSearch2PrivateTraits::AttackKnightDepthFromRoot, osl::search::QSearch2PrivateTraits::AttackMajorPieceDepthFromRoot, osl::search::QSearch2PrivateTraits::AttackPinnedDepth, osl::search::QuiescenceSearch2< EvalT >::BeforeUpdate, osl::search::QuiescenceRecord::bestMove(), osl::eval::betterThan(), osl::BISHOP, osl::canPromote(), osl::ntesuki::capture(), osl::Move::capturePtype(), osl::search::QuiescenceRecord::checkmateNodesLeft(), osl::search::QSearchTraits::CheckmateSpecialDepth, osl::search::SearchState2Core::countCheckAfterThreatmate(), osl::search::SearchState2Core::countCheckAfterThreatmateSacrifice(), osl::search::SearchState2Core::curDepth(), osl::search::SearchState2Core::currentHash(), osl::eval::delta(), osl::search::QuiescenceSearch2< EvalT >::depth(), osl::search::SearchState2Core::depth_node_count_quiesce, osl::search::QuiescenceSearch2< EvalT >::depthFromRoot(), osl::search::QSearch2PrivateTraits::DropDepthFromRoot, osl::Piece::EMPTY(), osl::search::QSearch2PrivateTraits::EscapeDepthFromRoot, osl::search::QSearch2PrivateTraits::EscapeFromLastMoveDepthFromRoot, osl::OslConfig::evalRandom(), osl::find(), finish(), osl::Move::from(), osl::search::QSearch2PrivateTraits::FullPromoteDepth, osl::search::SearchState2Core::getBigramKillerMoves(), osl::search::SearchState2Core::hasLastRecord(), osl::search::QSearchTraits::HistorySpecialDepth, osl::search::SearchState2Core::historyTable(), osl::Move::INVALID(), osl::Move::isDrop(), osl::isMajor(), osl::isMajorBasic(), osl::Move::isNormal(), osl::Move::isPass(), osl::Piece::isPiece(), osl::isPiece(), osl::Position::isPieceStand(), osl::search::DualThreatmateState::isThreatmate(), osl::Move::isValid(), osl::search::SearchState2Core::isWinningState(), osl::search::SearchState2Core::isWinningStateShort(), osl::search::FixedEval::isWinValue(), osl::KING, osl::KNIGHT, osl::search::QSearch2PrivateTraits::KnightCaptureDepth, osl::LANCE, osl::search::SearchState2Core::lastMove(), osl::search::SearchState2Core::lastRecord(), osl::search::QuiescenceRecord::loadMoves(), osl::search::QuiescenceRecord::lowerBound(), osl::search::QuiescenceRecord::lowerDepth(), osl::eval::max(), osl::search::QuiescenceSearch2< EvalT >::max_depth, osl::search::DualThreatmateState::maybeThreatmate(), osl::search::DualThreatmateState::mayHaveCheckmate(), osl::eval::min(), moves, osl::search::QuiescenceRecord::movesEmpty(), osl::search::QuiescenceRecord::movesSizeLessThan(), osl::newPtypeO(), osl::search::QuiescenceSearch2< EvalT >::node_count, osl::eval::notLessThan(), osl::Piece::owner(), osl::PAWN, osl::search::QSearch2PrivateTraits::PawnCaptureDepth, osl::Piece::position(), osl::promote(), osl::Move::ptype(), osl::PTYPE_EMPTY, osl::search::qallocate(), osl::search::SimpleHashRecord::qrecord, ratio, result, osl::ROOK, osl::search::QuiescenceRecord::sendOffPosition(), osl::search::QuiescenceRecord::setLowerBound(), osl::search::QuiescenceRecord::setUpperBound(), osl::move_order::CaptureSort::sort(), osl::search::SearchState2Core::state(), osl::search::QuiescenceSearch2< EvalT >::state, osl::search::QuiescenceSearch2< EvalT >::staticValue(), osl::search::QuiescenceSearch2< EvalT >::table, osl::search::QuiescenceRecordBase::threatmate, osl::search::DualThreatmateState::threatmateMove(), osl::search::FixedEval::threatmatePenalty(), osl::Move::to(), osl::search::SearchState2Core::tryThreatmate(), osl::unpromote(), osl::search::QuiescenceRecord::upperBound(), osl::search::QuiescenceRecord::upperDepth(), osl::search::QSearch2PrivateTraits::UtilizePromotedDepth, と osl::search::FixedEval::winByCheckmate().
int osl::search::QuiescenceSearch2< EvalT >::searchProbCut | ( | Player | P, | |
int | alpha, | |||
int | beta, | |||
eval_t & | ev, | |||
Move | last_move | |||
) | [inline] |
quiescenceSearch2.h の 140 行で定義されています。
参照先 osl::BLACK.
int osl::search::QuiescenceSearch2< EvalT >::searchProbCut | ( | int | alpha, | |
int | beta, | |||
eval_t & | ev, | |||
Move | last_move | |||
) | [inline] |
quiescenceSearch2.tcc の 209 行で定義されています。
参照先 osl::alt(), osl::eval::betterThan(), osl::eval::max(), osl::search::QuiescenceSearch2< EvalT >::max_depth, osl::search::QSearchTraits::MaxDepth, osl::eval::min(), osl::newPtypeO(), osl::eval::notLessThan(), osl::PAWN, と osl::search::FixedEval::winThreshold().
int osl::search::QuiescenceSearch2< EvalT >::staticValue | ( | eval_t const & | ev, | |
int | alpha, | |||
int | beta, | |||
QuiescenceRecord * | record | |||
) | [inline] |
quiescenceSearch2.tcc の 471 行で定義されています。
参照先 allocate_depth_in_threatmate, osl::eval::betterThan(), osl::Move::capturePtype(), osl::search::ThreatmateState::CHECK_AFTER_THREATMATE, osl::search::QSearchTraits::CheckmateSpecialDepth, osl::search::SearchState2Core::currentHash(), osl::search::QuiescenceSearch2< EvalT >::depth(), osl::search::QuiescenceSearch2< EvalT >::depthFromRoot(), osl::search::QuiescenceRecordBase::EXACT, osl::GOLD, osl::search::SearchState2Core::hasLastRecord(), osl::search::QuiescenceRecord::hasStaticValue(), osl::Move::INVALID(), osl::Move::isNormal(), osl::Piece::isPiece(), osl::search::SearchState2Core::isThreatmateState(), osl::search::SearchState2Core::isThreatmateStateShort(), osl::Move::isValid(), osl::search::SearchState2Core::lastMove(), osl::search::SearchState2Core::lastRecord(), osl::search::DualThreatmateState::maybeThreatmate(), osl::newPtypeO(), osl::PROOK, osl::Move::ptype(), osl::Piece::ptypeO(), osl::search::qallocate(), result, osl::search::QuiescenceRecord::setStaticValue(), osl::search::DualThreatmateState::setThreatmate(), osl::SILVER, osl::search::SearchState2Core::state(), osl::search::QuiescenceSearch2< EvalT >::state, osl::search::QuiescenceRecord::staticValue(), osl::search::QuiescenceRecord::staticValueDepth(), osl::search::QuiescenceRecord::staticValueType(), osl::search::ThreatmateState::status(), osl::search::DualThreatmateState::status(), osl::search::QuiescenceSearch2< EvalT >::table, osl::search::SimpleHashRecord::threatmate(), osl::search::QuiescenceRecordBase::threatmate, osl::search::QSearch2PrivateTraits::ThreatMateDepthFromRoot, osl::search::QuiescenceRecord::threatmateNodesLeft(), osl::search::FixedEval::threatmatePenalty(), osl::Move::to(), osl::search::SearchState2Core::tryThreatmate(), osl::search::QuiescenceRecordBase::UPPER_BOUND, osl::Position::x(), と osl::Position::y().
int osl::search::QuiescenceSearch2< EvalT >::staticValueWithThreat | ( | eval_t const & | ev | ) | [inline] |
int osl::search::QuiescenceSearch2< EvalT >::staticValueWithThreat | ( | eval_t const & | ev | ) | [inline] |
quiescenceSearch2.h の 229 行で定義されています。
int osl::search::QuiescenceSearch2< EvalT >::staticValueWithThreat | ( | eval_t const & | ev, | |
int | alpha, | |||
QuiescenceThreat & | threat1, | |||
QuiescenceThreat & | threat2 | |||
) | [inline] |
quiescenceSearch2.tcc の 1744 行で定義されています。
参照先 osl::alt(), osl::eval::betterThan(), osl::eval::delta(), osl::search::QuiescenceSearch2< EvalT >::depth(), osl::search::QuiescenceSearch2< EvalT >::depthFromRoot(), osl::search::QSearch2PrivateTraits::EscapeDepthFromRoot, finish(), osl::search::QSearchTraits::FirstThreat, osl::search::SearchState2Core::historyTable(), osl::isMajorBasic(), osl::Move::isNormal(), osl::search::SearchState2Core::lastMove(), osl::eval::max(), osl::search::QuiescenceSearch2< EvalT >::max_depth, osl::eval::min(), osl::search::QuiescenceThreat::move, moves, osl::eval::notLessThan(), osl::Piece::owner(), osl::Move::PASS(), osl::search::QSearch2PrivateTraits::PawnCaptureDepth, osl::search::SearchState2Core::popPass(), osl::Piece::position(), osl::Piece::ptype(), osl::search::SearchState2Core::pushPass(), result, osl::search::QSearchTraits::SecondThreat, osl::search::SearchState2Core::state(), osl::search::QuiescenceSearch2< EvalT >::state, target, osl::Move::to(), osl::search::QuiescenceThreat::value, と osl::search::FixedEval::winByCheckmate().
int osl::search::QuiescenceSearch2< EvalT >::takeBackOrChase | ( | int | alpha, | |
int | beta, | |||
eval_t const & | ev, | |||
Move | last_move | |||
) | [inline] |
last_move が逃げる手で、逃げた先の取り返し、または追撃の価値を判定
quiescenceSearch2.tcc の 1648 行で定義されています。
参照先 osl::alt(), osl::eval::betterThan(), osl::search::SearchState2Core::doUndoMoveLight(), osl::Move::from(), osl::Move::isNormal(), osl::eval::max(), moves, osl::newPtypeO(), osl::PROOK, osl::Move::ptypeO(), result, osl::ROOK, osl::search::SearchState2Core::state(), osl::search::QuiescenceSearch2< EvalT >::state, と osl::Move::to().
int osl::search::QuiescenceSearch2< EvalT >::takeBackValue | ( | int | alpha, | |
int | beta, | |||
eval_t const & | ev, | |||
Move | last_move | |||
) | [inline] |
単純な取り返しの探索.
PieceEval::computeDiffAfterMoveForRP と異なり,盤面を動かす. 王手を正確に判定し,利きも伸びる
attack_piece | last_move が王手回避の時に王手をかけていた駒 |
quiescenceSearch2.tcc の 1686 行で定義されています。
参照先 osl::alt(), osl::eval::betterThan(), osl::search::QuiescenceSearch2< EvalT >::currentValueWithLastThreat(), osl::eval::delta(), osl::Move::isPass(), osl::LANCE, moves, osl::search::QuiescenceSearch2< EvalT >::node_count, osl::eval::notLessThan(), osl::Piece::position(), osl::search::SearchState2Core::state(), osl::search::QuiescenceSearch2< EvalT >::state, osl::Move::to(), osl::search::FixedEval::winByCheckmate(), と osl::search::FixedEval::winByFoul().
int osl::search::QuiescenceSearch2< EvalT >::max_depth [private] |
quiescenceSearch2.h の 47 行で定義されています。
参照元 osl::search::QuiescenceSearch2< EvalT >::depth(), osl::search::QuiescenceSearch2< EvalT >::passValue(), osl::search::QuiescenceSearch2< EvalT >::search(), osl::search::QuiescenceSearch2< EvalT >::searchIteratively(), osl::search::QuiescenceSearch2< EvalT >::searchMain(), osl::search::QuiescenceSearch2< EvalT >::searchProbCut(), と osl::search::QuiescenceSearch2< EvalT >::staticValueWithThreat().
int osl::search::QuiescenceSearch2< EvalT >::node_count [private] |
int osl::search::QuiescenceSearch2< EvalT >::root_depth [private] |
quiescenceSearch2.h の 46 行で定義されています。
参照元 osl::search::QuiescenceSearch2< EvalT >::depthFromRoot().
SearchState2Core& osl::search::QuiescenceSearch2< EvalT >::state [private] |
quiescenceSearch2.h の 44 行で定義されています。
参照元 osl::search::QuiescenceSearch2< EvalT >::currentState(), osl::search::QuiescenceSearch2< EvalT >::currentValueWithLastThreat(), osl::search::QuiescenceSearch2< EvalT >::depthFromRoot(), osl::search::QuiescenceSearch2< EvalT >::examineCapture(), osl::search::QuiescenceSearch2< EvalT >::examineMoves(), osl::search::QuiescenceSearch2< EvalT >::examineTakeBack(), osl::search::QuiescenceSearch2< EvalT >::examineTakeBack2(), osl::search::QuiescenceSearch2< EvalT >::generateAndExamineTakeBack2(), osl::search::QuiescenceSearch2< EvalT >::passValue(), osl::search::QuiescenceSearch2< EvalT >::search(), osl::search::QuiescenceSearch2< EvalT >::searchInternal(), osl::search::QuiescenceSearch2< EvalT >::searchIteratively(), osl::search::QuiescenceSearch2< EvalT >::searchMain(), osl::search::QuiescenceSearch2< EvalT >::staticValue(), osl::search::QuiescenceSearch2< EvalT >::staticValueWithThreat(), osl::search::QuiescenceSearch2< EvalT >::takeBackOrChase(), と osl::search::QuiescenceSearch2< EvalT >::takeBackValue().
SimpleHashTable& osl::search::QuiescenceSearch2< EvalT >::table [private] |