AlphaBeta の書き直し版. [詳細]
#include <alphaBeta2.h>


Public 型 | |
| typedef AlphaBeta2Tree< EvalT > | base_t |
| typedef base_t::checkmate_t | checkmate_t |
| typedef base_t::Window | Window |
Public メソッド | |
| AlphaBeta2 (const NumEffectState &s, checkmate_t &checker, SimpleHashTable *t, CountRecorder &) | |
| ~AlphaBeta2 () | |
| template<Player P> | |
| int | alphaBetaSearchRoot (Window window, MoveLogProb &best_move, int limit) |
| entrance of alpha beta window search. | |
| int | alphaBetaSearchRoot (Window window, MoveLogProb &best_move, int limit) |
| int | alphaBetaSearchRoot (MoveLogProb &best_move, int limit) |
| Move | computeBestMoveIteratively (int limit, const int step=100, int initialLimit=600, size_t nodeLimit=1600000, const TimeAssigned &assign=TimeAssigned(MilliSeconds::Interval(60 *1000)), MoveWithComment *additional_info=0) |
| entrance of alpha beta iterative search. | |
| bool | isReasonableMove (Move move, int pawn_sacrifice=1) |
| void | setRootIgnoreMoves (const MoveVector *rim, bool prediction) |
| void | enableMultiPV (unsigned int width) |
| const AlphaBeta2SharedRoot | sharedRootInfo () const |
| void | setRoot (int limit) |
| root で limitを閾値に探索を始めることを設定 | |
| void | makeMove (Move) |
Static Public メソッド | |
| static const Window | fullWindow (Player P) |
| static void | showNodeDepth (std::ostream &) |
| static void | clearNodeDepth () |
Private 型 | |
| enum | PVCheckmateStatus { PVStable, PVThreatmateNotRecord, PVThreatmate, PVCheckmate } |
Private メソッド | |
| PVCheckmateStatus | findCheckmateInPV (int verify_node, CArray< bool, 2 > &king_in_threat) |
AlphaBeta の書き直し版.
alphaBeta2.h の 275 行で定義されています。
| typedef AlphaBeta2Tree<EvalT> osl::search::AlphaBeta2< EvalT >::base_t |
alphaBeta2.h の 279 行で定義されています。
| typedef base_t::checkmate_t osl::search::AlphaBeta2< EvalT >::checkmate_t |
osl::search::SearchState2Coreを再定義しています。
alphaBeta2.h の 280 行で定義されています。
| typedef base_t::Window osl::search::AlphaBeta2< EvalT >::Window |
osl::search::AlphaBeta2Tree< EvalT >を再定義しています。
alphaBeta2.h の 281 行で定義されています。
enum osl::search::AlphaBeta2::PVCheckmateStatus [private] |
alphaBeta2.h の 335 行で定義されています。
| osl::search::AlphaBeta2< EvalT >::AlphaBeta2 | ( | const NumEffectState & | s, | |
| checkmate_t & | checker, | |||
| SimpleHashTable * | t, | |||
| CountRecorder & | r | |||
| ) | [inline] |
| osl::search::AlphaBeta2< EvalT >::~AlphaBeta2 | ( | ) | [inline] |
alphaBeta2.cc の 1580 行で定義されています。
| int osl::search::AlphaBeta2< EvalT >::alphaBetaSearchRoot | ( | MoveLogProb & | best_move, | |
| int | limit | |||
| ) | [inline] |
alphaBeta2.cc の 1664 行で定義されています。
参照先 osl::search::AlphaBeta2< EvalT >::alphaBetaSearchRoot(), osl::search::AlphaBeta2Common< EvalT >::eval, osl::OslConfig::forceRootNullWindow(), osl::search::AlphaBeta2< EvalT >::fullWindow(), osl::search::AlphaBeta2Window::isConsistent(), osl::newPtypeO(), osl::PAWN, osl::OslConfig::rootNullWindow(), osl::search::SearchState2Core::state(), osl::OslConfig::usiOutputPawnValue(), と osl::WHITE.
| int osl::search::AlphaBeta2< EvalT >::alphaBetaSearchRoot | ( | Window | window, | |
| MoveLogProb & | best_move, | |||
| int | limit | |||
| ) | [inline] |
alphaBeta2.h の 300 行で定義されています。
| int osl::search::AlphaBeta2< EvalT >::alphaBetaSearchRoot | ( | Window | window, | |
| MoveLogProb & | best_move, | |||
| int | limit | |||
| ) | [inline] |
entrance of alpha beta window search.
see http://www.logos.t.u-tokyo.ac.jp/~gekisashi/algorithm/re_search.html. rootDepth, curLimit are initialized here.
alphaBeta2.cc の 1956 行で定義されています。
参照先 osl::search::CountRecorder::allNodeCount(), osl::search::SimpleHashTable::allocate(), osl::search::AlphaBeta2Window::alpha(), osl::alt(), osl::search::CountRecorder::backFromCheckmateSearch(), osl::search::SimpleHashRecord::bestMove(), osl::search::QuiescenceRecord::bestMove(), osl::search::AlphaBeta2Window::beta(), osl::eval::betterThan(), osl::search::SearchState2Core::checkmate_searcher, osl::search::QuiescenceRecord::checkmateNodesLeft(), osl::search::SearchState2Core::checkmateSearcher(), osl::search::SearchState2Core::curDepth(), osl::search::SearchState2::curLimit(), osl::search::SearchState2Core::currentHash(), osl::eval::delta(), osl::search::SearchTimer::elapsed(), osl::search::AlphaBeta2Common< EvalT >::eval, osl::container::GeneralSimpleHashTable< Record >::find(), osl::Move::from(), osl::search::AlphaBeta2< EvalT >::fullWindow(), osl::search::MoveGenerator::generateAll(), osl::MoveLogProb::getMove(), osl::search::CountRecorder::gotoCheckmateSearch(), osl::search::SimpleHashRecord::hasGreaterLowerBound(), osl::search::SearchState2Core::hasLastRecord(), osl::search::SearchTimer::hasMonitor(), osl::search::SimpleHashRecord::hasUpperBound(), osl::search::SearchTable::HistorySpecialDepth, osl::search::MoveGenerator::init(), osl::Move::INVALID(), osl::Move::isDrop(), osl::Move::isNormal(), osl::search::DualThreatmateState::isThreatmate(), osl::search::SimpleHashTable::isVerbose(), osl::search::FixedEval::isWinValue(), osl::KING, osl::search::SearchState2Core::lastRecord(), osl::OslConfig::lock_io, osl::search::AlphaBeta2Tree< EvalT >::makeGenerator(), osl::eval::max(), osl::eval::min(), osl::search::SearchTimer::monitors(), moves, osl::newPtypeO(), osl::search::SearchState2Core::node_type, osl::PieceStand::order, osl::search::AlphaBeta2Common< EvalT >::PASS, osl::PAWN, osl::search::AlphaBeta2Common< EvalT >::prediction_for_speculative_search, osl::Move::ptype(), osl::search::SearchState2Core::pv, osl::search::SearchState2Core::PvNode, osl::search::SimpleHashRecord::qrecord, osl::search::SearchBase< EvalT, SimpleHashTable, CountRecorder, RealizationProbability >::recorder, osl::search::SearchBase< EvalT, SimpleHashTable, CountRecorder, RealizationProbability >::recordLoseByCheckmate(), osl::search::SearchBase< EvalT, SimpleHashTable, CountRecorder, RealizationProbability >::recordWinByCheckmate(), osl::search::SimpleHashRecord::resetValue(), osl::search::SearchState2Core::restoreRootState(), result, osl::search::AlphaBeta2Common< EvalT >::root_ignore_moves, osl::search::AlphaBeta2Tree< EvalT >::rootAlpha(), osl::search::AlphaBeta2Common< EvalT >::rootLimitBias(), osl::search::SearchState2Core::rootRecord(), osl::search::SimpleHashRecord::setInCheck(), osl::search::SimpleHashRecord::setLowerBound(), osl::search::AlphaBeta2< EvalT >::setRoot(), osl::search::SearchState2Core::setRootRecord(), osl::search::SearchTimer::setStable(), osl::search::DualThreatmateState::setThreatmate(), osl::search::AlphaBeta2Tree< EvalT >::shared, osl::search::AlphaBeta2Tree< EvalT >::shared_root, osl::search::AlphaBeta2Tree< EvalT >::showFailLow(), osl::search::TimeAssigned::standard, osl::search::SearchState2Core::state(), osl::search::SearchTimer::stopNow(), osl::search::SearchBase< EvalT, SimpleHashTable, CountRecorder, RealizationProbability >::table, osl::search::AlphaBeta2Tree< EvalT >::testStop(), osl::search::SimpleHashRecord::threatmate(), osl::search::SearchTimer::timeAssigned(), osl::Move::to(), osl::search::AlphaBeta2Tree< EvalT >::updateCheckmateCount(), osl::search::AlphaBeta2Tree< EvalT >::updateRootPV(), osl::search::SimpleHashRecord::upperBound(), osl::OslConfig::usiOutputPawnValue(), osl::MoveLogProb::validMove(), osl::search::SimpleHashTable::verboseLevel(), と osl::search::FixedEval::winByCheckmate().
参照元 osl::search::AlphaBeta2< EvalT >::alphaBetaSearchRoot(), と osl::search::AlphaBeta2< EvalT >::computeBestMoveIteratively().
| void osl::search::AlphaBeta2< EvalT >::clearNodeDepth | ( | ) | [inline, static] |
| osl::Move osl::search::AlphaBeta2< EvalT >::computeBestMoveIteratively | ( | int | limit, | |
| const int | step = 100, |
|||
| int | initialLimit = 600, |
|||
| size_t | nodeLimit = 1600000, |
|||
| const TimeAssigned & | assign = TimeAssigned(MilliSeconds::Interval(60*1000)), |
|||
| MoveWithComment * | additional_info = 0 | |||
| ) | [inline] |
entrance of alpha beta iterative search.
alphaBeta2.cc の 1682 行で定義されています。
参照先 osl::search::SimpleHashRecord::addNodeCount(), osl::search::AlphaBeta2Tree< EvalT >::alpha_update, osl::search::AlphaBeta2< EvalT >::alphaBetaSearchRoot(), osl::ctime_r(), osl::search::SearchState2Core::currentHash(), osl::search::MoveWithComment::elapsed, osl::search::SearchTimer::elapsed(), osl::search::AlphaBeta2Common< EvalT >::eval, osl::search::AlphaBeta2Tree< EvalT >::ext, osl::search::AlphaBeta2Tree< EvalT >::ext_limit, osl::container::GeneralSimpleHashTable< Record >::find(), osl::search::AlphaBeta2< EvalT >::findCheckmateInPV(), finish(), osl::search::CountRecorder::finishSearch(), osl::OslConfig::forceRootNullWindow(), osl::move_generator::capture::generate(), osl::stat::Average::getAverage(), osl::MoveLogProb::getMove(), osl::search::SearchTimer::hasSchedule(), osl::search::SearchTable::HistorySpecialDepth, osl::Move::INVALID(), osl::Move::isNormal(), osl::search::SearchTimer::isStableNow(), osl::search::SimpleHashTable::isVerbose(), osl::search::AlphaBeta2Tree< EvalT >::last_alpha_update, osl::search::SimpleHashRecord::lowerBound(), osl::search::SimpleHashRecord::lowerLimit(), osl::search::TimeAssigned::max, osl::OslConfig::memoryUseRatio(), osl::eval::min(), osl::search::MoveWithComment::move, osl::search::MoveWithComment::moves, moves, osl::search::AlphaBeta2Tree< EvalT >::mpn, osl::search::AlphaBeta2Tree< EvalT >::mpn_cut, osl::search::AlphaBeta2Common< EvalT >::multi_pv, osl::newPtypeO(), osl::search::SearchTimer::nextIterationCoefficient(), osl::search::MoveWithComment::node_count, osl::search::CountRecorder::nodeCount(), osl::search::AlphaBeta2Tree< EvalT >::nodeCount(), osl::search::SearchTimerCommon::NoMoreMemory, osl::search::SearchTimerCommon::NoMoreTime, osl::PAWN, osl::search::AlphaBeta2< EvalT >::PVStable, osl::search::AlphaBeta2< EvalT >::PVThreatmateNotRecord, osl::search::SearchBase< EvalT, SimpleHashTable, CountRecorder, RealizationProbability >::recorder, osl::search::CountRecorder::resetNodeCount(), osl::search::SearchState2::root_limit, osl::search::MoveWithComment::root_limit, osl::search::AlphaBeta2Common< EvalT >::rootLimitBias(), osl::OslConfig::rootNullWindow(), osl::search::SearchTimer::setStable(), osl::search::SearchTimer::setStartTime(), osl::search::SearchTimer::setTimeAssign(), osl::search::AlphaBeta2Tree< EvalT >::shared, osl::search::AlphaBeta2Tree< EvalT >::shared_root, osl::record::csa::show(), osl::search::TimeAssigned::standard, osl::search::CountRecorder::startSearch(), osl::search::SearchState2Core::state(), osl::search::SearchTimerCommon::StopByOutside, osl::search::AlphaBeta2Tree< EvalT >::stopping(), osl::search::SearchTimer::stopReason(), osl::search::SearchBase< EvalT, SimpleHashTable, CountRecorder, RealizationProbability >::table, osl::search::AlphaBeta2Tree< EvalT >::testStop(), osl::search::SearchTimer::timeAssigned(), osl::search::AlphaBeta2Tree< EvalT >::updateCheckmateCount(), osl::search::SimpleHashRecord::upperBound(), osl::OslConfig::usiMode(), osl::OslConfig::usiOutputPawnValue(), osl::search::MoveWithComment::value, osl::search::SimpleHashTable::verboseLevel(), と osl::WHITE.
| void osl::search::AlphaBeta2< EvalT >::enableMultiPV | ( | unsigned int | width | ) | [inline] |
alphaBeta2.h の 329 行で定義されています。
| osl::search::AlphaBeta2< EvalT >::PVCheckmateStatus osl::search::AlphaBeta2< EvalT >::findCheckmateInPV | ( | int | verify_node, | |
| CArray< bool, 2 > & | king_in_threat | |||
| ) | [inline, private] |
alphaBeta2.cc の 1586 行で定義されています。
参照先 osl::search::SimpleHashTable::allocate(), osl::alt(), osl::search::SearchState2Core::checkmate_searcher, osl::search::DualThreatmateState::isThreatmate(), osl::search::SimpleHashTable::isVerbose(), osl::search::SearchState2Core::isWinningState(), osl::Move::PASS(), osl::search::SearchState2Core::path(), osl::PathEncoding::pushMove(), osl::search::SearchState2Core::pv, osl::search::AlphaBeta2< EvalT >::PVCheckmate, osl::search::AlphaBeta2< EvalT >::PVStable, osl::search::AlphaBeta2< EvalT >::PVThreatmate, osl::search::AlphaBeta2< EvalT >::PVThreatmateNotRecord, osl::search::SearchBase< EvalT, SimpleHashTable, CountRecorder, RealizationProbability >::recordWinByCheckmate(), osl::search::SearchState2::root_limit, osl::search::AlphaBeta2Common< EvalT >::rootLimitBias(), osl::search::DualThreatmateState::setThreatmate(), osl::search::AlphaBeta2Tree< EvalT >::shared_root, osl::record::csa::show(), osl::search::SearchState2Core::state(), osl::search::SearchBase< EvalT, SimpleHashTable, CountRecorder, RealizationProbability >::table, osl::search::SimpleHashRecord::threatmate(), と osl::search::AlphaBeta2Tree< EvalT >::updateCheckmateCount().
参照元 osl::search::AlphaBeta2< EvalT >::computeBestMoveIteratively().
| static const Window osl::search::AlphaBeta2< EvalT >::fullWindow | ( | Player | P | ) | [inline, static] |
alphaBeta2.h の 296 行で定義されています。
参照先 osl::alt(), と osl::search::FixedEval::winThreshold().
参照元 osl::search::AlphaBeta2< EvalT >::alphaBetaSearchRoot().
| bool osl::search::AlphaBeta2< EvalT >::isReasonableMove | ( | Move | move, | |
| int | pawn_sacrifice = 1 | |||
| ) | [inline] |
alphaBeta2.cc の 2375 行で定義されています。
| void osl::search::AlphaBeta2< EvalT >::makeMove | ( | Move | move | ) | [inline] |
osl::search::SearchState2Coreを再定義しています。
alphaBeta2.cc の 2359 行で定義されています。
参照先 osl::search::SimpleHashTable::allocate(), osl::search::SearchState2Core::curDepth(), osl::search::SearchState2::curLimit(), osl::search::SearchState2Core::currentHash(), osl::search::AlphaBeta2Common< EvalT >::eval, osl::search::AlphaBeta2Common< EvalT >::INITIAL, osl::search::AlphaBeta2Common< EvalT >::move_type, osl::search::SearchState2Core::setCurrentRecord(), osl::search::SimpleHashRecord::setInCheck(), osl::search::SearchState2Core::state(), と osl::search::SearchBase< EvalT, SimpleHashTable, CountRecorder, RealizationProbability >::table.
| void osl::search::AlphaBeta2< EvalT >::setRoot | ( | int | limit | ) | [inline] |
root で limitを閾値に探索を始めることを設定
osl::search::SearchState2を再定義しています。
alphaBeta2.cc の 2349 行で定義されています。
参照先 osl::search::SimpleHashTable::allocate(), osl::search::SearchState2Core::curDepth(), osl::search::SearchState2Core::currentHash(), osl::search::AlphaBeta2Common< EvalT >::INITIAL, osl::eval::max(), osl::search::AlphaBeta2Common< EvalT >::move_type, osl::search::SearchState2Core::setRootRecord(), と osl::search::SearchBase< EvalT, SimpleHashTable, CountRecorder, RealizationProbability >::table.
参照元 osl::search::AlphaBeta2< EvalT >::alphaBetaSearchRoot().
| void osl::search::AlphaBeta2< EvalT >::setRootIgnoreMoves | ( | const MoveVector * | rim, | |
| bool | prediction | |||
| ) | [inline] |
| const AlphaBeta2SharedRoot osl::search::AlphaBeta2< EvalT >::sharedRootInfo | ( | ) | const [inline] |
alphaBeta2.h の 330 行で定義されています。
| void osl::search::AlphaBeta2< EvalT >::showNodeDepth | ( | std::ostream & | os | ) | [inline, static] |
1.6.3