public void Test() { Solver solver = new Solver( -100, 100 ); FltVar a = new FltVar( solver, 5, 10, "a" ); FltVarNeg neg = -a; FltVar b = neg.Var0; solver.Add( neg ); solver.Propagate(); Assert.AreEqual( b.Domain, new FltDomain( -10, -5 ) ); }
public void Test() { Solver solver = new Solver( -1000, 1000 ); FltVar i0 = new FltVar( solver, 0, 10 ); FltVar i1 = new FltVar( solver, 10, 20 ); FltVar i2 = new FltVar( solver, 20, 30 ); FltVar s = new FltVar( solver, 30, 60 ); FltVarList list = new FltVarList( solver, new FltVar[] { i0, i1, i2 } ); FltVarListSum sum = list.Sum(); solver.Add( sum ); solver.Propagate(); Assert.AreEqual( s.Domain, sum.Var0.Domain ); }
public void Test() { Solver solver = new Solver( -1000, 1000 ); IntVar a = new IntVar( solver, -10, -5, "a" ); IntVar b = new IntVar( solver, -1, 1, "b" ); IntVar c = new IntVar( solver, 5, 10, "c" ); IntVarList list = new IntVarList( solver, new IntVar[] { a, b, c } ); IntVar index = new IntVar( solver ); IntVarListIndex cons = list.At( index ); IntVar result = cons.Var0; solver.Add( cons ); solver.Propagate(); result.Intersect( -8, 8 ); result.Difference( -2, 6 ); cons.Index.Difference( 1 ); }
public void Test() { Solver solver = new Solver( -10000, 10000 ); IntVar a = new IntVar( solver, 1, 2, "a" ); IntVar b = new IntVar( solver, 2, 3, "b" ); IntVar c = new IntVar( solver, 3, 4, "c" ); IntVar d = new IntVar( solver, 4, 5, "d" ); IntVarListDotProduct cons = new IntVarListDotProduct( solver, new IntVar[] { a, b, c, d }, new int[] { 1000, 100, 10, 1 } ); IntVar result = cons.Var0; solver.Add( cons ); solver.Propagate(); Assert.AreEqual( result.Domain, new IntDomain( 1234, 2345 ) ); }
public void High() { Solver solver = new Solver( -10000, 10000 ); IntVar a = new IntVar( solver, 1, 3, "a" ); IntVar b = new IntVar( solver, 1, 2, "b" ); IntVar c = new IntVar( solver, 1, 2, "c" ); IntVarListAllDifferent cons = new IntVarListAllDifferent( solver, new IntVar[] { a, b, c } ); cons.Level = PropagateLevel.High; solver.Add( cons ); solver.Propagate(); Assert.AreEqual( a.Domain, new IntDomain( 3, 3 ) ); Assert.AreEqual( b.Domain, new IntDomain( 1, 2 ) ); Assert.AreEqual( c.Domain, new IntDomain( 1, 2 ) ); }
static void Test2() { Solver solver = new Solver( 0, 100 ); IntVar a = new IntVar( solver, 1, 3, "a" ); IntVar b = new IntVar( solver, 1, 3, "b" ); IntVar c = new IntVar( solver, 1, 3, "c" ); IntVarList l = new IntVarList( a, b, c ); IntVarListAllDifferent diff = l.AllDifferent(); solver.Add( diff ); solver.Propagate(); a.Value = 1; b.Value = 2; }
static void Test3() { Solver solver = new Solver( 0, 10000 ); IntVar a = new IntVar( solver, 1, 9, "a" ); IntVar b = new IntVar( solver, 1, 9, "b" ); IntVarExpr expr = a * a + b * b; solver.Add( expr ); solver.Propagate(); a.Value = 4; b.Value = 2; }
static void Test1() { Solver solver = new Solver( 0, 100 ); IntVar a = new IntVar( solver, 0, 10 ); IntVar b = new IntVar( solver, 0, 10 ); IntVar c = new IntVar( solver, 0, 10 ); IntVarList l = new IntVarList( a, b, c ); IntVarListSum sum = l.Sum(); solver.Add( sum ); solver.Propagate(); sum.Var0.Value = 6; a.Value = 1; b.Value = 2; }
static void Prop1() { Solver solver = new Solver( -10000, 10000 ); IntVar a = new IntVar( solver, 6, 10, "a" ); IntVar b = new IntVar( solver, 1, 2, "b" ); IntVarExprVal cons = new IntVarExprValMul( a, b, 5 ); solver.Add( cons ); solver.Propagate(); Console.WriteLine(); }
private static void Poly1() { Random rnd = new Random(0); for( int i = 0; i < 10000000; ++i ) { double a = rnd.Next( -10, 10 ); double b = rnd.Next( -10, 10 ) ; double c = rnd.Next( -10, 10 ) ; a=2;b=8;c=8; Solver s = new Solver( -1000000, 1000000 ); FltVar x = new FltVar( s, "x" ); FltVarExpr exp = a*x*x+ b*x; s.Add( exp ); s.Add( exp == -c ); s.PrintConstraints(); s.PrintVariables(); Console.Out.WriteLine( "{0}.x^2 + {1}.x + {2} = 0", a, b, c ); s.Solve( new FltGenerate( s, new FltVar[] { x } ) ); Console.Out.WriteLine( x.ToString(true) ); while( s.Next() ) { Console.Out.WriteLine( x.ToString(true) ); } } }
static void Mul2() { IntDomain v = new IntDomain(); for( int idx = 0; idx < 100000; ++idx ) { Solver s = new Solver( -1000, 1000 ); IntVar a = new IntVar( s, IntDomain.Random( -100, 100, 1 ), "a" ); IntVar b = new IntVar( s, IntDomain.Random( -100, 100, 1 ), "b" ); IntVar c = new IntVar( s, IntDomain.Random( -100, 100, 1 ), "c" ); IntVar d = new IntVar( s, IntDomain.Random( -100, 100, 1 ), "d" ); IntVarList l = new IntVarList( s, new IntVar[] { a, b, c, d } ); //p.Add( a + b + c + d ); s.Add( l.Sum() ); s.Propagate(); s.PrintVariables(); s.PrintConstraints(); } }
static void Mul1() { Solver solver = new Solver( 0, 10000 ); IntVarMatrix m1 = new IntVarMatrix( solver, 2, 2, new IntInterval( 0, 100 ) ); int[] v = new int[] { 1, 2 }; IntVarMatrix m2 = m1 * v; solver.Propagate(); solver.PrintVariables( Console.Out ); Solver s1 = new Solver( -1000000, 1000000 ); IntVar a = new IntVar( s1, IntDomain.Random( -100, 100, 1 ), "a" ); IntVar b = new IntVar( s1, IntDomain.Random( -100, 100, 1 ), "b" ); IntVar c = new IntVar( s1, IntDomain.Random( -100, 100, 1 ), "c" ); IntVarList l = new IntVarList( s1, new IntVar[] { a, b, c } ); s1.Add( l.Mul() ); s1.Propagate(); s1.PrintVariables( Console.Out ); }