Esempio n. 1
0
        /// <summary>
        /// Creates a variable over a specified set of allowed values within a finite domain
        /// </summary>
        public FiniteDomainVariable(ConstraintThingySolver constraintThingySolver, string name, FiniteDomain <T> finiteDomain, params T[] items)
            : base(constraintThingySolver, name, finiteDomain.CreateBitSet(items))
        {
            FiniteDomain = finiteDomain;

            Priority = 1;
        }
Esempio n. 2
0
 internal void MarkForUpdate()
 {
     if (!QueuedForUpdate)
     {
         ConstraintThingySolver.QueueForUpdate(this);
     }
 }
Esempio n. 3
0
        private void ResolveInitialContraints(out bool success)
        {
            foreach (var constraint in Constraints)
            {
                constraint.QueueAllArcs();
            }

            ConstraintThingySolver.ResolveConstraints(out success);
        }
Esempio n. 4
0
        internal void TrySetAndResolveConstraints(T value, out bool success)
        {
            TrySetValue(value, out success);

            if (!success)
            {
                return;
            }

            ConstraintThingySolver.ResolveConstraints(out success);
        }
Esempio n. 5
0
 /// <summary>
 /// Creates a new constraint component
 /// </summary>
 protected ConstraintComponent(ConstraintThingySolver constraintThingySolver)
 {
     ConstraintThingySolver = constraintThingySolver;
 }
Esempio n. 6
0
 internal Solution(ConstraintThingySolver constraintThingySolver, TimeSpan solveTime, uint solutionNumber) : base(constraintThingySolver)
 {
     SolveTime = solveTime;
     ID        = solutionNumber;
 }
Esempio n. 7
0
 /// <summary>
 /// Creates a variable over a specified set of allowed values within a finite domain
 /// </summary>
 public FiniteDomainVariable(ConstraintThingySolver constraintThingySolver, string name, FiniteDomain <T> finiteDomain, IEnumerable <T> items)
     : this(constraintThingySolver, name, finiteDomain, items.ToArray())
 {
 }
Esempio n. 8
0
 protected ConstraintArc(ConstraintThingySolver constraintThingySolver)
     : base(constraintThingySolver)
 {
 }
Esempio n. 9
0
 internal Constraint(ConstraintThingySolver constraintThingySolver)
     : base(constraintThingySolver)
 {
     constraintThingySolver.AddConstraint(this);
 }
Esempio n. 10
0
 /// <summary>
 /// Creates a new integer variable with the specified name and allowable range
 /// </summary>
 public IntegerVariable(ConstraintThingySolver constraintThingySolver, string name, IntegerInterval allowableValues)
     : base(constraintThingySolver, name, allowableValues)
 {
 }
Esempio n. 11
0
 /// <summary>
 /// Creates a new real variable with the specified name and allowable range
 /// </summary>
 public RealVariable(ConstraintThingySolver constraintThingySolver, string name, Interval allowableValues) : base(constraintThingySolver, name, LL.Create <MultiInterval>(allowableValues))
 {
     Precision = DefaultPrecision;
 }
Esempio n. 12
0
        /// <summary>
        /// Saves this variable's current value in the solver's undo stack
        /// </summary>
        protected void SaveValue()
        {
            ConstraintThingySolver.SaveValue(this, AllowableValues, LastSaveFramePointer);

            LastSaveFramePointer = ConstraintThingySolver.CurrentFramePointer;
        }
Esempio n. 13
0
 /// <summary>
 /// Creates a new variable
 /// </summary>
 internal Variable(ConstraintThingySolver constraintThingySolver, String name, T allowableValues) : base(constraintThingySolver, name)
 {
     AllowableValues = allowableValues;
 }
Esempio n. 14
0
 /// <summary>
 /// Creates a new Vector2 variable
 /// </summary>
 public Vector2Variable(ConstraintThingySolver constraintThingySolver)
 {
     X = constraintThingySolver.CreateRealVariable();
     Y = constraintThingySolver.CreateRealVariable();
 }