public void failurePruning(int failure_time) { super.failurePruning(failure_time); this.counterMoves = 0; this.g = new DelegateForest<MetaVariable, ConstraintNetwork>(); this.resolvers.clear(); this.metaVarsToMetaCons.clear(); }
/** * Service method for backtracking with serialization-based saving of {@link ConstraintNetwork}s. * This method backs up {@link ConstraintNetwork}s before branching. */ private HashMap<ConstraintSolver, byte[]> backupCNs(MultiConstraintSolver conSol) { // Here we want to save the CNs ByteArrayOutputStream bos = null; ObjectOutputStream oos = null; HashMap<ConstraintSolver, byte[]> currentLevel = new HashMap<ConstraintSolver, byte[]>(); try { bos = new ByteArrayOutputStream(); oos = new ObjectOutputStream(bos); for (ConstraintSolver cs : conSol.getConstraintSolvers()) { logger.finest("Backing up CN of " + cs.getClass().getSimpleName()); ConstraintNetwork cn = cs.getConstraintNetwork(); oos.writeObject(cn); byte[] backup = bos.toByteArray(); currentLevel.put(cs, backup); if (cs instanceof MultiConstraintSolver) { // System.out.println("RECURSIVE on " + cs.getClass().getSimpleName()); HashMap<ConstraintSolver, byte[]> lower = backupCNs((MultiConstraintSolver) cs); currentLevel.putAll(lower); } } return currentLevel; } catch (NotSerializableException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; }