public void MinAndMaxConstraint()
        {
            Solver     solver = new Solver("TestConstraint");
            IntVar     x      = solver.MakeIntVar(new int[] { 2, 4, -1, 6, 11, 10 }, "x");
            Constraint ct     = new SetMinAndMaxConstraint(solver, x);

            solver.Add(ct);
            DecisionBuilder db = solver.MakePhase(
                x, Solver.CHOOSE_FIRST_UNBOUND, Solver.ASSIGN_MIN_VALUE);

            solver.NewSearch(db);
            Assert.Equal(-1, x.Min());
            Assert.Equal(11, x.Max());

            Assert.True(solver.NextSolution());
            Assert.Equal(6, x.Min());
            Assert.Equal(6, x.Max());

            Assert.True(solver.NextSolution());
            Assert.Equal(10, x.Min());
            Assert.Equal(10, x.Max());

            Assert.False(solver.NextSolution());
            solver.EndSearch();
        }
Exemple #2
0
    static void ConstraintTest()
    {
        Solver     solver = new Solver("TestConstraint");
        IntVar     x      = solver.MakeIntVar(new int[] { 2, 4, -1, 6, 11, 10 }, "x");
        Constraint ct     = new SetMinAndMaxConstraint(solver, x);

        solver.Add(ct);
        DecisionBuilder db = solver.MakePhase(x, Solver.CHOOSE_FIRST_UNBOUND,
                                              Solver.ASSIGN_MIN_VALUE);

        solver.NewSearch(db);
        CheckIntRange(x, -1, 11);
        Check(solver.NextSolution(), "NextSolution() failed");
        CheckIntRange(x, 6, 6);
        Check(solver.NextSolution(), "NextSolution() failed");
        CheckIntRange(x, 10, 10);
        Check(!solver.NextSolution(), "Not expecting a third solution");
        solver.EndSearch();
    }
Exemple #3
0
 static void ConstraintTest() {
   Solver solver = new Solver("TestConstraint");
   IntVar x = solver.MakeIntVar(new int[] {2, 4, -1, 6, 11, 10}, "x");
   Constraint ct = new SetMinAndMaxConstraint(solver, x);
   solver.Add(ct);
   DecisionBuilder db = solver.MakePhase(x, Solver.CHOOSE_FIRST_UNBOUND,
                                         Solver.ASSIGN_MIN_VALUE);
   solver.NewSearch(db);
   CheckIntRange(x, -1, 11);
   Check(solver.NextSolution(), "NextSolution() failed");
   CheckIntRange(x, 6, 6);
   Check(solver.NextSolution(), "NextSolution() failed");
   CheckIntRange(x, 10, 10);
   Check(!solver.NextSolution(), "Not expecting a third solution");
   solver.EndSearch();
 }