Esempio n. 1
0
 /** <summary> Creates <c>literal * coeff</c>.</summary> */
 public static LinearExpr Term(ILiteral literal, long coeff)
 {
     if (literal is BoolVar boolVar)
     {
         return(Prod(boolVar, coeff));
     }
     else
     {
         return(Affine(literal.NotAsExpr(), -coeff, coeff));
     }
 }
Esempio n. 2
0
 /** <summary> Adds <c>literal * coefficient</c> to the builder.</summary> */
 public LinearExprBuilder AddTerm(ILiteral literal, long coefficient)
 {
     if (literal is BoolVar boolVar)
     {
         terms_.Add(new Term(boolVar, coefficient));
     }
     else
     {
         offset_ += coefficient;
         terms_.Add(new Term(literal.NotAsExpr(), -coefficient));
     }
     return(this);
 }
Esempio n. 3
0
        public void LinearExprNotBoolVarOperatorTest()
        {
            Console.WriteLine("LinearExprBoolVarNotOperatorTest");
            CpModel    model = new CpModel();
            ILiteral   v     = model.NewBoolVar("v");
            LinearExpr e     = v.NotAsExpr() * 2;

            Console.WriteLine(e);
            e = 2 * v.NotAsExpr();
            Console.WriteLine(e);
            e = v.NotAsExpr() + 2;
            Console.WriteLine(e);
            e = 2 + v.NotAsExpr();
            Console.WriteLine(e);
            e = v.NotAsExpr();
            Console.WriteLine(e);
            e = -v.NotAsExpr();
            Console.WriteLine(e);
            e = 1 - v.NotAsExpr();
            Console.WriteLine(e);
            e = v.NotAsExpr() - 1;
            Console.WriteLine(e);
        }