Example #1
0
 private void ExtractSingletonLabelsFrom(SolutionCollector theSolutionCollector)
 {
     foreach (var variableTuple in this.orToolsCache.SingletonVariableMap)
     {
         var solverValue = theSolutionCollector.Value(0, variableTuple.Value.Item2);
         var modelValue  = ConvertSolverValueToModel(variableTuple.Value.Item1, solverValue);
         var newValue    = new SingletonVariableLabelModel(variableTuple.Value.Item1, new ValueModel(modelValue));
         this.snapshot.AddSingletonLabel(newValue);
     }
 }
Example #2
0
        private IEnumerable <SingletonVariableLabelModel> ExtractSingletonLabelsFrom(SnapshotLabelAssignment assignment, ConstraintNetwork constraintNetwork)
        {
            var labelAccumulator = new List <SingletonVariableLabelModel>();

            foreach (var variable in constraintNetwork.GetSingletonVariables())
            {
                var solverVariable      = _modelSolverMap.GetSolverSingletonVariableByName(variable.Name);
                var labelAssignment     = assignment.GetAssignmentFor(solverVariable);
                var variableSolverValue = labelAssignment.Value;
                var variableModel       = _modelSolverMap.GetModelSingletonVariableByName(variable.Name);
                var variableModelValue  = ConvertSolverValueToModel(variableModel, variableSolverValue);
                var label = new SingletonVariableLabelModel(variableModel, new ValueModel(variableModelValue));
                labelAccumulator.Add(label);
            }

            return(labelAccumulator);
        }
        /// <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);
        }
Example #4
0
        private BucketLabelModel ExtractBucketLabelFrom(SnapshotLabelAssignment assignment, OrangeBucketVariableMap bucketVariableMap)
        {
            var bundleLabels = new List <BundleLabelModel>();

            foreach (var bundleMap in bucketVariableMap.GetBundleMaps())
            {
                var variableLabels = new List <SingletonVariableLabelModel>();
                foreach (var variableMap in bundleMap.GetVariableMaps())
                {
                    var solverVariable      = variableMap.SolverVariable;
                    var labelAssignment     = assignment.GetAssignmentFor(solverVariable);
                    var variableSolverValue = labelAssignment.Value;
                    var variableModel       = variableMap.ModelVariable;
                    var variableModelValue  = ConvertSolverValueToModel(bucketVariableMap.Bucket, variableSolverValue);
                    var label = new SingletonVariableLabelModel(variableModel, new ValueModel(variableModelValue));
                    variableLabels.Add(label);
                }
                bundleLabels.Add(new BundleLabelModel(bucketVariableMap.Bucket.Bundle, variableLabels));
            }

            return(new BucketLabelModel(bucketVariableMap.Bucket, bundleLabels));
        }