public void testEngineAgainstAlphaBeta(MockScorer scorer, int level, MockBoard b) { ABWithHashMoveEngine engine = new ABWithHashMoveEngine(scorer, MoveContainerFactory.buildMoveContainers(level + 1)); AlphaBetaEngine alphaBetaEngine = new AlphaBetaEngine(scorer, MoveContainerFactory.buildMoveContainers(level + 1)); Board b1 = b.copy(); Board b2 = b.copy(); LOGGER.info("Alpha Beta level={}", level); MovePath abMovePath = alphaBetaEngine.search(b1, level); List<Move> alphaBetaMoveList = abMovePath.asList(); LOGGER.info( "AlphaBetaEngine score: {} Move Path: {}", abMovePath.getScore(), MockBoard.movesToString(alphaBetaMoveList)); LOGGER.info("Alpha Beta With hash level={}", level); MovePath mp = engine.iterativeSearch(b2, level); List<Move> engineMoveList = mp.asList(); LOGGER.info( "Alpha Beta with Hash Move score: {} Path: {}", mp.getScore(), MockBoard.movesToString(engineMoveList)); assertThat(alphaBetaMoveList, is(equalTo(engineMoveList))); }
@Test public void eyeBallEngineSpeed() { Board b = JSONParser.getFromSetup( Side.BLACK, new String[] { "r,n,b,q,_,k,_,r,", "p,p,_,P,b,p,p,p,", "_,_,p,_,_,_,_,_,", "_,_,_,_,_,_,_,_,", "_,_,B,_,_,_,_,_,", "_,_,_,_,_,_,_,_,", "P,P,P,_,N,n,P,P,", "R,N,B,Q,K,_,_,R," }); ABWithHashMoveEngine aBWithHashMoveEngine = new ABWithHashMoveEngine(new StaticScorer(), MoveContainerFactory.buildMoveContainers(10)); final long now = System.currentTimeMillis(); MovePath movePath = aBWithHashMoveEngine.iterativeSearch(b, 6); final long timeTaken = System.currentTimeMillis() - now; List<Move> moveList = movePath.asList(); LOGGER.info( "Alpha Beta with Hash Move, Move Path: {}", PGNParser.toAlgebraicNotation(moveList, b)); LOGGER.info("Time Taken: {}", timeTaken); // 1... Nxd1 2.dxc8=Q Qxc8 3.Kxd1 h5 4.g4 }