diff --git a/ortools/java/com/google/ortools/sat/CpModel.java b/ortools/java/com/google/ortools/sat/CpModel.java index cb33304623..1a035c0f7f 100644 --- a/ortools/java/com/google/ortools/sat/CpModel.java +++ b/ortools/java/com/google/ortools/sat/CpModel.java @@ -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}. */