package vroom.optimization.pl.gurobi;
import java.util.HashSet;
import java.util.Set;
import vroom.common.utilities.graphs.Cut;
public class ViolatedSubtour implements Comparable<ViolatedSubtour> {
private final double violation;
private final Cut cut;
private final double rhs;
public double getViolation() {
return violation;
}
public Cut getCut() {
return cut;
}
public double getRhs() {
return rhs;
}
protected ViolatedSubtour(double violation, Cut cut, double rhs) {
super();
this.violation = violation;
this.cut = cut;
this.rhs = rhs;
}
protected ViolatedSubtour(double violation, Set<Integer> cut, double rhs, int nodeCount) {
super();
this.violation = violation;
Set<Integer> comp = new HashSet<Integer>();
for (int i = 0; i < nodeCount; i++) {
if (!cut.contains(i)) {
comp.add(i);
}
}
this.cut = new Cut(cut, comp);
this.rhs = rhs;
}
@Override
public int compareTo(ViolatedSubtour o) {
return Double.compare(getViolation(), o.getViolation());
}
@Override
public String toString() {
return String.format("subtour:%s rhs:%s violation:%s", getCut().getCut(), getRhs(), getViolation());
}
}