Ejemplo n.º 1
0
        public void AddMapDomain(
            IntVar var, IEnumerable <IntVar> bool_vars, long offset = 0)
        {
            int i = 0;

            foreach (IntVar bool_var in bool_vars)
            {
                int b_index   = bool_var.Index;
                int var_index = var.Index;

                ConstraintProto       ct1  = new ConstraintProto();
                LinearConstraintProto lin1 = new LinearConstraintProto();
                lin1.Vars.Add(var_index);
                lin1.Coeffs.Add(1L);
                lin1.Domain.Add(offset + i);
                lin1.Domain.Add(offset + i);
                ct1.Linear = lin1;
                ct1.EnforcementLiteral.Add(b_index);
                model_.Constraints.Add(ct1);

                ConstraintProto       ct2  = new ConstraintProto();
                LinearConstraintProto lin2 = new LinearConstraintProto();
                lin2.Vars.Add(var_index);
                lin2.Coeffs.Add(1L);
                lin2.Domain.Add(Int64.MinValue);
                lin2.Domain.Add(offset + i - 1);
                lin2.Domain.Add(offset + i + 1);
                lin2.Domain.Add(Int64.MaxValue);
                ct2.Linear = lin2;
                ct2.EnforcementLiteral.Add(-b_index - 1);
                model_.Constraints.Add(ct2);

                i++;
            }
        }
Ejemplo n.º 2
0
        static ConstraintProto NewLinear2(int v1, int v2, long c1, long c2, long lb, long ub)
        {
            LinearConstraintProto linear = new LinearConstraintProto();

            linear.Vars.Add(v1);
            linear.Vars.Add(v2);
            linear.Coeffs.Add(c1);
            linear.Coeffs.Add(c2);
            linear.Domain.Add(lb);
            linear.Domain.Add(ub);
            ConstraintProto ct = new ConstraintProto();

            ct.Linear = linear;
            return(ct);
        }
Ejemplo n.º 3
0
        public IntervalVar(CpModelProto model, int start_index, int size_index, int end_index, string name)
        {
            model_          = model;
            index_          = model.Constraints.Count;
            interval_       = new IntervalConstraintProto();
            interval_.Start = start_index;
            interval_.Size  = size_index;
            interval_.End   = end_index;

            ConstraintProto ct = new ConstraintProto();

            ct.Interval = interval_;
            ct.Name     = name;
            model_.Constraints.Add(ct);
        }
Ejemplo n.º 4
0
        public IntervalVar(CpModelProto model, LinearExpressionProto start, LinearExpressionProto size,
                           LinearExpressionProto end, string name)
        {
            model_          = model;
            index_          = model.Constraints.Count;
            interval_       = new IntervalConstraintProto();
            interval_.Start = start;
            interval_.Size  = size;
            interval_.End   = end;

            ConstraintProto ct = new ConstraintProto();

            ct.Interval = interval_;
            ct.Name     = name;
            model_.Constraints.Add(ct);
        }
Ejemplo n.º 5
0
        public IntervalVar(CpModelProto model, LinearExpressionProto start, LinearExpressionProto size,
                           LinearExpressionProto end, int is_present_index, string name)
        {
            model_              = model;
            index_              = model.Constraints.Count;
            interval_           = new IntervalConstraintProto();
            interval_.StartView = start;
            interval_.SizeView  = size;
            interval_.EndView   = end;

            ConstraintProto ct = new ConstraintProto();

            ct.Interval = interval_;
            ct.Name     = name;
            ct.EnforcementLiteral.Add(is_present_index);
            model.Constraints.Add(ct);
        }
Ejemplo n.º 6
0
 public Constraint(CpModelProto model)
 {
     index_      = model.Constraints.Count;
     constraint_ = new ConstraintProto();
     model.Constraints.Add(constraint_);
 }