クラス テンプレート osl::search::QuiescenceSearch2< EvalT >

礤õ (Żõ). [詳細]

#include <quiescenceSearch2.h>

osl::search::QuiescenceSearch2< EvalT >に対する継承グラフ

Inheritance graph
[凡例]
osl::search::QuiescenceSearch2< EvalT >のコラボレーション図

Collaboration graph
[凡例]

すべてのメンバ一覧

Public 型

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 const &ev, Move last_move, int depth=QSearchTraits::MaxDepth)
int search (Player P, eval_t const &ev, Move last_move, int depth=QSearchTraits::MaxDepth)
template<Player P>
int searchIteratively (eval_t const &ev, Move last_move, int depth=QSearchTraits::MaxDepth)
int searchIteratively (Player P, eval_t const &ev, Move last_move, int depth=QSearchTraits::MaxDepth)
template<Player P>
int searchIteratively (int alpha, int beta, eval_t const &ev, Move last_move, int depth)
template<Player P>
int search (int alpha, int beta, eval_t const &ev, Move last_move, int depth=QSearchTraits::MaxDepth)
int search (Player P, int alpha, int beta, eval_t const &ev, Move last_move, int depth)
template<Player P>
int searchProbCut (int alpha, int beta, eval_t const &ev, Move last_move)
int searchProbCut (Player P, int alpha, int beta, eval_t const &ev, Move last_move)
template<Player P>
int searchInternal (int alpha, int beta, eval_t const &ev, Move last_move, int additional_depth=0)
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 const &ev, Move last_move, int additional_depth)
template<bool has_record, class TYPE>
void recordGeneration (QuiescenceRecord *record, TYPE type, const MoveVector &moves)
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, bool has_record>
int staticValue (eval_t const &ev, int alpha, int beta, QuiescenceRecord *record)
template<Player P>
int passValue (int alpha, int beta, eval_t const &ev)
int currentValueWithLastThreat (eval_t const &ev, Piece last_move_piece)

Private 変数

SearchState2Corestate
SimpleHashTabletable
int root_depth
int max_depth
int node_count
 õΡɿ


説明

template<class EvalT>
class osl::search::QuiescenceSearch2< EvalT >

礤õ (Żõ).

TODO:

quiescenceSearch2.h41 行で定義されています。


型定義

template<class EvalT>
typedef FixedEval osl::search::QuiescenceSearch2< EvalT >::base_t [private]

quiescenceSearch2.h43 行で定義されています。

template<class EvalT>
typedef EvalT osl::search::QuiescenceSearch2< EvalT >::eval_t

quiescenceSearch2.h63 行で定義されています。

template<class EvalT>
typedef NumEffectState osl::search::QuiescenceSearch2< EvalT >::effect_state_t

quiescenceSearch2.h64 行で定義されています。

template<class EvalT>
typedef container::MoveVector osl::search::QuiescenceSearch2< EvalT >::MoveVector

quiescenceSearch2.h67 行で定義されています。


コンストラクタとデストラクタ

template<class EvalT>
osl::search::QuiescenceSearch2< EvalT >::QuiescenceSearch2 ( SearchState2Core s,
SimpleHashTable t 
) [inline]

quiescenceSearch2.h69 行で定義されています。


関数

template<class EvalT>
int osl::search::QuiescenceSearch2< EvalT >::depthFromRoot (  )  const [inline, private]

template<class EvalT>
int osl::search::QuiescenceSearch2< EvalT >::depth (  )  const [inline, private]

template<class EvalT>
template<Player P>
int osl::search::QuiescenceSearch2< EvalT >::search ( eval_t const &  ev,
Move  last_move,
int  depth = QSearchTraits::MaxDepth 
) [inline]

template<class EvalT>
int osl::search::QuiescenceSearch2< EvalT >::search ( Player  P,
eval_t const &  ev,
Move  last_move,
int  depth = QSearchTraits::MaxDepth 
) [inline]

quiescenceSearch2.h85 行で定義されています。

参照先 osl::BLACK, と osl::search::QuiescenceSearch2< EvalT >::depth().

template<class EvalT>
template<Player P>
int osl::search::QuiescenceSearch2< EvalT >::searchIteratively ( eval_t const &  ev,
Move  last_move,
int  depth = QSearchTraits::MaxDepth 
) [inline]

template<class EvalT>
int osl::search::QuiescenceSearch2< EvalT >::searchIteratively ( Player  P,
eval_t const &  ev,
Move  last_move,
int  depth = QSearchTraits::MaxDepth 
) [inline]

quiescenceSearch2.h103 行で定義されています。

参照先 osl::BLACK, と osl::search::QuiescenceSearch2< EvalT >::depth().

template<class EvalT>
template<Player P>
int osl::search::QuiescenceSearch2< EvalT >::searchIteratively ( int  alpha,
int  beta,
eval_t const &  ev,
Move  last_move,
int  depth 
) [inline]

quiescenceSearch2.h113 行で定義されています。

参照先 osl::search::QuiescenceSearch2< EvalT >::max_depth.

template<class EvalT>
template<Player P>
int osl::search::QuiescenceSearch2< EvalT >::search ( int  alpha,
int  beta,
eval_t const &  ev,
Move  last_move,
int  depth = QSearchTraits::MaxDepth 
) [inline]

template<class EvalT>
int osl::search::QuiescenceSearch2< EvalT >::search ( Player  P,
int  alpha,
int  beta,
eval_t const &  ev,
Move  last_move,
int  depth 
) [inline]

quiescenceSearch2.h132 行で定義されています。

参照先 osl::BLACK.

template<class EvalT>
template<osl::Player P>
int osl::search::QuiescenceSearch2< EvalT >::searchProbCut ( int  alpha,
int  beta,
eval_t const &  ev,
Move  last_move 
) [inline]

template<class EvalT>
int osl::search::QuiescenceSearch2< EvalT >::searchProbCut ( Player  P,
int  alpha,
int  beta,
eval_t const &  ev,
Move  last_move 
) [inline]

quiescenceSearch2.h140 行で定義されています。

参照先 osl::BLACK.

template<class EvalT>
template<osl::Player P>
int osl::search::QuiescenceSearch2< EvalT >::searchInternal ( int  alpha,
int  beta,
eval_t const &  ev,
Move  last_move,
int  additional_depth = 0 
) [inline]

template<class EvalT>
template<osl::Player P, bool has_record>
int osl::search::QuiescenceSearch2< EvalT >::searchMain ( QuiescenceRecord record,
int  alpha,
int  beta,
eval_t const &  ev,
Move  last_move,
int  additional_depth 
) [inline, private]

quiescenceSearch2.tcc740 行で定義されています。

参照先 osl::stat::Ratio::add(), osl::search::QuiescenceRecord::addKillerMoves(), osl::search::QuiescenceFlags::ADVANCE_BISHOP, osl::search::QSearch2PrivateTraits::AdvanceBishopDepthFromRoot, osl::search::QuiescenceFlags::ALL_ESCAPE, allocate_depth_in_threatmate, osl::alt(), osl::search::QuiescenceRecord::attack_oracle, osl::search::QSearch2PrivateTraits::AttackGoldSilverDepthFromRoot, osl::search::QSearch2PrivateTraits::AttackKing8DepthFromRoot, osl::search::QSearch2PrivateTraits::AttackKnightDepthFromRoot, osl::search::QSearch2PrivateTraits::AttackMajorPieceDepthFromRoot, osl::search::QSearch2PrivateTraits::AttackPinnedDepth, osl::search::QuiescenceRecord::bestMove(), osl::eval::betterThan(), osl::BISHOP, osl::search::QuiescenceFlags::BREAK_THREATMATE, osl::canPromote(), osl::ntesuki::capture(), osl::Move::capturePtype(), osl::search::QuiescenceFlags::CHECK, 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::QuiescenceFlags::DROP, osl::search::QSearch2PrivateTraits::DropDepthFromRoot, osl::Piece::EMPTY(), osl::search::QuiescenceFlags::ESCAPE_FROM_LAST_MOVE, osl::search::QSearch2PrivateTraits::EscapeDepthFromRoot, osl::search::QSearch2PrivateTraits::EscapeFromLastMoveDepthFromRoot, osl::find(), finish(), osl::Move::from(), osl::search::SearchState2Core::getBigramKillerMoves(), osl::search::QuiescenceFlags::GOLDSILVER_ATTACK, osl::search::SearchState2Core::hasLastRecord(), osl::search::QSearchTraits::HistorySpecialDepth, 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::search::SearchState2Core::isWinningState(), osl::search::SearchState2Core::isWinningStateShort(), osl::search::FixedEval::isWinValue(), osl::KING, osl::search::QuiescenceFlags::KING8_ATTACK, osl::search::QuiescenceRecord::king8Info(), osl::search::QuiescenceFlags::KING_ESCAPE, osl::search::QuiescenceFlags::KING_WALK, osl::KNIGHT, osl::search::QuiescenceFlags::KNIGHT_ATTACK, osl::search::QSearch2PrivateTraits::KnightCaptureDepth, osl::LANCE, osl::search::SearchState2Core::lastMove(), osl::search::SearchState2Core::lastRecord(), osl::checkmate::King8Info::liberty(), osl::search::QuiescenceRecord::loadMoves(), osl::search::QuiescenceRecord::lowerBound(), osl::search::QuiescenceRecord::lowerDepth(), osl::search::QuiescenceFlags::MAJOR_PIECE_ATTACK, osl::checkmate::King8Info::makeWithPin(), osl::eval::max(), osl::search::QuiescenceSearch2< EvalT >::max_depth, osl::search::DualThreatmateState::maybeThreatmate(), osl::search::DualThreatmateState::mayHaveCheckmate(), osl::eval::min(), moves, osl::search::QuiescenceRecord::moves_size(), osl::newPtypeO(), osl::search::QuiescenceSearch2< EvalT >::node_count, osl::eval::notLessThan(), osl::Piece::owner(), osl::search::QSearch2PrivateTraits::PawnCaptureDepth, osl::search::QuiescenceFlags::PINNED_ATTACK, osl::Piece::position(), osl::promote(), osl::search::QuiescenceFlags::PROMOTE, osl::Move::ptype(), osl::PTYPE_EMPTY, osl::search::qallocate(), osl::search::SimpleHashRecord::qrecord, ratio, 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::QuiescenceLog::staticValue(), osl::search::QuiescenceSearch2< EvalT >::table, osl::search::QuiescenceRecord::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::QuiescenceFlags::UTILIZE_PROMOTED, osl::search::QSearch2PrivateTraits::UtilizePromotedDepth, と osl::search::FixedEval::winByCheckmate().

template<class EvalT>
template<bool has_record, class MOVE_TYPE>
void osl::search::QuiescenceSearch2< EvalT >::recordGeneration ( QuiescenceRecord record,
MOVE_TYPE  type,
const MoveVector moves 
) [inline, private]

template<class EvalT>
template<osl::Player P, osl::Ptype PTYPE, bool has_record>
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]

template<class EvalT>
template<osl::Player P, bool has_record>
int osl::search::QuiescenceSearch2< EvalT >::staticValue ( eval_t const &  ev,
int  alpha,
int  beta,
QuiescenceRecord record 
) [inline, private]

quiescenceSearch2.tcc472 行で定義されています。

参照先 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::checkmate::ImmediateCheckmate::hasCheckmateMove(), osl::search::SearchState2Core::hasLastRecord(), osl::search::QuiescenceRecord::hasStaticValue(), osl::Move::INVALID(), osl::Move::isNormal(), osl::search::SearchState2Core::isThreatmateState(), osl::search::SearchState2Core::isThreatmateStateShort(), osl::Move::isValid(), osl::search::SearchState2Core::lastMove(), osl::search::SearchState2Core::lastRecord(), osl::search::DualThreatmateState::maybeThreatmate(), osl::PROOK, osl::Move::ptype(), osl::search::qallocate(), 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::QuiescenceRecord::threatmate, osl::search::QuiescenceRecord::threatmate_oracle, 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().

template<class EvalT>
template<osl::Player P>
int osl::search::QuiescenceSearch2< EvalT >::passValue ( int  alpha,
int  beta,
eval_t const &  ev 
) [inline, private]

template<class EvalT>
int osl::search::QuiescenceSearch2< EvalT >::currentValueWithLastThreat ( eval_t const &  ev,
Piece  last_move_piece 
) [inline, private]

template<class EvalT>
template<osl::Player P, bool has_record, bool has_dont_capture, osl::search::QSearchTraits::MoveType move_type>
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]

戻り値:
cut Ǥ뤫
引数:
dont_capture TakeBack ǻ夫ʣƻʤ˻Ȥ. template parameter has_dont_capture true λ

quiescenceSearch2.tcc319 行で定義されています。

参照先 osl::search::SearchState2Core::abort(), osl::alt(), osl::search::QuiescenceRecord::bestMove(), osl::eval::betterThan(), osl::Move::capturePtype(), osl::search::QSearchTraits::CHECK, osl::search::QSearchTraits::CheckmateSpecialDepth, 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::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(), 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().

template<class EvalT>
template<osl::Player P>
int osl::search::QuiescenceSearch2< EvalT >::takeBackValue ( int  alpha,
int  beta,
eval_t const &  ev,
Move  last_move 
) [inline]

template<class EvalT>
template<osl::Player P>
bool osl::search::QuiescenceSearch2< EvalT >::examineTakeBack ( const MoveVector moves,
int &  cur_val,
int &  alpha,
int  beta,
eval_t const &  ev 
) [inline]

template<class EvalT>
template<osl::Player P, bool calm_move_only, bool first_normal_move_only>
bool osl::search::QuiescenceSearch2< EvalT >::examineTakeBack2 ( const MoveVector moves,
QuiescenceThreat threat2,
QuiescenceThreat threat1,
int  beta,
int  beta2,
eval_t const &  ev 
) [inline]

template<class EvalT>
template<osl::Player P, osl::Ptype PTYPE>
bool osl::search::QuiescenceSearch2< EvalT >::generateAndExamineTakeBack2 ( MoveVector moves,
QuiescenceThreat threat2,
QuiescenceThreat threat1,
int  beta1,
int  beta2,
eval_t const &  ev 
) [inline]

template<class EvalT>
template<osl::Player P>
int osl::search::QuiescenceSearch2< EvalT >::takeBackOrChase ( int  alpha,
int  beta,
eval_t const &  ev,
Move  last_move 
) [inline]

template<class EvalT>
template<osl::Player P>
int osl::search::QuiescenceSearch2< EvalT >::staticValueWithThreat ( eval_t const &  ev,
int  alpha,
QuiescenceThreat threat1,
QuiescenceThreat threat2 
) [inline]

template<class EvalT>
template<Player P>
int osl::search::QuiescenceSearch2< EvalT >::staticValueWithThreat ( eval_t const &  ev  )  [inline]

quiescenceSearch2.h229 行で定義されています。

参照先 osl::alt(), と osl::search::FixedEval::winThreshold().

template<class EvalT>
int osl::search::QuiescenceSearch2< EvalT >::staticValueWithThreat ( eval_t const &  ev  )  [inline]

template<class EvalT>
int osl::search::QuiescenceSearch2< EvalT >::nodeCount (  )  const [inline]

quiescenceSearch2.h242 行で定義されています。

参照先 osl::search::QuiescenceSearch2< EvalT >::node_count.

template<class EvalT>
const NumEffectState& osl::search::QuiescenceSearch2< EvalT >::currentState (  )  const [inline]


変数

template<class EvalT>
SearchState2Core& osl::search::QuiescenceSearch2< EvalT >::state [private]

template<class EvalT>
SimpleHashTable& osl::search::QuiescenceSearch2< EvalT >::table [private]

template<class EvalT>
int osl::search::QuiescenceSearch2< EvalT >::root_depth [private]

quiescenceSearch2.h46 行で定義されています。

参照元 osl::search::QuiescenceSearch2< EvalT >::depthFromRoot().

template<class EvalT>
int osl::search::QuiescenceSearch2< EvalT >::max_depth [private]

template<class EvalT>
int osl::search::QuiescenceSearch2< EvalT >::node_count [private]


このクラスの説明は次のファイルから生成されました:

Thu Oct 8 05:01:18 2009に生成されました。  doxygen 1.5.6