@Override public boolean mutate(TrajectoryFitness parent, ThreadContext context) { Object[] trajectory = parent.trajectory; int trajectorySize = trajectory.length; if (trajectorySize < 1) { return false; } int index = rnd.nextInt(trajectorySize); context.executeTrajectoryWithMinimalBacktrackWithoutStateCoding(trajectory, index); context.executeTrajectoryByTryingWithoutStateCoding(trajectory, index + 1, trajectory.length); return true; }
@Override public boolean mutateAlternate(TrajectoryFitness parent1, TrajectoryFitness parent2, ThreadContext context) { context.executeTrajectoryWithMinimalBacktrackWithoutStateCoding(parent2ts, index2); context.executeTrajectoryByTryingWithoutStateCoding(parent1ts, index1, p1Size); return true; }
@Override public boolean mutate(TrajectoryFitness parent, ThreadContext context) { context.executeTrajectoryWithMinimalBacktrackWithoutStateCoding(parent.trajectory); return context.executeRandomActivationId(); }
@Override public boolean mutateAlternate(TrajectoryFitness parent1, TrajectoryFitness parent2, ThreadContext context) { context.executeTrajectoryWithMinimalBacktrackWithoutStateCoding(parent2ts, index); context.executeTrajectoryByTryingWithoutStateCoding(parent1ts, index, p1Size); return true; }
@Override public boolean mutate(TrajectoryFitness parent1, TrajectoryFitness parent2, ThreadContext context) { parent1ts = parent1.trajectory; parent2ts = parent2.trajectory; p1Size = parent1ts.length; p2Size = parent2ts.length; if (p1Size < 2 || p2Size < 2) { return false; } int minSize = Math.min(p1Size, p2Size); index = random.nextInt(minSize - 1) + 1; context.executeTrajectoryWithMinimalBacktrackWithoutStateCoding(parent1ts, index); context.executeTrajectoryByTryingWithoutStateCoding(parent2ts, index, p2Size); return true; }
@Override public boolean mutate(TrajectoryFitness parent1, TrajectoryFitness parent2, ThreadContext context) { parent1ts = parent1.trajectory; parent2ts = parent2.trajectory; p1Size = parent1ts.length; p2Size = parent2ts.length; if (p1Size < 2 || p2Size < 2) { return false; } index1 = random.nextInt(p1Size - 1) + 1; index2 = random.nextInt(p2Size - 1) + 1; context.executeTrajectoryWithMinimalBacktrackWithoutStateCoding(parent1ts, index1); context.executeTrajectoryByTryingWithoutStateCoding(parent2ts, index2, p2Size); return true; }
@Override public boolean mutate(TrajectoryFitness parent, ThreadContext context) { Object[] trajectory = parent.trajectory; int trajectorySize = trajectory.length; if (trajectorySize < 1) { return false; } int index = rnd.nextInt(trajectorySize); context.executeTrajectoryWithMinimalBacktrackWithoutStateCoding(trajectory, index); boolean succesful = context.executeRandomActivationId(); if (succesful) { context.executeTrajectoryByTryingWithoutStateCoding(trajectory, index + 1, trajectory.length); } return succesful; }
@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; }