public static void SendBestMove(ThreadData threadData) { if (NoOutput) { return; } Statistics.Print(); if (UciOptions.Ponder && threadData.GetPonderMove() != 0) { Console.WriteLine("bestmove " + new MoveWrapper(threadData.GetBestMove()) + " ponder " + new MoveWrapper(threadData.GetPonderMove())); } else { Console.WriteLine("bestmove " + new MoveWrapper(threadData.GetBestMove())); } }
private static void DoTest(IReadOnlyCollection <string> epdStrings) { var correctCounter = 0; foreach (var epdString in epdStrings) { var epd = new Epd(epdString); var cb = ChessBoardInstances.Get(0); ChessBoardUtil.SetFen(epd.GetFen(), cb); TimeUtil.Reset(); TimeUtil.SetSimpleTimeWindow(5000); SearchUtil.Start(cb); var bestMove = new MoveWrapper(ThreadData.GetBestMove()); if (epd.IsBestMove) { if (epd.MoveEquals(bestMove)) { Console.WriteLine(epd.GetId() + " BM OK"); correctCounter++; _positionTestOk++; } else { Console.WriteLine(epd.GetId() + " BM NOK " + bestMove + " - " + epd); _positionTestNok++; } } else { if (epd.MoveEquals(bestMove)) { Console.WriteLine(epd.GetId() + " AM NOK " + epd); _positionTestNok++; } else { Console.WriteLine(epd.GetId() + " AM OK"); correctCounter++; _positionTestOk++; } } } Console.WriteLine(correctCounter + "/" + epdStrings.Count); }
private static async Task MaxTimeTask(CancellationToken cancellationToken) { await Task.Delay((int)TimeUtil.GetMaxTimeMs(), cancellationToken); if (cancellationToken.IsCancellationRequested) { return; } if (Pondering) { _maxTimeExceeded = true; } else if (_threadData.GetBestMove() != 0) { Console.WriteLine("info string max time exceeded"); NegamaxUtil.IsRunning = false; } }