Esempio n. 1
0
        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);
        }
Esempio n. 2
0
    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());
    }