/** * <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); }
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; }