private Chromo<T> rouletteSelection(){
		Chromo<T> selected = null;
		double totalFitness = individuals.stream()
				.mapToDouble(chromo -> chromo.getFitness()).sum();
		double slice = rand.nextDouble() * totalFitness;
		double fitnessSoFar = 0;
		
		if (totalFitness == 0){
			selected = getRandomChromoFromPopulation();
		}

		for (int i=0; i<size; i++){
			fitnessSoFar += individuals.get(i).getFitness();
			if (fitnessSoFar >= slice){
				selected = new Chromo<>(individuals.get(i).getGenes(), individuals.get(i).getFitness());
				break;
			}
		}
		
		return selected;	
	}