21 lines
779 B
Python
21 lines
779 B
Python
from lichess_bot.lib.engine_wrapper import MinimalEngine, MOVE
|
|
import chess.engine
|
|
import engine
|
|
|
|
|
|
class ProbStockfish(MinimalEngine):
|
|
def search(self, board: chess.Board, time_limit: chess.engine.Limit, ponder: bool, draw_offered: bool,
|
|
root_moves: MOVE) -> chess.engine.PlayResult:
|
|
moves = {}
|
|
untried_moves = list(board.legal_moves)
|
|
for move in untried_moves:
|
|
mean, std = engine.simulate_stockfish_prob(board, move, 10, 4)
|
|
moves[move] = (mean, std)
|
|
|
|
return self.get_best_move(moves)
|
|
|
|
def get_best_move(self, moves: dict) -> chess.engine.PlayResult:
|
|
best_avg = max(moves.items(), key=lambda m: m[1][0])
|
|
next_move = best_avg[0]
|
|
return chess.engine.PlayResult(next_move, None)
|