private Program generateOffspring() {
		List<Program> crossoverParents = selectionCrossoverOp.select(population, 2);
		Program offspring = null;
		try {
			if(crossoverParents != null && crossoverParents.size() > 1) {
				offspring = crossoverOp.generateOffspring(crossoverParents.get(0), crossoverParents.get(1));
				offspring = applyMutations(offspring); 
			}
		} catch (InvalidProgramException e1) {
			e1.printStackTrace();
		}
		return offspring;
	}