/// <summary> /// Extract a snapshot from the constraint network. /// </summary> /// <param name="constraintNetwork">Constraint network.</param> /// <param name="solutionSnapshot">Solution snapshot.</param> /// <returns>True if a snapshot was extracted, False if the snapshot could not be extracted.</returns> internal bool ExtractFrom(ConstraintNetwork constraintNetwork, out SolutionSnapshot solutionSnapshot) { _constraintNetwork = constraintNetwork; var solverVariables = constraintNetwork.GetSolverVariables(); var assignment = new SnapshotLabelAssignment(solverVariables); _variables = new List <VariableBase>(constraintNetwork.GetVariables()); var status = Backtrack(0, assignment, constraintNetwork); solutionSnapshot = status ? ConvertSnapshotFrom(assignment, constraintNetwork) : SolutionSnapshot.Empty; return(status); }
/// <summary> /// Create a simple workspace model. /// </summary> /// <returns>A simple workspace model.</returns> internal WorkspaceModel Create() { var newWorkspace = new WorkspaceBuilder("An example model for no particular purpose.") .AddSingleton("x", "z") .AddAggregate("y", 10, "1..9") .WithConstraintExpression("x > 1") .WithSharedDomain("z", "1..10") .Build(); var xVariable = newWorkspace.Model.GetVariableByName("x"); var valueOfX = new SingletonVariableLabelModel((SingletonVariableModel)xVariable, new ValueModel(1)); var snapshot = new SolutionSnapshot(new List <SingletonVariableLabelModel> { valueOfX }, Enumerable.Empty <AggregateVariableLabelModel>(), Enumerable.Empty <BucketLabelModel>()); newWorkspace.Solution = new SolutionModel(newWorkspace.Model, snapshot, TimeSpan.Zero); return(newWorkspace); }
/// <summary> /// Initialize a snapshot extractor with an or-tools cache and a value mapper. /// </summary> /// <param name="theOrToolsCache">or-tools cache.</param> /// <param name="theValueMapper">Value mapper between domain and solver values.</param> internal OrSnapshotExtractor(OrToolsCache theOrToolsCache, OrValueMapper theValueMapper) { this.orToolsCache = theOrToolsCache; this.valueMapper = theValueMapper; this.snapshot = new SolutionSnapshot(); }
internal VisualizerRepeater(SolutionSnapshot theSnapshot) { this.snapshot = theSnapshot; }
internal PropertyUpdateInterpreter(PropertyUpdateContext theContext) { _snapshot = theContext.Snapshot; }
/// <summary> /// Initialize the solution result with status and solution. /// </summary> /// <param name="theStatus">Solve status.</param> /// <param name="theSnapshot">A solution snapshot.</param> /// <param name="duration">Time taken to solve.</param> public SolveResult(SolveStatus theStatus, SolutionSnapshot theSnapshot, TimeSpan duration) { this.Status = theStatus; this.Snapshot = theSnapshot; this.Duration = duration; }