public void NegativeIntVar() { CpModel model = new CpModel(); IntVar boolvar = model.NewBoolVar("boolvar"); IntVar x = model.NewIntVar(0, 10, "x"); IntVar delta = model.NewIntVar(-5, 5, "delta"); IntVar squaredDelta = model.NewIntVar(0, 25, "squaredDelta"); model.Add(x == boolvar * 4); model.Add(delta == x - 5); model.AddProdEquality(squaredDelta, new IntVar[] { delta, delta }); model.Minimize(squaredDelta); // Console.WriteLine("model = " + model.Model.ToString()); CpSolver solver = new CpSolver(); CpSolverStatus status = solver.Solve(model); CpSolverResponse response = solver.Response; Console.WriteLine("response = " + response.ToString()); Assert.Equal(CpSolverStatus.Optimal, status); Assert.Equal(1, solver.Value(boolvar)); Assert.Equal(4, solver.Value(x)); Assert.Equal(-1, solver.Value(delta)); Assert.Equal(1, solver.Value(squaredDelta)); Assert.Equal(new long[] { 1, 4, -1, 1 }, response.Solution); Assert.Equal(1.0, response.ObjectiveValue, 5); }
static void TestSimpleLinearModel2() { CpModelProto model = new CpModelProto(); model.Variables.Add(NewIntegerVariable(-10, 10)); model.Variables.Add(NewIntegerVariable(-10, 10)); model.Constraints.Add(NewLinear2(0, 1, 1, 1, -1000000, 100000)); model.Objective = NewMaximize2(0, 1, 1, -2); CpSolverResponse response = SatHelper.Solve(model); Console.WriteLine("model = " + model.ToString()); Console.WriteLine("response = " + response.ToString()); }