New extended probcut implementation

Here the idea is to test probcut not only after bad
captures, but after any bad move, i.e. any move that
leaves the opponent with a good capture.

Ported by a patch from Onno, the difference from
original version is that we have moved probcut after
null search.

After 7917 games 4 threads 20"+0.1
Mod vs Orig: 1261 - 1095 - 5561 ELO +7 (+- 4.2) LOS 96%

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
Marco Costalba
2011-05-21 17:17:11 +01:00
parent 462a39ec49
commit fca0a2dd88
4 changed files with 87 additions and 42 deletions

View File

@@ -42,8 +42,8 @@ class MovePicker {
public:
MovePicker(const Position&, Move, Depth, const History&, SearchStack*, Value);
MovePicker(const Position&, Move, Depth, const History&);
MovePicker(const Position&, Move, const History&, int parentCapture);
Move get_next_move();
bool isBadCapture() const;
private:
void score_captures();
@@ -55,7 +55,7 @@ private:
const History& H;
Move ttMove;
MoveStack killers[2];
int badCaptureThreshold, phase;
int captureThreshold, phase;
const uint8_t* phasePtr;
MoveStack *curMove, *lastMove, *lastGoodNonCapture, *badCaptures;
MoveStack moves[MAX_MOVES];