14package com.google.ortools.modelbuilder;
16import java.time.Duration;
17import java.util.function.Consumer;
21 static class ModelSolverException
extends RuntimeException {
22 public ModelSolverException(String methodName, String msg) {
24 super(methodName +
": " + msg);
31 this.logCallback =
null;
36 if (logCallback ==
null) {
37 helper.clearLogCallback();
39 helper.setLogCallback(logCallback);
42 if (!helper.hasResponse()) {
45 return helper.getStatus();
50 helper.enableOutput(enable);
55 helper.setTimeLimitInSeconds((
double) limit.toMillis() / 1000.0);
60 helper.setSolverSpecificParameters(parameters);
65 return helper.solverIsSupported();
70 return helper.interruptSolve();
75 return helper.hasResponse();
80 return helper.hasSolution();
85 if (!helper.hasSolution()) {
86 throw new ModelSolverException(
87 "ModelSolver.getObjectiveValue()",
"solve() was not called or no solution was found");
89 return helper.getObjectiveValue();
94 if (!helper.hasSolution()) {
95 throw new ModelSolverException(
96 "ModelSolver.getBestObjectiveBound()",
"solve() was not called or no solution was found");
98 return helper.getBestObjectiveBound();
103 if (!helper.hasSolution()) {
104 throw new ModelSolverException(
105 "ModelSolver.getValue())",
"solve() was not called or no solution was found");
107 return helper.getVariableValue(var.
getIndex());
114 if (!helper.hasSolution()) {
115 throw new ModelSolverException(
116 "ModelSolver.getReducedCost())",
"solve() was not called or no solution was found");
118 return helper.getReducedCost(var.
getIndex());
126 if (!helper.hasSolution()) {
127 throw new ModelSolverException(
128 "ModelSolver.getDualValue())",
"solve() was not called or no solution was found");
130 return helper.getDualValue(ct.
getIndex());
137 if (!helper.hasSolution()) {
138 throw new ModelSolverException(
139 "ModelSolver.getActivity())",
"solve() was not called or no solution was found");
141 return helper.getActivity(ct.
getIndex());
146 this.logCallback = cb;
151 return helper.getWallTime();
156 return helper.getUserTime();
160 private Consumer<String> logCallback;