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

"tree" of AlphaBeta2, copied by split [詳細]

#include <alphaBeta2.h>

osl::search::AlphaBeta2Tree< EvalT >に対する継承グラフ
Inheritance graph
[凡例]
osl::search::AlphaBeta2Tree< EvalT >のコラボレーション図
Collaboration graph
[凡例]

すべてのメンバ一覧

構成

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)

  • makeMove(move)
  • => alphaBetaSearchAfterMove -- search extension etc.

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
MoveGeneratormakeGenerator ()

Static Protected メソッド

static MoveGeneratoralloc ()
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 >

説明

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

"tree" of AlphaBeta2, copied by split

alphaBeta2.h133 行で定義されています。


型定義

template<class EvalT>
typedef AlphaBeta2Common<EvalT> osl::search::AlphaBeta2Tree< EvalT >::common_t

alphaBeta2.h139 行で定義されています。

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

osl::search::SearchBase< EvalT, SimpleHashTable, CountRecorder, RealizationProbability >を再定義しています。

alphaBeta2.h138 行で定義されています。

template<class EvalT>
typedef AlphaBeta2Window osl::search::AlphaBeta2Tree< EvalT >::Window

osl::search::AlphaBeta2< EvalT >で再定義されています。

alphaBeta2.h170 行で定義されています。


列挙型

template<class EvalT>
anonymous enum
列挙型の値:
MaxDepth 

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


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

template<class EvalT >
osl::search::AlphaBeta2Tree< EvalT >::AlphaBeta2Tree ( const NumEffectState &  s,
checkmate_t checker,
SimpleHashTable t,
CountRecorder r 
) [inline, protected]

alphaBeta2.cc75 行で定義されています。

参照先 osl::search::AlphaBeta2Tree< EvalT >::shared.

template<class EvalT >
osl::search::AlphaBeta2Tree< EvalT >::AlphaBeta2Tree ( const AlphaBeta2Tree< EvalT > &  src,
AlphaBeta2Parallel< EvalT > *   
) [inline, protected]

alphaBeta2.cc103 行で定義されています。

参照先 osl::search::SearchState2Core::pv.

template<class EvalT >
osl::search::AlphaBeta2Tree< EvalT >::~AlphaBeta2Tree (  )  [inline, protected]

関数

template<class EvalT >
void osl::search::AlphaBeta2Tree< EvalT >::addMultiPV ( Player  P,
int  result,
Move  m 
) [inline, protected]
template<class EvalT >
osl::search::MoveGenerator * osl::search::AlphaBeta2Tree< EvalT >::alloc (  )  [inline, static, protected]

alphaBeta2.cc126 行で定義されています。

参照元 osl::search::AlphaBeta2Tree< EvalT >::makeGenerator().

template<class EvalT >
template<osl::Player P>
int osl::search::AlphaBeta2Tree< EvalT >::alphaBetaSearch ( const MoveLogProb move,
Window  window,
bool  in_pv 
) [inline, protected]

alphaBetaSearch (move)

  • makeMove(move)
  • => alphaBetaSearchAfterMove -- search extension etc.

-- => searchAllMoves => alphaBetaSearch (child move)

  • unmakeMove(move)

alphaBeta2.cc1415 行で定義されています。

参照先 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().

template<class EvalT >
template<osl::Player P>
int osl::search::AlphaBeta2Tree< EvalT >::alphaBetaSearchAfterMove ( const MoveLogProb move,
Window  window,
bool  in_pv 
) [inline, protected]

alphaBeta2.cc164 行で定義されています。

参照先 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().

template<class EvalT >
void osl::search::AlphaBeta2Tree< EvalT >::dealloc ( MoveGenerator p  )  [inline, static, protected]

alphaBeta2.cc141 行で定義されています。

参照元 osl::search::AlphaBeta2Tree< EvalT >::~AlphaBeta2Tree().

template<class EvalT >
template<osl::Player P>
template void osl::search::AlphaBeta2Tree< EvalT >::examineMovesRoot< WHITE > ( const MoveLogProbVector &  ,
size_t  ,
Window  ,
MoveLogProb ,
int &   
) [inline, protected]
template<class EvalT>
bool osl::search::AlphaBeta2Tree< EvalT >::isStable ( Player  P,
int  new_value 
) const [protected]
template<class EvalT >
osl::search::MoveGenerator & osl::search::AlphaBeta2Tree< EvalT >::makeGenerator (  )  [inline, protected]
template<class EvalT >
template<osl::Player P>
const osl::MoveLogProb osl::search::AlphaBeta2Tree< EvalT >::nextMove (  )  [inline]
template<class EvalT>
size_t osl::search::AlphaBeta2Tree< EvalT >::nodeCount (  )  const [inline]
template<class EvalT >
template<osl::Player P>
int osl::search::AlphaBeta2Tree< EvalT >::quiesce ( Window  w,
int  depth_left,
DualThreatmateState  parent_threatmate 
) [inline, protected]
template<class EvalT >
template<osl::Player P>
int osl::search::AlphaBeta2Tree< EvalT >::quiesce ( Window  w  )  [inline, protected]

alphaBeta2.cc891 行で定義されています。

template<class EvalT >
template<osl::Player P>
int osl::search::AlphaBeta2Tree< EvalT >::quiesceExp ( Window  w  )  [inline, protected]
template<class EvalT >
template<osl::Player P>
int osl::search::AlphaBeta2Tree< EvalT >::quiesceRoot ( Window  w,
int  depth_left,
Move best_move,
DualThreatmateState  threatmate 
) [inline, protected]
template<class EvalT >
template<osl::Player P>
int osl::search::AlphaBeta2Tree< EvalT >::quiesceStable ( Window  w  )  [inline, protected]
template<class EvalT >
template<osl::Player P>
bool osl::search::AlphaBeta2Tree< EvalT >::quiesceWithMove ( Move  move,
Window w,
int  depth_left,
Move best_move,
int &  best_value,
const DualThreatmateState threatmate 
) [inline, protected]
template<class EvalT >
int osl::search::AlphaBeta2Tree< EvalT >::rootAlpha ( Player  P,
int  last_value,
Progress16  progress 
) [inline, static]
template<class EvalT >
template<osl::Player Turn>
int osl::search::AlphaBeta2Tree< EvalT >::searchAllMoves ( Move  m,
int  limit_consumption,
SimpleHashRecord record,
Window  w 
) [inline, protected]
template<class EvalT >
template<osl::Player P>
int osl::search::AlphaBeta2Tree< EvalT >::searchAllMoves ( SimpleHashRecord record,
Window  w 
) [inline, protected]

alphaBeta2.cc558 行で定義されています。

参照先 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().

template<class EvalT >
void osl::search::AlphaBeta2Tree< EvalT >::showFailLow ( int  result,
Move  m 
) const [inline, protected]
template<class EvalT >
void osl::search::AlphaBeta2Tree< EvalT >::showPV ( std::ostream &  os,
int  result,
Move  m,
char  stable 
) const [inline, private]
template<class EvalT >
int osl::search::AlphaBeta2Tree< EvalT >::stableThreshold ( Player  P,
int  last_value 
) [inline, static]
template<class EvalT>
bool osl::search::AlphaBeta2Tree< EvalT >::stopping (  )  const [inline]

osl::search::SearchTimerを再定義しています。

alphaBeta2.h160 行で定義されています。

参照先 osl::search::SearchState2Core::stop_tree.

参照元 osl::search::AlphaBeta2< EvalT >::computeBestMoveIteratively().

template<class EvalT>
void osl::search::AlphaBeta2Tree< EvalT >::testStop (  )  [inline]
template<class EvalT >
template<osl::Player P>
void osl::search::AlphaBeta2Tree< EvalT >::testThreatmate ( SimpleHashRecord record,
bool  in_pv 
) [inline, protected]
template<class EvalT>
void osl::search::AlphaBeta2Tree< EvalT >::throwStop (  )  [private]

osl::search::SearchTimerを再定義しています。

template<class EvalT >
template<osl::Player P>
bool osl::search::AlphaBeta2Tree< EvalT >::tryCheckmate ( SimpleHashRecord record,
bool  in_pv,
Move checkmate_move 
) [inline, protected]
template<class EvalT >
template<osl::Player P>
bool osl::search::AlphaBeta2Tree< EvalT >::tryCheckmateAgain ( SimpleHashRecord record,
Move checkmate_move,
int  node_count,
int  best_value 
) [inline, protected]
template<class EvalT >
bool osl::search::AlphaBeta2Tree< EvalT >::tryPass ( SimpleHashRecord record,
Player  P 
) const [inline, protected]
template<class EvalT >
void osl::search::AlphaBeta2Tree< EvalT >::updateCheckmateCount (  )  [inline, protected]
template<class EvalT >
void osl::search::AlphaBeta2Tree< EvalT >::updateRootPV ( Player  P,
std::ostream &  os,
int  result,
Move  m 
) [inline, protected]

フレンドと関連する関数

template<class EvalT>
friend class NextMove< BLACK > [friend]

alphaBeta2.h185 行で定義されています。

template<class EvalT>
friend class NextMove< WHITE > [friend]

alphaBeta2.h187 行で定義されています。

template<class EvalT>
friend class NextQMove< BLACK > [friend]

alphaBeta2.h188 行で定義されています。

template<class EvalT>
friend class NextQMove< WHITE > [friend]

alphaBeta2.h190 行で定義されています。


変数

template<class EvalT>
stat::Average osl::search::AlphaBeta2Tree< EvalT >::alpha_update [protected]
template<class EvalT>
osl::CArray< int, osl::search::SearchState2Core::MaxDepth > osl::search::AlphaBeta2Tree< EvalT >::depth_node_count [inline, static, protected]
template<class EvalT>
stat::Average osl::search::AlphaBeta2Tree< EvalT >::ext [protected]
template<class EvalT>
stat::Average osl::search::AlphaBeta2Tree< EvalT >::ext_limit [protected]
template<class EvalT>
FixedCapacityVector<MoveGenerator*, MaxDepth> osl::search::AlphaBeta2Tree< EvalT >::generators [protected]
template<class EvalT>
stat::Average osl::search::AlphaBeta2Tree< EvalT >::last_alpha_update [protected]
template<class EvalT>
stat::Average osl::search::AlphaBeta2Tree< EvalT >::mpn [protected]
template<class EvalT>
stat::Average osl::search::AlphaBeta2Tree< EvalT >::mpn_cut [protected]
template<class EvalT>
size_t osl::search::AlphaBeta2Tree< EvalT >::node_count [protected]
template<class EvalT>
boost::shared_ptr<AlphaBeta2Parallel<EvalT> > osl::search::AlphaBeta2Tree< EvalT >::shared [protected]
template<class EvalT>
boost::shared_ptr<AlphaBeta2SharedRoot> osl::search::AlphaBeta2Tree< EvalT >::shared_root [protected]

このクラスの説明は次のファイルから生成されました:
 全て クラス ネームスペース ファイル 関数 変数 型定義 列挙型 列挙型の値 フレンド マクロ定義
Sun May 16 09:58:49 2010に生成されました。  doxygen 1.6.3