Java 如何获得negamax算法评估所依据的预测移动序列?

Java 如何获得negamax算法评估所依据的预测移动序列?,java,chess,negamax,Java,Chess,Negamax,我的国际象棋算法是基于negamax的。有关部分是: private double deepEvaluateBoard(Board board, int currentDepth, double alpha, double beta, Move initialMove) { if (board.isCheckmate() || board.isDraw() || currentDepth <= 0) { this.moveHistorys.put(i

我的国际象棋算法是基于negamax的。有关部分是:

private double deepEvaluateBoard(Board board, int currentDepth, double alpha, double beta, Move initialMove) {
        if (board.isCheckmate() || board.isDraw() || currentDepth <= 0) {
            this.moveHistorys.put(initialMove, board.getMoveHistory()); // this is not working
            return evaluateBoard(board); // evaluateBoard evaluates from the perspective of color whose turn it is.
        } else {
            double totalPositionValue = -1e40;

            List<Move> allPossibleMoves = board.getAllPossibleMoves();
            for (Move move : allPossibleMoves) {
                board.makeMove(move);
                totalPositionValue = max(-deepEvaluateBoard(board, currentDepth - 1, -beta, -alpha, initialMove), value);
                board.unMakeMove(1);

                alpha = max(alpha, totalPositionValue);
                if (alpha >= beta) {
                    break;
                }
            }

            return totalPositionValue;
        }
    }
private double deepEvaluateBoard(Board Board,int currentDepth,double alpha,double beta,Move initialMove){
if(board.isCheckmate()| | board.isDraw()| | currentDepth=beta){
打破
}
}
返回totalPositionValue;
}
}
如果我能够访问negamax算法评估所基于的移动序列(在决策树上找到评估值),这将大大有助于调试

目前,我正在尝试将线路板的移动历史保存到hashmap中,该hashmap是封闭类的一个字段。但是,由于某些原因,它不起作用,因为生成的移动序列不是最优的


由于对negamax的直觉发展不是很容易,所以我在这一点上的头撞到墙上已经有相当一段时间了。如果有人能给我指出正确的方向,我将不胜感激

一种选择是创建包含评估和移动列表的数据结构。然后在
deepEvaluateBoard()
中,您可以返回移动列表和评估。基本案例将返回一个带评估的空移动列表,其他案例将返回为所选移动返回的评估和移动列表,所选移动将附加到移动列表的开头。一个选项是创建一些同时包含评估和移动列表的数据结构。然后在
deepEvaluateBoard()
中,您可以返回移动列表和评估。基本案例将返回一个带评估的空移动列表,其他案例将返回为所选移动返回的评估和移动列表,所选移动将附加到移动列表的开头。