public List<Object> getTrajectoryFromRoot() { return trajectory.getTrajectory(); }
/** * Creates a {@link TrajectoryFitness} with the full trajectory. * @param trajectoryInfo The trajectory. * @param fitness The fitness. */ public TrajectoryFitness(TrajectoryInfo trajectoryInfo, Fitness fitness) { this.fitness = fitness; List<Object> fullTraj = trajectoryInfo.getTrajectory(); trajectory = fullTraj.toArray(new Object[fullTraj.size()]); }
private void addPermutation(DesignSpaceManager dsm, TrajectoryInfo trajectoryInfo, Object[] parent) { outerLoop: for (Object transitionToAddId : parent) { for (Object childTransition : trajectoryInfo.getTrajectory()) { Object id = childTransition; if (transitionToAddId.equals(id)) { continue outerLoop; } } GeneticHelper.tryFireRightTransition(dsm, transitionToAddId); } }
@Override public List<Object> getTrajectory() { return designSpaceManager.getTrajectoryInfo().getTrajectory(); }
@Override public Double getFitness(ThreadContext context) { DesignSpaceManager dsm = context.getDesignSpaceManager(); TrajectoryInfo trajectoryInfo = dsm.getTrajectoryInfo(); List<Object> trajectory = trajectoryInfo.getTrajectory(); List<BatchTransformationRule<?, ?>> rules = trajectoryInfo.getRules(); double result = 0; for (int i = 0; i < trajectory.size(); i++) { BatchTransformationRule<?, ?> rule = rules.get(i); Double cost = fixCosts.get(rule); if (cost != null) { result += cost; } Map<String, Double> costs = trajectoryInfo.getMeasuredCosts().get(i); if (costs != null) { cost = costs.get(name); if (cost != null) { result += cost; } } } if (calculateTrajectoryLengthWeight) { result += trajectory.size() * trajectoryLengthWeight; } return result; }
public int backtrackUntilLastCommonActivation(Object[] newTrajectory) { Iterator<Object> currentTrajectoryIterator = trajectory.getTrajectory().iterator(); if (!currentTrajectoryIterator.hasNext()) { return 0; } int indexOfLastCommonActivation = 0; for (Object activationCode : newTrajectory) { if (currentTrajectoryIterator.hasNext()) { Object activationCodeFromCurrent = currentTrajectoryIterator.next(); if (activationCodeFromCurrent.equals(activationCode)) { indexOfLastCommonActivation++; } else { break; } } else { // current trajectory is smaller break; } } int numberOfBacktracks = trajectory.getDepth() - indexOfLastCommonActivation; if (numberOfBacktracks > 0) { for (int i = numberOfBacktracks; i > 0; i--) { domain.getCommandStack().undo(); trajectory.backtrack(); } activationCodes.updateActivationCodes(); } logger.debug("Backtracked " + numberOfBacktracks + " times."); return indexOfLastCommonActivation; }
dsm.fireActivation(iTransition); if (!dsm.isNewModelStateAlreadyTraversed()) { Object[] trajectory = trajectoryInfo.getTrajectory().toArray(new Object[0]); queue.add(trajectory); if (minDepthOfFirstPopulation <= trajectory.length && random.nextFloat() < chanceOfSelection) {