14package com.google.ortools.sat;
 
   16import com.google.ortools.sat.CpSolverResponse;
 
   17import com.google.ortools.sat.CpSolverStatus;
 
   18import com.google.ortools.sat.SatParameters;
 
   20import java.util.function.Consumer;
 
   32    this.logCallback = 
null;
 
   33    this.bestBoundCallback = 
null;
 
   34    this.solveWrapper = 
null;
 
 
   39    return solve(model, 
null);
 
 
   49    solveWrapper.setParameters(solveParameters.build());
 
   51      solveWrapper.addSolutionCallback(cb);
 
   53    if (logCallback != 
null) {
 
   54      solveWrapper.addLogCallback(logCallback);
 
   56    if (bestBoundCallback != 
null) {
 
   57      solveWrapper.addBestBoundCallback(bestBoundCallback);
 
   60    solveResponse = solveWrapper.solve(model.
model());
 
   64      solveWrapper.clearSolutionCallback(cb);
 
   66    releaseSolveWrapper(); 
 
   68    return solveResponse.getStatus();
 
 
   79    return solve(model, cb);
 
 
   98    boolean oldValue = solveParameters.getEnumerateAllSolutions();
 
   99    solveParameters.setEnumerateAllSolutions(
true);
 
  101    solveParameters.setEnumerateAllSolutions(oldValue);
 
 
  105  private synchronized void createSolveWrapper() {
 
  109  private synchronized void releaseSolveWrapper() {
 
  115    if (solveWrapper != 
null) {
 
  116      solveWrapper.stopSearch();
 
 
  122    return solveResponse.getObjectiveValue();
 
 
  130    return solveResponse.getBestObjectiveBound();
 
 
  147      return solveResponse.getSolution(index) != 0;
 
  149      return solveResponse.getSolution(-index - 1) == 0;
 
 
  155    return solveResponse;
 
 
  160    return solveResponse.getNumBranches();
 
 
  165    return solveResponse.getNumConflicts();
 
 
  170    return solveResponse.getWallTime();
 
 
  175    return solveResponse.getUserTime();
 
 
  179    return solveResponse.getSufficientAssumptionsForInfeasibilityList();
 
 
  184    return solveParameters;
 
 
  189    this.logCallback = cb;
 
 
  194    this.logCallback = 
null;
 
 
  199    this.bestBoundCallback = cb;
 
 
  204    this.bestBoundCallback = 
null;
 
 
  217    return solveResponse.getSolutionInfo();
 
 
  222  private Consumer<String> logCallback;
 
  223  private Consumer<Double> bestBoundCallback;