Esempio n. 1
0
        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));
                }
            }
        }
Esempio n. 2
0
 public FltGenerate( Solver solver, FltVar[] list )
     : base(solver)
 {
     m_FltVarList		= list;
     m_SelectVar			= FltVarSelector.CardinalityMin;
     m_Search			= new FltSearchDichotomize();
 }
Esempio n. 3
0
 public FltGenerate( Solver solver, FltVar[] list, FltVarSelector.Select select, FltSearch search )
     : base(solver)
 {
     m_FltVarList		= list;
     m_SelectVar			= select;
     m_Search			= search;
 }
Esempio n. 4
0
        public override void Execute()
        {
            FltVar var = m_SelectVar(m_FltVarList);

            if (!ReferenceEquals(var, null))
            {
                Add(new GoalAnd(m_Search.Create(var), this));
            }
        }
Esempio n. 5
0
        public FltVar[] Copy(FltVar[] other)
        {
            FltVar[] copy = new FltVar[other.Length];
            for (int idx = 0; idx < other.Length; ++idx)
            {
                copy[idx] = m_FltVarList[other[idx].Index];
            }

            return(copy);
        }
Esempio n. 6
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));
        }
Esempio n. 7
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);
        }
Esempio n. 8
0
        static public FltVar CardinalityMax(FltVar[] list)
        {
            FltVar chosenVar = null;

            for (int idx = 0; idx < list.Length; ++idx)
            {
                FltVar var = list[idx];
                if (!var.IsBound() &&
                    !var.IsEmpty() &&
                    (ReferenceEquals(chosenVar, null) ||
                     (chosenVar.Domain.Cardinality < var.Domain.Cardinality)))
                {
                    chosenVar = var;
                }
            }

            return(chosenVar);
        }
Esempio n. 9
0
        public static FltVar CardinalityMin( FltVar[] list )
        {
            FltVar chosenVar     = null;

            for( int idx = 0; idx < list.Length; ++idx )
            {
                FltVar var    = list[ idx ];
                if( !var.IsBound()
                        && !var.IsEmpty()
                        && ( ReferenceEquals( chosenVar, null )
                                || ( chosenVar.Domain.Cardinality > var.Domain.Cardinality ) ) )
                {
                    chosenVar     = var;
                }
            }

            return chosenVar;
        }
Esempio n. 10
0
        static public FltVar MostConstrained(FltVar[] list)
        {
            FltVar chosenVar = null;

            for (int idx = 0; idx < list.Length; ++idx)
            {
                FltVar var = list[idx];
                if (!var.IsBound() &&
                    !var.IsEmpty() &&
                    (ReferenceEquals(chosenVar, null) ||
                     chosenVar.ConstraintList.Count < var.ConstraintList.Count))
                {
                    chosenVar = var;
                }
            }

            return(chosenVar);
        }
Esempio n. 11
0
        public void Test()
        {
            Solver     solver = new Solver(-1000, 1000);
            FltVar     a      = new FltVar(solver, -10, -5, "a");
            FltVar     b      = new FltVar(solver, -1, 1, "b");
            FltVar     c      = new FltVar(solver, 5, 10, "c");
            FltVarList list   = new FltVarList(solver, new FltVar[] { a, b, c });

            IntVar          index  = new IntVar(solver);
            FltVarListIndex cons   = list.At(index);
            FltVar          result = cons.Var0;

            solver.Add(cons);
            solver.Propagate();

            result.Intersect(-8, 8);
            result.Difference(-2, 6);
            cons.Index.Difference(1);
        }
Esempio n. 12
0
 public static double Min( FltVar var )
 {
     return var.Min;
 }
Esempio n. 13
0
 public static double Mid( FltVar var )
 {
     return ( var.Min + var.Max ) / 2;
 }
Esempio n. 14
0
 public static double Max( FltVar var )
 {
     return var.Max;
 }
Esempio n. 15
0
 static public double Mid(FltVar var)
 {
     return((var.Min + var.Max) / 2);
 }
Esempio n. 16
0
 public FltSearchGoalInstantiateBest( Solver solver, FltVar var, FltVarValueSelector.Select select )
     : base(solver, var)
 {
     m_SelectValue		= select;
 }
 public override FltSearchGoal Create(FltVar var)
 {
     return(new FltSearchGoalInstantiateBest(var.Solver, var, m_SelectValue));
 }
Esempio n. 18
0
 public override FltSearchGoal Create( FltVar var )
 {
     return new FltSearchGoalDichotomize( var.Solver, var );
 }
Esempio n. 19
0
        public static FltVar MostConstrained( FltVar[] list )
        {
            FltVar chosenVar     = null;

            for( int idx = 0; idx < list.Length; ++idx )
            {
                FltVar var    = list[ idx ];
                if( !var.IsBound()
                        && !var.IsEmpty()
                        && ( ReferenceEquals( chosenVar, null )
                                || chosenVar.ConstraintList.Count < var.ConstraintList.Count ) )
                {
                    chosenVar     = var;
                }
            }

            return chosenVar;
        }
Esempio n. 20
0
 static public double Max(FltVar var)
 {
     return(var.Max);
 }
Esempio n. 21
0
 protected FltSearchGoal(Solver solver, FltVar var) :
     base(solver)
 {
     m_FltVar = var;
 }
Esempio n. 22
0
 public abstract FltSearchGoal Create(FltVar var);
Esempio n. 23
0
 public FltSearchGoalDichotomize( Solver solver, FltVar var )
     : base(solver, var)
 {
 }
Esempio n. 24
0
        public static FltVar FirstNotBound( FltVar[] list )
        {
            int idx;
            for( idx = 0;
                    idx < list.Length
                        && ( list[ idx ].IsBound()
                                || list[ idx ].IsEmpty() );
                    ++idx ) {};

            return   ( idx < list.Length )
                    ? list[ idx ]
                    : null;
        }
Esempio n. 25
0
 static public double Min(FltVar var)
 {
     return(var.Min);
 }
Esempio n. 26
0
 public override FltSearchGoal Create(FltVar var)
 {
     return(new FltSearchGoalDichotomize(var.Solver, var));
 }
 public FltSearchGoalInstantiateBest(Solver solver, FltVar var, FltVarValueSelector.Select select) :
     base(solver, var)
 {
     m_SelectValue = select;
 }
Esempio n. 28
0
 public FltSearchGoalDichotomize(Solver solver, FltVar var) :
     base(solver, var)
 {
 }
Esempio n. 29
0
 public override FltSearchGoal Create( FltVar var )
 {
     return new FltSearchGoalInstantiateBest( var.Solver, var, m_SelectValue );
 }
Esempio n. 30
0
 public FltVarCmpEqualIntVar Equals(FltVar v)
 {
     return(new FltVarCmpEqualIntVar(this, v));
 }