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(); }
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(); }
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(); }