Exemplo n.º 1
0
        public override void StepFoward()
        {
            alpha -= step;
            //Delete Agg constraint(s)
            foreach (var a in Aggconstraints)
            {
                RMPModel.Remove(a.Value);
            }
            List <IALPDecision> list = Aggconstraints.Keys.ToList();

            Aggconstraints.Clear();

            //Add DisAgg variables and constraint(s)
            for (int i = alpha + 1; i <= alpha + step; i++)
            {
                constraints.Add(i, new Dictionary <IALPDecision, IRange>());
                Var1.Add(i, RMPModel.NumVarArray(Data.RS.Count, 0, double.MaxValue));
                Var2.Add(i, RMPModel.NumVar(0, double.MaxValue));
                V.Add(i, new double[Data.RS.Count]);
                Sita.Add(i, 0);
            }

            for (int t = alpha + 1; t <= alpha + step; t++)
            {
                if (t < Data.TimeHorizon - 1)
                {
                    foreach (IALPResource re in Data.RS)
                    {
                        INumExpr exp2 = RMPModel.Sum(Var1[t][Data.RS.IndexOf(re)], RMPModel.Prod(-1, Var1[t + 1][Data.RS.IndexOf(re)]));
                        RMPModel.AddGe(exp2, 0);
                    }
                    INumExpr exp3 = RMPModel.Sum(Var2[t], RMPModel.Prod(-1, Var2[t + 1]));
                    RMPModel.AddGe(exp3, 0);
                }
            }
            foreach (IALPResource re in Data.RS)
            {
                INumExpr exp6 = RMPModel.NumExpr();
                exp6 = RMPModel.Sum(AggVar1[Data.RS.IndexOf(re)], RMPModel.Prod(-1, Var1[alpha + 1][Data.RS.IndexOf(re)]));
                RMPModel.AddGe(exp6, 0);
            }

            INumExpr exp4 = RMPModel.NumExpr();

            exp4 = RMPModel.Sum(exp4, AggVar2, RMPModel.Prod(-1, Var2[alpha + 1]));
            RMPModel.AddGe(exp4, 0);

            foreach (IALPDecision de in list)
            {
                AddConstraint1(de);
            }
            Decision d = _ds[0] as Decision;

            for (int t = alpha + 1; t <= alpha + step; t++)
            {
                AddConstraint2(t, d);
            }
        }
Exemplo n.º 2
0
 private void AddParameters(ActivityContext context, Dictionary <string, string> parameters)
 {
     AddParameter(parameters, "@a", Var1.Get <string>(context));
     AddParameter(parameters, "@b", Var2.Get <string>(context));
     AddParameter(parameters, "@c", Var3.Get <string>(context));
     AddParameter(parameters, "@d", Var4.Get <string>(context));
     AddParameter(parameters, "@e", Var5.Get <string>(context));
     AddParameter(parameters, "@f", Var6.Get <string>(context));
     AddParameter(parameters, "@g", Var7.Get <string>(context));
     AddParameter(parameters, "@h", Var8.Get <string>(context));
     AddParameter(parameters, "@i", Var9.Get <string>(context));
     AddParameter(parameters, "@x", Var10.Get <string>(context));
     AddParameter(parameters, "@y", Var11.Get <string>(context));
     AddParameter(parameters, "@z", Var12.Get <string>(context));
 }
Exemplo n.º 3
0
        public int CompareTo(Hash256 other)
        {
            var leftLeftComparison = Var1.CompareTo(other.Var1);

            if (leftLeftComparison != 0)
            {
                return(leftLeftComparison);
            }
            var leftRightComparison = Var2.CompareTo(other.Var2);

            if (leftRightComparison != 0)
            {
                return(leftRightComparison);
            }
            var rightLeftComparison = Var3.CompareTo(other.Var3);

            if (rightLeftComparison != 0)
            {
                return(rightLeftComparison);
            }
            return(Var4.CompareTo(other.Var4));
        }
Exemplo n.º 4
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);
        }
Exemplo n.º 5
0
 public override string ToString(bool wd)
 {
     return("(" + Var0.ToString(wd) + "," + Var1.ToString(wd) + "," + Var2.ToString(wd) + ")");
 }
 public void Dispose()
 {
     Var1.Dispose();
     Var2.Dispose();
     Var3.Dispose();
 }