evaluation: Evaluate as draw when not known win if may fly (Disabled)
See: http://www.66z66.com/news/?53990.html If enable it, win rate is 24% : 44% : 32% in developer mode.
This commit is contained in:
parent
6b4a5435a1
commit
02c98bc459
|
@ -48,7 +48,8 @@ Value Evaluation::value()
|
|||
|
||||
int pieceInHandDiffCount;
|
||||
int pieceOnBoardDiffCount;
|
||||
int pieceToRemoveCount;
|
||||
int pieceToRemoveCount = (pos.side_to_move() == BLACK) ?
|
||||
pos.piece_to_remove_count() : -pos.piece_to_remove_count();;
|
||||
|
||||
switch (pos.get_phase()) {
|
||||
case Phase::ready:
|
||||
|
@ -67,8 +68,6 @@ Value Evaluation::value()
|
|||
break;
|
||||
|
||||
case Action::remove:
|
||||
pieceToRemoveCount = (pos.side_to_move() == BLACK) ?
|
||||
pos.piece_to_remove_count() : -pos.piece_to_remove_count();
|
||||
value += VALUE_EACH_PIECE_PLACING_NEEDREMOVE * pieceToRemoveCount;
|
||||
break;
|
||||
default:
|
||||
|
@ -90,8 +89,6 @@ Value Evaluation::value()
|
|||
break;
|
||||
|
||||
case Action::remove:
|
||||
pieceToRemoveCount = (pos.side_to_move() == BLACK) ?
|
||||
pos.piece_to_remove_count() : -(pos.piece_to_remove_count());
|
||||
value += VALUE_EACH_PIECE_MOVING_NEEDREMOVE * pieceToRemoveCount;
|
||||
break;
|
||||
default:
|
||||
|
@ -129,6 +126,28 @@ Value Evaluation::value()
|
|||
value = -value;
|
||||
}
|
||||
|
||||
#if EVAL_DRAW_WHEN_NOT_KNOWN_WIN_IF_MAY_FLY
|
||||
if (pos.get_phase() == Phase::moving && rule.mayFly && !rule.hasDiagonalLines) {
|
||||
int piece_on_board_count_future_black = pos.piece_on_board_count(BLACK);
|
||||
int piece_on_board_count_future_white = pos.piece_on_board_count(WHITE);
|
||||
|
||||
if (pos.side_to_move() == BLACK) {
|
||||
piece_on_board_count_future_white -= pos.piece_to_remove_count();
|
||||
}
|
||||
|
||||
if (pos.side_to_move() == WHITE) {
|
||||
piece_on_board_count_future_black -= pos.piece_to_remove_count();
|
||||
}
|
||||
|
||||
|
||||
if (piece_on_board_count_future_white == 3 || piece_on_board_count_future_black == 3) {
|
||||
if (abs(value) < VALUE_KNOWN_WIN) {
|
||||
value = VALUE_DRAW;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
|
|
|
@ -196,7 +196,7 @@ enum Value : int8_t
|
|||
{
|
||||
VALUE_ZERO = 0,
|
||||
VALUE_DRAW = 0,
|
||||
VALUE_KNOWN_WIN = 20,
|
||||
VALUE_KNOWN_WIN = 25,
|
||||
VALUE_UNIQUE = 60,
|
||||
VALUE_MATE = 80,
|
||||
VALUE_INFINITE = 125,
|
||||
|
|
Loading…
Reference in New Issue