@Override public boolean executeRandomActivationId() { return designSpaceManager.executeRandomActivationId(); }
@Override public int executeTrajectoryByTryingWithoutStateCoding(Object[] activationIds, int fromIncludedIndex, int toExcludedIndex) { return designSpaceManager.executeTrajectoryByTryingWithoutStateCoding(activationIds, fromIncludedIndex, toExcludedIndex); }
@Override public boolean mutateAlternate(TrajectoryFitness parent1, TrajectoryFitness parent2, ThreadContext context) { dsm.executeTrajectoryWithMinimalBacktrackWithoutStateCoding(parent2t, index2); dsm.tryFireActivation(parent1t[index1]); context.executeTrajectoryByTryingWithoutStateCoding(parent2t, index2 + 1, p2Size); return true; }
public static boolean tryFireRightTransition(DesignSpaceManager dsm, Object transition) { for (Object t : dsm.getTransitionsFromCurrentState()) { if (t.equals(transition)) { return dsm.tryFireActivation(t); } } return false; }
dsm.executeTrajectoryWithMinimalBacktrackWithoutStateCoding(trajectory, index); Collection<Object> transitions = dsm.getTransitionsFromCurrentState(); int transitionsSize = transitions.size(); if (transitionsSize < 1) { int priority = priorities.get(dsm.getRuleByActivationId(iTransition)).intValue(); if (priority > bestPriority) { bestPriority = priority; if (priorities.get(dsm.getRuleByActivationId(iTransition)).intValue() == bestPriority) { bestTrasitions.add(iTransition); Object transition = bestTrasitions.get(index); dsm.fireActivation(transition); dsm.executeTrajectoryByTryingWithoutStateCoding(trajectory, index + 1, trajectorySize);
Object[] transitions = dsm.getTransitionsFromCurrentState().toArray(); dsm.fireActivation(iTransition); if (!dsm.isNewModelStateAlreadyTraversed()) { Object[] trajectory = trajectoryInfo.getTrajectory().toArray(new Object[0]); queue.add(trajectory); initialPopulation.add(new TrajectoryWithStateFitness(trajectoryInfo, fitness)); if (populationSize <= initialPopulation.size()) { dsm.undoUntilRoot(); return; dsm.undoLastTransformation(); dsm.undoUntilRoot(); Object[] nextTrajectory = queue.poll(); if (nextTrajectory == null) { dsm.fireActivation(iTransition); dsm.undoUntilRoot();
@Override public boolean mutate(TrajectoryFitness parent, ThreadContext context) { DesignSpaceManager dsm = context.getDesignSpaceManager(); context.executeTrajectoryWithMinimalBacktrackWithoutStateCoding(parent.trajectory); Collection<Object> transitions = dsm.getTransitionsFromCurrentState(); int size = transitions.size(); if (size == 0) { return false; } int bestPriority = Integer.MIN_VALUE; for (Object iTransition : transitions) { int priority = priorities.get(dsm.getRuleByActivationId(iTransition)).intValue(); if (priority > bestPriority) { bestPriority = priority; } } List<Object> bestTrasitions = new ArrayList<>(); for (Object iTransition : transitions) { if (priorities.get(dsm.getRuleByActivationId(iTransition)).intValue() == bestPriority) { bestTrasitions.add(iTransition); } } int index = rnd.nextInt(bestTrasitions.size()); Object transition = bestTrasitions.get(index); dsm.fireActivation(transition); return true; }
@Override public boolean mutateAlternate(TrajectoryFitness parent1, TrajectoryFitness parent2, ThreadContext context) { DesignSpaceManager dsm = context.getDesignSpaceManager(); dsm.executeTrajectoryWithMinimalBacktrackWithoutStateCoding(parent2t, index); addPermutation(dsm, dsm.getTrajectoryInfo(), parent1t); return true; }
@Override public TrajectoryInfo getTrajectoryInfo() { return designSpaceManager.getTrajectoryInfo(); }
public boolean executeRandomActivationId() { Collection<Object> transitions = getTransitionsFromCurrentState(); int size = transitions.size(); if (size == 0) { return false; } int index = random.nextInt(size); Iterator<Object> iterator = transitions.iterator(); for (int i = 0; i < index; ++i) { iterator.next(); } Object transition = iterator.next(); fireActivation(transition); return true; }
@Override public void explore() { while (!(isInterrupted || initialPopulation.size() >= populationSize)) { Double fitness = objective.getFitness(context); boolean hardObjectiveIsSatisfied = objective.satisifiesHardObjective(fitness); if (0 <= maxDepth && maxDepth <= context.getDepth() ) { if (hardObjectiveIsSatisfied || acceptTrajectoryAtMaxDepth) { saveTrajectory(); } dsm.undoUntilRoot(); continue; } else if (hardObjectiveIsSatisfied) { saveTrajectory(); dsm.undoUntilRoot(); continue; } dsm.executeRandomActivationId(); } context.changeActivationOrderingBack(); logger.info("FixedPriorityInitialSelector finished."); }
@Override public void explore() { while (!(isInterrupted || initialPopulation.size() >= populationSize)) { while (lengthRemaining > 0) { lengthRemaining--; context.executeRandomActivationId(); boolean gcSatisfied = context.checkGlobalConstraints(); if (!gcSatisfied) { context.backtrack(); lengthRemaining++; } } initialPopulation.add(new TrajectoryWithStateFitness(dsm.getTrajectoryInfo(), context.calculateFitness())); dsm.undoUntilRoot(); lengthRemaining = newLength(); } }
@Override public void executeTrajectoryWithMinimalBacktrackWithoutStateCoding(Object[] trajectory) { designSpaceManager.executeTrajectoryWithMinimalBacktrackWithoutStateCoding(trajectory); }
public synchronized void newSolution(ThreadContext context) { solutionSaver.setSolutionsCollection(solutions); Fitness fitness = context.getLastFitness(); DesignSpaceManager dsm = context.getDesignSpaceManager(); Object id = dsm.getCurrentState(); IStateCoderFactory stateCoderFactory = context.getGlobalContext().getStateCoderFactory(); SolutionTrajectory solutionTrajectory = dsm.getTrajectoryInfo().createSolutionTrajectory(stateCoderFactory); solutionTrajectory.setFitness(fitness); if (acceptOnlyGoalSolutions && !fitness.isSatisifiesHardObjectives()) { unsavedSolutionCallbacks(context, solutionTrajectory); return; } boolean solutionSaved = solutionSaver.saveSolution(context, id, solutionTrajectory); if (solutionSaved) { enoughSolutions.solutionFound(context, solutionTrajectory); savedSolutionCallbacks(context, solutionTrajectory); if (enoughSolutions.enoughSolutions()) { context.getGlobalContext().stopAllThreads(); } } else { unsavedSolutionCallbacks(context, solutionTrajectory); } }
designSpaceManager = new DesignSpaceManager(this); DseIdPoolHelper.INSTANCE.registerRules(new GetRuleExecutionsImpl(getDesignSpaceManager().getTrajectoryInfo().getRules()), getRules());
@Override public BatchTransformationRule<?, ?> getRuleByActivationId(Object activationId) { return designSpaceManager.getRuleByActivationId(activationId); }
@Override public boolean tryExecuteAcitvationId(Object activationId) { return designSpaceManager.tryFireActivation(activationId); }
@Override public boolean isCurrentStateAlreadyTraversed() { return designSpaceManager.isNewModelStateAlreadyTraversed(); }
@Override public Collection<Object> getCurrentActivationIds() { return designSpaceManager.getTransitionsFromCurrentState(); }
@Override public void executeAcitvationId(Object activationId) { designSpaceManager.fireActivation(activationId); }