示例#1
0
        /// <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);
        }
示例#3
0
 /// <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;
 }
示例#5
0
 internal PropertyUpdateInterpreter(PropertyUpdateContext theContext)
 {
     _snapshot = theContext.Snapshot;
 }
示例#6
0
 /// <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;
 }