3 #ifndef OSL_ALPHA_BETA2_H
4 #define OSL_ALPHA_BETA2_H
20 #include <boost/scoped_array.hpp>
21 #include <boost/noncopyable.hpp>
28 class SimpleHashRecord;
29 class SimpleHashTable;
31 struct MoveWithComment;
66 template <
class EvalT>
78 static int value = 300 + rootLimitBias();
97 : eval(s), root_ignore_moves(0), prediction_for_speculative_search(false),
141 template <
class EvalT>
143 :
public SearchBase<EvalT,SimpleHashTable,CountRecorder,RealizationProbability>,
156 boost::shared_ptr<AlphaBeta2Parallel<EvalT> >
shared;
192 void showPV(std::ostream&,
int,
Move,
char stable)
const;
257 template <Player P>
struct SearchJob;
258 struct SearchJobData;
260 friend struct Shared;
261 friend struct SearchJob<
BLACK>;
262 friend struct SearchJob<
WHITE>;
265 void examineMovesRootPar(
const MoveLogProbVector&,
size_t,
Window,
267 void examineMovesRootPar(
int tree_id);
269 void testMoveRoot(
int tree_id,
const MoveLogProb&);
274 void examineMovesOther(
int tree_id);
276 bool testMoveOther(
int tree_id,
const MoveLogProb&,
size_t index,
bool in_pv);
283 template <
class EvalT>
313 return alphaBetaSearchRoot<BLACK>(window, best_move,
limit);
315 return alphaBetaSearchRoot<WHITE>(window, best_move,
limit);
324 int initialLimit=600,
325 size_t nodeLimit=1600000,
331 assert(!prediction || rim);