Beispiel #1
0
        /**
         * <summary>
         * Add an arc to the graph of the circuit constraint.
         * </summary>
         *
         * <param name="tail"> the index of the tail node</param>
         * <param name="head"> the index of the head node</param>
         * <param name="literal"> it will be set to true if the arc is selected</param>
         */
        public CircuitConstraint AddArc(int tail, int head, ILiteral literal)
        {
            CircuitConstraintProto circuit = Proto.Circuit;

            circuit.Tails.Add(tail);
            circuit.Heads.Add(head);
            circuit.Literals.Add(literal.GetIndex());
            return(this);
        }
Beispiel #2
0
 public Constraint AddCircuit(IEnumerable<Tuple<int, int, ILiteral>> arcs)
 {
   Constraint ct = new Constraint(model_);
   CircuitConstraintProto circuit = new CircuitConstraintProto();
   foreach (var arc in arcs)
   {
     circuit.Tails.Add(arc.Item1);
     circuit.Heads.Add(arc.Item2);
     circuit.Literals.Add(arc.Item3.GetIndex());
   }
   ct.Proto.Circuit = circuit;
   return ct;
 }