public static void main(String[] args) { final int numBuckets = 1046527; AlphaBetaCaching alphaBeta = new AlphaBetaCaching(numBuckets, new AlphaBeta()); int[] myBoard = { 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, -1, 0, 0, 0, 0, 3, 3, 0, 0, -1, -1, 0, 0, 0, 0, 3, 3, -1, -1, -1, -1, 1, 1, 1, 1, 3, 3, -1, 1, -1, -1, 1, 1, 1, 1, 3, 3, -1, -1, -1, 1, 1, 1, -1, 1, 3, 3, -1, -1, -1, -1, 1, 1, 1, 1, 3, 3, 0, 0, -1, 1, -1, 1, 1, 0, 3, 3, 0, -1, -1, -1, -1, -1, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; SetupBoard board = new SetupBoard(); board.resetToStart(); board.setBoard(myBoard); int color = -1; int empties = 19; boolean alreadyPassed = false; Board[] boards = new Board[60]; for (int i = 0; i < boards.length; i++) { boards[i] = new SetupBoard(); } boards[empties] = board; int runs = 500; long beforeTime = System.currentTimeMillis(); int score = 0; for (int i = 0; i < runs; i++) { score = alphaBeta.search( color, boards, empties, alreadyPassed, TreeSearch.negInf, TreeSearch.posInf); } long afterTime = System.currentTimeMillis(); int expectedScore = 8; if (score != expectedScore) { throw new IllegalStateException( "This should have solved to " + expectedScore + " but solved to " + score); } int nodeCount = alphaBeta.getNodeCount(); long totalTime = afterTime - beforeTime; long nodePerMs = nodeCount / totalTime; int numEmptyEntries = alphaBeta.numEmptyCache(); double perEmpty = numEmptyEntries / (double) numBuckets; System.out.println("score:" + score); System.out.println("time:" + totalTime); System.out.println("nodeCount:" + nodeCount); System.out.println("node/ms:" + nodePerMs); System.out.println("%Empty:" + perEmpty); }