Type Alias: SolveResult
SolveResult: {
actualWorkers:number;boundTime:number;cpu:string;duration:number;memoryUsed:number;nbBranches:number;nbConstraints:number;nbFails:number;nbIntervalVars:number;nbIntVars:number;nbLNSSteps:number;nbRestarts:number;nbSolutions:number;objective:ObjectiveValue;objectiveBound:ObjectiveValue;objectiveBoundHistory:ObjectiveBoundEntry[];objectiveHistory:ObjectiveEntry[];objectiveSense:"minimize"|"maximize"|undefined;proof:boolean;solution:Solution;solutionTime:number;solutionValid:true;solver:string; }
Type declaration
actualWorkers
actualWorkers:
number
Number of worker threads actually used during solving.
Returns
Worker count.
Remarks
This is the actual number of workers used by the solver, which may differ from the requested Parameters.nbWorkers if that parameter was not specified (auto-detect) or if the system has fewer cores than requested.
boundTime?
optionalboundTime:number
Time of the last objective bound improvement.
Returns
The time in seconds, or None if no bound was proved.
Remarks
The time is measured from the start of the solve, in seconds.
Returns None when no bound was proved during the solve.
cpu
cpu:
string
CPU name detected by the solver.
Returns
CPU model name.
Remarks
Contains the CPU model name as detected by the operating system.
duration
duration:
number
Total duration of the solve in seconds.
Returns
Seconds elapsed.
memoryUsed
memoryUsed:
number
Memory used by the solver in bytes.
Returns
Bytes used.
nbBranches
nbBranches:
number
Total number of branches explored during the solve.
Returns
Branch count.
nbConstraints
nbConstraints:
number
Number of constraints in the model.
Returns
Constraint count.
nbFails
nbFails:
number
Total number of failures encountered during the solve.
Returns
Failure count.
nbIntervalVars
nbIntervalVars:
number
Number of interval variables in the model.
Returns
Interval variable count.
nbIntVars
nbIntVars:
number
Number of integer variables in the model.
Returns
Integer variable count.
nbLNSSteps
nbLNSSteps:
number
Total number of Large Neighborhood Search steps.
Returns
LNS step count.
nbRestarts
nbRestarts:
number
Total number of restarts performed during the solve.
Returns
Restart count.
nbSolutions
nbSolutions:
number
Number of solutions found during the solve.
Returns
Solution count.
objective?
optionalobjective:ObjectiveValue
Best objective value found (for optimization problems).
Returns
The objective value, or None if not applicable.
Remarks
The value is None when:
- No objective was specified in the model (no Model.minimize or Model.maximize call).
- No solution was found.
- The objective expression has an absent value in the best solution.
objectiveBound?
optionalobjectiveBound:ObjectiveValue
Proved bound on the objective value.
Returns
The objective bound, or None if no bound was proved.
Remarks
For minimization problems, this is a lower bound: the solver proved that no solution exists with an objective value less than this bound.
For maximization problems, this is an upper bound: the solver proved that no solution exists with an objective value greater than this bound.
The value is None when no bound was proved or for satisfaction problems.
objectiveBoundHistory
objectiveBoundHistory:
ObjectiveBoundEntry[]
History of objective bound improvements during the solve.
Returns
Sequence of bound entries, one per bound improvement.
Remarks
Returns a sequence of ObjectiveBoundEntry objects, one for each bound improvement proved during the solve.
Each entry contains:
- ObjectiveBoundEntry.solveTime: When the bound was proved
- ObjectiveBoundEntry.value: The bound value
For minimization problems, these are lower bounds. For maximization problems, these are upper bounds. The entries are ordered chronologically by solve time.
objectiveHistory
objectiveHistory:
ObjectiveEntry[]
History of objective value improvements during the solve.
Returns
Sequence of objective entries, one per solution found.
Remarks
Returns a sequence of ObjectiveEntry objects, one for each solution found during the solve.
Each entry contains:
- ObjectiveEntry.solveTime: When the solution was found
- ObjectiveEntry.objective: The objective value of that solution
- ObjectiveEntry.valid: Whether the solution was verified
The entries are ordered chronologically by solve time.
objectiveSense
objectiveSense:
"minimize"|"maximize"|undefined
Objective direction.
Returns
'minimize', 'maximize', or None for satisfaction problems.
Remarks
Indicates whether the model was a minimization problem, maximization problem, or a satisfaction problem (no objective).
proof
proof:
boolean
Whether the solve ended with a proof (optimality or infeasibility).
Returns
True if the solve completed with a proof.
Remarks
When True, the solver has either:
- Proved optimality (found a solution within the bounds defined by Parameters.absoluteGapTolerance and Parameters.relativeGapTolerance), or
- Proved infeasibility (no solution exists)
When False, the solve was interrupted (e.g., by time limit) before
a proof could be established.
solution?
optionalsolution:Solution
The best solution found during the solve.
Returns
The best solution, or None if no solution was found.
Remarks
For optimization problems, this is the solution with the best objective value. For satisfaction problems, this is the last solution found.
Returns None when no solution was found (the problem may be infeasible
or the solve was interrupted before finding any solution).
solutionTime?
optionalsolutionTime:number
Time when the best solution was found.
Returns
The time in seconds, or None if no solution was found.
Remarks
The time is measured from the start of the solve, in seconds.
Returns None when no solution was found.
solutionValid?
optionalsolutionValid:true
Whether the best solution was verified.
Returns
True if verified, None if verification was not performed.
Remarks
When parameter Parameters.verifySolutions is set to True (the
default), the solver verifies all solutions found. The verification checks
that all constraints in the model are satisfied and that the objective value
is computed correctly.
Possible values:
None- verification was not performed (parameter was not set)True- the solution was verified and correct
The value can never be False because, in that case, the solver would
stop with an error.
solver
solver:
string
Solver name and version string.
Returns
The solver identification string.
Remarks
Contains the solver name followed by its version number.
Remarks
The result returned by Model.solve or Solver.solve.
Contains comprehensive information about the solve:
Solution data:
- SolveResult.solution: The best solution found (or
Noneif no solution exists) - SolveSummary.objective: The objective value of the best solution
- SolveSummary.objectiveBound: The proved bound on the objective
Solve statistics:
- SolveSummary.nbSolutions: Total number of solutions found
- SolveSummary.proof: Whether optimality or infeasibility was proved
- SolveSummary.duration: Total solve time in seconds
History tracking:
- SolveResult.objectiveHistory: When each improving solution was found
- SolveResult.objectiveBoundHistory: When each bound improvement was proved
Example
import * as CP from "optalcp";
const model = new CP.Model();
// ... build model ...
const result = await model.solve();
if (result.solution !== undefined) {
console.log(`Found solution with objective ${result.objective}`);
console.log(`Best solution found at ${result.solutionTime.toFixed(2)}s`);
if (result.proof) {
console.log("Solution is optimal!");
}
} else {
if (result.proof) {
console.log("Problem is infeasible");
} else {
console.log("No solution found within time limit");
}
}