Esempio n. 1
0
 public override void Update()
 {
     // v0	= v1 + val
     // v1	= v0 - val
     Var0.Intersect(Var1.Domain + Domain);
     Var1.Intersect(Var0.Domain - Domain);
 }
Esempio n. 2
0
 public override void Update()
 {
     // v0	= val / v1
     // v1	= val / v0
     Var0.Intersect(Domain / Var1.Domain);
     Var1.Intersect(Domain / Var0.Domain);
 }
Esempio n. 3
0
 public override void Update()
 {
     // v0	= v1 * val
     // v1	= v0 / val
     Var0.Intersect(Var1.Domain * Domain);
     Var1.Intersect(Var0.Domain / Domain);
 }
Esempio n. 4
0
        public override void Update()
        {
            FltDomain tmp = Var0.Domain.Intersect(Var1.Domain);

            Var0.Update(tmp);
            Var1.Update(tmp);
        }
Esempio n. 5
0
        public void Update2()
        {
            FltDomain dom0 = Domain * Var1.Domain;
            FltDomain dom1 = dom0 / Domain;

            // v0	= val * v1
            // v1	= v0 / val
            Var0.Intersect(dom0);
            Var1.Intersect(dom1);
        }
Esempio n. 6
0
        private void UpdateVar0()
        {
            IntDomain domain = IntDomain.Empty;

            foreach (int idx in Var1)
            {
                domain = domain.Union(m_DomainList[idx]);
            }

            Var0.Intersect(domain);
        }
Esempio n. 7
0
        public override void Update()
        {
            double min0 = Math.Min(Var0.Min, Epsilon.Prev(Var1.Min));
            double max0 = Math.Min(Var0.Max, Epsilon.Prev(Var1.Max));

            double min1 = Math.Max(Epsilon.Next(Var0.Min), Var1.Min);
            double max1 = Math.Max(Epsilon.Next(Var0.Max), Var1.Max);

            Var0.Intersect(min0, max0);
            Var1.Intersect(min1, max1);
        }
Esempio n. 8
0
        private void UpdateVar0()
        {
            FltDomain domain = new FltDomain();

            foreach (int idx in Var1)
            {
                domain = domain.Union(VarList[idx].Domain);
            }

            Var0.Intersect(domain);
        }
Esempio n. 9
0
        public override void Update()
        {
            if (Var1.IsBound())
            {
                Var0.Difference(Var1.Value);
            }

            if (Var0.IsBound())
            {
                Var1.Difference(Var0.Value);
            }
        }
Esempio n. 10
0
        public override void Update()
        {
            if (VarList.Count > 0)
            {
                Var0.Intersect(VarList.MaxInterval);

                foreach (FltVar var in VarList)
                {
                    var.Max = Var0.Max;
                }
            }
        }
Esempio n. 11
0
        public override void Unbound()
        {
            base.Unbound();

            // If we call unbound on a leading variable, we need to unbound the
            // related variable too.
            if (Var0.IsLead && Var1.IsLead)
            {
                Var0.UnboundDirect();
                Var1.UnboundDirect();
            }
        }
Esempio n. 12
0
        public override void Update()
        {
            int sum_min = 0;
            int sum_max = 0;

            for (int idx = 0; idx < VarList.Count; ++idx)
            {
                IntDomain dom = VarList[idx].Domain;

                sum_min += dom.Min;
                sum_max += dom.Max;
            }

            Var0.Intersect(sum_min, sum_max);
            if (Var0.Domain.IsEmpty())
            {
                return;
            }

            for (int idx = 0; idx < VarList.Count; ++idx)
            {
                IntVar var = VarList[idx];

                int min = Var0.Min - (sum_max - var.Max);
                int max = Var0.Max - (sum_min - var.Min);

                if (min > var.Min || max < var.Max)
                {
                    sum_min -= var.Min;
                    sum_max -= var.Max;

                    var.Intersect(min, max);

                    if (var.Domain.IsEmpty())
                    {
                        break;
                    }

                    sum_min += var.Min;
                    sum_max += var.Max;

                    Var0.Intersect(sum_min, sum_max);

                    if (Var0.Domain.IsEmpty())
                    {
                        break;
                    }

                    idx = -1;
                }
            }
        }
Esempio n. 13
0
        private void UpdateVar0()
        {
            if (VarList.Count > 0)
            {
                IntDomain domain = VarList.Front().Domain *m_IntArray[0];

                for (int idx = 1; idx < VarList.Count; ++idx)
                {
                    domain += VarList[idx].Domain * m_IntArray[idx];
                }

                Var0.Intersect(domain);
            }
        }
Esempio n. 14
0
        public override void Update()
        {
            if (VarList.Count > 0)
            {
                FltDomain domain = VarList[0].Domain;

                for (int idx = 1; idx < VarList.Count; ++idx)
                {
                    domain *= VarList[idx].Domain;
                }

                Var0.Intersect(domain);
            }
        }
Esempio n. 15
0
        public override void Update()
        {
            if (VarList.Count == 0)
            {
                return;
            }

            Var0.Intersect(VarList.MinInterval);

            foreach (IntVar var in VarList)
            {
                var.Min = Var0.Min;
            }
        }
Esempio n. 16
0
        public override void Update()
        {
            double sum_min = 0;
            double sum_max = 0;

            for (int i = 0; i < VarList.Count; ++i)
            {
                FltInterval intv = VarList[i].Domain.Interval;

                sum_min += intv.Min;
                sum_max += intv.Max;
            }

            Var0.Intersect(sum_min, sum_max);

            for (int idx = 0; idx < VarList.Count; ++idx)
            {
                FltVar var = VarList[idx];

                double min = Var0.Min - (sum_max - var.Max);
                double max = Var0.Max - (sum_min - var.Min);

                if (min > var.Min || max < var.Max)
                {
                    sum_min -= var.Min;
                    sum_max -= var.Max;

                    var.Intersect(min, max);

                    if (var.Domain.IsEmpty())
                    {
                        break;
                    }

                    sum_min += var.Min;
                    sum_max += var.Max;

                    Var0.Intersect(sum_min, sum_max);

                    if (Var0.Domain.IsEmpty())
                    {
                        break;
                    }

                    idx = -1;
                }
            }
        }
Esempio n. 17
0
        public override void Update()
        {
            if (VarList.Count == 0)
            {
                return;
            }

            IntDomain domain = VarList.Front().Domain;

            for (int idx = 1; idx < VarList.Count; ++idx)
            {
                domain *= VarList[idx].Domain;
            }

            Var0.Intersect(domain);
        }
Esempio n. 18
0
        public override string ToString(bool wd)
        {
            StringBuilder str = new StringBuilder();

            str.Append(Var0.ToString(wd));
            str.Append("=");
            str.Append(Index.ToString(wd));
            str.Append("{");

            foreach (IntDomain dom in m_DomainList)
            {
                str.Append(dom.ToString());
            }

            str.Append("}");

            return(str.ToString());
        }
Esempio n. 19
0
        public void Update1()
        {
            FltDomain v0 = Var0.Domain;
            FltDomain v1 = Var1.Domain;

            FltDomain w0, w1;

            do
            {
                w0 = v0;
                w1 = v1;

                v0 = v0.Intersect(Domain * v1);
                v1 = v1.Intersect(v0 / Domain);
            }while(!ReferenceEquals(w0, v0) || !ReferenceEquals(w1, v1));

            Var0.Update(v0);
            Var1.Update(v1);
        }
Esempio n. 20
0
        public override void Update()
        {
            // v0	= val * v1
            // v1	= v0 / val
            IntDomain v0 = Var0.Domain;
            IntDomain v1 = Var1.Domain;

            IntDomain w0, w1;

            do
            {
                w0 = v0;
                w1 = v1;

                v0 = v0.Intersect(Domain * v1);
                v1 = v1.Intersect(v0 / Domain);
            }while(!ReferenceEquals(w0, v0) || !ReferenceEquals(w1, v1));

            Var0.Update(v0);
            Var1.Update(v1);
        }
Esempio n. 21
0
        public override string ToString(bool wd)
        {
            StringBuilder str = new StringBuilder();

            str.Append(Var0.ToString(wd));
            str.Append("=(");

            for (int idx = 0; idx < VarList.Count; ++idx)
            {
                if (idx > 0)
                {
                    str.Append("+");
                }

                str.Append(VarList[idx].ToString(wd));
                str.Append("*");
                str.Append(m_IntArray[idx].ToString(CultureInfo.CurrentCulture));
            }

            str.Append(")");

            return(str.ToString());
        }
Esempio n. 22
0
        // v0	= v1 / v2
        // v1	= v0 * v2
        // v2	= v1 / v0
        public override void Update()
        {
            IntDomain v0 = Var0.Domain;
            IntDomain v1 = Var1.Domain;
            IntDomain v2 = Var2.Domain;

            IntDomain w0, w1, w2;

            do
            {
                w0 = v0;
                w1 = v1;
                w2 = v2;

                v0 = v0.Intersect(v1 / v2);
                v1 = v1.Intersect(v0 * v2);
                v2 = v2.Intersect(v0 / v1);
            }while(!ReferenceEquals(w0, v0) || !ReferenceEquals(w1, v1) || !ReferenceEquals(w2, v2));

            Var0.Update(v0);
            Var1.Update(v1);
            Var2.Update(v2);
        }
Esempio n. 23
0
 public override void Update()
 {
     Var0.Intersect(double.MinValue, Epsilon.Prev(m_Value));
 }
Esempio n. 24
0
 public override void Update()
 {
     Var0.Intersect(Value + 1, int.MaxValue);
 }
Esempio n. 25
0
 public override void Update()
 {
     Var0.Intersect(int.MinValue, Value - 1);
 }
Esempio n. 26
0
 public override void Update()
 {
     Var0.Intersect(Math.Min(Var0.Min, Var1.Min), Math.Min(Var0.Max, Var1.Max));
     Var1.Intersect(Math.Max(Var0.Min, Var1.Min), Math.Max(Var0.Max, Var1.Max));
 }
Esempio n. 27
0
 public override void Update()
 {
     Var0.Intersect(double.MinValue, m_Value);
 }
Esempio n. 28
0
 protected string ToString(string expr, bool wd)
 {
     return(Var0.ToString(wd) + "=" + GetExprString(expr, wd));
 }
Esempio n. 29
0
 public override string ToString(bool wd)
 {
     return("(" + Var0.ToString(wd) + ")");
 }
Esempio n. 30
0
 protected string ToString(string compare, bool wd)
 {
     return(Var0.ToString(wd) + compare + Var1.ToString(wd));
 }