@Override public boolean saveSolution(ThreadContext context, Object id, SolutionTrajectory solutionTrajectory) { Solution solution = solutions.get(id); if (solution != null) { if (solution.getTrajectories().contains(solutionTrajectory)) { return false; } else { solution.addTrajectory(solutionTrajectory); solutionTrajectory.setSolution(solution); } } else { solution = new Solution(id, solutionTrajectory); solutions.put(id, solution); solutionTrajectory.setSolution(solution); } return true; } }
/** * Returns an arbitrary solution trajectory or null if the exploration failed to find any. * * @return An arbitrary solution trajectory. */ public SolutionTrajectory getArbitrarySolution() { Collection<Solution> solutions = getSolutions(); if (solutions.isEmpty()) { return null; } return solutions.iterator().next().getArbitraryTrajectory(); }
/** * Creates a string containing the state codes of all the found solutions and the found trajectories to these * solutions with fitness values. * * @return A pretty string with the solutions. */ public String toStringSolutions() { StringBuilder sb = new StringBuilder(); Collection<Solution> solutions = getSolutions(); sb.append("Number of solutions: "); sb.append(solutions.size()); sb.append("\n"); for (Solution solution : solutions) { sb.append("Solution: "); sb.append(solution.getStateCode()); sb.append("\n"); for (SolutionTrajectory trajectory : solution.getTrajectories()) { sb.append(" "); sb.append(trajectory.toPrettyString()); sb.append("\n"); } } return sb.toString(); }
if (!solution.getTrajectories().contains(solutionTrajectory)) { solution.addTrajectory(solutionTrajectory); solutionTrajectory.setSolution(solution); solutionSaved = true; solution = new Solution(id, solutionTrajectory); solutions.put(id, solution); solutionTrajectory.setSolution(solution); trajectories.remove(st); Solution s = st.getSolution(); if (!s.getTrajectories().remove(st)) { throw new DSEException("Should not happen."); if (s.getTrajectories().isEmpty()) { Object stateCode = s.getStateCode(); solutions.remove(stateCode);
@Override public void solutionFound(ThreadContext context, SolutionTrajectory trajectory) { Object stateCode = trajectory.getSolution().getStateCode(); if (savedSolutions.contains(stateCode)) { return; } savedSolutions.add(stateCode); Notifier clonedModel = EMFHelper.clone(context.getModel()); EMFHelper.saveModel(clonedModel, solutionNameProvider.getName()); } }
public void saveModels(Notifier model, ISolutionNameProvider solutionNameProvider) { try { for (Solution solution : solutions.values()) { SolutionTrajectory trajectory = solution.getArbitraryTrajectory(); trajectory.doTransformationUndoable(model); EMFHelper.saveModel(model, solutionNameProvider.getName()); trajectory.undoTransformation(); } } catch (ViatraQueryException e) { Logger.getLogger(SolutionStore.class).error("Exception happened during model saving.", e); } } }