示例#1
0
        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 ) );
        }
示例#2
0
        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 );
        }
示例#3
0
        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 );
        }
示例#4
0
        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 ) );
        }
示例#5
0
        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 ) );
        }
示例#6
0
文件: Program.cs 项目: nofear/Mara
        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;
        }
示例#7
0
文件: Program.cs 项目: nofear/Mara
        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;
        }
示例#8
0
文件: Program.cs 项目: nofear/Mara
        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;
        }
示例#9
0
文件: Program.cs 项目: nofear/Mara
        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();
        }
示例#10
0
文件: Program.cs 项目: nofear/Mara
        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) );
                }
            }
        }
示例#11
0
文件: Program.cs 项目: nofear/Mara
        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();
            }
        }
示例#12
0
文件: Program.cs 项目: nofear/Mara
        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 );
        }