diff --git a/playshogi-library-shogi-engine/src/main/java/com/playshogi/library/shogi/engine/EngineConfiguration.java b/playshogi-library-shogi-engine/src/main/java/com/playshogi/library/shogi/engine/EngineConfiguration.java index eee6e7c7..c83e0817 100644 --- a/playshogi-library-shogi-engine/src/main/java/com/playshogi/library/shogi/engine/EngineConfiguration.java +++ b/playshogi-library-shogi-engine/src/main/java/com/playshogi/library/shogi/engine/EngineConfiguration.java @@ -12,7 +12,7 @@ public class EngineConfiguration { "MorePreciseMatePv value false"}, 1); public static final EngineConfiguration INSIGHTS_ENGINE = new EngineConfiguration("/home/jean/shogi/engines" + "/YaneuraOu/source/", "./YaneuraOu-by-gcc", - new String[]{"setoption name MultiPV value 3"}, 3); + new String[]{"setoption name MultiPV value 5"}, 5); private final File path; private final String command; diff --git a/playshogi-library-shogi-engine/src/main/java/com/playshogi/library/shogi/engine/QueuedKifuAnalyzer.java b/playshogi-library-shogi-engine/src/main/java/com/playshogi/library/shogi/engine/QueuedKifuAnalyzer.java index 85a6aa10..c680e4d4 100644 --- a/playshogi-library-shogi-engine/src/main/java/com/playshogi/library/shogi/engine/QueuedKifuAnalyzer.java +++ b/playshogi-library-shogi-engine/src/main/java/com/playshogi/library/shogi/engine/QueuedKifuAnalyzer.java @@ -36,9 +36,9 @@ public enum Status { private final USIConnector usiConnector; private volatile boolean shutdown = false; - private final Map> kifuEvaluations = new ConcurrentHashMap<>(); - private final Map insights = new ConcurrentHashMap<>(); - private final Map kifuStatus = new ConcurrentHashMap<>(); + private final Map> kifuEvaluations = new ConcurrentHashMap<>(); // key: kifu USF + private final Map insights = new ConcurrentHashMap<>(); // key: kifu USF + private final Map kifuStatus = new ConcurrentHashMap<>(); // key: kifu USF public QueuedKifuAnalyzer(final EngineConfiguration engineConfiguration) { usiConnector = new USIConnector(engineConfiguration); diff --git a/playshogi-website/playshogi-website-client/src/main/java/com/playshogi/website/gwt/client/widget/engine/PositionEvaluationDetailsPanel.java b/playshogi-website/playshogi-website-client/src/main/java/com/playshogi/website/gwt/client/widget/engine/PositionEvaluationDetailsPanel.java index a96d3047..02f8f406 100644 --- a/playshogi-website/playshogi-website-client/src/main/java/com/playshogi/website/gwt/client/widget/engine/PositionEvaluationDetailsPanel.java +++ b/playshogi-website/playshogi-website-client/src/main/java/com/playshogi/website/gwt/client/widget/engine/PositionEvaluationDetailsPanel.java @@ -250,13 +250,13 @@ public void onPositionEvaluationEvent(final PositionEvaluationEvent event) { private void showEvaluation() { if (evaluation != null) { - PrincipalVariationDetails[] principalVariationHistory = evaluation.getPrincipalVariationHistory(); + PrincipalVariationDetails[] topPrincipalVariations = evaluation.getTopPrincipalVariations(); TsumeAnalysisDetails tsumeAnalysis = evaluation.getTsumeAnalysis(); - if (principalVariationHistory != null) { - table.setRowCount(principalVariationHistory.length); - ArrayList list = new ArrayList<>(principalVariationHistory.length); - for (int i = principalVariationHistory.length - 1; i >= 0; i--) { - list.add(principalVariationHistory[i]); + if (topPrincipalVariations != null) { + table.setRowCount(topPrincipalVariations.length); + ArrayList list = new ArrayList<>(topPrincipalVariations.length); + for (PrincipalVariationDetails topPrincipalVariation : topPrincipalVariations) { + list.add(topPrincipalVariation); } table.setRowData(0, list); } else if (tsumeAnalysis != null) { diff --git a/playshogi-website/playshogi-website-server/src/main/java/com/playshogi/website/gwt/server/services/KifuServiceImpl.java b/playshogi-website/playshogi-website-server/src/main/java/com/playshogi/website/gwt/server/services/KifuServiceImpl.java index bef55243..1df19b5c 100644 --- a/playshogi-website/playshogi-website-server/src/main/java/com/playshogi/website/gwt/server/services/KifuServiceImpl.java +++ b/playshogi-website/playshogi-website-server/src/main/java/com/playshogi/website/gwt/server/services/KifuServiceImpl.java @@ -45,7 +45,7 @@ public class KifuServiceImpl extends RemoteServiceServlet implements KifuService private final QueuedTsumeSolver queuedTsumeSolver = new QueuedTsumeSolver(EngineConfiguration.TSUME_ENGINE); private final TsumeEscapeSolver tsumeEscapeSolver = new TsumeEscapeSolver(queuedTsumeSolver); - private final QueuedKifuAnalyzer queuedKifuAnalyzer = new QueuedKifuAnalyzer(EngineConfiguration.NORMAL_ENGINE); + private final QueuedKifuAnalyzer queuedKifuAnalyzer = new QueuedKifuAnalyzer(EngineConfiguration.INSIGHTS_ENGINE); private final KifuSearchManager kifuSearchManager = new KifuSearchManager(); @@ -422,6 +422,8 @@ private PositionEvaluationDetails convertPositionEvaluation(final PositionEvalua details.setPonderMove(evaluation.getPonderMove()); details.setPrincipalVariationHistory(evaluation.getPrincipalVariationsHistory().stream().map( this::convertPrincipalVariation).toArray(PrincipalVariationDetails[]::new)); + details.setTopPrincipalVariations(evaluation.getMultiVariations().getVariations().stream().map( + this::convertPrincipalVariation).toArray(PrincipalVariationDetails[]::new)); return details; } diff --git a/playshogi-website/playshogi-website-shared/src/main/java/com/playshogi/website/gwt/shared/models/PositionEvaluationDetails.java b/playshogi-website/playshogi-website-shared/src/main/java/com/playshogi/website/gwt/shared/models/PositionEvaluationDetails.java index 927e4c86..8bf5ab33 100644 --- a/playshogi-website/playshogi-website-shared/src/main/java/com/playshogi/website/gwt/shared/models/PositionEvaluationDetails.java +++ b/playshogi-website/playshogi-website-shared/src/main/java/com/playshogi/website/gwt/shared/models/PositionEvaluationDetails.java @@ -7,6 +7,7 @@ public class PositionEvaluationDetails implements Serializable { private String sfen; private PrincipalVariationDetails[] principalVariationHistory; // Index 0 is oldest (least accurate) eval + private PrincipalVariationDetails[] topPrincipalVariations; // Index 0 is the best line private String bestMove; private String ponderMove; private TsumeAnalysisDetails tsumeAnalysis; @@ -30,6 +31,14 @@ public void setPrincipalVariationHistory(PrincipalVariationDetails[] principalVa this.principalVariationHistory = principalVariationHistory; } + public PrincipalVariationDetails[] getTopPrincipalVariations() { + return topPrincipalVariations; + } + + public void setTopPrincipalVariations(final PrincipalVariationDetails[] topPrincipalVariations) { + this.topPrincipalVariations = topPrincipalVariations; + } + public String getBestMove() { return bestMove; } @@ -59,6 +68,7 @@ public String toString() { return "PositionEvaluationDetails{" + "sfen='" + sfen + '\'' + ", principalVariationHistory=" + Arrays.toString(principalVariationHistory) + + ", topPrincipalVariations=" + Arrays.toString(topPrincipalVariations) + ", bestMove='" + bestMove + '\'' + ", ponderMove='" + ponderMove + '\'' + ", tsumeAnalysis=" + tsumeAnalysis +