[CP-SAT] tweak model cloning API; implement it in java; merge pure sat presolve with normal presolve

This commit is contained in:
Laurent Perron
2023-10-25 15:38:44 +02:00
parent f1d6a0698c
commit fb7aa1b853

View File

@@ -66,6 +66,14 @@ public final class CpModel {
constantMap = new LinkedHashMap<>();
}
public CpModel getClone() {
CpModel clone = new CpModel();
clone.modelBuilder.mergeFrom(modelBuilder.build());
clone.constantMap.clear();
clone.constantMap.putAll(constantMap);
return clone;
}
// Integer variables.
/** Creates an integer variable with domain [lb, ub]. */
@@ -119,6 +127,16 @@ public final class CpModel {
return cste;
}
/** Rebuilds a Boolean variable from an index. Useful after cloning a model. */
public BoolVar getBoolVarFromProtoIndex(int index) {
return new BoolVar(modelBuilder, index);
}
/** Rebuilds an integer variable from an index. Useful after cloning a model. */
public IntVar getIntVarFromProtoIndex(int index) {
return new IntVar(modelBuilder, index);
}
// Boolean Constraints.
/** Adds {@code Or(literals) == true}. */