EpsilonNeighborhoodCoupler implements Coupler { @Override public Collection<Pair<Individual>> getCouples(int size, List<Individual> survivors) { Collection<Pair<Individual>> result = new HashSet<>(); List<Set<Individual>> neighborhoods = createNeighborhoods(survivors); NeighborhoodSchedulerRoundRobin scheduler = new NeighborhoodSchedulerRoundRobin(neighborhoods); for (int i = 0; i < size; i++) { result.add(pickCouple(scheduler.next())); } return result; } @Inject  EpsilonNeighborhoodCoupler(EpsilonMapping epsilonMapping, EpsilonAdaptation epsilonAdaption, Random random,
			@Constant(value = "neighborhoodNumber", namespace = EpsilonNeighborhoodCoupler.class) int plannedNeighborhoodNumber,
			@Constant(value = "epsilonNeighborhood", namespace = EpsilonNeighborhoodCoupler.class) double epsilonNeighborhood,
			@Constant(value = "epsilonNeighborhoodDelta", namespace = EpsilonNeighborhoodCoupler.class) double epsilonNeighborhoodDelta,
			@Constant(value = "epsilonNeighborhoodDeltaMax", namespace = EpsilonNeighborhoodCoupler.class) double epsilonNeighborhoodDeltaMax,
			@Constant(value = "epsilonNeighborhoodDeltaMin", namespace = EpsilonNeighborhoodCoupler.class) double epsilonNeighborhoodDeltaMin); @Override Collection<Pair<Individual>> getCouples(int size, List<Individual> survivors);  }
@Test public void testGetCouples() { EpsilonNeighborhoodCoupler coupler = makeDefaultCoupler(); Collection<Pair<Individual>> couples = coupler.getCouples(2, getSurvivors()); assertEquals(2, couples.size()); }